| OBJDUMP(1) | GNU Development Tools | OBJDUMP(1) |
نام (NAME)
objdump - نمایش اطلاعات فایلهای شیء
خلاصه دستور (SYNOPSIS)
objdump [-a|--archive-headers]
[-b bfdname|--target=bfdname]
[-C|--demangle[=style] ]
[-d|--disassemble[=symbol]]
[-D|--disassemble-all]
[-z|--disassemble-zeroes]
[-EB|-EL|--endian={big | little }]
[-f|--file-headers]
[-F|--file-offsets]
[--file-start-context]
[-g|--debugging]
[-e|--debugging-tags]
[-h|--section-headers|--headers]
[-i|--info]
[-j section|--section=section]
[-l|--line-numbers]
[-S|--source]
[--source-comment[=text]]
[-m machine|--architecture=machine]
[-M options|--disassembler-options=options]
[-p|--private-headers]
[-P options|--private=options]
[-r|--reloc]
[-R|--dynamic-reloc]
[-s|--full-contents]
[-Z|--decompress]
[-W|--dwarf]
[-Wa|--dwarf=abbrev]
[-WA|--dwarf=addr]
[-Wr|--dwarf=aranges]
[-Wc|--dwarf=cu_index]
[-WL|--dwarf=decodedline]
[-Wf|--dwarf=frames]
[-WF|--dwarf=frames-interp]
[-Wg|--dwarf=gdb_index]
[-Wi|--dwarf=info]
[-Wk|--dwarf=links]
[-Wo|--dwarf=loc]
[-Wm|--dwarf=macro]
[-Wp|--dwarf=pubnames]
[-Wt|--dwarf=pubtypes]
[-WR|--dwarf=Ranges]
[-Wl|--dwarf=rawline]
[-Ws|--dwarf=str]
[-WO|--dwarf=str-offsets]
[-Wu|--dwarf=trace_abbrev]
[-WT|--dwarf=trace_aranges]
[-WU|--dwarf=trace_info]
[-WK|--dwarf=follow-links]
[-WN|--dwarf=no-follow-links]
[-WD|--dwarf=use-debuginfod]
[-WE|--dwarf=do-not-use-debuginfod]
[--debug-dir=dir]
[--map-global-vars]
[-L|--process-links]
[--ctf=section]
[--sframe=section]
[-G|--stabs]
[-t|--syms]
[-T|--dynamic-syms]
[-x|--all-headers]
[-w|--wide]
[--start-address=address]
[--stop-address=address]
[--no-addresses]
[--prefix-addresses]
[--[no-]show-raw-insn]
[--adjust-vma=offset]
[--show-all-symbols]
[--dwarf-depth=n]
[--dwarf-start=n]
[--ctf-parent=section]
[--no-recurse-limit|--recurse-limit]
[--special-syms]
[--prefix=prefix]
[--prefix-strip=level]
[--insn-width=width]
[--visualize-jumps[=color|=extended-color|=off]
[--disassembler-color=[off|terminal|on|extended]
[-U method] [--unicode=method]
[-V|--version]
[-H|--help]
objfile....SH
"توضیحات
(DESCRIPTION)" دستور objdump
اطلاعات
مربوط به یک
یا چند فایل
شیء (object file) را
نمایش
میدهد.
گزینهها
مشخص
میکنند چه
اطلاعات
خاصی نمایش
داده شود.
این
اطلاعات
بیشتر برای
برنامهنویسانی
مفید است که
بر روی
ابزارهای
کامپایل
کار
میکنند،
در مقایسه
با
برنامهنویسانی
که فقط
میخواهند
برنامهشان
کامپایل
شده و به
درستی کار
کند.
objfile... فایلهای شیء هستند که باید بررسی شوند. زمانی که بایگانیها (archives) را مشخص میکنید، 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
- هنگام روگرفت (dump) اطلاعات، ابتدا مقدار offset را به نشانی تمامی بخشها (sections) اضافه میکند. این گزینه زمانی مفید است که نشانی بخشها با جدول نمادها مطابقت نداشته باشد؛ وضعیتی که ممکن است هنگام قرار دادن بخشها در نشانیهای خاص هنگام استفاده از قالبی که نمیتواند نشانی بخشها را نشان دهد (مانند a.out) رخ دهد.
- -b bfdname
- --target=bfdname
- مشخص
میکند که
قالب کد شیء
(object-code format) برای
فایلهای
شیء، bfdname است.
این گزینه
ممکن است
ضروری
نباشد؛
زیرا objdump
میتواند
بسیاری از
قالبها را
به صورت
خودکار
شناسایی
کند.
به عنوان مثال،
objdump -b oasys -m vax -h fu.o
اطلاعات خلاصهای از سرآیند بخشها (-h) مربوط به fu.o را نمایش میدهد، که صریحاً (-m) به عنوان یک فایل شیء VAX در قالبی که توسط کامپایلرهای Oasys تولید شده شناسایی شده است. میتوانید قالبهای موجود را با گزینهٔ -i فهرست کنید.
- -C
- --demangle[=style]
- نامهای نمادین سطح پایین را به نامهای سطح کاربر رمزگشایی (demangle) میکند. علاوه بر حذف هرگونه زیرخط (underscore) ابتدایی که توسط سیستم افزوده شده، این کار نام توابع ++C را خوانا میکند. کامپایلرهای مختلف شیوههای دستکاری نام (mangling) متفاوتی دارند. از آرگومان اختیاری شیوهٔ کدگشایی میتوان برای انتخاب شیوهٔ مناسب برای کامپایلر شما استفاده کرد.
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- محدودیتی
را برای
میزان
بازگشت (recursion)
انجامشده
در حین
بازگردانی
نامها (demangling)
فعال یا
غیرفعال
میکند. از
آنجا که
قالبهای mangling
امکان
بازگشت
نامحدود را
میدهند،
ممکن است
رشتههایی
ایجاد شوند
که
رمزگشایی
آنها تمام
فضای پشتهٔ
موجود در
ماشین
میزبان را
مصرف کرده و
منجر به
خطای حافظه
(memory fault) شود. این
محدودیت با
تحدید
بازگشت به
۲۰۴۸ سطح
تودرتو سعی
در جلوگیری
از این
اتفاق دارد.
حالت پیشفرض فعال بودن این محدودیت است، اما غیرفعال کردن آن ممکن است برای بازگردانی نامهای بسیار پیچیده لازم باشد. با این حال توجه داشته باشید که اگر محدودیت بازگشت غیرفعال شود، اتمام فضای پشته محتمل است و هرگونه گزارش باگ در رابطه با چنین رویدادی رد خواهد شد.
- -g
- --debugging
- اطلاعات اشکالزدایی را نمایش میدهد. این گزینه تلاش میکند اطلاعات قالب اشکالزدایی STABS ذخیرهشده در فایل را تجزیه کرده و آن را با استفاده از نگارشی مشابه زبان C چاپ کند. اگر هیچ اطلاعات اشکالزدایی STABS یافت نشود، این گزینه به گزینهٔ -W بازمیگردد تا هرگونه اطلاعات DWARF در فایل را چاپ کند.
- -e
- --debugging-tags
- مانند -g، با این تفاوت که اطلاعات در قالبی سازگار با ابزار ctags تولید میشوند.
- -d
- --disassemble
- --disassemble=symbol
- نمادهای
یادافزای
اسمبلی (assembler mnemonics)
را برای
دستورالعملهای
ماشین از
فایل ورودی
نمایش
میدهد. این
گزینه تنها
بخشهایی
را واسمبلی
(disassemble) میکند
که انتظار
میرود
حاوی
دستورالعمل
باشند. اگر
آرگومان
اختیاری symbol
داده شود
(احتمالاً
چند بار)،
نمادهای
یادافزا با
شروع از
(تمامی)
مقادیر symbol
نمایش داده
میشوند.
اگر symbol نام
یک تابع
باشد،
واسمبلی در
انتهای
تابع متوقف
میشود، در
غیر این
صورت با
رسیدن به
نماد بعدی
متوقف
خواهد شد.
اگر هیچ
تطابقی
برای symbol
پیدا نشود،
چیزی نمایش
داده
نخواهد شد.
توجه داشته باشید اگر گزینهٔ --dwarf=follow-links فعال باشد، هرگونه جدول نماد در فایلهای اطلاعات اشکالزدایی پیوند خورده خوانده شده و هنگام واسمبلی استفاده خواهد شد.
- -D
- --disassemble-all
- مشابه -d،
اما محتوای
تمام
بخشهای
غیرخالی و
غیر bss را
واسمبلی
میکند، نه
فقط
بخشهایی
که انتظار
میرود
حاوی
دستورالعمل
باشند.
میتوان از
-j برای
انتخاب
بخشهای
خاص
استفاده
کرد.
این گزینه همچنین اثر نامحسوسی بر واسمبلی دستورالعملها در بخشهای کد دارد. هنگامی که گزینهٔ -d فعال باشد، objdump فرض میکند هر نمادی که در یک بخش کد وجود دارد در مرز بین دستورالعملها قرار دارد و از واسمبلی در سراسر چنین مرزی خودداری میکند. اما هنگامی که گزینهٔ -D فعال باشد، این فرض نادیده گرفته میشود. این بدان معنی است که در صورت ذخیره شدن دادهها در بخشهای کد، ممکن است خروجی -d و -D متفاوت باشد.
اگر معماری هدف ARM باشد، این سوئیچ همچنین این اثر را دارد که واسمبلر را وادار میکند قطعات دادههای موجود در بخشهای کد را به گونهای رمزگشایی کند که گویی دستورالعمل هستند.
توجه داشته باشید اگر گزینهٔ --dwarf=follow-links فعال باشد، هرگونه جدول نماد در فایلهای اطلاعات اشکالزدایی پیوند خورده خوانده شده و هنگام واسمبلی استفاده خواهد شد.
- --no-addresses
- هنگام واسمبلی، نشانیها را در هر خط یا برای نمادها و آفستهای بازنشانی (relocation offsets) چاپ نمیکند. ترکیب این گزینه با --no-show-raw-insn میتواند برای مقایسهٔ خروجی کامپایلر مفید باشد.
- --prefix-addresses
- هنگام واسمبلی، نشانی کامل را در هر خط چاپ میکند. این قالب قدیمیتر واسمبلی است.
- -EB
- -EL
- --endian={big|little}
- ترتیب بایتها (endianness) فایلهای شیء را مشخص میکند. این گزینه فقط بر واسمبلی تأثیر میگذارد و میتواند هنگام واسمبلی قالب فایلی که حاوی اطلاعات ترتیب بایت نیست، مانند S-records، مفید باشد.
- -f
- --file-headers
- اطلاعات خلاصهشده را از سرآیند کلی هر یک از فایلهای objfile نمایش میدهد.
- -F
- --file-offsets
- هنگام دیزاسمبل کردن بخشها، هر زمان که نمادی نمایش داده میشود، آفست فایلیِ ناحیهٔ دادهای را که در آستانهٔ تخلیه (dump) است نیز نمایش میدهد. اگر از بایتهای صفر صرفنظر شده باشد، هنگام از سرگیری دیزاسمبل، تعداد صفرهای نادیده گرفتهشده و آفست فایلیِ مکانی را که دیزاسمبل از آن از سر گرفته میشود به کاربر اعلام میکند. هنگام تخلیهٔ بخشها، آفست فایلیِ مکانی را که تخلیه از آنجا آغاز میشود نمایش میدهد.
- --file-start-context
- مشخص میکند که هنگام نمایش توأم کد منبع و دیزاسمبل (با فرض فعال بودن -S) از فایلی که هنوز نمایش داده نشده است، زمینه (context) تا ابتدای فایل گسترش یابد.
- -h
- --section-headers
- --headers
- نمایش
اطلاعات
خلاصهشده
از
سرآیندهای
بخشهای
فایل شیء.
سگمنتهای فایل ممکن است به نشانیهای غیراستاندارد بازنشانی (relocate) شوند؛ برای نمونه با استفاده از گزینههای -Ttext، -Tdata یا -Tbss در ld. با این حال، برخی قالبهای فایل شیء، مانند a.out، نشانی آغازین سگمنتهای فایل را ذخیره نمیکنند. در این شرایط، گرچه ld بخشها را به درستی بازنشانی میکند، استفاده از objdump -h برای فهرست کردن سرآیندهای بخش فایل نمیتواند نشانیهای صحیح را نشان دهد. در عوض، نشانیهای معمول را که برای معماری مقصد ضمنی هستند نمایش میدهد.
توجه داشته باشید که در برخی موارد ممکن است برای یک بخش، هر دو ویژگی READONLY و NOREAD تنظیم شده باشند. در چنین مواردی ویژگی NOREAD اولویت دارد، اما objdump هر دو را گزارش میدهد زیرا تنظیم دقیق بیتهای پرچم ممکن است اهمیت داشته باشد.
- -H
- --help
- چاپ خلاصهای از گزینههای objdump و خروج.
- -i
- --info
- نمایش فهرستی از تمامی معماریها و قالبهای شیء موجود برای تعیین با گزینههای -b یا -m.
- -j name
- --section=name
- نمایش اطلاعات برای بخش name. این گزینه میتواند چندین بار مشخص شود.
- --map-global-vars
- نمایش اطلاعات متغیرهای سراسری (global variables). این گزینه تنها زمانی کار میکند که فایل شیء با گزینهٔ اشکالزدایی کامپایل شده باشد. به طور دقیقتر، این گزینه به ورودیهای اطلاعات اشکالزدایی DWARF2 متکی است. این قابلیت برای ردگیری مکان و نوع تمامی متغیرهای سراسری در فایل شیء مشخصشده مفید است.
- -L
- --process-links
- نمایش محتوای بخشهای غیر اشکالزداییِ (non-debug) موجود در فایلهای مجزای debuginfo که به فایل اصلی پیوند دارند. این گزینه بهطور خودکار گزینهٔ -WK را نیز در بر میگیرد، و تنها بخشهایی نمایش داده میشوند که توسط سایر گزینههای خط فرمان درخواست شده باشند.
- -l
- --line-numbers
- برچسبگذاری خروجیِ نمایشی (با استفاده از اطلاعات اشکالزدایی) همراه با نام فایل و شماره خطوط کد منبع متناظر با کد شیء یا بازنشانیهای (relocs) نشاندادهشده. فقط همراه با گزینههای -d، -D یا -r کاربرد دارد.
- -m machine
- --architecture=machine
- مشخص کردن
معماری
مورد
استفاده
هنگام
دیزاسمبل
کردن
فایلهای
شیء. این
گزینه
هنگام
دیزاسمبل
کردن
فایلهای
شیئی که
فاقد
اطلاعات
معماری
هستند
(مانند S-records)
مفید است.
میتوانید
معماریهای
موجود را با
گزینهٔ -i
فهرست کنید.
برای اغلب معماریها امکان تعیین نام یک معماری و نام یک ماشین به صورتی که با دونقطه از هم جدا شده باشند وجود دارد. برای نمونه foo:bar به نوع ماشین bar در معماری foo اشاره خواهد داشت. اگر objdump برای پشتیبانی از چندین معماری پیکربندی شده باشد، این قابلیت میتواند مفید باشد.
اگر مقصد یک معماری ARM باشد، این سوئیچ اثر دیگری نیز دارد: دیزاسمبل را تنها به دستورالعملهایی محدود میکند که توسط معماری مشخصشده با machine پشتیبانی میشوند. اگر به دلیل عدم وجود اطلاعات معماری در فایل ورودی، استفاده از این سوئیچ ضروری باشد، اما در عین حال دیزاسمبل تمامی دستورالعملها مد نظر باشد، از -marm استفاده کنید.
- -M options
- --disassembler-options=options
- ارسال
اطلاعات
خاصِ مقصد
به
دیزاسمبلر.
تنها در
برخی
مقصدهای
خاص
پشتیبانی
میشود. اگر
لازم باشد
بیش از یک
گزینه برای
دیزاسمبلر
مشخص شود،
میتوان از
گزینههای
چندگانهٔ -M
استفاده
کرد یا
آنها را در
قالب
فهرستی با
جداکننده
کاما کنار
هم قرار
داد.
برای ARC، گزینهٔ dsp چاپ دستورالعملهای DSP را کنترل میکند، spfp چاپ دستورالعملهای ممیز شناور (FP) با دقت یگانهٔ FPX را انتخاب میکند، dpfp چاپ دستورالعملهای ممیز شناور با دقت دوگانهٔ 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's آمده است انتخاب میکند، اما با این تفاوت که ثبات ۱۳ با عنوان 'sp'، ثبات ۱۴ با عنوان 'lr' و ثبات ۱۵ با عنوان 'pc' نامیده میشوند. تعیین -M reg-names-apcs مجموعه نامهای استفادهشده توسط ARM Procedure Call Standard را انتخاب میکند، در حالی که تعیین -M reg-names-raw صرفاً از حرف r به همراه شماره ثبات استفاده خواهد کرد.
همچنین دو متغیر از طرح نامگذاری ثباتهای APCS وجود دارد که توسط -M reg-names-atpcs و -M reg-names-special-atpcs فعال میشوند و از قراردادهای نامگذاری ARM/Thumb Procedure Call Standard استفاده میکنند (خواه با نامهای ثبات معمولی یا نامهای ثبات ویژه).
این گزینه همچنین میتواند برای معماریهای ARM به منظور وادار کردن دیزاسمبلر به تفسیر تمامی دستورالعملها به عنوان دستورالعملهای Thumb، با استفاده از سوئیچ --disassembler-options=force-thumb به کار رود. این ویژگی زمانی که قصد دیزاسمبل کردن کدهای Thumb تولیدشده توسط کامپایلرهای دیگر را دارید مفید است.
برای مقصدهای AArch64، این سوئیچ میتواند تعیین کند که آیا دستورالعملها با استفاده از گزینهٔ -M no-aliases به عنوان عمومیترین حالت دستورالعمل دیزاسمبل شوند یا اینکه با استفاده از -M notes، یادداشتهای دستورالعمل به صورت توضیح (کامنت) در دیزاسمبل درج شوند. علاوه بر این، گزینهٔ -M annotate میتواند برای سفارشیسازی نحوهٔ مدیریت دستورالعملهای تعریفنشده هنگام دیزاسمبل فایلهای اجرایی و کتابخانههای اشتراکی استفاده شود. به طور معمول، دیزاسمبلر صرفاً مقدار هگزادسیمال دستورالعمل تعریفنشده را نمایش میدهد، اما اگر قابلیت حاشیهنویسی (annotation) فعال باشد، ابتدا تلاش میکند نمادی را بیابد که مقدار آن با کدگذاری (encoding) دستورالعمل همخوانی داشته باشد. در صورت وجود تطابق، نام نماد به جای آن نمایش داده خواهد شد. این قابلیت میتواند هنگام دیزاسمبل کردن بخشهای غیرکدی که ممکن است حاوی نشانیهای توابع و دادهها باشند مفید باشد.
برای معماری x86، برخی از گزینهها عملکردهای سوئیچ -m را تکرار میکنند، اما امکان کنترل دقیقتری را فراهم میآورند.
- "x86-64"
- "i386"
- "i8086"
- انتخاب دیساسمبل برای معماری مشخصشده.
- "intel"
- "att"
- انتخاب میان حالت نحو intel و حالت نحو AT&T.
- "amd64"
- "intel64"
- انتخاب میان AMD64 ISA و Intel64 ISA.
- "intel-mnemonic"
- "att-mnemonic"
- انتخاب میان حالت یادافزار (mnemonic) اینتل و حالت یادافزار AT&T. نکته: "intel-mnemonic" مستلزم "intel" است و "att-mnemonic" مستلزم "att" میباشد.
- "addr64"
- "addr32"
- "addr16"
- "data32"
- "data16"
- تعیین اندازه پیشفرض آدرس و اندازه عملوند (operand). اگر "x86-64"، "i386" یا "i8086" بعدتر در رشته گزینهها ظاهر شوند، این پنج گزینه نادیده گرفته خواهند شد.
- "suffix"
- در حالت AT&T و همچنین برای مجموعه محدودی از دستورالعملها در حالت Intel، به دیساسمبلر دستور میدهد که یک پسوند یادافزار (mnemonic suffix) را چاپ کند، حتی زمانی که پسوند از طریق عملوندها یا (برای برخی دستورالعملها) پیشفرضهای حالت اجرا قابل استنباط باشد.
- "annotate-immediates"
- نمایش نماد مرتبط با مقادیر بیدرنگ (immediate values)، در صورت وجود داشتن. تنها روی باینریهای اجرایی و کتابخانههای اشتراکی عمل میکند، نه فایلهای شیء ایستا.
برای PowerPC، آرگومان raw در -M دیساسمبل دستورالعملهای سختافزاری را به جای نامهای مستعار (aliases) انتخاب میکند. برای مثال، "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 هر آپکدی (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"
- چاپ یادافزار دستورالعمل «خام» (raw) به جای برخی یادافزارهای شبهدستورالعمل. یعنی چاپ 'daddu' یا 'or' به جای 'move'، 'sll' به جای 'nop'، و غیره.
- "msa"
- دیساسمبل دستورالعملهای MSA.
- "virt"
- دیساسمبل دستورالعملهای virtualization ASE.
- "xpa"
- دیساسمبل دستورالعملهای eXtended Physical Address (XPA) ASE.
- "gpr-names=ABI"
- چاپ نامهای GPR (ثباتهای عمومی / general-purpose register) متناسب با ABI مشخصشده. به طور پیشفرض، نامهای GPR بر اساس ABI فایل باینری در حال دیساسمبل انتخاب میشوند.
- "fpr-names=ABI"
- چاپ نامهای FPR (ثباتهای ممیز شناور / floating-point register) متناسب با ABI مشخصشده. به طور پیشفرض، شمارههای FPR به جای نامهای آنها چاپ میشوند.
- "cp0-names=ARCH"
- چاپ نامهای ثبات CP0 (کمکپردازنده کنترل سیستم؛ کمکپردازنده ۰) متناسب با پردازنده یا معماری مشخصشده توسط ARCH. به طور پیشفرض، نامهای ثبات CP0 بر اساس معماری و پردازنده فایل باینری در حال دیساسمبل انتخاب میشوند.
- "hwr-names=ARCH"
- چاپ نامهای HWR (ثبات سختافزاری، مورداستفاده توسط دستورالعمل "rdhwr") متناسب با پردازنده یا معماری مشخصشده توسط ARCH. به طور پیشفرض، نامهای HWR بر اساس معماری و پردازنده فایل باینری در حال دیساسمبل انتخاب میشوند.
- "reg-names=ABI"
- چاپ نامهای GPR و FPR متناسب با ABI انتخابشده.
- "reg-names=ARCH"
- چاپ نامهای ثباتهای مخصوص پردازنده (نامهای ثبات CP0 و HWR) متناسب با پردازنده یا معماری انتخابشده.
برای هر یک از گزینههای فهرستشده در بالا، ABI یا ARCH را میتوان به عنوان numeric مشخص کرد تا برای انواع ثباتهای انتخابشده، اعداد به جای نامها چاپ شوند. میتوانید مقادیر موجود برای ABI و ARCH را با استفاده از گزینه --help فهرست کنید.
برای VAX، میتوانید نشانیهای ورود تابع را با -M entry:0xf00ba مشخص کنید. برای دیساسمبل صحیح فایلهای باینری VAX که فاقد جدول نمادها هستند (مانند دامپهای ROM)، میتوانید چند بار از این گزینه استفاده کنید. در این موارد، ماسک ورود تابع در غیر این صورت به عنوان دستورالعملهای VAX رمزگشایی میشود که احتمالاً منجر به دیساسمبل نادرست باقی تابع خواهد شد.
- --private-headers
- چاپ اطلاعاتی که مختص قالب پرونده شیء (object file) است. اطلاعات دقیقی که چاپ میشود به قالب پرونده شیء بستگی دارد. برای برخی از قالبهای پرونده شیء، اطلاعات اضافی چاپ نمیشود.
- -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، بازمکانیها به صورت آمیخته با واسازی (disassembly) چاپ میشوند.
- -R
- --dynamic-reloc
- چاپ
مدخلهای
بازمکانی
پویای
پرونده. این
گزینه تنها
برای اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
اشتراکی،
معنادار
است. همانند
-r، در صورت
استفاده
همراه با -d
یا -D،
بازمکانیها
به صورت
آمیخته با
واسازی چاپ
میشوند.
نکته: objdump از نمایش بازمکانیهای نوع RELR پشتیبانی نمیکند. این موارد را میتوان با برنامه readelf نمایش داد.
- -s
- --full-contents
- نمایش محتوای کامل بخشها (sections)، که اغلب در ترکیب با -j برای درخواست بخشهای مشخصی استفاده میشود. به طور پیشفرض، تمام بخشهای غیرخالی و غیر bss نمایش داده میشوند. همچنین به طور پیشفرض، هر بخش فشردهشده به شکل فشرده نمایش داده خواهد شد. برای مشاهده محتوا در حالت غیرفشرده، گزینه -Z را به خط فرمان اضافه کنید.
- -S
- --source
- نمایش کد منبع به صورت آمیخته با واسازی، در صورت امکان. مستلزم گزینه -d است.
- --show-all-symbols
- هنگام واسازی، نمایش تمام نمادهایی که با یک آدرس مشخص مطابقت دارند، نه فقط نماد اول.
- --source-comment[=txt]
- مشابه گزینه -S، با این تفاوت که تمام خطوط کد منبع با پیشوند txt نمایش داده میشوند. معمولاً txt یک رشته توضیح (کامنت) خواهد بود که میتواند برای تمایز کد اسمبلی از کد منبع استفاده شود. اگر txt ارائه نشود، رشته پیشفرض "# " (علامت هش و به دنبال آن یک فاصله) استفاده خواهد شد.
- --prefix=prefix
- مشخص کردن prefix برای افزودن به مسیرهای مطلق هنگام استفاده به همراه -S.
- --prefix-strip=level
- مشخص کردن تعداد نامهای دایرکتوری ابتدایی برای حذف از مسیرهای مطلق ثابتشده (hardwired). بدون --prefix=prefix هیچ تأثیری ندارد.
- --show-raw-insn
- هنگام واسازی دستورالعملها، دستورالعمل را علاوه بر فرم نمادین، به صورت هگزادسیمال نیز چاپ میکند. این حالت پیشفرض است، مگر زمانی که از --prefix-addresses استفاده شود.
- --no-show-raw-insn
- هنگام واسازی دستورالعملها، بایتهای دستورالعمل را چاپ نمیکند. در صورت استفاده از --prefix-addresses، این رفتار پیشفرض است.
- --insn-width=width
- هنگام واسازی دستورالعملها، تعداد width بایت را در یک خط نمایش میدهد.
- --visualize-jumps[=color|=extended-color|=off]
- بصریسازی
پرشهایی
که درون یک
تابع باقی
میمانند
با رسم هنر
اَسکی (ASCII art)
بین
آدرسهای
مبدأ و
مقصد.
آرگومان
اختیاری =color
با استفاده
از رنگهای
ساده
پایانه به
خروجی رنگ
اضافه
میکند.
همچنین
آرگومان
=extended-color رنگها
را با
استفاده از
رنگهای
۸بیتی
اضافه
میکند،
اما ممکن
است در همه
پایانهها
کار نکنند.
در صورتی که لازم باشد گزینه visualize-jumps را پس از فعالسازی قبلی غیرفعال کنید، از visualize-jumps=off استفاده نمایید.
- --disassembler-color=off
- --disassembler-color=terminal
- --disassembler-color=on|color|colour
- --disassembler-color=extended|extended-color|extended-colour
- استفاده از
برجستهسازی
رنگی نحو (syntax
highlighting) را در
خروجی
واسازی
فعال یا
غیرفعال
میکند.
رفتار
پیشفرض از
طریق
گزینهای
در زمان
پیکربندی
تعیین
میشود.
توجه داشته
باشید که
همه
معماریها
از
برجستهسازی
رنگی نحو
پشتیبانی
نمیکنند و
بسته به
پایانه
مورد
استفاده،
خروجی رنگی
ممکن است در
عمل خوانا
نباشد.
آرگومان on رنگها را با استفاده از رنگهای ساده پایانه اضافه میکند.
آرگومان terminal همان کار را انجام میدهد، اما تنها در صورتی که دستگاه خروجی یک پایانه باشد.
آرگومان extended-color مشابه آرگومان on است، اما از رنگهای ۸-بیتی استفاده میکند. این رنگها ممکن است در تمام پایانهها کار نکنند.
آرگومان off واسازی رنگی را غیرفعال میکند..IP -W[lLiaprmfFsoORtUuTgAckK] 4
- --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]
- محتویات بخشهای اشکالزدایی DWARF را در فایل، در صورت وجود، نمایش میدهد. بخشهای اشکالزدایی فشردهشده پیش از نمایش بهطور خودکار (بهصورت موقت) از حالت فشرده خارج میشوند. اگر یک یا چند حرف یا کلمه اختیاری پس از این سوئیچ بیاید، تنها همان نوع (یا انواع) داده تخلیه (dump) خواهند شد. این حروف و کلمات به اطلاعات زیر اشاره دارند:
- "a"
- "=abbrev"
- محتویات بخش .debug_abbrev را نمایش میدهد.
- "A"
- "=addr"
- محتویات بخش .debug_addr را نمایش میدهد.
- "c"
- "=cu_index"
- محتویات بخشهای .debug_cu_index و/یا .debug_tu_index را نمایش میدهد.
- "f"
- "=frames"
- محتویات خام یک بخش .debug_frame را نمایش میدهد.
- "F"
- "=frames-interp"
- محتویات تفسیرشده یک بخش .debug_frame را نمایش میدهد.
- "g"
- "=gdb_index"
- محتویات بخشهای .gdb_index و/یا .debug_names را نمایش میدهد.
- "i"
- "=info"
- محتویات بخش .debug_info را نمایش میدهد. نکته: خروجی این گزینه همچنین میتواند با استفاده از گزینههای --dwarf-depth و --dwarf-start محدود شود.
- "k"
- "=links"
- محتویات بخشهای .gnu_debuglink، .gnu_debugaltlink و .debug_sup را، در صورت وجود هر یک از آنها، نمایش میدهد. همچنین هرگونه پیوند به فایلهای شیء مجزای dwarf (با پسوند dwo) را، اگر توسط مشخصههای DW_AT_GNU_dwo_name یا DW_AT_dwo_name در بخش .debug_info مشخص شده باشند، نمایش میدهد.
- "K"
- "=follow-links"
- محتویات هر
یک از
بخشهای
اشکالزدایی
انتخابی را
که در
فایل(های)
مجزای
پیوندخورده
حاوی
اطلاعات
اشکالزدایی
یافت شوند،
نمایش
میدهد. اگر
بخشی در بیش
از یک فایل
وجود داشته
باشد، این
امر
میتواند
منجر به
نمایش
چندین نسخه
از همان بخش
اشکالزدایی
شود.
علاوه بر این، هنگام نمایش مشخصههای DWARF، اگر قالبی یافت شود که به فایل اطلاعات اشکالزدایی مجزا ارجاع میدهد، محتویات ارجاعدادهشده نیز نمایش داده خواهند شد.
نکته - در برخی توزیعها این گزینه بهطور پیشفرض فعال است. میتوان آن را از طریق گزینه اشکالزدایی N غیرفعال کرد. پیشفرض را میتوان هنگام پیکربندی binutils از طریق گزینههای --enable-follow-debug-links=yes یا --enable-follow-debug-links=no انتخاب کرد. اگر از این گزینهها استفاده نشود، پیشفرض فعال بودن دنبالکردن پیوندهای اشکالزدایی است.
نکته - اگر هنگام ساخت binutils، پشتیبانی از پروتکل debuginfod فعال شده باشد، این گزینه همچنین شامل تلاش برای برقراری ارتباط با هر یک از سرورهای debuginfod ذکرشده در متغیر محیطی DEBUGINFOD_URLS خواهد بود. این کار ممکن است مدتی برای پاسخدهی زمان ببرد. این رفتار را میتوان از طریق گزینه اشکالزدایی =do-not-use-debuginfod غیرفعال کرد.
- "N"
- "=no-follow-links"
- دنبالکردن پیوندها به فایلهای اطلاعات اشکالزدایی مجزا را غیرفعال میکند.
- "D"
- "=use-debuginfod"
- در صورت نیاز به دنبالکردن پیوندهای اشکالزدایی، برقراری ارتباط با سرورهای debuginfod را فعال میکند. این رفتار پیشفرض است.
- "E"
- "=do-not-use-debuginfod"
- هنگام نیاز به دنبالکردن پیوندهای اشکالزدایی، برقراری ارتباط با سرورهای debuginfod را غیرفعال میکند.
- "l"
- "=rawline"
- محتویات بخش .debug_line را در قالب خام نمایش میدهد.
- "L"
- "=decodedline"
- محتویات تفسیرشده بخش .debug_line را نمایش میدهد.
- "m"
- "=macro"
- محتویات بخشهای .debug_macro و/یا .debug_macinfo را نمایش میدهد.
- "o"
- "=loc"
- محتویات بخشهای .debug_loc و/یا .debug_loclists را نمایش میدهد.
- "O"
- "=str-offsets"
- محتویات بخش .debug_str_offsets را نمایش میدهد.
- "p"
- "=pubnames"
- محتویات بخشهای .debug_pubnames و/یا .debug_gnu_pubnames را نمایش میدهد.
- "r"
- "=aranges"
- محتویات بخش .debug_aranges را نمایش میدهد.
- "R"
- "=Ranges"
- محتویات بخشهای .debug_ranges و/یا .debug_rnglists را نمایش میدهد.
- "s"
- "=str"
- محتویات بخشهای .debug_str، .debug_line_str و/یا .debug_str_offsets را نمایش میدهد.
- "t"
- "=pubtype"
- محتویات بخشهای .debug_pubtypes و/یا .debug_gnu_pubtypes را نمایش میدهد.
- "T"
- "=trace_aranges"
- محتویات بخش .trace_aranges را نمایش میدهد.
- "u"
- "=trace_abbrev"
- محتویات بخش .trace_abbrev را نمایش میدهد.
- "U"
- "=trace_info"
- محتویات بخش .trace_info را نمایش میدهد.
نکته: نمایش محتویات بخشهای .debug_static_funcs، .debug_static_vars و debug_weaknames در حال حاضر پشتیبانی نمیشود.
- --dwarf-depth=n
- تخلیهٔ (dump)
بخش ".debug_info"
را به n
فرزند
محدود
میکند. این
گزینه فقط
با --debug-dump=info
کاربرد
دارد.
پیشفرض،
چاپ همهٔ
DIEها است؛
مقدار
ویژهٔ 0
برای n نیز
همین اثر را
خواهد داشت.
با یک مقدار غیرصفر برای n، DIEهای موجود در سطح n یا عمیقتر از آن چاپ نخواهند شد. محدودهٔ n مبتنی بر صفر است.
- --dwarf-start=n
- تنها DIEهایی
را چاپ
میکند که
با DIE شمارهٔ
n آغاز
میشوند.
این گزینه
فقط با --debug-dump=info
کاربرد
دارد.
در صورت تعیین، این گزینه از چاپ اطلاعات سرآیند و همهٔ DIEهای پیش از DIE شمارهٔ n جلوگیری میکند. تنها همسطحها و فرزندان DIE مشخصشده چاپ خواهند شد.
این گزینه میتواند همراه با --dwarf-depth استفاده شود.
- --dwarf-check
- بررسیهای تکمیلی را برای سازگاری اطلاعات Dwarf فعال میکند.
- --debug-dir=dir
- هنگام جستجوی فایلهای اطلاعات اشکالزدایی جداگانه، دایرکتوری dir را جستجو میکند.
- --ctf[=section]
- محتویات
بخش CTF
مشخصشده
را نمایش
میدهد.
بخشهای CTF
خود شامل
زیربخشهای
فراوانی
هستند که
همگی به
ترتیب
نمایش داده
میشوند.
بهطور پیشفرض، بخشی با نام .ctf را نمایش میدهد، که نام تولیدشده توسط ld است.
- --ctf-parent=member
- اگر بخش CTF شامل انواعی با تعریف مبهم باشد، از آرشیوی متشکل از چندین دیکشنری CTF تشکیل خواهد شد که همگی از یک دیکشنری حاوی انواع بدون ابهام ارثبری میکنند. این عضو بهطور پیشفرض مانند بخشی که شامل آن است، .ctf نام دارد، اما میتوان این نام را با استفاده از تابع "ctf_link_set_memb_name_changer" در زمان پیوند تغییر داد. هنگام بررسی آرشیوهای CTF ایجادشده توسط پیونددهندهای که از تغییردهندهٔ نام برای تغییر نام عضو آرشیو والد استفاده کرده است، میتوان از --ctf-parent برای تعیین نام استفادهشده برای والد بهره برد.
- --ctf-parent-section=section
- این گزینه به شما امکان میدهد برای دیکشنری والد CTF حاوی انواع بدون ابهام، بخشی کاملاً متفاوت از دیکشنریهای فرزند که باقیماندههای مبهم را دربردارند انتخاب کنید. پیونددهنده اشیاء ELF با چنین ساختاری را تولید نمیکند، اما برخی پیونددهندههای شخص ثالث ممکن است این کار را انجام دهند. همچنین برای بررسی CTF نوشتهشده در قالب چندین فایل خام جهت ترکیب آنها با objcopy مناسب است؛ چرا که objcopy میتواند آنها را در بخشهای مختلف ELF قرار دهد، اما نه در اعضای مختلف یک دیکشنری CTF واحد.
- --sframe[=section]
- محتویات
بخش SFrame
مشخصشده
را نمایش
میدهد.
بهطور پیشفرض، بخشی با نام .sframe را نمایش میدهد، که نام تولیدشده توسط ld است.
- -G
- --stabs
- محتویات کامل هر بخش درخواستی را نمایش میدهد. محتویات بخشهای .stab، .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
ارائه
میشود،
هرچند قالب
نمایش
متفاوت است.
قالب خروجی
به قالب
فایلی که در
حال تخلیه (dump)
است بستگی
دارد، اما
دو نوع اصلی
وجود دارد.
نوع اول به
این شکل
است:
[ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
که در آن عدد درون براکتها، شماره ورودی در جدول نمادها است، شماره sec شماره بخش (section)، مقدار fl بیتهای پرچم نماد، شماره ty نوع نماد، شماره scl کلاس ذخیرهسازی (storage class) نماد و مقدار nx تعداد ورودیهای کمکی مرتبط با نماد است. دو فیلد آخر، مقدار نماد و نام آن هستند.
قالب خروجی رایج دیگر که معمولاً در فایلهای مبتنی بر ELF دیده میشود، به این شکل است:
00000000 l d .bss 00000000 .bss 00000000 g .text 00000000 fred
در اینجا عدد نخست، مقدار نماد است (که گاهی به عنوان نشانی آن از آن یاد میشود). فیلد بعدی در واقع مجموعهای از نویسهها و فاصلهها است که بیتهای پرچم تنظیمشده روی نماد را نشان میدهد. این نویسهها در ادامه شرح داده شدهاند. فیلد بعدی بخشی است که نماد با آن مرتبط است، یا *ABS* در صورتی که بخش مطلق باشد (یعنی به هیچ بخشی متصل نباشد)، یا *UND* اگر به بخش در فایل ارجاع داده شده اما در آن تعریف نشده باشد.
پس از نام بخش، فیلد دیگری میآید که یک عدد است؛ این عدد برای نمادهای مشترک (common) مقدار تراز (alignment) و برای سایر نمادها اندازه است. در نهایت نام نماد نمایش داده میشود.
نویسههای پرچم به ۷ گروه زیر تقسیم میشوند:
- "l"
- "g"
- "u"
- "!"
- نماد محلی (l)، سراسری (g)، سراسری یکتا (u)، نه سراسری و نه محلی (یک فاصله)، یا هر دو سراسری و محلی (!) است. یک نماد میتواند به دلایل مختلفی نه محلی و نه سراسری باشد؛ برای مثال به این دلیل که برای اشکالزدایی استفاده میشود، اما اگر همزمان هم محلی و هم سراسری باشد، احتمالاً نشاندهنده یک باگ است. نمادهای سراسری یکتا (unique global) یک افزونه گنو (GNU extension) برای مجموعه استاندارد پیوندهای نماد ELF هستند. برای چنین نمادی، پیونددهنده پویا اطمینان حاصل میکند که در تمام طول فرایند تنها یک نماد با این نام و نوع در حال استفاده باشد.
- "w"
- نماد ضعیف (w) یا قوی (یک فاصله) است.
- "C"
- نماد نشاندهنده یک سازنده یا constructor (C) یا یک نماد معمولی (یک فاصله) است.
- "W"
- نماد یک هشدار (W) یا یک نماد عادی (یک فاصله) است. نام یک نماد هشدار، پیامی است که در صورت ارجاع به نماد پس از آن، نمایش داده میشود.
- "I"
- "i"
- نماد یک ارجاع غیرمستقیم به نمادی دیگر (I)، تابعی برای ارزیابی هنگام پردازش بازنشانی (i)، یا یک نماد عادی (یک فاصله) است.
- "d"
- "D"
- نماد یک نماد اشکالزدایی (d)، یک نماد پویا (D)، یا یک نماد عادی (یک فاصله) است.
- "F"
- "f"
- "O"
- نماد نام یک تابع (F)، یک فایل (f)، یک شیء (O)، یا صرفاً یک نماد عادی (یک فاصله) است.
- -T
- --dynamic-syms
- ورودیهای
جدول
نمادهای
پویای فایل
را چاپ
میکند. این
گزینه تنها
برای اشیاء
پویا،
مانند
انواع خاصی
از
کتابخانههای
مشترک (shared libraries)،
معنادار
است. این
خروجی شبیه
به اطلاعات
ارائهشده
توسط
برنامه 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
- تمام اطلاعات موجود در سربرگ، از جمله جدول نمادها و ورودیهای بازنشانی (relocation) را نمایش میدهد. استفاده از -x معادل تعیین تمامی گزینههای -a -f -h -p -r -t است.
- -w
- --wide
- برخی از سطرها را برای دستگاههای خروجی با بیش از ۸۰ ستون قالببندی میکند. همچنین هنگام نمایش، نام نمادها را کوتاه و ناقص نمیکند..IP -z 4
- --disassemble-zeroes
- بهطور معمول خروجی دیساسمبل از بلوکهای حاوی صفر صرفنظر میکند. این گزینه به دیساسمبلر دستور میدهد که آن بلوکها را نیز دقیقاً مانند هر دادهٔ دیگری دیساسمبل کند.
- -Z
- --decompress
- گزینهٔ -Z برای استفاده بههمراه گزینهٔ -s در نظر گرفته شده است. این گزینه به objdump دستور میدهد تا پیش از نمایش محتوای هر بخش فشردهشده، آن را از حالت فشرده خارج سازد.
- @file
- گزینههای
خط فرمان را
از file
میخواند.
گزینههای
خواندهشده
جایگزین
گزینهٔ
اولیهٔ @file
میشوند.
اگر file وجود
نداشته
باشد یا
خوانده
نشود، با
گزینه
بهصورت
لفظی
برخورد شده
و حذف
نخواهد شد.
گزینهها در file با نویسههای فاصلهخالی (whitespace) از یکدیگر جدا میشوند. میتوان با محصور کردن کل یک گزینه میان علامتهای نقلقول تکی یا دوگانه، نویسهٔ فاصلهخالی را درون آن گنجاند. هر نویسهای (از جمله بکاسلش) را میتوان با افزودن یک بکاسلش پیش از آن در گزینه قرار داد. خودِ file نیز ممکن است حاوی گزینههای @file دیگری باشد؛ هر یک از این گزینهها بهصورت بازگشتی پردازش خواهند شد.
همچنین ببینید (SEE ALSO)
nm(1)، readelf(1) و مدخلهای Info برای binutils.
کپیرایت و تکثیر (COPYRIGHT)
Copyright (c) 1991-2026 Free Software Foundation, Inc.
مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخهٔ 1.3 یا هر نسخهٔ متأخر دیگری که توسط بنیاد نرمافزارهای آزاد (Free Software Foundation) منتشر شده است، اعطا میشود؛ بدون بخشهای تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد. نسخهای از مجوز در بخشی تحت عنوان “GNU Free Documentation License” گنجانده شده است.
| 2026-08-31 | binutils-2.47 |