| 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) چاپ نکنید. در ترکیب با --no-show-raw-insn، این گزینه میتواند برای مقایسه خروجی کامپایلر مفید باشد.
- --prefix-addresses
- هنگام دیساسمبل، آدرس کامل را در هر سطر چاپ میکند. این قالب قدیمیتر دیساسمبل است.
- -EB
- -EL
- --endian={big|little}
- ترتیب بایتها (endianness) فایلهای شیء را مشخص میکند. این گزینه فقط بر دیساسمبل کردن تأثیر میگذارد و میتواند هنگام دیساسمبل فایلی با قالبی که اطلاعات ترتیب بایتها را توصیف نمیکند (مانند S-records)، مفید باشد.
- -f
- --file-headers
- اطلاعات خلاصهای از سرآیند کلی هر یک از فایلهای objfile را نمایش میدهد.
- -F
- --file-offsets
- هنگام دیساسمبل کردن بخشها، هر زمان که نمادی نمایش داده میشود، آفست پرونده از ناحیه دادهای را که قرار است استخراج شود نیز نمایش میدهد. اگر صفرها نادیده گرفته شوند، هنگام از سرگیری دیساسمبل، تعداد صفرهای نادیدهگرفتهشده و آفست پرونده از محلی را که دیساسمبل ادامه مییابد به کاربر اعلام میکند. هنگام استخراج بخشها، آفست پرونده از محلی را که استخراج شروع میشود نمایش میدهد.
- --file-start-context
- مشخص میکند هنگامی که کد منبع و دیساسمبل به صورت درهمآمیخته (با فرض استفاده از -S) از فایلی که قبلاً نمایش داده نشده نمایش مییابد، زمینه (context) تا ابتدای فایل گسترش یابد.
- -h
- --section-headers
- نمایش
اطلاعات
خلاصه از
سرآیندهای
بخشِ فایل
شیء.
قطعههای فایل ممکن است به آدرسهای غیراستاندارد بازآرایی (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
- نمایش اطلاعات متغیرهای سراسری (global variables). این گزینه تنها زمانی کار میکند که فایل شیء با گزینه اشکالزدایی کامپایل شده باشد. به طور دقیقتر، این گزینه به مدخلهای اطلاعات اشکالزدایی DWARF2 متکی است و برای ردیابی مکان و نوع تمام متغیرهای سراسری در فایل شیء دادهشده مفید است.
- -L
- --process-links
- نمایش محتوای بخشهای غیر اشکالزدایی موجود در فایلهای مجزای debuginfo که به فایل اصلی پیوند دارند. این گزینه به طور خودکار مستلزم گزینه -WK است و تنها بخشهایی که توسط دیگر گزینههای خط فرمان درخواست شدهاند نمایش داده خواهند شد.
- -l
- --line-numbers
- برچسبگذاری نمایش (با استفاده از اطلاعات اشکالزدایی) با نام فایل و شماره خطوط کد منبع متناظر با کد شیء یا بازآراییهای (relocs) نمایش دادهشده. تنها به همراه -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 تعیین کرد که تمام مقادیر بیدرنگ (immediate) در مبنای شانزده چاپ شوند. به طور پیشفرض، مقادیر بیدرنگ کوتاه در نمایش دهدهی چاپ میشوند، در حالی که مقادیر بیدرنگ بلند در مبنای شانزده به نمایش درمیآیند.
گزینهٔ 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"
- انتخاب بین AMD64 ISA و Intel64 ISA.
- "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"
- نمایش نماد مرتبط با مقادیر بیدرنگ، در صورت وجود. تنها روی باینریهای اجرایی و کتابخانههای مشترک کار میکند، نه فایلهای شیء ایستا.
در PowerPC، آرگومان raw برای -M دیزاسمبل دستورالعملهای سختافزاری را به جای نامهای مستعار انتخاب میکند. برای نمونه، شما به جای "clrlwi" عبارت "rlwinm"، و به جای "li" عبارت "addi" را خواهید دید. تمامی آرگومانهای -m برای gas که پردازنده را انتخاب میکنند پشتیبانی میشوند. این آرگومانها عبارتند از: 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 انتخاب پیشفرض یا قبلی پردازنده را اصلاح کرده و به ترتیب دستورالعملهای ۶۴ بیتی را غیرفعال و فعال میکنند. علاوه بر این، altivec، any، lsp، htm، vsx، spe و spe2 قابلیتهایی را به انتخاب قبلی یا بعدیِ پردازنده میافزایند. گزینهٔ any هر آپکدی (opcode) را که برای binutils شناختهشده باشد دیزاسمبل میکند، اما در مواردی که یک آپکد دو معنای مختلف یا آرگومانهای متفاوتی داشته باشد، ممکن است دیزاسمبل مد نظر خود را نبینید. اگر بدون تعیین پردازنده اقدام به دیزاسمبل کنید، یک مقدار پیشفرض از روی اطلاعات گردآوریشده توسط BFD از سرآیندهای فایل شیء برگزیده خواهد شد، اما نتیجه مجدداً ممکن است مطابق انتظار شما نباشد.
برای RISC-V، گزینههای زیر پشتیبانی میشوند:
- "max"
- دیزاسمبل بدون بررسی رشتهٔ معماری. این یک حالت بر مبنای بیشترین تلاش (best effort) است، بنابراین برای افزونههای دارای همپوشانی در ISA، نخستین تطابق (که ممکن است در یک زمینهٔ خاص نادرست باشد) برای رمزگشایی دستورالعمل به کار خواهد رفت. این گزینه زمانی سودمند است که فایل ELF رشتهٔ ISA را آشکار نمیکند و مانع از استنتاج خودکار زیرمجموعهٔ ISA میشود، و رشتهٔ پیشفرض جایگزین ISA ("rv64gc") نیز تمام دستورالعملهای موجود در باینری را پوشش نمیدهد.
- "numeric"
- چاپ نامهای عددی ثباتها به جای نامهای ABI (برای نمونه چاپ "x2" به جای "sp").
- "no-aliases"
- دیزاسمبل تنها به شکل دستورالعملهای رسمی و استاندارد (canonical). برای نمونه، دستورالعملهای فشرده (compressed) به همان صورت نمایش داده خواهند شد ("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"
- چاپ نام نمادین «خام» ('raw') دستورالعمل به جای نام نمادین شبهدستورالعمل (pseudo instruction). یعنی چاپ 'daddu' یا 'or' به جای 'move'، و 'sll' به جای 'nop' و غیره.
- "msa"
- دیزاسمبل دستورالعملهای MSA.
- "virt"
- دیزاسمبل دستورالعملهای مجازیسازی ASE.
- "xpa"
- دیزاسمبل دستورالعملهای eXtended Physical Address (XPA) ASE.
- "gpr-names=ABI"
- چاپ نامهای GPR (ثباتهای همهمنظوره) متناسب با ABI تعیینشده. به طور پیشفرض، نامهای GPR بر اساس ABI باینریِ در حال دیزاسمبل برگزیده میشوند.
- "fpr-names=ABI"
- چاپ نامهای FPR (ثباتهای ممیز شناور) متناسب با ABI تعیینشده. به طور پیشفرض، شمارههای FPR به جای نامها چاپ میشوند.
- "cp0-names=ARCH"
- چاپ نامهای ثباتهای CP0 (کمکپردازندهٔ کنترل سیستم؛ کمکپردازندهٔ ۰) متناسب با پردازنده یا معماری مشخصشده با ARCH. به طور پیشفرض، نامهای ثباتهای CP0 بر اساس معماری و پردازندهٔ باینریِ در حال دیزاسمبل انتخاب میشوند.
- "hwr-names=ARCH"
- چاپ نامهای HWR (ثبات سختافزاری، مورد استفاده در دستورالعمل "rdhwr") متناسب با پردازنده یا معماری مشخصشده با ARCH. به طور پیشفرض، نامهای HWR بر اساس معماری و پردازندهٔ باینریِ در حال دیزاسمبل انتخاب میشوند.
- "reg-names=ABI"
- چاپ نامهای GPR و FPR متناسب با ABI برگزیدهشده.
- "reg-names=ARCH"
- چاپ نامهای ثباتهای خاص پردازنده (نامهای ثبات CP0 و HWR) متناسب با پردازنده یا معماری برگزیدهشده.
برای هر یک از گزینههای فهرستشده در بالا، 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
- مدخلهای بازمکانی پرونده را چاپ میکند. اگر همراه با -d یا -D استفاده شود، بازمکانیها به صورت آمیخته در میان واسازی کد (disassembly) چاپ میشوند.
- -R
- --dynamic-reloc
- مدخلهای
بازمکانی
پویای
پرونده را
چاپ میکند.
این گزینه
فقط برای
اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی
معنا دارد.
همانند -r،
در صورت
استفاده با
-d یا -D،
بازمکانیها
به صورت
آمیخته در
میان
واسازی کد
چاپ
میشوند.
نکته: objdump از نمایش بازمکانیهای نوع RELR پشتیبانی نمیکند. این موارد را میتوان با برنامه readelf نمایش داد.
- -s
- --full-contents
- محتوای کامل بخشها را نمایش میدهد؛ اغلب در ترکیب با -j برای درخواست بخشهای مشخص به کار میرود. به صورت پیشفرض تمام بخشهای غیرخالیِ غیر bss نمایش داده میشوند. همچنین به طور پیشفرض هر بخش فشردهشده به شکل فشرده نمایش خواهد یافت. به منظور مشاهده محتوا به صورت از حالت فشرده خارجشده، گزینه -Z را به خط فرمان اضافه کنید.
- -S
- --source
- در صورت امکان، کد منبع را به صورت آمیخته با واسازی کد نمایش میدهد. مستلزم -d است.
- --show-all-symbols
- هنگام واسازی کد، تمام نمادهایی را که با یک نشانی مشخص مطابقت دارند نمایش میدهد، نه فقط اولین مورد را.
- --source-comment[=txt]
- مشابه گزینه -S است، اما تمام خطوط کد منبع با پیشوند txt نمایش داده میشوند. معمولاً txt یک رشته توضیح (comment) خواهد بود که میتوان از آن برای تمایز کد اسمبلی از کد منبع استفاده کرد. اگر txt مشخص نشود، رشته پیشفرض "# " (هش و به دنبال آن یک فاصله) استفاده خواهد شد.
- --prefix=prefix
- پیشوند prefix را برای افزودن به مسیرهای مطلق در هنگام استفاده با -S مشخص میکند.
- --prefix-strip=level
- مشخص میکند چه تعداد از نامهای دایرکتوری ابتدایی از مسیرهای مطلقِ ثابت حذف شوند. بدون گزینه --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
- استفاده از
برجستهسازی
رنگی نحو (syntax
highlighting) را در
خروجی
واسازی کد
فعال یا
غیرفعال
میکند.
رفتار
پیشفرض از
طریق
گزینهای
در زمان
پیکربندی
(configure time) تعیین
میشود.
توجه داشته
باشید که
همه
معماریها
از
برجستهسازی
رنگی نحو
پشتیبانی
نمیکنند،
و بسته به
پایانه
مورد
استفاده،
خروجی رنگی
ممکن است در
عمل خوانا
نباشد.
آرگومان on با استفاده از رنگهای ساده پایانه، رنگها را اضافه میکند.
آرگومان terminal همان کار را انجام میدهد، اما تنها در صورتی که دستگاه خروجی یک پایانه باشد.
آرگومان extended-color مشابه با آرگومان on است، اما از رنگهای ۸ بیتی استفاده میکند. این رنگها ممکن است در همه پایانهها کار نکنند.
آرگومان off واسازی رنگی را غیرفعال میکند.
- -W[lLiaprmfFsoORtUuTgAckK]
- --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 انتخاب کرد. اگر این گزینهها استفاده نشوند، پیشفرض دنبال کردن پیوندهای اشکالزدایی خواهد بود.
نکته - اگر پشتیبانی از پروتکل debuginfod در زمان ساخت binutils فعال شده باشد، این گزینه تلاشی برای برقراری ارتباط با کارسازهای 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 در حال حاضر پشتیبانی نمیشود. محدود کردن تخلیه (dump) بخش ".debug_info" به n فرزند. این گزینه تنها همراه با --debug-dump=info مفید است. حالت پیشفرض چاپ تمام DIEها است؛ مقدار ویژهٔ 0 برای n نیز همین اثر را خواهد داشت.
با یک مقدار غیر صفر برای n، مواردی از DIE که در سطح n یا عمیقتر از آن هستند چاپ نخواهند شد. بازهٔ n بر پایهٔ صفر (zero-based) است.
- --dwarf-start=n
- تنها DIEهایی
را چاپ
میکند که
با DIE شمارهٔ
n آغاز
میشوند.
این گزینه
تنها همراه
با --debug-dump=info مفید
است.
در صورت تعیین، این گزینه از چاپ هرگونه اطلاعات سرآیند و تمام DIEهای پیش از DIE شمارهٔ n جلوگیری میکند. تنها همسطحها (siblings) و فرزندان DIE مشخصشده چاپ خواهند شد.
این گزینه را میتوان در ترکیب با --dwarf-depth به کار برد.
- --dwarf-check
- فعال کردن بررسیهای بیشتر برای سازگاری اطلاعات Dwarf.
- --debug-dir=dir
- جستجو در dir هنگام جستجو برای فایلهای جداگانهٔ اطلاعات اشکالزدایی (debug info).
- --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 با چنین ساختاری تولید نمیکند، اما برخی از پیونددهندههای متفرقه (third-party) ممکن است این کار را انجام دهند. این گزینه همچنین برای بررسی CTFهایی که به صورت چندین فایل خام نوشته شدهاند تا با objcopy ترکیب شوند مفید است؛ objcopy میتواند آنها را در بخشهای ELF متفاوتی قرار دهد اما نمیتواند در اعضای متفاوتی از یک فرهنگ CTF واحد بگذارد.
- --sframe[=section]
- نمایش
محتویات
بخش
مشخصشدهٔ
SFrame.
بهطور پیشفرض، نام بخش با نام .sframe را نمایش میدهد، که همان نامی است که توسط ld تولید میشود.
- -G
- --stabs
- نمایش کامل محتویات هر بخش درخواستشده. نمایش محتویات بخشهای .stab و .stab.index و .stab.excl از یک فایل ELF. این گزینه تنها در سیستمهایی (مانند Solaris 2.0) مفید است که در آنها مدخلهای جدول نمادهای اشکالزدایی ".stab" در یک بخش ELF حمل میشوند. در بیشتر قالبهای دیگر فایل، مدخلهای جدول نمادهای اشکالزدایی با نمادهای پیوند در هم تنیده شدهاند و در خروجی --syms قابل مشاهده هستند.
- --start-address=address
- آغاز نمایش دادهها از آدرس مشخصشده. این گزینه بر خروجی گزینههای -d، -r و -s اثر میگذارد.
- --stop-address=address
- توقف نمایش دادهها در آدرس مشخصشده. این گزینه بر خروجی گزینههای -d، -r و -s اثر میگذارد.
- -t
- --syms
- چاپ
مدخلهای
جدول
نمادهای
فایل. این
اطلاعات
مشابه
اطلاعات
ارائهشده
توسط
برنامهٔ nm
است، اگرچه
قالب نمایش
متفاوت است.
قالب خروجی
به قالب
فایلی که در
حال تخلیه
است بستگی
دارد، اما
دو نوع اصلی
وجود دارد.
یکی به این
شکل است:
[ 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 شمارهٔ بخش است، مقدار fl بیتهای پرچم نماد هستند، عدد ty نوع نماد است، عدد scl کلاس ذخیرهسازی نماد است و مقدار 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 هستند. برای چنین نمادی، پیونددهندهٔ پویا اطمینان حاصل میکند که در کل فرایند فقط یک نماد با این نام و نوع مورد استفاده باشد.
- "w"
- نماد ضعیف (w) یا قوی (یک فاصله) است.
- "C"
- نماد نشاندهندهٔ یک سازنده (C) یا یک نماد معمولی (یک فاصله) است.
- "W"
- نماد یک هشدار (W) یا یک نماد عادی (یک فاصله) است. نام نماد هشدار پیامی است که در صورت ارجاع به نماد بعد از نماد هشدار، نمایش داده میشود.
- "I"
- "i"
- نماد یک ارجاع غیرمستقیم به نمادی دیگر (I)، تابعی برای ارزیابی حین پردازش بازنشانی (i) یا یک نماد عادی (یک فاصله) است.
- "d"
- "D"
- نماد یک نماد اشکالزدایی (d)، یک نماد پویا (D) یا یک نماد عادی (یک فاصله) است.
- "F"
- "f"
- "O"
- نماد نام یک تابع (F)، یک فایل (f)، یک شیء (O) یا صرفاً یک نماد عادی (یک فاصله) است.
- -T
- ورودیهای
جدول
نمادهای
پویای فایل
را چاپ
میکند. این
گزینه تنها
برای اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی،
معنادار
است. این
خروجی
مشابه
اطلاعاتی
است که
برنامه 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
دنباله را
در لوکال
فعلی نمایش
میدهد که
ممکن است از
آنها
پشتیبانی
کند یا
نکند.
گزینههای
--unicode=hex و --unicode=invalid
آنها را به
صورت
دنبالههای
بایتی
هگزادسیمال
محصور در
قلابهای
شکسته یا
آکولادها
نمایش
میدهند.
گزینه --unicode=escape آنها را به صورت دنبالههای گریز (\uxxxx) نمایش میدهد و گزینه --unicode=highlight آنها را به شکل دنبالههای گریز برجستهشده با رنگ قرمز نمایش میدهد (در صورتی که توسط دستگاه خروجی پشتیبانی شود). هدف از رنگآمیزی، جلب توجه به حضور دنبالههای یونیکد در جاهایی است که ممکن است انتظارشان نرود.
- -V
- --version
- شماره نسخه objdump را چاپ کرده و خارج میشود.
- -x
- --all-headers
- تمام اطلاعات سرآیند در دسترس، از جمله جدول نمادها و مدخلهای بازنشانی (relocation) را نمایش میدهد. استفاده از -x معادل تعیین تمامی گزینههای -a -f -h -p -r -t است.
- -w
- --wide
- برخی از خطوط را برای دستگاههای خروجی با بیش از ۸۰ ستون قالببندی میکند. همچنین هنگام نمایش نام نمادها، آنها را کوتاه نمیکند.
- -z
- --disassemble-zeroes
- در حالت عادی، خروجی دیزاسمبل از بلوکهای حاوی صفر عبور میکند. این گزینه به دیزاسمبلر دستور میدهد که این بلوکها را دقیقاً مانند هر داده دیگری دیزاسمبل کند.
- -Z
- --decompress
- گزینه -Z برای استفاده همزمان با گزینه -s در نظر گرفته شده است. این گزینه به objdump دستور میدهد تا پیش از نمایش محتویات بخشهای فشرده، آنها را از حالت فشرده خارج کند.
- @file
- گزینههای
خط فرمان را
از file
میخواند.
گزینههای
خواندهشده
به جای
گزینه اصلی
@file قرار
میگیرند.
اگر file وجود
نداشته
باشد، یا
خوانده
نشود،
گزینه به
عنوان یک
مقدار
تحتاللفظی
تلقی شده و
حذف
نمیشود.
گزینهها در file با نویسههای فاصله خالی (whitespace) از یکدیگر جدا میشوند. یک نویسه فاصله خالی میتواند با قرار دادن کل گزینه در نقلقول تکی یا دوگانه درون آن قرار گیرد. هر نویسهای (از جمله بکاسلش) میتواند با پیشوند کردن یک بکاسلش به نویسه مورد نظر گنجانده شود. خود file میتواند شامل گزینههای @file بیشتری باشد؛ هر گونه گزینهای از این دست به صورت بازگشتی پردازش خواهد شد.
همچنین ببینید (SEE ALSO)
nm(1)، readelf(1) و مدخلهای Info برای binutils.
کپیرایت و تکثیر (COPYRIGHT)
Copyright (c) 1991-2026 Free Software Foundation, Inc.
اجازه نسخهبرداری، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه جدیدتر منتشرشده توسط بنیاد نرمافزارهای آزاد (Free Software Foundation) اعطا میشود؛ بدون بخشهای تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. یک نسخه از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.
| 2026-08-03 | binutils-2.47 |