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" گنجانده شده است. binutils-2.45.1 2026-01-23 LM32-ELF-NM(1)