| LM32-ELF-NM(1) | ابزارهای توسعه گنو (GNU Development Tools) | LM32-ELF-NM(1) |
نام (NAME)
lm32-elf-nm - فهرستبندی نمادها از فایلهای شیء معماری LatticeMico32
خلاصه دستور (SYNOPSIS)
lm32-elf-nm [-A|-o|--print-file-name]
[-a|--debug-syms]
[-B|--format=bsd]
[-C|--demangle[=style]]
[-D|--dynamic]
[-fformat|--format=format]
[-g|--extern-only]
[-h|--help]
[--ifunc-chars=CHARS]
[-j|--format=just-symbols]
[-l|--line-numbers] [--inlines]
[-n|-v|--numeric-sort]
[-P|--portability]
[-p|--no-sort]
[-r|--reverse-sort]
[-S|--print-size]
[-s|--print-armap]
[-t radix|--radix=radix]
[-u|--undefined-only]
[-U|--defined-only]
[-V|--version]
[-W|--no-weak]
[-X 32_64]
[--no-demangle]
[--no-recurse-limit|--recurse-limit]]
[--plugin name]
[--size-sort]
[--special-syms]
[--synthetic]
[--target=bfdname]
[--unicode=method]
[--with-symbol-versions]
[--without-symbol-versions]
[objfile...]
توضیحات (DESCRIPTION)
ابزار گنو nm نمادهای موجود در فایلهای شیء (objfile...) را فهرست میکند. اگر هیچ فایل شیئی به عنوان آرگومان مشخص نشود، nm فایل پیشفرض a.out را در نظر میگیرد.
برای هر نماد، nm موارد زیر را نمایش میدهد:
- مقدار نماد، در مبنای عددی تعیینشده توسط گزینهها (پایین را ببینید)، یا بهطور پیشفرض در مبنای شانزده (هگزادسیمال).
- نوع نماد. حداقل انواع زیر استفاده میشوند؛ بسته به فرمت فایل شیء، انواع دیگری نیز ممکن است به کار روند. اگر حرف کوچک باشد، نماد معمولاً محلی (local) است؛ اگر حرف بزرگ باشد، نماد سراسری یا خارجی (global/external) است. با این حال، چند نماد با حروف کوچک برای نمادهای خاص سراسری نمایش داده میشوند ("u"، "v" و "w").
- "A"
- مقدار نماد مطلق (absolute) است و با پیوند دادن (link) بیشتر تغییر نخواهد کرد.
- "B"
- "b"
- نماد در بخش دادهای BSS قرار دارد. این بخش معمولاً حاوی دادههای مقداردهینشده یا مقداردهیشده با صفر است، هرچند رفتار دقیق آن به سیستم بستگی دارد.
- "C"
- "c"
- نماد از نوع مشترک (common) است. نمادهای مشترک دادههای مقداردهینشده هستند. هنگام پیوند دادن، ممکن است چندین نماد مشترک با یک نام ظاهر شوند. اگر نماد در جایی تعریف شده باشد، نمادهای مشترک به عنوان ارجاعات تعریفنشده در نظر گرفته میشوند. حرف کوچک c زمانی استفاده میشود که نماد در یک بخش ویژه برای دادههای مشترک کوچک قرار داشته باشد.
- "D"
- "d"
- نماد در بخش دادههای مقداردهیشده (initialized data) قرار دارد.
- "G"
- "g"
- نماد در بخش دادههای مقداردهیشده برای اشیاء کوچک قرار دارد. برخی فرمتهای فایل شیء دسترسی کارآمدتری به اشیاء دادهای کوچک فراهم میکنند، مانند یک متغیر int سراسری در مقایسه با یک آرایه سراسری بزرگ.
- "i"
- برای
فایلهای
فرمت PE نشان
میدهد که
نماد در
بخشی مخصوص
پیادهسازی
DLLها قرار
دارد.
برای فایلهای فرمت ELF نشان میدهد که نماد یک تابع غیرمستقیم (indirect function یا ifunc) است. این یک افزونه گنو برای مجموعه استاندارد انواع نمادهای ELF است. این نماد نشان میدهد که در صورت ارجاع توسط بازآرایی (relocation)، مستقیماً به آدرس آن ارزیابی نمیشود، بلکه باید در زمان اجرا فراخوانی گردد. سپس اجرای زمان اجرا مقداری را که باید در بازآرایی استفاده شود برمیگرداند.
نکته - نویسه نمایشی واقعی برای نمادهای غیرمستقیم گنو توسط گزینه خط فرمان --ifunc-chars کنترل میشود. اگر این گزینه ارائه شده باشد، اولین نویسه در رشته برای نمادهای تابع غیرمستقیم سراسری استفاده میشود. اگر رشته حاوی نویسه دومی باشد، برای نمادهای تابع غیرمستقیم محلی استفاده خواهد شد.
- "I"
- نماد یک ارجاع غیرمستقیم به نمادی دیگر است.
- "N"
- نماد یک نماد دیباگ (اشکالزدایی) است.
- "n"
- نماد در یک بخش فقطخواندنی غیر دادهای، غیر کدی و غیر دیباگ قرار دارد.
- "p"
- نماد در یک بخش بازکردن پشته (stack unwind) قرار دارد.
- "R"
- "r"
- نماد در یک بخش دادهای فقطخواندنی (read-only data) قرار دارد.
- "S"
- "s"
- نماد در یک بخش دادهای مقداردهینشده یا مقداردهیشده با صفر برای اشیاء کوچک قرار دارد.
- "T"
- "t"
- نماد در بخش متن یا کد (text/code) قرار دارد.
- "U"
- نماد تعریفنشده (undefined) است.
- "u"
- نماد یک نماد سراسری یکتا (unique global symbol) است. این یک افزونه گنو برای مجموعه استاندارد اتصالات نماد ELF است. برای چنین نمادی، پیونددهنده پویا (dynamic linker) اطمینان حاصل میکند که در کل فرآیند تنها یک نماد با این نام و نوع در حال استفاده است.
- "V"
- "v"
- نماد یک شیء ضعیف (weak object) است. هنگامی که یک نماد تعریفشده ضعیف با یک نماد تعریفشده معمولی پیوند میخورد، نماد تعریفشده معمولی بدون خطا استفاده میشود. هنگامی که یک نماد تعریفنشده ضعیف پیوند میخورد و نماد تعریف نشده باشد، مقدار نماد ضعیف بدون خطا برابر صفر میشود. در برخی سیستمها، حروف بزرگ نشان میدهد که یک مقدار پیشفرض مشخص شده است.
- "W"
- "w"
- نماد یک نماد ضعیف (weak symbol) است که بهطور خاص به عنوان شیء ضعیف برچسبگذاری نشده است. هنگامی که یک نماد تعریفشده ضعیف با یک نماد تعریفشده معمولی پیوند میخورد، نماد تعریفشده معمولی بدون خطا استفاده میشود. هنگامی که یک نماد تعریفنشده ضعیف پیوند میخورد و نماد تعریف نشده باشد، مقدار نماد به روشی وابسته به سیستم و بدون خطا تعیین میشود. در برخی سیستمها، حروف بزرگ نشان میدهد که یک مقدار پیشفرض مشخص شده است.
- "-"
- نماد یک نماد stabs در یک فایل شیء a.out است. در این حالت، مقادیر بعدی چاپشده عبارتند از فیلد stabs other، فیلد stabs desc و نوع stab. نمادهای stabs برای نگهداری اطلاعات اشکالزدایی استفاده میشوند.
- "?"
- نوع نماد ناشناخته است، یا مختص فرمت فایل شیء است.
- •
- نام نماد. اگر نماد دارای اطلاعات نسخه مرتبط باشد، اطلاعات نسخه نیز نمایش داده میشود. اگر نماد نسخهدار تعریفنشده یا از پیونددهنده مخفی باشد، رشته نسخه به عنوان پسوند نام نماد و پس از یک نویسه @ نمایش داده میشود؛ مانند foo@VER_1. اگر نسخه، نسخه پیشفرضی باشد که هنگام حل ارجاعات بدون نسخه به نماد استفاده میشود، به عنوان پسوند پس از دو نویسه @ نمایش داده میشود؛ مانند foo@@VER_2.
گزینهها (OPTIONS)
فرمهای کوتاه و بلند گزینهها که در اینجا به عنوان جایگزین نشان داده شدهاند، معادل یکدیگر هستند.
- -A
- -o
- --print-file-name
- قبل از هر نماد، نام فایل ورودی (یا عضو آرشیو) را که در آن یافت شده است درج میکند، به جای اینکه فایل ورودی را فقط یکبار قبل از تمام نمادهایش مشخص کند.
- -a
- --debug-syms
- تمام نمادها، حتی نمادهای مخصوص دیباگر را نمایش میدهد؛ این نمادها معمولاً فهرست نمیشوند.
- -B
- معادل --format=bsd است (جهت سازگاری با nm در سیستمهای MIPS).
- -C
- --demangle[=style]
- رمزگشایی (demangle) نام نمادهای سطح پایین به نامهای سطح کاربر. علاوه بر حذف هرگونه زیرخط ابتدایی اضافهشده توسط سیستم، این کار نام توابع ++C را خوانا میکند. کامپایلرهای مختلف سبکهای نامگذاری متفاوتی دارند. آرگومان اختیاری سبک رمزگشایی میتواند برای انتخاب سبک مناسب برای کامپایلر شما استفاده شود.
- --no-demangle
- نام نمادهای سطح پایین را رمزگشایی نمیکند. این حالت پیشفرض است.
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- محدودیت
عمق بازگشت
در حین
رمزگشایی
رشتهها را
فعال یا
غیرفعال
میکند. از
آنجا که
فرمتهای
نامگذاری
امکان
بازگشت
نامحدود را
فراهم
میکنند،
ممکن است
رشتههایی
ایجاد شوند
که
رمزگشایی
آنها تمام
فضای پشته
موجود در
ماشین
میزبان را
مصرف کرده و
باعث خطای
حافظه (memory fault)
شود. این
محدودیت با
محدود کردن
بازگشت به
۲۰۴۸ سطح
تودرتو،
سعی میکند
از این
اتفاق
جلوگیری
کند.
حالت پیشفرض فعال بودن این محدودیت است، اما برای رمزگشایی نامهای بسیار پیچیده ممکن است غیرفعال کردن آن لازم باشد. با این حال توجه داشته باشید که در صورت غیرفعال کردن محدودیت بازگشت، اتمام فضای پشته ممکن است و هرگونه گزارش باگ درباره چنین رخدادی رد خواهد شد.
- -D
- --dynamic
- نمادهای پویا (dynamic) را به جای نمادهای معمولی نمایش میدهد. این گزینه تنها برای اشیاء پویا، مانند انواع خاصی از کتابخانههای مشترک (shared libraries) معنی دارد.
- -f format
- --format=format
- استفاده از فرمت خروجی format، که میتواند "bsd"، "sysv"، "posix" یا "just-symbols" باشد. پیشفرض "bsd" است. تنها نویسه اول format مهم است؛ میتواند با حروف بزرگ یا کوچک باشد.
- -g
- --extern-only
- فقط نمادهای خارجی (external) را نمایش میدهد.
- -h
- --help
- خلاصهای از گزینههای nm را نمایش داده و خارج میشود.
- --ifunc-chars=CHARS
- هنگام نمایش نمادهای تابع غیرمستقیم گنو، nm بهطور پیشفرض از نویسه "i" هم برای توابع غیرمستقیم محلی و هم سراسری استفاده میکند. گزینه --ifunc-chars به کاربر امکان میدهد رشتهای شامل یک یا دو نویسه را مشخص کند. اولین نویسه برای نمادهای تابع غیرمستقیم سراسری و نویسه دوم، در صورت وجود، برای نمادهای تابع غیرمستقیم محلی استفاده خواهد شد.
- j
- معادل --format=just-symbols است.
- -l
- --line-numbers
- برای هر نماد، با استفاده از اطلاعات اشکالزدایی تلاش میکند نام فایل و شماره خط را بیابد. برای یک نماد تعریفشده، به دنبال شماره خط آدرس نماد میگردد. برای یک نماد تعریفنشده، به دنبال شماره خط مدخل بازآرایی که به نماد ارجاع میدهد میگردد. اگر اطلاعات شماره خط یافت شود، پس از سایر اطلاعات نماد چاپ میشود.
- --inlines
- هنگامی که گزینه -l فعال باشد، اگر آدرس متعلق به تابعی باشد که درونخطی (inlined) شده است، این گزینه باعث میشود اطلاعات منبع برای تمام دامنههای دربرگیرنده تا اولین تابع غیر درونخطی نیز چاپ شود. برای مثال، اگر "main" تابع "callee1" را درونخطی کرده باشد و آن هم "callee2" را درونخطی کرده باشد و آدرس از "callee2" باشد، اطلاعات منبع برای "callee1" و "main" نیز چاپ خواهد شد.
- -n
- -v
- --numeric-sort
- مرتبسازی عددی نمادها بر اساس آدرس آنها، به جای مرتبسازی الفبایی بر اساس نام.
- -p
- --no-sort
- نمادها را به هیچ ترتیبی مرتب نمیکند؛ آنها را به همان ترتیبی که خوانده شدهاند چاپ میکند.
- -P
- --portability
- استفاده از فرمت خروجی استاندارد POSIX.2 به جای فرمت پیشفرض. معادل -f posix است.
- -r
- --reverse-sort
- معکوس کردن ترتیب مرتبسازی (عددی یا الفبایی)؛ نمادهای انتهایی در ابتدا میآیند.
- -S
- --print-size
- چاپ مقدار و اندازه نمادهای تعریفشده برای سبک خروجی "bsd". این گزینه برای فرمتهای شیئی که اندازه نماد را ثبت نمیکنند تأثیری ندارد، مگر اینکه --size-sort نیز استفاده شده باشد که در آن صورت یک اندازه محاسبهشده نمایش داده میشود.
- -s
- --print-armap
- هنگام فهرست کردن نمادهای اعضای آرشیو، ایندکس را نیز شامل میکند: نقشهای (ذخیرهشده در آرشیو توسط ar یا ranlib) از اینکه کدام ماژولها حاوی تعاریف برای کدام نامها هستند.
- -t radix
- --radix=radix
- استفاده از radix به عنوان مبنای عددی برای چاپ مقادیر نمادها. باید d برای دهدهی (decimal)، o برای هشتهشتی (octal)، یا x برای شانزدهشانزدهی (hexadecimal) باشد.
- -u
- --undefined-only
- فقط نمایش نمادهای تعریفنشده (نمادهایی که خارج از هر فایل شیء هستند). بهطور پیشفرض هم نمادهای تعریفشده و هم تعریفنشده نمایش داده میشوند.
- -U
- --defined-only
- فقط نمایش نمادهای تعریفشده برای هر فایل شیء. بهطور پیشفرض هم نمادهای تعریفشده و هم تعریفنشده نمایش داده میشوند.
- -V
- --version
- نمایش شماره نسخه nm و خروج.
- -X
- این گزینه جهت سازگاری با نسخه AIX برنامه nm نادیده گرفته میشود. این گزینه یک پارامتر میگیرد که باید رشته 32_64 باشد. حالت پیشفرض AIX nm متناظر با -X 32 است که توسط GNU nm پشتیبانی نمیشود.
- --plugin name
- بارگذاری
پلاگینی به
نام name برای
افزودن
پشتیبانی
از انواع
هدف اضافی.
این گزینه
تنها در
صورتی در
دسترس است
که ابزار با
پشتیبانی
از پلاگین
ساخته شده
باشد.
اگر --plugin ارائه نشود اما پشتیبانی از پلاگین فعال باشد، nm فایلهای موجود در دایرکتوری ${libdir}/bfd-plugins را به ترتیب الفبایی پیمایش کرده و از اولین پلاگینی که ادعای پشتیبانی از شیء مورد نظر را داشته باشد استفاده میکند.
لطفاً توجه داشته باشید که این دایرکتوری جستجوی پلاگین، همان دایرکتوری استفادهشده توسط گزینه -plugin برنامه ld نیست. برای اینکه nm از پلاگین پیونددهنده استفاده کند، پلاگین باید در دایرکتوری ${libdir}/bfd-plugins کپی شود. برای کامپایلهای مبتنی بر GCC، پلاگین پیونددهنده liblto_plugin.so.0.0.0 نام دارد. برای کامپایلهای مبتنی بر Clang، نام آن LLVMgold.so است. پلاگین GCC همیشه با نسخههای قبلی سازگار است، بنابراین کپی کردن جدیدترین نسخه کافی است.
- --size-sort
- مرتبسازی
نمادها بر
اساس
اندازه.
برای اشیاء
ELF، اندازه
نمادها از ELF
خوانده
میشود؛
برای سایر
انواع شیء،
اندازه
نمادها به
عنوان
اختلاف بین
مقدار نماد
و مقدار
نماد با
مقدار
بالاتر
بعدی
محاسبه
میشود. اگر
از فرمت
خروجی
"bsd"
استفاده
شود،
اندازه
نماد به جای
مقدار آن
چاپ میشود
و برای چاپ
هر دو مقدار
و اندازه،
باید از -S
استفاده
کرد.
نکته - این گزینه در صورت فعال بودن --undefined-only کار نمیکند زیرا نمادهای تعریفنشده اندازهای ندارند.
- --special-syms
- نمایش نمادهایی که دارای معنای خاص وابسته به معماری مقصد هستند. این نمادها معمولاً توسط معماری مقصد برای پردازشهای خاص استفاده میشوند و به طور معمول در فهرستهای معمولی نمادها مفید نیستند. برای مثال در معماری ARM، این گزینه نمادهای نگاشت مورد استفاده برای مشخص کردن گذار بین کد ARM، کد THUMB و دادهها را نادیده میگیرد.
- --synthetic
- شامل کردن نمادهای ساختگی (synthetic) در خروجی. اینها نمادهای خاصی هستند که توسط پیونددهنده برای اهداف مختلف ایجاد میشوند. این نمادها بهطور پیشفرض نمایش داده نمیشوند زیرا بخشی از کد منبع اصلی باینری نیستند.
- --unicode=[default|invalid|locale|escape|hex|highlight]
- کنترل نحوه
نمایش
نویسههای
چندبایتی
کدگذاریشده
با UTF-8 در
رشتهها.
مقدار
پیشفرض
(--unicode=default) رفتار
خاصی با
آنها
انجام
نمیدهد.
گزینه --unicode=locale
دنباله را
در لوکال
جاری نمایش
میدهد که
ممکن است از
آنها
پشتیبانی
کند یا
نکند.
گزینههای
--unicode=hex و --unicode=invalid
آنها را به
صورت
دنبالهای
از
بایتهای
هگز درون
پرانتز
شکسته یا
آکولاد
نمایش
میدهند.
گزینه --unicode=escape آنها را به صورت دنبالههای گریز (\uxxxx) نمایش میدهد و گزینه --unicode=highlight آنها را به صورت دنبالههای گریز برجسته با رنگ قرمز نمایش میدهد (در صورت پشتیبانی دستگاه خروجی). این رنگآمیزی با هدف جلب توجه به وجود دنبالههای یونیکد در جاهایی که انتظارشان نمیرود طراحی شده است.
- -W
- --no-weak
- نمادهای ضعیف (weak) را نمایش نمیدهد.
- --with-symbol-versions
- --without-symbol-versions
- نمایش اطلاعات نسخه نماد را فعال یا غیرفعال میکند. رشته نسخه به صورت پسوندی برای نام نماد و پس از یک نویسه @ نمایش داده میشود؛ مانند foo@VER_1. اگر نسخه، نسخه پیشفرضی باشد که هنگام حل ارجاعات بدون نسخه به نماد استفاده میشود، به عنوان پسوند پس از دو نویسه @ نمایش داده میشود؛ مانند foo@@VER_2. بهطور پیشفرض، اطلاعات نسخه نماد نمایش داده میشود.
- --target=bfdname
- مشخص کردن فرمت کد شیء غیر از فرمت پیشفرض سیستم شما.
- @file
- خواندن
گزینههای
خط فرمان از
file.
گزینههای
خواندهشده
به جای
گزینه اصلی
@file درج
میشوند.
اگر file وجود
نداشته
باشد یا
خوانده
نشود،
گزینه به
صورت
تحتاللفظی
رفتار شده و
حذف نخواهد
شد.
گزینهها در file با فاصلههای خالی از هم جدا میشوند. یک نویسه فاصله میتواند با احاطه کل گزینه درون علامتهای نقلقول تکی یا دوتایی در گزینه گنجانده شود. هر نویسهای (از جمله بکاسلش) میتواند با پیشوند کردن یک بکاسلش به نویسه مورد نظر اضافه شود. خود file میتواند حاوی گزینههای @file اضافی باشد؛ هر یک از این گزینهها به صورت بازگشتی پردازش خواهند شد.
همچنین ببینید (SEE ALSO)
ar(1)، objdump(1)، ranlib(1) و مدخلهای Info برای binutils.
حق نشر (COPYRIGHT)
حق نشر © 1991-2025 بنیاد نرمافزار آزاد (Free Software Foundation, Inc.)
مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز اسناد آزاد گنو (GNU Free Documentation License)، نسخه 1.3 یا هر نسخه متأخرتر منتشرشده توسط بنیاد نرمافزار آزاد صادر میشود؛ بدون بخشهای تغییرناپذیر، بدون متنهای روی جلد و بدون متنهای پشت جلد. یک کپی از این مجوز در بخش تحت عنوان "GNU Free Documentation License" گنجانده شده است.
| 2026-01-23 | binutils-2.45.1 |