| OBJDUMP(1) | GNU Development Tools | OBJDUMP(1) |
نام (NAME)
objdump - نمایش اطلاعات فایلهای شیء
خلاصه دستور (SYNOPSIS)
objdump [-a|--archive-headers]
[-b bfdname|--target=bfdname]
[-C|--demangle[=style] ]
[-d|--disassemble[=symbol]]
[-D|--disassemble-all]
[-z|--disassemble-zeroes]
[-EB|-EL|--endian={big | little }]
[-f|--file-headers]
[-F|--file-offsets]
[--file-start-context]
[-g|--debugging]
[-e|--debugging-tags]
[-h|--section-headers|--headers]
[-i|--info]
[-j section|--section=section]
[-l|--line-numbers]
[-S|--source]
[--source-comment[=text]]
[-m machine|--architecture=machine]
[-M options|--disassembler-options=options]
[-p|--private-headers]
[-P options|--private=options]
[-r|--reloc]
[-R|--dynamic-reloc]
[-s|--full-contents]
[-Z|--decompress]
[-W|--dwarf]
[-Wa|--dwarf=abbrev]
[-WA|--dwarf=addr]
[-Wr|--dwarf=aranges]
[-Wc|--dwarf=cu_index]
[-WL|--dwarf=decodedline]
[-Wf|--dwarf=frames]
[-WF|--dwarf=frames-interp]
[-Wg|--dwarf=gdb_index]
[-Wi|--dwarf=info]
[-Wk|--dwarf=links]
[-Wo|--dwarf=loc]
[-Wm|--dwarf=macro]
[-Wp|--dwarf=pubnames]
[-Wt|--dwarf=pubtypes]
[-WR|--dwarf=Ranges]
[-Wl|--dwarf=rawline]
[-Ws|--dwarf=str]
[-WO|--dwarf=str-offsets]
[-Wu|--dwarf=trace_abbrev]
[-WT|--dwarf=trace_aranges]
[-WU|--dwarf=trace_info]
[-WK|--dwarf=follow-links]
[-WN|--dwarf=no-follow-links]
[-WD|--dwarf=use-debuginfod]
[-WE|--dwarf=do-not-use-debuginfod]
[--debug-dir=dir]
[--map-global-vars]
[-L|--process-links]
[--ctf=section]
[--sframe=section]
[-G|--stabs]
[-t|--syms]
[-T|--dynamic-syms]
[-x|--all-headers]
[-w|--wide]
[--start-address=address]
[--stop-address=address]
[--no-addresses]
[--prefix-addresses]
[--[no-]show-raw-insn]
[--adjust-vma=offset]
[--show-all-symbols]
[--dwarf-depth=n]
[--dwarf-start=n]
[--ctf-parent=section]
[--no-recurse-limit|--recurse-limit]
[--special-syms]
[--prefix=prefix]
[--prefix-strip=level]
[--insn-width=width]
[--visualize-jumps[=color|=extended-color|=off]
[--disassembler-color=[off|terminal|on|extended]
[-U method] [--unicode=method]
[-V|--version]
[-H|--help]
objfile....SH
"توضیحات
(DESCRIPTION)" دستور objdump
اطلاعاتی
را دربارهٔ
یک یا چند
فایل شیء (object file)
نمایش
میدهد.
گزینهها
تعیین
میکنند که
چه اطلاعات
خاصی نمایش
داده شود.
این
اطلاعات
عمدتاً
برای
برنامهنویسانی
مفید است که
روی
ابزارهای
کامپایل
کار
میکنند،
در مقایسه
با
برنامهنویسانی
که صرفاً
میخواهند
برنامهشان
کامپایل
شده و اجرا
شود.
objfile... فایلهای شیئی هستند که باید بررسی شوند. هنگامی که آرشیوها را مشخص میکنید، objdump اطلاعات مربوط به هر یک از فایلهای شیء عضو آن را نشان میدهد.
گزینهها (OPTIONS)
فرمهای کوتاه و بلند گزینهها که در اینجا به عنوان جایگزین نشان داده شدهاند، معادل یکدیگرند. حداقل باید یکی از گزینههای موجود در فهرست -a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x مشخص شود.
- -a
- --archive-header
- اگر هر یک از فایلهای objfile آرشیو باشند، اطلاعات سرآیند آرشیو را نمایش میدهد (در قالبی شبیه به ls -l). علاوه بر اطلاعاتی که میتوانید با ar tv فهرست کنید، دستور objdump -a قالب فایل شیء هر عضو آرشیو را نیز نشان میدهد.
- --adjust-vma=offset
- هنگام استخراج اطلاعات، ابتدا مقدار offset را به نشانی تمامی بخشها اضافه میکند. این قابلیت زمانی مفید است که نشانیهای بخش با جدول نمادها مطابقت نداشته باشند، که ممکن است هنگام قرار دادن بخشها در نشانیهای خاص هنگام استفاده از قالبی رخ دهد که قادر به نمایش نشانیهای بخش نیست، مانند a.out.
- -b bfdname
- --target=bfdname
- مشخص
میکند که
قالب کد شیء
برای
فایلهای
شیء، bfdname است.
این گزینه
ممکن است
ضروری
نباشد؛
زیرا objdump
میتواند
بسیاری از
قالبها را
به صورت
خودکار
شناسایی
کند.
برای مثال،
objdump -b oasys -m vax -h fu.o
اطلاعات خلاصهای را از سرآیندهای بخش (-h) فایل fu.o نمایش میدهد، که به صراحت با (-m) به عنوان یک فایل شیء VAX در قالب تولید شده توسط کامپایلرهای Oasys مشخص شده است. با استفاده از گزینهٔ -i میتوانید قالبهای موجود را فهرست کنید.
- -C
- --demangle[=style]
- رمزگشایی (demangle) نام نمادهای سطح پایین به نامهای سطح کاربر. علاوه بر حذف هرگونه زیرخط (underscore) اولیه که توسط سیستم اضافه شده است، این کار نام توابع ++C را خوانا میکند. کامپایلرهای مختلف شیوههای متفاوتی برای mangling دارند. آرگومان اختیاری سبک کدگشایی میتواند برای انتخاب شیوهٔ مناسب برای کامپایلر شما به کار رود.
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- محدودیت
میزان
بازگشت (recursion)
انجامشده
در هنگام
رمزگشایی
رشتهها را
فعال یا
غیرفعال
میکند. از
آنجا که
قالبهای
درهمسازی
نام امکان
ایجاد سطوح
نامحدودی
از بازگشت
را دارند،
این احتمال
وجود دارد
که
رشتههایی
تولید شوند
که
رمزگشایی
آنها تمام
فضای پشته (stack)
موجود در
ماشین
میزبان را
مصرف کرده و
موجب خطای
حافظه شود.
این
محدودیت با
محدود کردن
بازگشت به
۲۰۴۸ سطح
تودرتو
تلاش
میکند از
این اتفاق
جلوگیری
کند.
حالت پیشفرض فعال بودن این محدودیت است، اما غیرفعال کردن آن ممکن است برای رمزگشایی نامهای واقعاً پیچیده لازم باشد. البته به یاد داشته باشید که در صورت غیرفعال کردن محدودیت بازگشت، امکان اتمام پشته وجود دارد و هرگونه گزارش باگ در مورد چنین پیشامدی رد خواهد شد.
- -g
- --debugging
- نمایش اطلاعات اشکالزدایی. این گزینه سعی میکند اطلاعات قالب اشکالزدایی STABS ذخیرهشده در فایل را تجزیه کرده و آن را با نگارشی مشابه C چاپ کند. اگر هیچ اطلاعات اشکالزدایی STABS یافت نشد، این گزینه به گزینهٔ -W رجوع میکند تا اطلاعات DWARF موجود در فایل را چاپ کند.
- -e
- --debugging-tags
- مشابه -g، اما اطلاعات در قالبی سازگار با ابزار ctags تولید میشوند.
- -d
- --disassemble
- --disassemble=symbol
- نمایش
نمادهای
اختصاری
اسمبلی (mnemonics)
برای
دستورالعملهای
ماشین از
فایل ورودی.
این گزینه
فقط
بخشهایی
را
دیساسمبل
(disassemble) میکند
که انتظار
میرود
شامل
دستورالعملها
باشند. اگر
آرگومان
اختیاری symbol
ارائه شود
(احتمالاً
چند بار)،
نمایش
نمادهای
اسمبلی از
آن symbol (یا
همهٔ آنها)
شروع
میشود. اگر
symbol نام یک
تابع باشد،
دیساسمبل
در انتهای
تابع متوقف
میشود، در
غیر این
صورت با
رسیدن به
نماد بعدی
متوقف
خواهد شد.
اگر هیچ
تطابقی
برای symbol
پیدا نشود،
چیزی نمایش
داده
نخواهد شد.
توجه داشته باشید اگر گزینهٔ --dwarf=follow-links فعال باشد، جداول نمادها در فایلهای اطلاعات اشکالزدایی پیوند دادهشده خوانده شده و هنگام دیساسمبل استفاده خواهند شد.
- -D
- --disassemble-all
- مشابه -d،
اما محتوای
تمام
بخشهای
غیرخالی به
جز bss را
دیساسمبل
میکند، نه
فقط
بخشهایی
که انتظار
میرود
شامل
دستورالعملها
باشند. از -j
میتوان
برای
انتخاب
بخشهای
خاص
استفاده
کرد.
این گزینه همچنین تأثیر ظریفی بر دیساسمبل کردن دستورالعملها در بخشهای کد دارد. هنگامی که گزینهٔ -d فعال است، objdump فرض میکند هر نماد موجود در یک بخش کد روی مرز میان دستورالعملها قرار دارد و از دیساسمبل فراتر از این مرز خودداری میکند. با این حال هنگامی که گزینهٔ -D فعال باشد، این فرض نادیده گرفته میشود. بدین معنا که اگر به عنوان مثال دادههایی در بخشهای کد ذخیره شده باشند، احتمال تفاوت میان خروجی -d و -D وجود دارد.
اگر معماری هدف ARM باشد، این سوئیچ همچنین دیساسمبلر را وادار میکند تا بخشهای دادهای پیدا شده در بخشهای کد را به گونهای بازگشایی کند که گویی دستورالعمل هستند.
توجه داشته باشید اگر گزینهٔ --dwarf=follow-links فعال باشد، جداول نمادها در فایلهای اطلاعات اشکالزدایی پیوند دادهشده خوانده شده و هنگام دیساسمبل استفاده خواهند شد.
- --no-addresses
- هنگام دیساسمبل، نشانیها را در هیچ خطی یا برای نمادها و آفستهای بازنشانی (relocation offsets) چاپ نمیکند. در ترکیب با --no-show-raw-insn این گزینه میتواند برای مقایسهٔ خروجی کامپایلر مفید باشد.
- --prefix-addresses
- هنگام دیساسمبل، نشانی کامل را در هر خط چاپ میکند. این ساختار قالب قدیمیتر دیساسمبل است.
- -EB
- -EL
- --endian={big|little}
- ترتیب بایتها (endianness) در فایلهای شیء را مشخص میکند. این گزینه فقط بر دیساسمبل تأثیر دارد. این قابلیت میتواند هنگام دیساسمبل فایلی با قالبی که اطلاعات ترتیب بایتها را توصیف نمیکند، مانند S-records، مفید باشد.
- -f
- --file-headers
- نمایش اطلاعات خلاصهای از سرآیند کلی هر یک از فایلهای objfile.
- -F
- --file-offsets
- هنگام دیزاسمبل کردن بخشها، هر زمان که نمادی نمایش داده میشود، آفست فایلیِ ناحیه دادهای که قرار است تخلیه (dump) شود را نیز نمایش میدهد. اگر از صفرها صرفنظر شود، هنگام از سر گرفتن دیزاسمبل، تعداد صفرهای نادیدهگرفتهشده و آفست فایل مکانی که دیزاسمبل از آنجا ادامه مییابد را به کاربر اعلام میکند. هنگام تخلیه بخشها، آفست فایل مکانی که تخلیه از آنجا آغاز میشود را نمایش میدهد.
- --file-start-context
- مشخص میکند که هنگام نمایش همزمان کد منبع/دیزاسمبل (با فرض -S) از فایلی که هنوز نمایش داده نشده است، بافتار (context) تا ابتدای فایل گسترش یابد.
- -h
- --section-headers
- --headers
- اطلاعات
خلاصهای
از
سرآیندهای
بخش (section headers)
فایل شیء را
نمایش
میدهد.
ممکن است قطعههای فایل (segments) به نشانیهای غیراستاندارد بازنشانی (relocate) شوند؛ برای نمونه با استفاده از گزینههای -Ttext، -Tdata یا -Tbss در ld. با این حال، برخی قالبهای فایل شیء، مانند a.out، نشانی آغازین قطعههای فایل را ذخیره نمیکنند. در این وضعیتها، با اینکه ld بخشها را به درستی بازنشانی میکند، استفاده از objdump -h برای فهرست کردن سرآیندهای بخش فایل نمیتواند نشانیهای درست را نشان دهد. در عوض، نشانیهای معمول را نشان میدهد که برای مقصد ضمنی هستند.
توجه داشته باشید که در برخی موارد ممکن است یک بخش به طور همزمان هر دو ویژگی READONLY و NOREAD را داشته باشد. در چنین شرایطی، ویژگی NOREAD اولویت دارد، اما objdump هر دو را گزارش خواهد داد زیرا تنظیم دقیق بیتهای پرچم ممکن است مهم باشد.
- -H
- --help
- خلاصهای از گزینههای objdump را چاپ کرده و خارج میشود.
- -i
- --info
- فهرستی شامل تمام معماریها و قالبهای شیء موجود را که میتوان با -b یا -m مشخص کرد، نمایش میدهد.
- -j name
- --section=name
- اطلاعات بخش name را نمایش میدهد. این گزینه را میتوان چندین بار مشخص کرد.
- --map-global-vars
- اطلاعات متغیرهای سراسری را نمایش میدهد. این گزینه فقط زمانی کار میکند که فایل شیء با گزینه اشکالزدایی (debug) کامپایل شده باشد. دقیقتر، این ویژگی به مدخلهای اطلاعات اشکالزدایی DWARF2 متکی است. این گزینه برای ردیابی مکان و نوع تمام متغیرهای سراسری در فایل شیء دادهشده مفید است.
- -L
- --process-links
- محتوای بخشهای غیر اشکالزداییِ (non-debug) موجود در فایلهای debuginfo جداگانه که به فایل اصلی پیوند خوردهاند را نمایش میدهد. این گزینه به طور خودکار مستلزم گزینه -WK است و تنها بخشهایی نمایش داده میشوند که توسط دیگر گزینههای خط فرمان درخواست شده باشند.
- -l
- --line-numbers
- خروجی نمایش داده شده را (با استفاده از اطلاعات اشکالزدایی) با نام فایل و شماره خطوط کد منبع متناظر با کد شیء یا بازنشانیهای نشاندادهشده برچسبگذاری میکند. فقط با -d، -D یا -r سودمند است.
- -m machine
- --architecture=machine
- معماری
مورد
استفاده
هنگام
دیزاسمبل
کردن
فایلهای
شیء را مشخص
میکند. این
گزینه
میتواند
هنگام
دیزاسمبل
فایلهای
شیئی که
فاقد
اطلاعات
معماری
هستند،
مانند S-records،
سودمند
باشد.
میتوانید
معماریهای
موجود را با
گزینه -i
فهرست کنید.
برای بیشتر معماریها این امکان وجود دارد که یک نام معماری و یک نام ماشین را که با دونقطه از هم جدا شدهاند وارد کنید. برای نمونه foo:bar به نوع ماشین bar در معماری foo اشاره خواهد داشت. این ویژگی در صورتی که objdump برای پشتیبانی از چندین معماری پیکربندی شده باشد، میتواند کمککننده باشد.
اگر هدف یک معماری ARM باشد، این سوییچ اثر بیشتری دارد: دیزاسمبل را فقط به دستورالعملهایی محدود میکند که توسط معماری مشخصشده توسط machine پشتیبانی میشوند. اگر استفاده از این سوییچ به این دلیل ضروری است که فایل ورودی حاوی هیچ اطلاعات معماری نیست، اما مایلید تمام دستورالعملها دیزاسمبل شوند، از -marm استفاده کنید.
- -M options
- --disassembler-options=options
- اطلاعات
ویژه هدف را
به
دیزاسمبلر
ارسال
میکند. فقط
روی برخی از
هدفها
پشتیبانی
میشود. اگر
لازم است
بیش از یک
گزینه
دیزاسمبلر
مشخص شود،
میتوان از
گزینههای
-M متعددی
استفاده
کرد یا
آنها را به
صورت یک
فهرست
جداشده با
کاما در
کنار هم
قرار داد.
برای ARC، گزینه dsp چاپ دستورالعملهای DSP را کنترل میکند، spfp چاپ دستورالعملهای ممیز شناور (FP) با دقت یگانه FPX را برمیگزیند، dpfp چاپ دستورالعملهای FP با دقت دوگانه FPX را انتخاب میکند، quarkse_em چاپ دستورالعملهای ویژه QuarkSE-EM را مشخص میکند، fpuda چاپ دستورالعملهای کمکی دقت دوگانه را برمیگزیند، fpus چاپ دستورالعملهای FP با دقت یگانه FPU را انتخاب میکند، در حالی که fpud چاپ دستورالعملهای FP با دقت دوگانه FPU را برمیگزیند. علاوه بر این، میتوان با استفاده از hex انتخاب کرد که تمام مقادیر بیواسطه در مبنای شانزده چاپ شوند. به طور پیشفرض، مقادیر بیواسطه کوتاه با استفاده از نمایش دهدهی چاپ میشوند، در حالی که مقادیر بیواسطه بلند به صورت شانزدهشانزدهی چاپ میشوند.
گزینه cpu=... اجازه میدهد هنگام دیزاسمبل دستورالعملها، یک ISA خاص تحمیل شود و مقدار -m یا هر آنچه در فایل ELF است بازنویسی گردد. این امر ممکن است برای انتخاب ISA مربوط به ARC EM یا HS مفید باشد، زیرا معماری آنها یکی است و دیزاسمبلر برای این که تشخیص دهد کد مربوط به EM است یا HS به دادههای سرآیند خصوصی ELF تکیه میکند. این گزینه میتواند چندین بار مشخص شود - فقط آخرین مقدار اعمال خواهد شد. مقادیر معتبر همانند مقادیر گزینه -mcpu=... در اسمبلر هستند.
اگر هدف یک معماری ARM باشد، میتوان از این سوییچ برای تعیین مجموعه نامهای ثباتِ مورد استفاده در حین دیزاسمبل بهره برد. تعیین -M reg-names-std (پیشفرض) نام ثباتها را طبق مستندات مجموعه دستورالعمل ARM انتخاب میکند، اما ثبات ۱۳ 'sp'، ثبات ۱۴ 'lr' و ثبات ۱۵ 'pc' نامیده خواهند شد. مشخص کردن -M reg-names-apcs مجموعه نامهای استفادهشده توسط «استاندارد فراخوانی روال ARM» (یا APCS) را انتخاب میکند، در حالی که مشخص کردن -M reg-names-raw صرفاً از r به همراه شماره ثبات استفاده خواهد کرد.
همچنین دو متغیر بر روی طرح نامگذاری ثباتهای APCS وجود دارد که با -M reg-names-atpcs و -M reg-names-special-atpcs فعال میشوند و از قراردادهای نامگذاری «استاندارد فراخوانی روال ARM/Thumb» استفاده میکنند (خواه با نامهای معمولی ثباتها یا نامهای ویژه ثباتها).
این گزینه همچنین میتواند برای معماریهای ARM به کار رود تا با استفاده از سوییچ --disassembler-options=force-thumb دیزاسمبلر را وادار سازد تمام دستورالعملها را به عنوان دستورالعملهای Thumb تفسیر کند. این امر هنگام تلاش برای دیزاسمبل کدهای Thumb تولیدشده توسط کامپایلرهای دیگر مفید است.
برای هدفهای AArch64 این سوییچ میتواند برای تنظیم این که آیا دستورالعملها با گزینه -M no-aliases به عمومیترین شکل دستورالعمل دیزاسمبل شوند یا اینکه با -M notes یادداشتهای دستورالعمل به عنوان توضیح (کامنت) در دیزاسمبل تولید شوند، استفاده شود. علاوه بر این، گزینه -M annotate میتواند برای سفارشیسازی مدیریت دستورالعملهای تعریفنشده هنگام دیزاسمبل فایلهای اجرایی و کتابخانههای اشتراکی به کار رود. به طور معمول، دیزاسمبلر فقط مقدار شانزدهشانزدهی دستورالعمل تعریفنشده را نشان میدهد، اما اگر حاشیهنویسی فعال باشد، ابتدا تلاش میکند نمادی را پیدا کند که مقدار آن با کدگذاری دستورالعمل مطابقت داشته باشد. در صورت تطابق، نام نماد به جای آن نمایش داده خواهد شد. این قابلیت میتواند هنگام دیزاسمبل بخشهای غیرکدی که ممکن است حاوی نشانیهای تابع و داده باشند مفید باشد.
برای x86، برخی از گزینهها کارکردهای سوییچ -m را تکرار میکنند، اما امکان کنترل دقیقتری را فراهم میسازند.
- "x86-64"
- "i386"
- "i8086"
- واسازی را برای معماری دادهشده انتخاب میکند.
- "intel"
- "att"
- بین حالت نحو intel و حالت نحو AT&T یکی را انتخاب میکند.
- "amd64"
- "intel64"
- بین ISA متعلق به AMD64 و ISA متعلق به Intel64 یکی را انتخاب میکند.
- "intel-mnemonic"
- "att-mnemonic"
- بین حالت یادافزار intel و حالت یادافزار AT&T یکی را انتخاب میکند. نکته: "intel-mnemonic" متضمن "intel" و "att-mnemonic" متضمن "att" است.
- "addr64"
- "addr32"
- "addr16"
- "data32"
- "data16"
- اندازهٔ پیشفرض نشانی و اندازهٔ عملوند را مشخص میکند. در صورتی که بعداً "x86-64"، "i386" یا "i8086" در رشتهٔ گزینهها ظاهر شوند، این پنج گزینه بازنویسی خواهند شد.
- "suffix"
- هنگامی که در حالت AT&T هستید و همچنین برای مجموعهٔ محدودی از دستورالعملها در حالت Intel، به دیساسمبلر دستور میدهد که یک پسوند یادافزار را چاپ کند، حتی زمانی که پسوند بتواند از روی عملوندها یا (برای برخی دستورالعملهای خاص) از پیشفرضهای حالت اجرا استنباط شود.
- "annotate-immediates"
- نماد مرتبط با مقادیر فوری (immediate) را، در صورت وجود، نمایش میدهد. تنها روی باینریهای اجرایی و کتابخانههای اشتراکی کار میکند، نه فایلهای شیء ایستا.
برای PowerPC، آرگومان raw از گزینهٔ -M، واسازی دستورالعملهای سختافزاری را به جای نامهای مستعار انتخاب میکند. برای مثال، "rlwinm" را به جای "clrlwi"، و "addi" را به جای "li" خواهید دید. تمام آرگومانهای -m برای gas که یک CPU را انتخاب میکنند، پشتیبانی میشوند. این آرگومانها عبارتند از: 403، 405، 440، 464، 476، 601، 603، 604، 620، 7400، 7410، 7450، 7455، 750cl، 821، 850، 860، a2، booke، booke32، cell، com، e200z2، e200z4، e300، e500، e500mc، e500mc64، e500x2، e5500، e6500، efs، power4، power5، power6، power7، power8، power9، power10، power11، ppc، ppc32، ppc64، ppc64bridge، ppcps، pwr، pwr2، pwr4، pwr5، pwr5x، pwr6، pwr7، pwr8، pwr9، pwr10، pwr11، pwrx، titan، vle، و future. 32 و 64 انتخاب پیشفرض یا قبلی CPU را تغییر داده، و به ترتیب دستورالعملهای ۶۴ بیتی را غیرفعال و فعال میکنند. علاوه بر این، altivec، any، lsp، htm، vsx، spe و spe2 قابلیتهایی را به انتخاب قبلی یا بعدی CPU اضافه میکنند. گزینهٔ any هر آپکدی را که برای binutils شناختهشده باشد واسازی میکند، اما در مواردی که یک آپکد دارای دو معنای متفاوت یا آرگومانهای متفاوت باشد، ممکن است واسازی مورد انتظار خود را نبینید. اگر بدون مشخص کردن CPU واسازی را انجام دهید، مقداری پیشفرض بر اساس اطلاعاتی که BFD از سرآیندهای فایلهای شیء استخراج میکند انتخاب خواهد شد، اما در این حالت نیز ممکن است نتیجه مطابق انتظار شما نباشد.
برای RISC-V، گزینههای زیر پشتیبانی میشوند:
- "max"
- واسازی بدون بررسی رشتهٔ معماری. این یک حالت «بیشترین تلاش» (best effort) است، بنابراین برای افزونههای همپوشان ISA، نخستین تطابق (که ممکن است در یک زمینهٔ خاص نادرست باشد) برای رمزگشایی دستورالعمل به کار خواهد رفت. این گزینه زمانی مفید است که فایل ELF رشتهٔ ISA را ارائه ندهد و مانع از استنتاج خودکار زیرمجموعهٔ ISA شود، و رشتهٔ پیشفرض یدکی ISA ("rv64gc") تمام دستورالعملهای موجود در باینری را پوشش ندهد.
- "numeric"
- چاپ نامهای عددی ثباتها، به جای نامهای ABI (برای مثال، چاپ "x2" به جای "sp").
- "no-aliases"
- واسازی تنها به دستورالعملهای استاندارد (canonical). برای مثال، دستورالعملهای فشرده به همان شکل نمایش داده خواهند شد ("addi sp,sp,-128" به صورت "c.addi16sp sp,-128" نمایش مییابد).
- "priv-spec=SPEC"
- چاپ CSR بر اساس نسخهٔ مشخصات سطح دسترسی (privilege spec) انتخابشده (مانند 1.10، 1.11، 1.12، 1.13).
برای MIPS، این گزینه چاپ نامهای یادافزار دستورالعمل و نامهای ثبات را در دستورالعملهای واسازیشده کنترل میکند. چندین مورد از موارد زیر را میتوان به عنوان رشتهای جداشده با کاما مشخص کرد، و گزینههای نامعتبر نادیده گرفته میشوند:
- "no-aliases"
- چاپ یادافزار دستورالعمل «خام» به جای یادافزار شبهدستورالعمل. یعنی چاپ 'daddu' یا 'or' به جای 'move'، 'sll' به جای 'nop' و غیره.
- "msa"
- واسازی دستورالعملهای MSA.
- "virt"
- واسازی دستورالعملهای ASE مجازیسازی.
- "xpa"
- واسازی دستورالعملهای ASE با آدرس فیزیکی گسترشیافته (XPA).
- "gpr-names=ABI"
- چاپ نامهای GPR (ثبات عمومی) متناسب با ABI مشخصشده. به طور پیشفرض، نامهای GPR بر اساس ABI باینری در حال واسازی انتخاب میشوند.
- "fpr-names=ABI"
- چاپ نامهای FPR (ثبات ممیز شناور) متناسب با ABI مشخصشده. به طور پیشفرض، شمارههای FPR به جای نامهایشان چاپ میشوند.
- "cp0-names=ARCH"
- چاپ نامهای ثبات CP0 (کمکپردازندهٔ مهار سامانه؛ کمکپردازندهٔ ۰) متناسب با CPU یا معماری مشخصشده توسط ARCH. به طور پیشفرض، نامهای ثبات CP0 بر اساس معماری و CPU باینری در حال واسازی انتخاب میشوند.
- "hwr-names=ARCH"
- چاپ نامهای HWR (ثبات سختافزاری، مورد استفاده در دستورالعمل "rdhwr") متناسب با CPU یا معماری مشخصشده توسط ARCH. به طور پیشفرض، نامهای HWR بر اساس معماری و CPU باینری در حال واسازی انتخاب میشوند.
- "reg-names=ABI"
- چاپ نامهای GPR و FPR متناسب با ABI انتخابشده.
- "reg-names=ARCH"
- چاپ نامهای ثبات مختص به CPU (نامهای ثبات CP0 و HWR) متناسب با CPU یا معماری انتخابشده.
برای هر یک از گزینههای فهرستشده در بالا، ABI یا ARCH میتواند به صورت numeric مشخص شود تا برای انواع ثباتهای انتخابشده، اعداد به جای نامها چاپ شوند. میتوانید مقادیر موجود برای ABI و ARCH را با استفاده از گزینهٔ --help فهرست کنید.
برای VAX، میتوانید نشانیهای ورودی تابع را با -M entry:0xf00ba مشخص کنید. میتوانید برای واسازی مناسب فایلهای باینری VAX که فاقد جدول نمادها هستند (مانند رونوشتهای حافظه ROM)، چندین بار از این گزینه استفاده کنید. در این حالتها، ماسک ورودی تابع در غیر این صورت به عنوان دستورالعملهای VAX رمزگشایی میشود، که احتمالاً به واسازی اشتباه باقی تابع منجر خواهد شد.
- --private-headers
- اطلاعاتی را که مختص به قالب شیءفایل است چاپ میکند. اطلاعات دقیقی که چاپ میشود به قالب شیءفایل بستگی دارد. برای برخی از قالبهای شیءفایل، هیچ اطلاعات اضافهای چاپ نمیشود.
- -P options
- --private=options
- اطلاعاتی
را که مختص
به قالب
شیءفایل
است چاپ
میکند.
آرگومان options
فهرستی
جداشده با
کاما است که
به قالب
بستگی دارد
(فهرست
گزینهها
همراه با
راهنما
نمایش داده
میشود).
برای XCOFF، گزینههای دردسترس عبارتند از:
- "header"
- "aout"
- "sections"
- "syms"
- "relocs"
- "lineno,"
- "loader"
- "except"
- "typchk"
- "traceback"
- "toc"
- "ldinfo"
برای PE، گزینههای دردسترس عبارتند از:
- "header"
- "sections"
همهٔ قالبهای شیء از این گزینه پشتیبانی نمیکنند؛ بهویژه قالب ELF از آن استفاده نمیکند.
- -r
- --reloc
- مدخلهای بازنشانی (relocation) فایل را چاپ میکند. اگر همراه با -d یا -D استفاده شود، بازنشانیها بهصورت آمیخته در میان دیزاسمبلی چاپ میشوند.
- -R
- --dynamic-reloc
- مدخلهای
بازنشانی
پویای فایل
را چاپ
میکند. این
گزینه تنها
برای اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی
معنا دارد.
همانند -r،
اگر همراه
با -d یا -D
استفاده
شود،
بازنشانیها
بهصورت
آمیخته در
میان
دیزاسمبلی
چاپ
میشوند.
نکته: objdump از نمایش بازنشانیهای نوع RELR پشتیبانی نمیکند. این موارد میتوانند توسط برنامهٔ readelf نمایش داده شوند.
- -s
- --full-contents
- محتوای کامل بخشها (sections) را نمایش میدهد؛ اغلب در ترکیب با -j برای درخواست بخشهای خاص به کار میرود. بهطور پیشفرض تمام بخشهای غیرخالی و غیر bss نمایش داده میشوند. بهطور پیشفرض هر بخش فشردهشده به شکل فشردهٔ آن نمایش داده خواهد شد. برای مشاهدهٔ محتویات به شکل غیرفشرده، گزینهٔ -Z را به خط فرمان اضافه کنید.
- -S
- --source
- در صورت امکان، کد منبع را بهصورت آمیخته با دیزاسمبلی نمایش میدهد. مستلزم -d است.
- --show-all-symbols
- هنگام دیزاسمبل کردن، تمام نمادهایی را که با یک آدرس مشخص مطابقت دارند نمایش میدهد، نه فقط نماد اول را.
- --source-comment[=txt]
- مانند گزینهٔ -S است، اما تمام خطوط کد منبع با پیشوند txt نمایش داده میشوند. معمولاً txt یک رشتهٔ توضیحی (comment) خواهد بود که میتواند برای تمایز کد اسمبلی از کد منبع استفاده شود. اگر txt مشخص نشود، رشتهٔ پیشفرض "# " (یک علامت هش و به دنبال آن یک فاصله) استفاده خواهد شد.
- --prefix=prefix
- مقدار prefix را برای افزودن به مسیرهای مطلق هنگام استفاده با -S مشخص میکند.
- --prefix-strip=level
- مشخص میکند که چه تعداد از نامهای ابتدایی دایرکتوری از مسیرهای مطلقِ ثابت (hardwired) حذف شوند. این گزینه بدون --prefix=prefix هیچ تأثیری ندارد.
- --show-raw-insn
- هنگام دیزاسمبل کردن دستورالعملها، دستورالعمل را به صورت هگزادسیمال و همچنین به شکل نمادین چاپ میکند. این حالت پیشفرض است مگر آنکه از --prefix-addresses استفاده شود.
- --no-show-raw-insn
- هنگام دیزاسمبل کردن دستورالعملها، بایتهای دستورالعمل را چاپ نمیکند. این رفتار پیشفرض در هنگام استفاده از --prefix-addresses است.
- --insn-width=width
- هنگام دیزاسمبل کردن دستورالعملها، width بایت را در یک سطر نمایش میدهد.
- --visualize-jumps[=color|=extended-color|=off]
- پرشهایی
را که درون
یک تابع
باقی
میمانند،
با ترسیم
هنر اسکی (ASCII art)
میان
آدرسهای
مبدأ و مقصد
به تصویر
میکشد.
آرگومان
اختیاری =color
با استفاده
از رنگهای
سادهٔ
ترمینال به
خروجی رنگ
اضافه
میکند.
متناوباً،
آرگومان
=extended-color با
استفاده از
رنگهای ۸
بیتی
رنگآمیزی
را انجام
میدهد،
اما این
موارد ممکن
است روی
همهٔ
ترمینالها
کار نکنند.
اگر لازم باشد گزینهٔ visualize-jumps پس از فعالسازی قبلی غیرفعال شود، از visualize-jumps=off استفاده کنید.
- --disassembler-color=off
- --disassembler-color=terminal
- --disassembler-color=on|color|colour
- --disassembler-color=extended|extended-color|extended-colour
- استفاده از
برجستهسازی
نحوی رنگی
را در خروجی
دیزاسمبلی
فعال یا
غیرفعال
میکند.
رفتار
پیشفرض از
طریق یک
گزینه در
زمان
پیکربندی
(configure time) تعیین
میشود.
توجه داشته
باشید که
همهٔ
معماریها
از
برجستهسازی
نحوی رنگی
پشتیبانی
نمیکنند و
بسته به
ترمینال
مورد
استفاده،
ممکن است
خروجی رنگی
در عمل
خوانا
نباشد.
آرگومان on با استفاده از رنگهای سادهٔ ترمینال رنگها را اضافه میکند.
آرگومان terminal همین کار را انجام میدهد، اما تنها در صورتی که دستگاه خروجی یک ترمینال باشد.
آرگومان extended-color مشابه با آرگومان on است، اما از رنگهای ۸ بیتی استفاده میکند. این رنگها ممکن است روی تمام ترمینالها کار نکنند.
آرگومان off دیزاسمبلی رنگی را غیرفعال میکند..IP -W[lLiaprmfFsoORtUuTgAckK] 4
- --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]
- محتویات بخشهای اشکالزدایی DWARF موجود در فایل را، در صورت وجود، نمایش میدهد. بخشهای اشکالزدایی فشردهشده پیش از نمایش بهطور خودکار (موقت) از حالت فشرده خارج میشوند. اگر یک یا چند حرف یا کلمه اختیاری پس از این گزینه بیاید، تنها همان نوع (یا انواع) دادهها تخلیه (dump) خواهند شد. حروف و کلمات به اطلاعات زیر اشاره دارند:
- "a"
- "=abbrev"
- محتویات بخش .debug_abbrev را نمایش میدهد.
- "A"
- "=addr"
- محتویات بخش .debug_addr را نمایش میدهد.
- "c"
- "=cu_index"
- محتویات بخشهای .debug_cu_index و/یا .debug_tu_index را نمایش میدهد.
- "f"
- "=frames"
- محتویات خام بخش .debug_frame را نمایش میدهد.
- "F"
- "=frames-interp"
- محتویات تفسیرشده بخش .debug_frame را نمایش میدهد.
- "g"
- "=gdb_index"
- محتویات بخشهای .gdb_index و/یا .debug_names را نمایش میدهد.
- "i"
- "=info"
- محتویات بخش .debug_info را نمایش میدهد. نکته: خروجی این گزینه میتواند با استفاده از گزینههای --dwarf-depth و --dwarf-start نیز محدود شود.
- "k"
- "=links"
- محتویات بخشهای .gnu_debuglink، .gnu_debugaltlink و .debug_sup را در صورت وجود هر یک از آنها نمایش میدهد. همچنین هرگونه پیوند به فایلهای شیء مجزای dwarf (dwo) را در صورتی که توسط صفتهای DW_AT_GNU_dwo_name یا DW_AT_dwo_name در بخش .debug_info مشخص شده باشند نمایش میدهد.
- "K"
- "=follow-links"
- محتویات هر
یک از
بخشهای
اشکالزدایی
انتخابشده
که در
فایل(های)
مجزا و
پیوندیافته
اطلاعات
اشکالزدایی
یافت شوند
را نمایش
میدهد. اگر
یک بخش
اشکالزدایی
در بیش از
یک فایل
وجود داشته
باشد، این
میتواند
منجر به
نمایش
چندین نسخه
از آن بخش
شود.
علاوه بر این، هنگام نمایش صفتهای DWARF، اگر قالبی یافت شود که به فایل اطلاعات اشکالزدایی مجزا ارجاع میدهد، محتویات ارجاعدادهشده نیز نمایش داده خواهند شد.
نکته - در برخی از توزیعها این گزینه بهطور پیشفرض فعال است. میتوان آن را از طریق گزینه اشکالزدایی N غیرفعال کرد. پیشفرض را میتوان هنگام پیکربندی binutils از طریق گزینههای --enable-follow-debug-links=yes یا --enable-follow-debug-links=no انتخاب کرد. اگر از اینها استفاده نشود، حالت پیشفرض دنبال کردن پیوندهای اشکالزدایی خواهد بود.
نکته - اگر در زمان ساخت binutils پشتیبانی از پروتکل debuginfod فعال شده باشد، این گزینه همچنین شامل تلاشی برای برقراری ارتباط با هر سرور debuginfod ذکرشده در متغیر محیطی DEBUGINFOD_URLS نیز خواهد بود. برطرف کردن این مورد ممکن است مقداری زمان ببرد. این رفتار را میتوان با استفاده از گزینه اشکالزدایی =do-not-use-debuginfod غیرفعال کرد.
- "N"
- "=no-follow-links"
- دنبال کردن پیوندها به فایلهای مجزای اطلاعات اشکالزدایی را غیرفعال میکند.
- "D"
- "=use-debuginfod"
- در صورت نیاز به دنبال کردن پیوندهای اشکالزدایی، برقراری ارتباط با سرورهای debuginfod را فعال میکند. این رفتار پیشفرض است.
- "E"
- "=do-not-use-debuginfod"
- در هنگام نیاز به دنبال کردن پیوندهای اشکالزدایی، برقراری ارتباط با سرورهای debuginfod را غیرفعال میکند.
- "l"
- "=rawline"
- محتویات بخش .debug_line را در قالب خام نمایش میدهد.
- "L"
- "=decodedline"
- محتویات تفسیرشده بخش .debug_line را نمایش میدهد.
- "m"
- "=macro"
- محتویات بخشهای .debug_macro و/یا .debug_macinfo را نمایش میدهد.
- "o"
- "=loc"
- محتویات بخشهای .debug_loc و/یا .debug_loclists را نمایش میدهد.
- "O"
- "=str-offsets"
- محتویات بخش .debug_str_offsets را نمایش میدهد.
- "p"
- "=pubnames"
- محتویات بخشهای .debug_pubnames و/یا .debug_gnu_pubnames را نمایش میدهد.
- "r"
- "=aranges"
- محتویات بخش .debug_aranges را نمایش میدهد.
- "R"
- "=Ranges"
- محتویات بخشهای .debug_ranges و/یا .debug_rnglists را نمایش میدهد.
- "s"
- "=str"
- محتویات بخشهای .debug_str، .debug_line_str و/یا .debug_str_offsets را نمایش میدهد.
- "t"
- "=pubtype"
- محتویات بخشهای .debug_pubtypes و/یا .debug_gnu_pubtypes را نمایش میدهد.
- "T"
- "=trace_aranges"
- محتویات بخش .trace_aranges را نمایش میدهد.
- "u"
- "=trace_abbrev"
- محتویات بخش .trace_abbrev را نمایش میدهد.
- "U"
- "=trace_info"
- محتویات بخش .trace_info را نمایش میدهد.
نکته: نمایش محتویات بخشهای .debug_static_funcs، .debug_static_vars و debug_weaknames در حال حاضر پشتیبانی نمیشود.
- --dwarf-depth=n
- تخلیهٔ بخش
".debug_info" را
به n فرزند
محدود
میکند. این
گزینه فقط
با --debug-dump=info مفید
است.
پیشفرض،
چاپ تمام
DIEها است؛
مقدار
ویژهٔ 0
برای n نیز
همین اثر را
خواهد داشت.
با یک مقدار غیرصفر برای n، مدخلهای DIE در سطح n یا عمیقتر چاپ نخواهند شد. محدوده برای n مبتنی بر صفر است.
- --dwarf-start=n
- فقط DIEهایی
را چاپ
میکند که
با DIE شمارهٔ
n شروع
میشوند.
این گزینه
فقط با --debug-dump=info
مفید است.
در صورت تعیین، این گزینه از چاپ هرگونه اطلاعات سرایند و تمام DIEهای قبل از DIE شمارهٔ n جلوگیری میکند. فقط همسطحها و فرزندان DIE مشخصشده چاپ خواهند شد.
میتوان از این گزینه در ترکیب با --dwarf-depth استفاده کرد.
- --dwarf-check
- بررسیهای تکمیلی برای سازگاری اطلاعات Dwarf را فعال میکند.
- --debug-dir=dir
- هنگام جستجو به دنبال فایلهای مجزای اطلاعات اشکالزدایی، dir را جستجو میکند.
- --ctf[=section]
- محتویات
بخش CTF
مشخصشده
را نمایش
میدهد.
بخشهای CTF
خود شامل
زیربخشهای
بسیاری
هستند که
همگی به
ترتیب
نمایش داده
میشوند.
بهطور پیشفرض، بخش با نام .ctf را نمایش میدهد که همان نام صادرشده توسط ld است.
- --ctf-parent=member
- اگر بخش CTF حاوی انواعی با تعریف مبهم باشد، از یک آرشیو شامل چندین دیکشنری CTF تشکیل خواهد شد که همگی از یک دیکشنری حاوی انواع بدون ابهام ارثبری میکنند. این عضو بهطور پیشفرض مانند بخشی که شامل آن است، .ctf نامیده میشود، اما میتوان این نام را در زمان پیوند با استفاده از تابع "ctf_link_set_memb_name_changer" تغییر داد. هنگام بررسی آرشیوهای CTF که توسط پیونددهندهای ساخته شدهاند که از تغییردهندهٔ نام برای تغییر نام عضو والد آرشیو استفاده میکند، میتوان از --ctf-parent برای مشخص کردن نام استفادهشده برای والد بهره برد.
- --ctf-parent-section=section
- این گزینه به شما اجازه میدهد بخشی کاملاً متفاوت را برای دیکشنری والد CTF شامل انواع بدون ابهام، نسبت به دیکشنریهای فرزند شامل موارد مبهم باقیمانده، انتخاب کنید. پیونددهنده اشیاء ELF با چنین ساختاری صادر نمیکند، اما ممکن است برخی پیونددهندههای شخص ثالث چنین کنند. همچنین برای بررسی CTFهایی که به صورت چندین فایل خام نوشته شدهاند تا با objcopy ترکیب شوند مناسب است؛ چرا که objcopy میتواند آنها را در بخشهای متفاوتی از ELF قرار دهد اما نه در اعضای متفاوت یک دیکشنری واحد CTF.
- --sframe[=section]
- محتویات
بخش SFrame
مشخصشده
را نمایش
میدهد.
بهطور پیشفرض، بخش با نام .sframe را نمایش میدهد که همان نام صادرشده توسط ld است.
- -G
- --stabs
- محتویات کامل هر بخش درخواستی را نمایش میدهد. محتویات بخشهای .stab و سیستمهایی (مانند Solaris 2.0) مفید است که در آنها مدخلهای جدول نمادهای اشکالزدایی ".stab" در یک بخش ELF حمل میشوند. در بیشتر قالبهای فایل دیگر، مدخلهای جدول نمادهای اشکالزدایی با نمادهای پیوند در هم تنیده شدهاند و در خروجی --syms قابل مشاهده هستند.
- --start-address=address
- نمایش دادهها را از نشانی مشخصشده آغاز میکند. این بر خروجی گزینههای -d، -r و -s تأثیر میگذارد.
- --stop-address=address
- نمایش دادهها را در نشانی مشخصشده متوقف میکند. این بر خروجی گزینههای -d، -r و -s تأثیر میگذارد.
- -t
- --syms
- مدخلهای
جدول
نمادهای (symbol table)
فایل را چاپ
میکند. این
خروجی شبیه
به اطلاعات
ارائهشده
توسط
برنامهٔ nm
است، اگرچه
قالب نمایش
آن تفاوت
دارد. قالب
خروجی به
قالب فایلی
که در حال
استخراج (dump)
است بستگی
دارد، اما
دو نوع اصلی
وجود دارد.
یکی شبیه به
این است:
[ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
که در آن عدد درون براکتها، شمارهٔ مدخل در جدول نمادها است، عدد sec شمارهٔ بخش (section)، مقدار fl بیتهای پرچم نماد، عدد ty نوع نماد، عدد scl ردهٔ ذخیرهسازی نماد (storage class) و مقدار nx تعداد مدخلهای کمکی مرتبط با نماد است. دو فیلد آخر نیز مقدار نماد و نام آن هستند.
قالب خروجی رایج دیگر، که معمولاً در فایلهای مبتنی بر ELF دیده میشود، به این صورت است:
00000000 l d .bss 00000000 .bss 00000000 g .text 00000000 fred
در اینجا عدد اول، مقدار نماد است (که گاهی اوقات به عنوان آدرس آن شناخته میشود). فیلد بعدی در واقع مجموعهای از نویسهها و فاصلهها است که بیتهای پرچمِ تنظیمشده روی نماد را نشان میدهند. این نویسهها در ادامه توضیح داده شدهاند. سپس بخشی که نماد با آن مرتبط است قرار دارد، یا *ABS* اگر بخش مطلق باشد (یعنی به هیچ بخشی متصل نباشد)، یا *UND* اگر به بخش در فایلِ در حال استخراج ارجاع داده شده باشد، اما در آن تعریف نشده باشد.
پس از نام بخش فیلد دیگری میآید، یک عدد، که برای نمادهای مشترک (common) تراز (alignment) و برای سایر نمادها اندازه است. در نهایت نام نماد نمایش داده میشود.
نویسههای پرچم به ۷ گروه به شرح زیر تقسیم میشوند:
- "l"
- "g"
- "u"
- "!"
- نماد محلی (l)، سراسری (g)، سراسری یکتا (u)، نه سراسری و نه محلی (یک فاصله) یا هم سراسری و هم محلی (!) است. یک نماد میتواند به دلایل گوناگون نه محلی باشد و نه سراسری، مثلاً به این دلیل که برای اشکالزدایی به کار میرود، اما اگر همزمان هم محلی و هم سراسری باشد احتمالاً نشانهای از وجود یک باگ است. نمادهای سراسری یکتا یک افزونهٔ گنو (GNU) برای مجموعهٔ استاندارد پیوندهای نماد ELF هستند. برای چنین نمادی، پیونددهندهٔ پویا (dynamic linker) اطمینان حاصل میکند که در کل فرایند تنها یک نماد با این نام و نوع استفاده میشود.
- "w"
- نماد ضعیف (w) یا قوی (یک فاصله) است.
- "C"
- نماد نشاندهندهٔ یک سازنده (C) یا یک نماد معمولی (یک فاصله) است.
- "W"
- نماد یک هشدار (W) یا یک نماد معمولی (یک فاصله) است. نام نماد هشدار، پیامی است که در صورت ارجاع به نمادِ پس از آن نمایش داده میشود.
- "I"
- "i"
- نماد یک ارجاع غیرمستقیم به نمادی دیگر (I)، یک تابع برای ارزیابی در طول پردازش بازمکانیابی (reloc) (i) یا یک نماد معمولی (یک فاصله) است.
- "d"
- "D"
- نماد یک نماد اشکالزدایی (d)، یک نماد پویا (D) یا یک نماد معمولی (یک فاصله) است.
- "F"
- "f"
- "O"
- نماد نام یک تابع (F)، یک فایل (f)، یک شیء (O) یا صرفاً یک نماد معمولی (یک فاصله) است.
- -T
- --dynamic-syms
- مدخلهای
جدول
نمادهای
پویای فایل
را چاپ
میکند. این
گزینه تنها
برای اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی،
معنا دارد.
این خروجی
مشابه
اطلاعاتی
است که توسط
برنامهٔ nm
هنگام
استفاده با
گزینهٔ -D
(--dynamic) ارائه
میشود.
قالب خروجی شبیه به خروجی تولیدشده توسط گزینهٔ --syms است، به جز اینکه یک فیلد اضافی پیش از نام نماد درج میشود که اطلاعات نسخهٔ مرتبط با نماد را ارائه میدهد. اگر این نسخه، نسخهٔ پیشفرضی باشد که هنگام حل ارجاعات بدون نسخه به نماد استفاده میشود، همانطور که هست نمایش داده میشود؛ در غیر این صورت درون پرانتز قرار میگیرد.
- --special-syms
- هنگام نمایش نمادها، نمادهایی را که مقصد به نوعی خاص تلقی میکند و معمولاً مورد توجه کاربر نیستند نیز دربرمیگیرد.
- -U [d|i|l|e|x|h]
- --unicode=[default|invalid|locale|escape|hex|highlight]
- نحوهٔ
نمایش
نویسههای
چندبایتی
کدگذاریشده
با UTF-8 را در
رشتهها
کنترل
میکند.
حالت
پیشفرض
(--unicode=default) این
است که
رفتار
ویژهای با
آنها صورت
نگیرد.
گزینهٔ --unicode=locale
توالی را در
محلیسازی
(locale) فعلی
نمایش
میدهد، که
ممکن است از
آنها
پشتیبانی
بکند یا
نکند.
گزینههای
--unicode=hex و --unicode=invalid
آنها را
بهصورت
دنبالهای
از
بایتهای
هگزادسیمالِ
محصور در
علامتهای
کوچکتر/بزرگتر
یا
آکولادها
نمایش
میدهند.
گزینهٔ --unicode=escape آنها را بهصورت توالیهای گریز (\uxxxx) و گزینهٔ --unicode=highlight آنها را بهصورت توالیهای گریز برجستهشده با رنگ قرمز (در صورت پشتیبانی دستگاه خروجی) نمایش میدهد. رنگآمیزی با این هدف است که توجه کاربر را به وجود توالیهای یونیکد در جاهایی که ممکن است انتظارشان نرود جلب کند.
- -V
- --version
- شمارهٔ نسخهٔ objdump را چاپ کرده و خارج میشود.
- -x
- --all-headers
- تمام اطلاعات سرایند (header) موجود، از جمله جدول نمادها و مدخلهای بازمکانیابی (relocation) را نمایش میدهد. استفاده از -x معادل مشخص کردن همهٔ گزینههای -a -f -h -p -r -t است.
- -w
- --wide
- برخی از خطوط را برای دستگاههای خروجی با بیش از ۸۰ ستون قالببندی میکند. همچنین از کوتاه کردن (truncate) نام نمادها هنگام نمایش خودداری میکند..IP -z 4
- --disassemble-zeroes
- بهطور معمول خروجی دیساسمبل از بلوکهای صفر رد میشود. این گزینه به دیساسمبلر دستور میدهد تا آن بلوکها را دقیقاً مانند هر داده دیگری دیساسمبل کند.
- -Z
- --decompress
- گزینه -Z برای استفاده همراه با گزینه -s در نظر گرفته شده است. این گزینه به objdump دستور میدهد تا بخشهای فشردهشده را پیش از نمایش محتویاتشان، از حالت فشرده خارج کند.
- @file
- گزینههای
خط فرمان را
از file
میخواند.
گزینههای
خواندهشده
به جای
گزینه اصلی
@file درج
میشوند.
اگر file وجود
نداشته
باشد یا
قابل
خواندن
نباشد، با
گزینه
بهصورت
تحتاللفظی
رفتار شده و
حذف
نمیشود.
گزینهها در file با نویسه فاصله (whitespace) از یکدیگر جدا میشوند. یک نویسه فاصله میتواند با قرار دادن کل گزینه درون گیومه تکی یا دوتایی گنجانده شود. هر نویسهای (از جمله بکاسلش) میتواند با قرار دادن یک بکاسلش قبل از آن، درج شود. خود file نیز میتواند شامل گزینههای @file بیشتری باشد؛ هرکدام از این گزینهها بهصورت بازگشتی پردازش خواهند شد.
همچنین ببینید (SEE ALSO)
nm(1)، readelf(1) و مدخلهای Info برای binutils.
کپیرایت و تکثیر (COPYRIGHT)
حق نشر (c) 1991-2026 متعلق به Free Software Foundation, Inc.
اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشر شده توسط بنیاد نرمافزارهای آزاد داده میشود؛ بدون بخشهای ناوردا، بدون متون روی جلد، و بدون متون پشت جلد. نسخهای از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است.
| 2026-08-26 | binutils-2.47 |