OBJDUMP(1) GNU Development Tools OBJDUMP(1)

nds32le-elf-objdump - نمایش اطلاعات و دیکامپایل فایل‌های باینری معماری Andes NDS32

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[lLiaprmfFsoORtUuTgAck]|
--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]]
[-WK|--dwarf=follow-links]
[-WN|--dwarf=no-follow-links]
[-wD|--dwarf=use-debuginfod]
[-wE|--dwarf=do-not-use-debuginfod]
[-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...

دستور objdump اطلاعات مربوط به یک یا چند فایل شیء (object file) را نمایش می‌دهد. گزینه‌ها مشخص می‌کنند چه نوع اطلاعاتی نمایش داده شود. این اطلاعات عمدتاً برای برنامه‌نویسانی که روی ابزارهای کامپایل و توسعه کار می‌کنند کاربردی است، بر خلاف برنامه‌نویسانی که صرفاً می‌خواهند برنامه‌شان کامپایل شده و به درستی اجرا شود.

شناسه‌های objfile... فایل‌های شیء مورد بررسی هستند. هنگامی که یک فایل آرشیو مشخص شود، objdump اطلاعات هر یک از فایل‌های شیء عضو آن آرشیو را نمایش می‌دهد.

فرم‌های کوتاه و بلند گزینه‌ها که در اینجا به عنوان جایگزین نشان داده شده‌اند، معادل یکدیگرند. حداقل باید یکی از گزینه‌های فهرست -a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x مشخص شود.

اگر هر یک از فایل‌های objfile از نوع آرشیو باشند، اطلاعات هدر آرشیو را (در قالبی مشابه ls -l) نمایش می‌دهد. علاوه بر اطلاعاتی که با ar tv قابل مشاهده است، گزینه objdump -a فرمت فایل شیء هر یک از اعضای آرشیو را نیز نشان می‌دهد.
هنگام نمایش اطلاعات، ابتدا مقدار offset را به تمام آدرس‌های بخش‌ها اضافه می‌کند. این گزینه زمانی کاربرد دارد که آدرس بخش‌ها با جدول نمادها همخوانی ندارد؛ وضعیتی که ممکن است هنگام قرار دادن بخش‌ها در آدرس‌های خاص در فرمت‌هایی که امکان نمایش آدرس بخش‌ها را ندارند (مانند a.out) رخ دهد.
فرمت کد شیء را برای فایل‌های ورودی برابر با bfdname قرار می‌دهد. این گزینه معمولاً ضروری نیست زیرا objdump می‌تواند بسیاری از فرمت‌ها را به صورت خودکار تشخیص دهد.

به عنوان مثال:

objdump -b oasys -m vax -h fu.o

اطلاعات خلاصه هدرهای بخش‌ها (-h) را از فایل fu.o نمایش می‌دهد، که به صراحت با (-m) به عنوان فایل شیء VAX در فرمت تولید شده توسط کامپایلرهای Oasys مشخص شده است. فرمت‌های در دسترس با گزینه -i قابل مشاهده هستند.

رمزگشایی (demangle) نام‌های سطح پایین نمادها به نام‌های خوانای سطح کاربر. علاوه بر حذف زیرخط ابتدایی اضافه شده توسط سیستم، نام توابع ++C را خوانا می‌کند. کامپایلرهای مختلف شیوه‌های نام‌گذاری متفاوتی دارند. آرگومان اختیاری سبک نام‌گشایی برای انتخاب شیوه مناسب کامپایلر شما قابل استفاده است.
محدودیت عمق بازگشت در طول نام‌گشایی (demangling) رشته‌ها را فعال یا غیرفعال می‌کند. از آنجا که فرمت‌های دستکاری نام اجازه بازگشت نامحدود را می‌دهند، ممکن است رشته‌هایی ایجاد شوند که رمزگشایی آنها تمام فضای پشته سیستم میزبان را مصرف کرده و باعث خطای حافظه (memory fault) شود. این محدودیت با محدود کردن بازگشت به ۲۰۴۸ سطح تودرتو مانع این اتفاق می‌شود.

این محدودیت به صورت پیش‌فرض فعال است، اما غیرفعال کردن آن ممکن است برای نام‌گشایی نام‌های بسیار پیچیده لازم باشد. توجه داشته باشید در صورت غیرفعال کردن محدودیت، احتمال سرریز پشته وجود داشته و گزارش باگ‌های مربوط به چنین رویدادی پذیرفته نخواهد شد.

نمایش اطلاعات دیباگ. این گزینه تلاش می‌کند اطلاعات فرمت دیباگ STABS ذخیره‌شده در فایل را تجزیه کرده و با نحو شبیه زبان C چاپ کند. اگر اطلاعات STABS پیدا نشود، به گزینه -W برای چاپ اطلاعات DWARF فایل رجوع می‌کند.
مشابه -g، اما اطلاعات در قالبی سازگار با ابزار ctags تولید می‌شود.
نمایش نمادهای اسمبلی (mnemonics) برای دستورالعمل‌های ماشین از فایل ورودی. این گزینه فقط بخش‌هایی را دیکامپایل می‌کند که انتظار می‌رود شامل دستورالعمل باشند. اگر آرگومان اختیاری symbol مشخص شود (حتی چندین بار)، دیکامپایل از نماد(های) مشخص‌شده آغاز می‌شود. اگر symbol نام یک تابع باشد، دیکامپایل در انتهای تابع متوقف می‌شود، در غیر این صورت با رسیدن به نماد بعدی خاتمه می‌یابد. اگر هیچ تطابقی با نماد یافت نشود، چیزی نمایش داده نمی‌شود.

توجه داشته باشید که اگر گزینه --dwarf=follow-links فعال باشد، تمام جدول‌های نماد در فایل‌های اطلاعات دیباگ پیوند داده‌شده خوانده شده و هنگام دیکامپایل استفاده می‌شوند.

مشابه -d، اما محتوای تمامی بخش‌های غیرخالی و غیر bss را دیکامپایل می‌کند، نه فقط بخش‌هایی که انتظار می‌رود حاوی دستورالعمل باشند. از گزینه -j می‌توان برای انتخاب بخش‌های خاص استفاده کرد.

این گزینه همچنین تأثیر ظریفی روی دیکامپایل دستورالعمل‌ها در بخش‌های کد دارد. هنگامی که گزینه -d فعال است، objdump فرض می‌کند هر نمادی در بخش کد روی مرز بین دستورالعمل‌ها قرار دارد و از دیکامپایل در عرض چنین مرزی خودداری می‌کند. اما هنگامی که گزینه -D فعال باشد، این فرض نادیده گرفته می‌شود. این بدان معناست که اگر داده‌ها در بخش کد ذخیره شده باشند، ممکن است خروجی -d و -D متفاوت باشد.

اگر معماری هدف ARM باشد، این سوییچ دیکامپایلر را مجبور می‌کند داده‌های موجود در بخش‌های کد را به گونه‌ای رمزگشایی کند که گویی دستورالعمل هستند.

توجه داشته باشید که اگر گزینه --dwarf=follow-links فعال باشد، تمام جدول‌های نماد در فایل‌های اطلاعات دیباگ پیوند داده‌شده خوانده شده و در دیکامپایل به کار می‌روند.

هنگام دیکامپایل، آدرس‌ها روی هر خط یا برای نمادها و آفست‌های بازآرایی چاپ نمی‌شوند. در ترکیب با --no-show-raw-insn این گزینه برای مقایسه خروجی کامپایلرها بسیار کاربردی است.
هنگام دیکامپایل، آدرس کامل در هر خط چاپ می‌شود. این فرمت قدیمی‌تر دیکامپایل است.
مشخص کردن ترتیب بایت‌ها (endianness) در فایل‌های شیء. این گزینه تنها بر دیکامپایل تأثیر می‌گذارد. هنگام دیکامپایل فرمت‌های فایلی که اطلاعات ترتیب بایت‌ها را ندارند (مانند S-records) کاربرد دارد.
نمایش اطلاعات خلاصه هدر کلی هر یک از فایل‌های objfile.
هنگام دیکامپایل بخش‌ها، هر زمان که نمادی نمایش داده می‌شود، آفست فایل ناحیه داده‌ای که قرار است استخراج شود نیز چاپ می‌شود. در صورت رد شدن از بایت‌های صفر، پس از ادامه دیکامپایل، تعداد صفرهای رد شده و آفست محلی که دیکامپایل از آن ادامه یافته گزارش می‌شود. هنگام استخراج بخش‌ها، آفست شروع استخراج نمایش داده می‌شود.
مشخص می‌کند هنگامی که سورس‌کد و دیکامپایل درهم‌آمیخته نمایش داده می‌شوند (با فرض فعال بودن -S)، برای فایلی که هنوز نمایش داده نشده، زمینه تا ابتدای فایل گسترش یابد.
نمایش اطلاعات خلاصه هدرهای بخش‌های فایل شیء.

قطعات فایل ممکن است با استفاده از گزینه‌های -Ttext، -Tdata یا -Tbss در ld به آدرس‌های غیر استاندارد بازآرایی شوند. با این حال برخی فرمت‌های فایل شیء مانند a.out آدرس شروع قطعات فایل را ذخیره نمی‌کنند. در این شرایط با وجودی که ld بخش‌ها را به درستی بازآرایی کرده است، استفاده از objdump -h برای فهرست هدرهای بخش نمی‌تواند آدرس‌های صحیح را نشان دهد و در عوض آدرس‌های پیش‌فرض هدف را نمایش می‌دهد.

توجه: در برخی موارد ممکن است یک بخش هم ویژگی READONLY و هم NOREAD را داشته باشد. در چنین مواردی ویژگی NOREAD اولویت دارد، اما objdump هر دو را گزارش می‌کند زیرا تنظیم دقیق بیت‌های فلگ ممکن است اهمیت داشته باشد.

چاپ خلاصه گزینه‌های objdump و خروج.
نمایش فهرستی از تمام معماری‌ها و فرمت‌های شیء موجود برای استفاده با گزینه‌های -b یا -m.
نمایش اطلاعات مربوط به بخش name. این گزینه می‌تواند چندین بار مشخص شود.
نمایش محتوای بخش‌های غیردیباگ موجود در فایل‌های debuginfo جداگانه که به فایل اصلی لینک شده‌اند. این گزینه به طور خودکار گزینه -WK را در بر دارد و فقط بخش‌های درخواست‌شده توسط سایر گزینه‌ها نمایش داده می‌شوند.
برچسب‌گذاری خروجی با استفاده از اطلاعات دیباگ شامل نام فایل و شماره خطوط سورس متناظر با کد شیء یا بازآرایی‌های نمایش داده شده. فقط با گزینه‌های -d، -D یا -r کاربرد دارد.
تعیین معماری مورد استفاده هنگام دیکامپایل فایل‌های شیء. هنگام دیکامپایل فایل‌هایی که فاقد اطلاعات معماری هستند (مانند S-records) کاربرد دارد. معماری‌های موجود با گزینه -i قابل مشاهده‌اند.

برای اکثر معماری‌ها می‌توان نام معماری و نوع ماشین را با علامت دونقطه جدا کرد، مانند foo:bar که به نوع ماشین bar در معماری foo اشاره دارد. این قابلیت زمانی که objdump برای پشتیبانی از چندین معماری پیکربندی شده باشد کاربرد دارد.

اگر هدف معماری ARM باشد، این سوییچ تأثیر مضاعفی دارد و دیکامپایل را تنها به دستورالعمل‌های پشتیبانی‌شده در معماری تعیین‌شده توسط machine محدود می‌کند. اگر فایل ورودی فاقد اطلاعات معماری است اما مایلید تمام دستورالعمل‌ها دیکامپایل شوند، از -marm استفاده کنید.

ارسال اطلاعات خاص معماری هدف به دیکامپایلر. فقط روی برخی معماری‌ها پشتیبانی می‌شود. در صورت نیاز به تعیین چند گزینه، می‌توان چندین بار از -M استفاده کرد یا آنها را با کاما از هم جدا نمود.

برای معماری ARC گزینه dsp چاپ دستورالعمل‌های DSP، گزینه spfp چاپ دستورالعمل‌های ممیز شناور دقت تکی FPX، گزینه dpfp چاپ دستورالعمل‌های ممیز شناور دقت دوگانه FPX، گزینه quarkse_em چاپ دستورالعمل‌های خاص QuarkSE-EM، گزینه fpuda چاپ دستورالعمل‌های کمکی دقت دوگانه، گزینه fpus چاپ دستورالعمل‌های ممیز شناور دقت تکی FPU و گزینه fpud چاپ دستورالعمل‌های ممیز شناور دقت دوگانه FPU را انتخاب می‌کند. همچنین می‌توان با hex مقادیر بی‌درنگ (immediates) را در مبنای ۱۶ چاپ کرد. به طور پیش‌فرض مقادیر بی‌درنگ کوتاه در مبنای ۱۰ و مقادیر بلند در مبنای ۱۶ چاپ می‌شوند.

گزینه cpu=... اجازه می‌دهد هنگام دیکامپایل دستورالعمل‌ها یک ISA خاص اعمال شود و مقدار -m یا مقادیر موجود در فایل ELF بازنویسی گردد. این برای انتخاب ISA در ARC EM یا HS کاربرد دارد زیرا معماری برای هر دو یکسان است. این گزینه می‌تواند چندین بار مشخص شود و فقط آخرین مقدار اعمال می‌گردد. مقادیر معتبر مشابه گزینه -mcpu=... در اسمبلر هستند.

اگر هدف معماری ARM باشد، این سوییچ برای انتخاب مجموعه نام ثبات‌ها در طول دیکامپایل به کار می‌رود. گزینه -M reg-names-std (پیش‌فرض) نام ثبات‌ها را مطابق مستندات مجموعه دستورالعمل ARM انتخاب می‌کند، اما ثبات ۱۳ را 'sp'، ثبات ۱۴ را 'lr' و ثبات ۱۵ را 'pc' می‌نامد. گزینه -M reg-names-apcs نام‌های استاندارد فراخوانی رویه ARM را انتخاب می‌کند و -M reg-names-raw از حرف r به همراه شماره ثبات استفاده می‌کند.

دو حالت دیگر برای نام‌گذاری ثبات‌های APCS شامل -M reg-names-atpcs و -M reg-names-special-atpcs هستند که از قواعد نام‌گذاری استاندارد فراخوانی رویه ARM/Thumb استفاده می‌کنند.

همچنین در معماری‌های ARM می‌توان دیکامپایلر را مجبور کرد تمام دستورالعمل‌ها را به عنوان دستورات Thumb تفسیر کند، با استفاده از سوییچ --disassembler-options=force-thumb. این هنگام دیکامپایل کدهای Thumb تولید شده توسط سایر کامپایلرها کاربرد دارد.

برای اهداف AArch64 این سوییچ می‌تواند با -M no-aliases دستورالعمل‌ها را به کلی‌ترین شکل دیکامپایل کند یا با -M notes یادداشت‌های دستورالعمل را به صورت توضیح در دیکامپایل درج نماید.

برای x86 برخی گزینه‌ها عملکردهای مشابه سوییچ -m دارند اما امکان کنترل دقیق‌تری را فراهم می‌کنند:

"x86-64"
"i386"
"i8086"
انتخاب دیکامپایل برای معماری داده‌شده.
"intel"
"att"
انتخاب بین حالت نگارش Intel و نگارش AT&T.
"amd64"
"intel64"
انتخاب بین AMD64 ISA و Intel64 ISA.
"intel-mnemonic"
"att-mnemonic"
انتخاب بین حالت نمادهای اینتل و نمادهای AT&T. توجه: "intel-mnemonic" حالت "intel" را در بر دارد و "att-mnemonic" حالت "att" را در بر دارد.
"addr64"
"addr32"
"addr16"
"data32"
"data16"
تعیین اندازه پیش‌فرض آدرس و عملوند. این پنج گزینه در صورت حضور "x86-64"، "i386" یا "i8086" در ادامه رشته گزینه‌ها بازنویسی خواهند شد.
"suffix"
در حالت AT&T و همچنین برای مجموعه محدودی از دستورالعمل‌ها در حالت اینتل، دیکامپایلر را ملزم به چاپ پسوند نماد می‌کند حتی اگر پسوند از عملوندها یا حالت اجرای پیش‌فرض قابل استنباط باشد.

برای PowerPC آرگومان raw در -M دیکامپایل دستورالعمل‌های سخت‌افزاری را به جای نام‌های مستعار انتخاب می‌کند. به عنوان مثال "rlwinm" را به جای "clrlwi" و "addi" را به جای "li" مشاهده خواهید کرد. تمامی آرگومان‌های -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 هر آپ‌کدی که برای binutils شناخته‌شده باشد را دیکامپایل می‌کند، اما اگر آپ‌کدی دو معنی یا عملوند متفاوت داشته باشد ممکن است نتیجه مورد انتظار حاصل نشود. اگر بدون انتخاب پردازنده دیکامپایل کنید، یک مقدار پیش‌فرض بر اساس هدر فایل شیء توسط BFD انتخاب می‌شود.

برای RISC-V گزینه‌های زیر پشتیبانی می‌شوند:

"max"
دیکامپایل بدون بررسی رشته معماری. در این حالت برای پسوندهای تداخلی ISA، اولین تطابق برای رمزگشایی دستور استفاده می‌شود. زمانی مفید است که فایل ELF رشته ISA را مشخص نکرده باشد یا رشته پیش‌فرض ("rv64gc") تمام دستورات را پوشش ندهد.
"numeric"
چاپ نام عددی ثبات‌ها به جای نام‌های ABI (مثلاً چاپ "x2" به جای "sp").
"no-aliases"
دیکامپایل تنها به دستورالعمل‌های استاندارد پایه. به عنوان مثال دستورات فشرده به همان شکل نمایش داده می‌شوند ("addi sp,sp,-128" به صورت "c.addi16sp sp,-128" نمایش می‌یابد).
"priv-spec=SPEC"
چاپ ثبات‌های CSR بر اساس نسخه مشخصات سطح دسترسی انتخاب‌شده (مانند 1.10، 1.11، 1.12، 1.13).

برای MIPS این گزینه چاپ نام نمادین دستورالعمل‌ها و نام ثبات‌ها را کنترل می‌کند. گزینه‌های زیر با کاما قابل تفکیک هستند و گزینه‌های نامعتبر نادیده گرفته می‌شوند:

"no-aliases"
چاپ دستورالعمل اصلی به جای دستورات شبه‌اسمبلی (pseudo-instructions). به عنوان مثال چاپ 'daddu' یا 'or' به جای 'move'، و 'sll' به جای 'nop'.
"msa"
دیکامپایل دستورالعمل‌های MSA.
"virt"
دیکامپایل دستورالعمل‌های مجازی‌سازی ASE.
"xpa"
دیکامپایل دستورالعمل‌های آدرس‌دهی فیزیکی توسعه‌یافته (XPA) ASE.
"gpr-names=ABI"
چاپ نام ثبات‌های عمومی (GPR) متناسب با ABI مشخص‌شده. به طور پیش‌فرض بر اساس ABI باینری ورودی انتخاب می‌شود.
"fpr-names=ABI"
چاپ نام ثبات‌های ممیز شناور (FPR) متناسب با ABI مشخص‌شده. به طور پیش‌فرض شماره ثبات‌ها به جای نام چاپ می‌شود.
"cp0-names=ARCH"
چاپ نام ثبات‌های کمک‌پردازنده کنترل سیستم (CP0) متناسب با معماری مشخص‌شده با ARCH. به طور پیش‌فرض بر اساس معماری باینری تعیین می‌شود.
"hwr-names=ARCH"
چاپ نام ثبات‌های سخت‌افزاری HWR (مورد استفاده در دستور "rdhwr") متناسب با پردازنده یا معماری مشخص‌شده در ARCH.
"reg-names=ABI"
چاپ نام ثبات‌های GPR و FPR متناسب با ABI انتخاب‌شده.
"reg-names=ARCH"
چاپ نام ثبات‌های اختصاصی پردازنده (ثبات‌های CP0 و HWR) متناسب با پردازنده یا معماری انتخاب‌شده.

برای هر یک از گزینه‌های بالا، می‌توان ABI یا ARCH را برابر با numeric قرار داد تا به جای نام‌ها، شماره‌های عددی برای ثبات‌ها چاپ شوند. مقادیر موجود با گزینه --help قابل مشاهده‌اند.

برای VAX می‌توانید آدرس‌های ورودی تابع را با -M entry:0xf00ba مشخص کنید. از این گزینه می‌توان چندین بار برای دیکامپایل باینری‌های VAX فاقد جدول نمادها استفاده کرد تا ماسک ورودی تابع اشتباهاً به عنوان دستورات VAX تفسیر نشود.

چاپ اطلاعات اختصاصی فرمت فایل شیء. اطلاعات دقیق چاپ‌شده به فرمت فایل بستگی دارد و برای برخی فرمت‌ها اطلاعات بیشتری چاپ نمی‌شود.
چاپ اطلاعات اختصاصی فرمت فایل شیء. آرگومان options فهرستی از گزینه‌های جداشده با کاما است که به فرمت بستگی دارد (فهرست گزینه‌ها در خروجی help نمایش داده می‌شود).

برای XCOFF گزینه‌های موجود عبارتند از:

"header"
"aout"
"sections"
"syms"
"relocs"
"lineno,"
"loader"
"except"
"typchk"
"traceback"
"toc"
"ldinfo"

برای PE گزینه‌های موجود عبارتند از:

"header"
"sections"

همه فرمت‌های شیء از این گزینه پشتیبانی نمی‌کنند؛ به ویژه فرمت ELF از آن استفاده نمی‌کند.

چاپ ورودی‌های بازآرایی (relocation) فایل. در صورت استفاده همراه با -d یا -D، بازآرایی‌ها در میان خطوط دیکامپایل چاپ می‌شوند.
چاپ ورودی‌های بازآرایی پویای فایل. این گزینه فقط برای اشیاء پویا مانند انواع خاصی از کتابخانه‌های اشتراکی معنا دارد. همانند -r، اگر با -d یا -D استفاده شود، بازآرایی‌ها لابه‌لای دیکامپایل نمایش می‌یابند.

توجه: دستور objdump از نمایش بازآرایی‌های نوع RELR پشتیبانی نمی‌کند؛ این نوع بازآرایی‌ها را می‌توان با برنامه readelf مشاهده کرد.

نمایش محتوای کامل بخش‌ها، که معمولاً همراه با -j برای درخواست بخش‌های خاص استفاده می‌شود. به طور پیش‌فرض تمام بخش‌های غیرخالی و غیر bss نمایش داده می‌شوند. بخش‌های فشرده‌شده به صورت پیش‌فرض در حالت فشرده نمایش می‌یابند؛ برای مشاهده محتوا در حالت غیرفشرده، گزینه -Z را به خط فرمان اضافه کنید.
نمایش سورس‌کد درهم‌آمیخته با دیکامپایل در صورت امکان. گزینه -d را نیز فعال می‌کند.
هنگام دیکامپایل، نمایش تمامی نمادهایی که با یک آدرس مشخص مطابقت دارند، نه فقط اولین نماد.
مشابه گزینه -S، اما تمام خطوط سورس‌کد با پیشوند txt نمایش داده می‌شوند. معمولاً txt یک رشته توضیحات است که برای تفکیک کد اسمبلی از سورس‌کد استفاده می‌شود. اگر txt داده نشود، پیش‌فرض "# " (کاراکتر هش به همراه فاصله) استفاده خواهد شد.
تعیین prefix برای افزودن به مسیرهای مطلق هنگام استفاده با -S.
مشخص می‌کند چه تعداد از پوشه‌های ابتدایی از مسیرهای مطلق حذف شوند. بدون گزینه --prefix=prefix تأثیری ندارد.
هنگام دیکامپایل دستورالعمل‌ها، علاوه بر فرم نمادین، دستور به صورت هگزادسیمال نیز چاپ شود. این حالت پیش‌فرض است مگر اینکه از --prefix-addresses استفاده شده باشد.
هنگام دیکامپایل، بایت‌های دستورالعمل چاپ نشوند. در صورت استفاده از --prefix-addresses این حالت پیش‌فرض است.
نمایش width بایت روی یک خط واحد هنگام دیکامپایل دستورالعمل‌ها.
بصری‌سازی پرش‌هایی که درون یک تابع باقی می‌مانند با رسم نمودار اسکی بین آدرس مبدا و مقصد. آرگومان اختیاری =color رنگ‌آمیزی ترمینال را اضافه می‌کند. آرگومان =extended-color از رنگ‌های ۸ بیتی استفاده می‌کند که ممکن است در همه ترمینال‌ها کار نکند.

برای غیرفعال کردن این ویژگی پس از فعال‌سازی قبلی از visualize-jumps=off استفاده کنید.

فعال یا غیرفعال کردن رنگ‌آمیزی ساختاری (syntax highlighting) در خروجی دیکامپایل. رفتار پیش‌فرض هنگام پیکربندی و ساخت تعیین می‌شود. توجه داشته باشید که همه معماری‌ها از رنگ‌آمیزی ساختاری پشتیبانی نمی‌کنند و بسته به ترمینال ممکن است خوانا نباشد.

آرگومان on رنگ‌های ساده ترمینال را اضافه می‌کند.

آرگومان terminal نیز همین کار را انجام می‌دهد اما فقط در صورتی که خروجی یک ترمینال باشد.

آرگومان extended-color از رنگ‌های ۸ بیتی استفاده می‌کند که ممکن است در تمام ترمینال‌ها کار نکند.

آرگومان off رنگ‌آمیزی دیکامپایل را غیرفعال می‌کند.

نمایش محتوای بخش‌های دیباگ DWARF موجود در فایل. بخش‌های دیباگ فشرده قبل از نمایش به طور موقت از حالت فشرده خارج می‌شوند. در صورت مشخص کردن حروف یا کلمات اختیاری پس از سوییچ، تنها آن نوع داده‌ها نمایش داده می‌شوند:
"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 در حال حاضر پشتیبانی نمی‌شود.

محدود کردن استخراج بخش ".debug_info" به n فرزند. این گزینه فقط همراه با --debug-dump=info کاربرد دارد. پیش‌فرض چاپ تمام DIEهاست؛ مقدار ویژه 0 برای n نیز همین اثر را دارد.

با یک مقدار غیر صفر برای n، ورودی‌های DIE در سطح n یا عمیق‌تر چاپ نمی‌شوند. دامنه n بر مبنای صفر است.

چاپ DIEها فقط با شروع از DIE شماره n. این گزینه فقط با --debug-dump=info کاربرد دارد.

در صورت تعیین، چاپ اطلاعات هدر و تمام DIEهای قبل از DIE شماره n متوقف می‌شود. تنها هم‌سطح‌ها و فرزندان DIE مشخص‌شده چاپ خواهند شد.

می‌تواند همراه با --dwarf-depth استفاده شود.

فعال‌سازی بررسی‌های تکمیلی برای یکپارچگی اطلاعات Dwarf.
نمایش محتوای بخش CTF مشخص‌شده. بخش‌های CTF شامل زیربخش‌های متعددی هستند که همه به ترتیب نمایش داده می‌شوند.

به طور پیش‌فرض نام بخش با عنوان .ctf که نام صادرشده توسط ld است نمایش می‌یابد.

اگر بخش CTF شامل انواع با تعریف مبهم باشد، شامل آرشیوی از فرهنگ‌های لغت متعدد CTF خواهد بود که همگی از یک دیکشنری حاوی انواع غیرمبهم ارث‌بری می‌کنند. این عضو به طور پیش‌فرض .ctf نام دارد، اما تغییر آن با تابع "ctf_link_set_memb_name_changer" در زمان پیوند امکان‌پذیر است. هنگام بررسی آرشیوهای CTF ساخته‌شده توسط لینکری که نام عضو آرشیو والد را تغییر داده، --ctf-parent می‌تواند برای تعیین نام والد استفاده شود.
این گزینه امکان می‌دهد بخش کاملاً متفاوتی را برای دیکشنری والد CTF حاوی انواع بدون ابهام نسبت به دیکشنری‌های فرزند مشخص کنید. لینکر معمولاً اشیاء ELF را با چنین ساختاری ایجاد نمی‌کند، اما برخی لینکرهای متفرقه ممکن است این کار را انجام دهند. همچنین برای بازبینی CTFهای ذخیره‌شده به عنوان چند فایل خام جهت ترکیب با objcopy مفید است.
نمایش محتوای بخش SFrame مشخص‌شده.

به طور پیش‌فرض نام بخش به صورت .sframe که نام ایجادشده توسط ld است نمایش داده می‌شود.

نمایش محتوای کامل بخش‌های درخواستی. نمایش محتوای بخش‌های .stab و .stab.index و .stab.excl از یک فایل ELF. این گزینه فقط در سیستم‌هایی (مانند Solaris 2.0) کاربرد دارد که ورودی‌های جدول نمادهای دیباگ ".stab" در یک بخش ELF حمل می‌شوند. در بیشتر فرمت‌های فایل دیگر، ورودی‌های دیباگ با نمادهای پیوند در هم آمیخته و در خروجی --syms قابل مشاهده‌اند.
شروع نمایش داده‌ها از آدرس مشخص‌شده. بر خروجی گزینه‌های -d، -r و -s تأثیر می‌گذارد.
توقف نمایش داده‌ها در آدرس مشخص‌شده. بر خروجی گزینه‌های -d، -r و -s تأثیر می‌گذارد.
چاپ ورودی‌های جدول نمادهای فایل. مشابه اطلاعات ارائه‌شده توسط برنامه 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* اگر بخش در فایل مورد نظر ارجاع داده شده اما در آن تعریف نشده باشد.

پس از نام بخش فیلد دیگری قرار دارد که برای نمادهای مشترک مقدار تراز (alignment) و برای سایر نمادها اندازه است. در نهایت نام نماد نمایش داده می‌شود.

کاراکترهای فلگ به ۷ گروه زیر تقسیم می‌شوند:

"l"
"g"
"u"
"!"
نماد یک نماد محلی (l)، سراسری (g)، سراسری یکتا (u)، نه سراسری و نه محلی (فاصله) یا هر دو حالت سراسری و محلی (!) است. یک نماد به دلایل مختلفی ممکن است نه محلی و نه سراسری باشد (مثلاً برای دیباگ)، اما حالت همزمان محلی و سراسری معمولاً نشان‌دهنده یک اشکال است. نمادهای سراسری یکتا یک افزونه گنو به مجموعه استاندارد پیوندهای نماد ELF هستند که در آن پیونددهنده پویا تضمین می‌کند در کل فرآیند تنها یک نماد با این نام و نوع استفاده شود.
"w"
نماد ضعیف (w) یا قوی (فاصله) است.
"C"
نماد نشان‌دهنده یک سازنده (C) یا یک نماد معمولی (فاصله) است.
"W"
نماد یک هشدار (W) یا یک نماد عادی (فاصله) است. نام نماد هشدار پیامی است که در صورت ارجاع به نماد بعد از آن نمایش داده می‌شود.
"I"
"i"
نماد یک ارجاع غیرمستقیم به نماد دیگر (I)، تابعی که باید در حین پردازش بازآرایی ارزیابی شود (i) یا یک نماد عادی (فاصله) است.
"d"
"D"
نماد دیباگ (d)، نماد پویا (D) یا نماد عادی (فاصله) است.
"F"
"f"
"O"
نماد نام یک تابع (F)، یک فایل (f)، یک شیء (O) یا فقط یک نماد معمولی (فاصله) است.
چاپ ورودی‌های جدول نمادهای پویای فایل. این گزینه فقط برای اشیاء پویا مانند انواع خاصی از کتابخانه‌های اشتراکی معنا دارد. مشابه اطلاعات ارائه‌شده توسط برنامه nm هنگام استفاده با گزینه -D (--dynamic) است.

فرمت خروجی شبیه خروجی گزینه --syms است، با این تفاوت که یک فیلد اضافی قبل از نام نماد درج می‌شود که اطلاعات نسخه مرتبط با نماد را ارائه می‌دهد. اگر نسخه همان نسخه پیش‌فرض برای حل ارجاعات بدون نسخه باشد به همان صورت چاپ می‌شود، در غیر این صورت داخل پرانتز قرار می‌گیرد.

هنگام نمایش نمادها، نمادهایی که هدف آنها را به نوعی خاص تلقی می‌کند و معمولاً مورد توجه کاربر نیستند را نیز شامل شود.
کنترل نحوه نمایش نویسه‌های چندبایتی کدگذاری‌شده با UTF-8 در رشته‌ها. حالت پیش‌فرض (--unicode=default) رفتار خاصی روی آنها اعمال نمی‌کند. گزینه --unicode=locale توالی را در لوکال جاری سیستم نمایش می‌دهد. گزینه‌های --unicode=hex و --unicode=invalid توالی بایت‌های هگزادسیمال را درون کروشه زاویه‌دار یا آکولاد نمایش می‌دهند.

گزینه --unicode=escape آنها را به صورت توالی‌های اسکیپ (\uxxxx) نمایش داده و --unicode=highlight آنها را به صورت توالی‌های اسکیپ با رنگ قرمز برجسته می‌کند (در صورت پشتیبانی خروجی). رنگ‌آمیزی برای جلب توجه به حضور توالی‌های یونیکد در جاهایی که انتظار نمی‌رود در نظر گرفته شده است.

چاپ شماره نسخه objdump و خروج.
نمایش تمام اطلاعات هدر موجود، از جمله جدول نمادها و ورودی‌های بازآرایی. استفاده از -x معادل تعیین تمامی گزینه‌های -a -f -h -p -r -t است.
قالب‌بندی خطوط برای دستگاه‌های خروجی با بیش از ۸۰ ستون. همچنین نام نمادها را هنگام نمایش کوتاه نمی‌کند.
به طور معمول خروجی دیکامپایل بلوک‌های صفر را نادیده می‌گیرد. این گزینه دیکامپایلر را هدایت می‌کند تا آن بلوک‌ها را نیز همانند داده‌های دیگر دیکامپایل کند.
گزینه -Z برای استفاده همراه با گزینه -s طراحی شده است. این گزینه به objdump دستور می‌دهد قبل از نمایش محتوای بخش‌های فشرده، آنها را از حالت فشرده خارج کند.
@file
خواندن گزینه‌های خط فرمان از file. گزینه‌های خوانده‌شده به جای گزینه @file اصلی قرار می‌گیرند. اگر file وجود نداشته باشد یا خوانده نشود، با آن مانند یک گزینه لفظی رفتار شده و حذف نمی‌شود.

گزینه‌ها در file با فاصله‌های سفید (whitespace) از یکدیگر جدا می‌شوند. یک نویسه فاصله می‌تواند با احاطه کل گزینه در گیومه تکی یا جفتی گنجانده شود. هر نویسه‌ای (از جمله بک‌اسلش) می‌تواند با قرار دادن یک بک‌اسلش قبل از آن درج گردد. فایل file می‌تواند شامل گزینه‌های @file دیگری نیز باشد؛ چنین گزینه‌هایی به صورت بازگشتی پردازش خواهند شد.

nm(1), readelf(1), و مدخل‌های Info برای binutils.

Copyright (c) 1991-2025 Free Software Foundation, Inc.

مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز اسناد آزاد گنو (GNU Free Documentation License) نسخه ۱.۳ یا هر نسخه بعدی منتشر شده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. یک نسخه از مجوز در بخش تحت عنوان "GNU Free Documentation License" گنجانده شده است.

2026-01-23 binutils-2.45.1