| 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
اطلاعات
مربوط به یک
یا چند فایل
شیء را
نمایش
میدهد.
گزینهها
مشخص
میکنند چه
اطلاعات
بهخصوصی
نمایش داده
شود. این
اطلاعات
بیشتر برای
برنامهنویسانی
مفید است که
بر روی
ابزارهای
کامپایل
کار
میکنند،
برعکس
برنامهنویسانی
که فقط
میخواهند
برنامهشان
کامپایل
شده و اجرا
شود.
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) نام نمادهای سطح پایین به نامهای سطح کاربر. این گزینه علاوه بر حذف هرگونه زیرخط ابتدایی اضافهشده توسط سیستم، نام توابع ++C را خوانا میکند. کامپایلرهای مختلف سبکهای درهمسازی متفاوتی دارند. آرگومان اختیاری سبک رمزگشایی میتواند برای انتخاب یک سبک رمزگشایی مناسب برای کامپایلر شما استفاده شود.
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- محدودیت در
میزان
بازگشتی
انجامشده
هنگام
رمزگشایی
رشتهها را
فعال یا
غیرفعال
میکند. از
آنجا که
قالبهای
درهمسازی
نام امکان
سطحی
نامحدود از
بازگشت را
میدهند،
این امکان
وجود دارد
که
رشتههایی
ایجاد شوند
که
رمزگشایی
آنها تمام
فضای پشتهٔ
موجود در
ماشین
میزبان را
مصرف کرده و
منجر به
خطای حافظه
شود. این
محدودیت با
محدود کردن
بازگشت به 2048
سطح تودرتو
سعی در
جلوگیری از
این اتفاق
دارد.
حالت پیشفرض این است که این محدودیت فعال باشد، اما غیرفعال کردن آن ممکن است برای رمزگشایی نامهای واقعاً پیچیده ضروری باشد. با این حال توجه داشته باشید که اگر محدودیت بازگشت غیرفعال شود، اتمام فضای پشته امکانپذیر است و هرگونه گزارش باگ در مورد چنین اتفاقی رد خواهد شد.
- -g
- --debugging
- نمایش اطلاعات اشکالزدایی. این گزینه تلاش میکند اطلاعات قالب اشکالزدایی STABS ذخیرهشده در فایل را تجزیه کرده و آن را با استفاده از نگارشی شبیه C چاپ کند. اگر هیچ اطلاعات اشکالزدایی STABS یافت نشد، این گزینه به گزینهٔ -W رجوع میکند تا هرگونه اطلاعات DWARF در فایل را چاپ کند.
- -e
- --debugging-tags
- مانند -g، اما اطلاعات در قالبی سازگار با ابزار ctags تولید میشود.
- -d
- --disassemble
- --disassemble=symbol
- کدهای
نمادین
اسمبلی را
برای
دستورالعملهای
ماشین از
فایل ورودی
نمایش
میدهد. این
گزینه تنها
بخشهایی
را
دیساسمبل
میکند که
انتظار
میرود
حاوی
دستورالعملها
باشند. اگر
آرگومان
اختیاری 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
- هنگام دیساسمبل کردن بخشها، هر زمان که نمادی نمایش داده میشود، آفست فایلیِ ناحیهٔ دادهای را که در شُرُف استخراج است نیز نمایش میدهد. اگر صفرها رد شوند، هنگام از سرگیری دیساسمبل، به کاربر اعلام میکند که چند صفر رد شدهاند و آفست فایلیِ مکانی را که دیساسمبل از آنجا ادامه مییابد نمایش میدهد. هنگام استخراج بخشها، آفست فایلیِ مکانی را که استخراج از آنجا شروع میشود نشان میدهد.
- --file-start-context
- مشخص میکند که هنگام نمایش توأم کد منبع/دیساسمبل (با فرض -S) از فایلی که هنوز نمایش داده نشده است، زمینهٔ متن تا ابتدای فایل گسترش یابد.
- -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
- نمایش اطلاعات متغیرهای سراسری. این گزینه تنها زمانی کار میکند که فایل شیء با گزینهٔ اشکالزدایی کامپایل شده باشد. به طور دقیقتر، این گزینه به مدخلهای اطلاعات اشکالزدایی DWARF2 متکی است. این قابلیت برای ردگیری مکان و نوع تمام متغیرهای سراسری در فایل شیء دادهشده مفید است.
- -L
- --process-links
- نمایش محتویات بخشهای غیر اشکالزدایی یافتشده در فایلهای debuginfo جداگانهای که به فایل اصلی پیوند دارند. این گزینه به طور خودکار مستلزم گزینهٔ -WK است، و تنها بخشهایی که توسط سایر گزینههای خط فرمان درخواست شدهاند نمایش داده خواهند شد.
- -l
- --line-numbers
- برچسبگذاری خروجی (با استفاده از اطلاعات اشکالزدایی) با نام فایل و شماره خطوط کد مبدأ متناظر با کد شیء یا جابهجاییهای (relocs) نمایشدادهشده. تنها به همراه -d، -D یا -r مفید است.
- -m machine
- --architecture=machine
- تعیین
معماری
مورد
استفاده
هنگام
واسازی (disassembling)
فایلهای
شیء. این
گزینه
هنگام
واسازی
فایلهای
شیئی که
فاقد
اطلاعات
معماری
هستند،
مانند S-records،
میتواند
مفید باشد.
میتوانید
معماریهای
موجود را با
گزینهٔ -i
فهرست کنید.
برای بیشتر معماریها میتوان یک نام معماری و یک نام ماشین را که با دونقطه از هم جدا شدهاند، مشخص کرد. برای نمونه foo:bar به نوع ماشین bar در معماری foo اشاره میکند. این ویژگی در صورتی که objdump برای پشتیبانی از چندین معماری پیکربندی شده باشد میتواند مفید باشد.
اگر هدف یک معماری ARM باشد، این سوئیچ اثر دیگری نیز دارد. این گزینه واسازی را تنها به دستورالعملهایی محدود میکند که توسط معماری مشخصشده با machine پشتیبانی میشوند. اگر استفاده از این سوئیچ به دلیل عدم وجود اطلاعات معماری در فایل ورودی ضروری باشد، اما در عین حال واسازی تمام دستورالعملها مورد نظر باشد، از -marm استفاده کنید.
- -M options
- --disassembler-options=options
- ارسال
اطلاعات
خاص هدف به
واساز (disassembler).
تنها در
برخی از
اهداف
پشتیبانی
میشود. اگر
تعیین بیش
از یک گزینه
برای واساز
ضروری
باشد،
میتوان از
چند گزینهٔ
-M استفاده
کرد یا
آنها را در
قالب
فهرستی با
جداکنندهٔ
ویرگول
قرار داد.
برای ARC، گزینهٔ dsp چاپ دستورالعملهای DSP را کنترل میکند، spfp چاپ دستورالعملهای ممیز شناور (FP) با دقت تکی FPX را انتخاب میکند، dpfp چاپ دستورالعملهای ممیز شناور با دقت مضاعف FPX را برمیگزیند، quarkse_em چاپ دستورالعملهای ویژهٔ QuarkSE-EM را انتخاب میکند، fpuda چاپ دستورالعملهای کمکی دقت مضاعف را انتخاب میکند، fpus چاپ دستورالعملهای FP با دقت تکی FPU را برمیگزیند، در حالی که fpud چاپ دستورالعملهای FP با دقت مضاعف FPU را برمیگزیند. علاوه بر این، میتوان با استفاده از hex تعیین کرد که تمام مقادیر بیدرنگ (immediates) در مبنای شانزده چاپ شوند. به طور پیشفرض، مقادیر بیدرنگ کوتاه با بازنمایی دهدهی چاپ میشوند، در حالی که مقادیر بیدرنگ بلند در مبنای شانزده چاپ میگردند.
گزینهٔ 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 به منظور وادار کردن واساز به تفسیر تمام دستورالعملها به عنوان دستورالعملهای Thumb، با استفاده از سوئیچ --disassembler-options=force-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"
- انتخاب میان حالت یادافزا (mnemonic) مربوط به intel و حالت یادافزا مربوط به AT&T. توجه: "intel-mnemonic" به معنی "intel" و "att-mnemonic" به معنی "att" است.
- "addr64"
- "addr32"
- "addr16"
- "data32"
- "data16"
- تعیین اندازهٔ پیشفرض نشانی و اندازهٔ عملوند (operand). این پنج گزینه در صورتی که "x86-64"، "i386" یا "i8086" در ادامهٔ رشتهٔ گزینهها بیایند، لغو و بازنویسی خواهند شد.
- "suffix"
- هنگام قرار داشتن در حالت AT&T و همچنین برای مجموعهٔ محدودی از دستورالعملها در حالت Intel، به واساز دستور میدهد حتی زمانی که پسوند میتواند از طریق عملوندها یا (برای برخی دستورالعملها) پیشفرضهای حالت اجرا استنباط شود، پسوند یادافزا را چاپ کند.
- "annotate-immediates"
- نمایش نماد مرتبط با مقادیر بیدرنگ، در صورت وجود. تنها روی فایلهای باینری اجرایی و کتابخانههای اشتراکی کار میکند، نه فایلهای شیء ایستا.
برای PowerPC، آرگومان raw در -M، واسازی دستورالعملهای سختافزاری را به جای نامهای مستعار (aliases) برمیگزیند. برای نمونه، به جای "clrlwi" عبارت "rlwinm" و به جای "li" عبارت "addi" را خواهید دید. تمامی آرگومانهای -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 هر آپکدی (opcode) را که برای 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 بر اساس نسخهٔ مشخصات سطح دسترسی انتخابشده (برای نمونه: 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
- نمایش محتوای کامل بخشها، که معمولاً در ترکیب با -j برای درخواست بخشهای مشخص به کار میرود. بهطور پیشفرض، تمام بخشهای غیرخالی و غیر bss نمایش داده میشوند. بهطور پیشفرض، هر بخش فشردهشده در قالب فشرده خود نمایش داده میشود. برای مشاهده محتویات در قالب غیرفشرده، گزینه -Z را به خط فرمان اضافه کنید.
- -S
- --source
- در صورت امکان، کد منبع را بهصورت آمیخته با دیساسمبل نمایش میدهد. این گزینه بهطور ضمنی شامل -d است.
- --show-all-symbols
- هنگام دیساسمبل کردن، تمام نمادهایی را که با یک آدرس مشخص مطابقت دارند نمایش میدهد، نه فقط نماد اول را.
- --source-comment[=txt]
- مانند گزینه -S، اما تمام خطوط کد منبع با پیشوند txt نمایش داده میشوند. معمولاً txt یک رشته توضیحات (کامنت) خواهد بود که میتوان از آن برای تمایز کد اسمبلی از کد منبع استفاده کرد. اگر 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 انتخاب کرد. اگر از این گزینهها استفاده نشود، حالت پیشفرض دنبال کردن پیوندهای اشکالزدایی است.
نکته - اگر هنگام ساخت 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 در حال حاضر پشتیبانی نمیشود. محدود کردن تخلیه بخش ".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 جلوگیری میکند. تنها همسطحها (siblings) و فرزندان 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 و .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) نشاندهنده همترازی و برای نمادهای دیگر نشاندهنده اندازه است. در نهایت نام نماد نمایش داده میشود.
نویسههای پرچم به ۷ گروه به شرح زیر تقسیم میشوند:
- "l"
- "g"
- "u"
- "!"
- نماد محلی (l)، سراسری (g)، سراسری یکتا (u)، نه سراسری و نه محلی (یک فاصله) یا هم سراسری و هم محلی (!) است. یک نماد به دلایل مختلفی میتواند نه محلی باشد و نه سراسری، به عنوان مثال چون برای اشکالزدایی استفاده میشود؛ اما اگر همزمان محلی و سراسری باشد احتمالاً نشانهای از یک باگ است. نمادهای سراسری یکتا یک گسترش گنو بر مجموعه استاندارد اتصالات نماد ELF هستند. برای چنین نمادی، پیونددهنده پویا اطمینان حاصل میکند که در تمام طول فرایند تنها یک نماد با این نام و نوع استفاده شود.
- "w"
- نماد ضعیف (w) یا قوی (یک فاصله) است.
- "C"
- نماد نشاندهنده یک سازنده (C) یا یک نماد معمولی (یک فاصله) است.
- "W"
- نماد یک هشدار (W) یا یک نماد عادی (یک فاصله) است. نام نماد هشدار، پیامی است که اگر به نمادِ پس از نماد هشدار ارجاعی داده شود، نمایش خواهد یافت.
- "I"
- "i"
- نماد یک ارجاع غیرمستقیم به نمادی دیگر (I)، یک تابع که در طول پردازش تغییر مکان (reloc) ارزیابی میشود (i) یا یک نماد عادی (یک فاصله) است.
- "d"
- "D"
- نماد یک نماد اشکالزدایی (d) یا یک نماد پویا (D) یا یک نماد عادی (یک فاصله) است.
- "F"
- "f"
- "O"
- نماد نام یک تابع (F)، یک فایل (f)، یک شیء (O) یا صرفاً یک نماد عادی (یک فاصله) است.
- -T
- درایههای
جدول
نمادهای
پویای فایل
را چاپ
میکند. این
گزینه فقط
برای اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی،
معنیدار
است. این
شبیه به
اطلاعاتی
است که
برنامه nm
هنگام
دریافت
گزینه -D (--dynamic)
ارائه
میدهد.
قالب خروجی شبیه به خروجی تولیدشده توسط گزینه --syms است، با این تفاوت که یک فیلد اضافی پیش از نام نماد درج میشود که اطلاعات نسخه مرتبط با نماد را ارائه میکند. اگر این نسخه، نسخه پیشفرضی باشد که هنگام حل ارجاعات بدون نسخه به نماد استفاده میشود، همانگونه که هست نمایش داده میشود؛ در غیر این صورت درون پرانتز قرار میگیرد.
- --special-syms
- هنگام نمایش نمادها، آنهایی را نیز شامل میشود که مقصد (target) آنها را بهنوعی خاص میداند و در حالت عادی مورد توجه کاربر نیستند.
- -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) نمیکند.
- -z
- --disassemble-zeroes
- بهطور معمول خروجی دیساسمبل از بلوکهای صفر رد میشود. این گزینه به دیساسمبلر هدایت میکند که آن بلوکها را نیز دقیقاً مانند هر داده دیگری دیساسمبل کند.
- -Z
- --decompress
- گزینه -Z برای استفاده همزمان با گزینه -s در نظر گرفته شده است. این گزینه به objdump دستور میدهد تا هر بخش فشردهشده را پیش از نمایش محتویات آن، از حالت فشرده خارج کند.
- @file
- گزینههای
خط فرمان را
از file
میخواند.
گزینههای
خواندهشده
به جای
گزینه اصلی
@file درج
میشوند.
اگر file وجود
نداشته
باشد یا
قابل
خواندن
نباشد، با
گزینه
بهصورت
لغوی (literal)
برخورد
میشود و
حذف نخواهد
شد.
گزینهها در 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 |