| OBJDUMP(1) | GNU Development Tools | OBJDUMP(1) |
نام (NAME)
objdump - نمایش اطلاعات و بررسی محتوای فایلهای باینری و شیء (Object Files)
خلاصه دستور (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...
توضیحات (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 را به نشانی تمام بخشها (Sections) اضافه میکند. این گزینه زمانی مفید است که نشانی بخشها با جدول نمادها مطابقت نداشته باشد؛ وضعیتی که ممکن است هنگام قرار دادن بخشها در نشانیهای خاص در فرمتهایی رخ دهد که قادر به نمایش نشانی بخشها نیستند (مانند 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) دارند. از آرگومان اختیاری شیوه رمزگشایی (style) میتوان برای انتخاب شیوه مناسب با کامپایلر استفاده کرد.
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- محدودیت
میزان
بازگشت (Recursion)
هنگام
رمزگشایی
رشتههای
نام را فعال
یا غیرفعال
میکند. از
آنجا که
فرمتهای
دستکاری
نام اجازه
بازگشت
نامحدود را
میدهند،
ممکن است
رشتههایی
تولید شوند
که
رمزگشایی
آنها تمام
فضای پشته
در دسترس
سیستم
میزبان را
مصرف کرده و
باعث خطای
حافظه (Memory Fault)
شود. این
محدودیت با
تحدید
بازگشت به
۲۰۴۸ سطح
تودرتو
تلاش
میکند از
وقوع این
مشکل
جلوگیری
کند.
پیشفرض این است که محدودیت فعال باشد، اما غیرفعال کردن آن برای رمزگشایی نامهای واقعاً پیچیده ممکن است ضروری باشد. با این حال توجه داشته باشید که در صورت غیرفعال کردن محدودیت بازگشت، سرریز پشته (Stack Exhaustion) محتمل خواهد بود و هرگونه گزارش باگ مربوط به چنین رخدادی رد خواهد شد.
- -g
- --debugging
- نمایش اطلاعات اشکالزدایی (Debugging). این گزینه تلاش میکند اطلاعات فرمت اشکالزدایی STABS ذخیرهشده در فایل را تجزیه کرده و آن را با ساختاری شبیه به زبان C چاپ کند. اگر اطلاعات اشکالزدایی STABS یافت نشود، این گزینه به گزینه -W رجوع کرده تا هرگونه اطلاعات DWARF موجود در فایل را چاپ کند.
- -e
- --debugging-tags
- مشابه -g، اما اطلاعات در قالبی سازگار با ابزار ctags تولید میشوند.
- -d
- --disassemble
- --disassemble=symbol
- نمایش
کدهای
یادبخش
اسمبلی (Mnemonics)
برای
دستورات
ماشین از
فایل ورودی.
این گزینه
فقط
بخشهایی
را
دیساسمبل
میکند که
انتظار
میرود
شامل
دستورالعمل
باشند. اگر
آرگومان
اختیاری 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 Offset) ناحیه دادهای که قرار است استخراج شود را نیز نمایش میدهد. اگر صفرهای متوالی نادیده گرفته شوند، هنگام از سرگیری دیساسمبل، تعداد صفرهای نادیده گرفتهشده و آفست فایل نقطهای که دیساسمبل از آنجا ادامه مییابد به کاربر اعلام میشود. هنگام استخراج بخشها، آفست فایل مکانی که استخراج از آن آغاز شده است را نمایش میدهد.
- --file-start-context
- مشخص میکند که هنگام نمایش توأم کد منبع و دیساسمبل (با فرض فعال بودن -S) برای فایلی که تاکنون نمایش داده نشده است، محدوده زمینه تا ابتدای فایل گسترش یابد.
- -h
- --section-headers
- --headers
- اطلاعات
خلاصهای
از هدرهای
بخش (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
- خروجی نمایش داده شده را (با استفاده از اطلاعات اشکالزدایی) با نام فایل و شماره خطوط کد منبع متناظر با کد شیء یا بازنشانیها برچسبگذاری میکند. فقط با گزینههای -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 چاپ دستورات ممیز شناور با دقت یگانه FPX را انتخاب میکند، dpfp چاپ دستورات ممیز شناور با دقت دوگانه FPX را برمیگزیند، quarkse_em دستورات ویژه QuarkSE-EM را چاپ میکند، fpuda چاپ دستورات کمکی دقت دوگانه را تعیین میکند، fpus چاپ دستورات ممیز شناور دقت یگانه FPU را انتخاب میکند، در حالی که fpud چاپ دستورات ممیز شناور با دقت دوگانه FPU را انتخاب مینماید. افزون بر این، میتوان با استفاده از hex انتخاب کرد که تمامی مقادیر بیدرنگ (Immediates) در مبنای شانزده چاپ شوند. بهطور پیشفرض، مقادیر بیدرنگ کوتاه در قالب دهدهی و مقادیر طولانی در قالب هگزادسیمال چاپ میشوند.
گزینه cpu=... به شما امکان میدهد هنگام دیساسمبل کردن دستورالعملها، یک ISA خاص را اعمال کرده و مقدار -m یا هر آنچه در فایل ELF است را بازنویسی (Override) کنید. این برای انتخاب ARC EM یا HS ISA مفید است، زیرا معماری این دو یکسان است و دیساسمبلر برای تشخیص کد EM یا HS به دادههای هدر خصوصی ELF تکیه میکند. این گزینه میتواند چندین بار مشخص شود؛ تنها آخرین مقدار اعمال خواهد شد. مقادیر معتبر همانند مقادیر گزینه -mcpu=... در اسمبلر هستند.
اگر مقصد معماری ARM باشد، از این سوییچ میتوان برای انتخاب مجموعه نام ثباتها (Registers) در حین دیساسمبل استفاده کرد. تعیین -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 میتواند برای سفارشیسازی نحوه مدیریت دستورالعملهای تعریفنشده در حین دیساسمبل فایلهای اجرایی و کتابخانههای اشتراکی استفاده شود. بهطور معمول، دیساسمبلر صرفاً مقدار هگزادسیمال دستورالعمل تعریفنشده را نشان میدهد، اما در صورت فعال بودن حاشیهنویسی (Annotation)، ابتدا تلاش میکند نمادی را پیدا کند که مقدار آن با کدگذاری دستور تطابق دارد. در صورت وجود تطابق، نام نماد بهجای آن نمایش داده میشود. این ویژگی هنگام دیساسمبل بخشهای غیر کد که ممکن است شامل نشانیهای تابع و داده باشند مفید است.
برای معماری x86، برخی از گزینهها عملکردهای سوییچ -m را تکرار میکنند، اما کنترل دقیقتری فراهم میآورند:
- "x86-64"
- "i386"
- "i8086"
- انتخاب دیساسمبل برای معماری مشخصشده.
- "intel"
- "att"
- انتخاب بین حالت نحو اینتل (Intel syntax) و حالت نحو 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"
- تعیین اندازه پیشفرض نشانی و اندازه عملوند (Operand). در صورتی که گزینههای "x86-64"، "i386" یا "i8086" در ادامه رشته گزینهها ظاهر شوند، این پنج گزینه نادیده گرفته خواهند شد.
- "suffix"
- در حالت AT&T و همچنین برای مجموعه محدودی از دستورات در حالت Intel، به دیساسمبلر دستور میدهد که پسوند یادبخش را چاپ کند، حتی زمانی که پسوند میتواند از طریق عملوندها یا (برای دستورات خاص) از پیشفرضهای حالت اجرا استنباط شود.
- "annotate-immediates"
- نماد مرتبط با مقادیر بیدرنگ را، در صورت وجود، نمایش میدهد. تنها روی باینریهای اجرایی و کتابخانههای اشتراکی کار میکند، نه فایلهای شیء ایستا.
برای PowerPC، آرگومان raw برای سوییچ -M دیساسمبل دستورالعملهای سختافزاری را به جای نامهای مستعار (Aliases) انتخاب میکند. برای مثال به جای "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). برای نمونه، دستورالعملهای فشرده به همان صورت نمایش داده میشوند ("addi sp,sp,-128" تبدیل به "c.addi16sp sp,-128" میشود).
- "priv-spec=SPEC"
- چاپ ثباتهای کنترلی و وضعیتی (CSR) بر اساس نسخه مشخصشده از مشخصات سطح دسترسی (Privilege Spec)؛ مانند: 1.10، 1.11، 1.12، 1.13.
برای معماری MIPS، این گزینه چاپ نام یادبخشهای دستورالعمل و نام ثباتها را در دستورات دیساسمبلشده کنترل میکند. گزینههای متعدد را میتوان بهصورت رشتهای جداشده با ویرگول مشخص کرد؛ گزینههای نامعتبر نادیده گرفته میشوند:
- "no-aliases"
- چاپ یادبخش خام دستورالعمل به جای یادبخش شبهدستور. یعنی چاپ 'daddu' یا 'or' بهجای 'move'، و چاپ 'sll' بهجای 'nop' و نظایر آن.
- "msa"
- دیساسمبل دستورالعملهای MSA.
- "virt"
- دیساسمبل دستورالعملهای افزونه مجازیسازی (Virtualization 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 رمزگشایی میشود که احتمالاً منجر به دیساسمبل نادرست بقیه تابع خواهد شد.
- -p
- --private-headers
- اطلاعات اختصاصی مربوط به فرمت فایل شیء را چاپ میکند. اطلاعات دقیق چاپشده بستگی به فرمت فایل شیء دارد. برای برخی فرمتهای شیء، هیچ اطلاعات اضافی چاپ نمیشود.
- -P options
- --private=options
- اطلاعات
اختصاصی
فرمت فایل
شیء را چاپ
میکند.
آرگومان options
فهرستی
جداشده با
کاما است که
به فرمت
فایل بستگی
دارد (فهرست
گزینهها
با help نمایش
داده
میشود).
برای فرمت XCOFF، گزینههای در دسترس عبارتند از:
- "header"
- "aout"
- "sections"
- "syms"
- "relocs"
- "lineno,"
- "loader"
- "except"
- "typchk"
- "traceback"
- "toc"
- "ldinfo"
برای فرمت PE، گزینههای موجود عبارتند از:
- "header"
- "sections"
همه فرمتهای فایل شیء از این گزینه پشتیبانی نمیکنند؛ به ویژه فرمت ELF از آن استفاده نمیکند.
- -r
- --reloc
- ورودیهای بازنشانی (Relocation Entries) فایل را چاپ میکند. اگر همراه با -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)
را در خروجی
دیساسمبل
فعال یا
غیرفعال
میکند.
رفتار
پیشفرض در
زمان
پیکربندی و
کامپایل
تعیین
میشود.
توجه داشته
باشید که
همه
معماریها
از
رنگآمیزی
ساختار
پشتیبانی
نمیکنند و
بسته به
ترمینال
مورد
استفاده،
خروجی رنگی
ممکن است به
خوبی خوانا
نباشد.
آرگومان 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 را در صورت وجود در فایل نمایش میدهد. بخشهای اشکالزدایی فشردهشده پیش از نمایش، بهطور خودکار (و موقت) از حالت فشرده خارج میشوند. اگر یک یا چند حرف یا کلمه اختیاری بعد از این سوییچ قرار گیرد، تنها آن دسته از دادهها استخراج میشوند. حروف و کلمات به اطلاعات زیر اشاره دارند:
- "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 در حال حاضر پشتیبانی نمیشود.
- --dwarf-depth=n
- استخراج
بخش ".debug_info"
را به n
فرزند
محدود
میکند. این
گزینه فقط
همراه با
--debug-dump=info مفید
است.
پیشفرض
این است که
تمام DIEها
چاپ شوند؛
مقدار ویژه
0 برای n نیز
همین اثر را
دارد.
با مقدار غیر صفر برای n، واحدهای DIE در سطح n یا عمیقتر چاپ نخواهند شد. بازه n بر پایه صفر است.
- --dwarf-start=n
- تنها DIEهایی
را چاپ
میکند که
با DIE شماره n
آغاز
میشوند.
این گزینه
فقط با --debug-dump=info
مفید است.
در صورت تعیین، این گزینه از چاپ هرگونه اطلاعات هدر و تمام DIEهای قبل از DIE شماره n جلوگیری میکند. تنها همسطحها (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
- ورودیهای
جدول نماد (Symbol
Table) فایل را
چاپ میکند.
این گزینه
مشابه
اطلاعات
ارائهشده
توسط
برنامه 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) و برای نمادهای دیگر اندازه (Size) نماد است. در نهایت نام نماد نمایش داده میشود.
کاراکترهای فلگ به ۷ گروه زیر تقسیم میشوند:
- "l"
- "g"
- "u"
- "!"
- نماد یک نماد محلی (l)، سراسری (g)، سراسری منحصربهفرد (u)، نه سراسری و نه محلی (یک فاصله) یا هم سراسری و هم محلی (!) است. یک نماد میتواند به دلایل مختلفی نه محلی و نه سراسری باشد (مثلاً به این دلیل که برای اشکالزدایی استفاده میشود)، اما اگر همزمان هم محلی و هم سراسری باشد احتمالاً نشاندهنده یک اشکال (باگ) است. نمادهای سراسری منحصربهفرد یک افزونه گنو به مجموعه استانداردهای پیوند نماد ELF هستند. برای چنین نمادی لینکر پویا تضمین میکند که در کل فرآیند تنها یک نماد با این نام و نوع مورد استفاده قرار گیرد.
- "w"
- نماد ضعیف (w / Weak) یا قوی (یک فاصله) است.
- "C"
- نماد نشاندهنده یک سازنده (C / Constructor) یا یک نماد معمولی (یک فاصله) است.
- "W"
- نماد یک نماد اخطار (W / Warning) یا یک نماد معمولی (یک فاصله) است. نام یک نماد اخطار پیامی است که در صورت ارجاع به نمادِ پس از نماد اخطار نمایش داده میشود.
- "I"
- "i"
- نماد یک ارجاع غیرمستقیم به نمادی دیگر (I)، تابعی که باید در حین پردازش بازنشانی ارزیابی شود (i) یا یک نماد معمولی (یک فاصله) است.
- "d"
- "D"
- نماد یک نماد اشکالزدایی (d)، یک نماد پویا (D) یا یک نماد معمولی (یک فاصله) است.
- "F"
- "f"
- "O"
- نماد نام یک تابع (F)، یک فایل (f)، یک شیء (O) یا فقط یک نماد معمولی (یک فاصله) است.
- -T
- --dynamic-syms
- ورودیهای
جدول نماد
پویای فایل
را چاپ
میکند. این
گزینه فقط
برای اشیاء
پویا مانند
انواع خاصی
از
کتابخانههای
اشتراکی
معنادار
است. این
اطلاعات
مشابه
خروجی
برنامه nm
هنگام
استفاده از
گزینه -D (--dynamic)
است.
فرمت خروجی مشابه فرمت ارائهشده توسط گزینه --syms است، با این تفاوت که یک فیلد اضافی پیش از نام نماد درج میشود که اطلاعات نسخه مرتبط با نماد را ارائه میدهد. اگر این نسخه نسخه پیشفرضی باشد که باید هنگام تفکیک ارجاعات بدون نسخه به نماد استفاده شود، به همان صورت نمایش داده میشود؛ در غیر این صورت درون پرانتز قرار میگیرد.
- --special-syms
- هنگام نمایش نمادها، نمادهایی را که از نظر مقصد به نوعی خاص تلقی میشوند و معمولاً مورد توجه کاربر نیستند نیز شامل میشود.
- -U [d|i|l|e|x|h]
- --unicode=[default|invalid|locale|escape|hex|highlight]
- نمایش
کاراکترهای
چندبایتی
کدگذاریشده
در فرمت UTF-8 را
در رشتهها
کنترل
میکند.
پیشفرض
(--unicode=default) این
است که با
آنها هیچ
رفتار خاصی
انجام نشود.
گزینه --unicode=locale
توالی را در
لوکال
(محلیسازی)
فعلی نمایش
میدهد که
ممکن است از
آنها
پشتیبانی
کند یا
نکند.
گزینههای
--unicode=hex و --unicode=invalid
آنها را به
صورت
دنبالههای
بایت
هگزادسیمال
محصور در
قلابها یا
آکولادها
نمایش
میدهند.
گزینه --unicode=escape آنها را به عنوان دنبالههای اسکیپ (\uxxxx) نمایش میدهد و گزینه --unicode=highlight آنها را به صورت دنبالههای اسکیپ برجستهشده با رنگ قرمز (در صورت پشتیبانی دستگاه خروجی) نشان میدهد. رنگآمیزی برای جلب توجه به حضور توالیهای یونیکد در جاهایی است که ممکن است انتظار آنها نرود.
- -V
- --version
- شماره نسخه objdump را چاپ کرده و خارج میشود.
- -x
- --all-headers
- تمام اطلاعات هدرهای موجود، از جمله جدول نمادها و ورودیهای بازنشانی را نمایش میدهد. استفاده از -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)
کپیرایت © ۱۹۹۱-۲۰۲۶ بنیاد نرمافزار آزاد (Free Software Foundation, Inc.)
مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشرشده توسط بنیاد نرمافزارهای آزاد اعطا میشود؛ بدون بخشهای تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. نسخهای از این مجوز در بخش موسوم به «GNU Free Documentation License» گنجانده شده است.
| 2026-08-11 | binutils-2.47 |