ELFLS(1) General Commands Manual ELFLS(1)

elfls - نمایش محتویات یک فایل ELF

elfls [OPTIONS] FILE ...

دستور elfls یک فایل ELF را بررسی کرده، جدول سرآیند برنامه (program header table) و جدول سرآیند بخش‌ها (section header table) را می‌خواند و خلاصه‌ای از محتویات آن را نمایش می‌دهد.

شامل کردن فهرست فایل‌های منبع.
شامل کردن فهرست وابستگی‌های برنامه.
با مدخل‌های کوچک رفتار ویژه‌ای نداشته باش. به‌طور پیش‌فرض، مدخل‌های سرآیند برنامه و بخش‌ها که محتوای ارجاع‌داده‌شده به آن‌ها عمدتاً یا کاملاً رشته‌های کوتاه خاتمه‌یافته با null هستند، صرفاً با نمایش همان رشته فهرست می‌شوند (به‌ویژه بخش‌های interpreter، comment و note). استفاده از این گزینه باعث می‌شود که این مدخل‌ها نیز همانند سایر مدخل‌ها نمایش داده شوند.
عدم نمایش موقعیت مکانی مدخل‌ها درون فایل.
عدم نمایش فهرست جدول سرآیند برنامه.
عدم نمایش فهرست جدول سرآیند بخش‌ها.
تنظیم حداکثر عرض خطوط خروجی روی N. مقدار N می‌تواند صفر باشد تا هر مدخل در یک خط جداگانه و بدون محدودیت عرض نمایش داده شود.
نمایش راهنما و خروج.
نمایش اطلاعات نسخه و خروج.

خروجی برنامه برای هر فایل ELF مشخص‌شده در خط فرمان، به‌صورت زیر است:

نام فایل
وابستگی‌ها
فایل‌های منبع
جدول سرآیند برنامه
جدول سرآیند بخش‌ها

خط اول خروجی، نام فایل و معماری‌ای را که برای آن ساخته شده است نشان می‌دهد. در انتهای نام فایل، در صورتی که فایل یک باینری اجرایی باشد علامت ستاره *، اگر یک کتابخانه اشتراکی باشد علامت امپرسند & و اگر یک core dump باشد علامت دلار $ قرار می‌گیرد؛ در غیر این صورت، فایل یک فایل شیء (object file) است. (این تنها خطی است که خروجی آن تضمین شده است. در صورتی که داده‌ها قابل اعمال نباشند، در فایل وجود نداشته باشند یا با گزینه‌های خط فرمان غیرفعال شده باشند، سایر اطلاعات نمایش داده نخواهند شد.)

پس از نام فایل، فهرستی از کتابخانه‌های شیء اشتراکی که فایل به‌صورت پویا با آن‌ها پیوند دارد (در صورت وجود) نمایش داده می‌شود.

سپس فهرستی از فایل‌های منبعی که برای ساخت فایل استفاده شده‌اند نمایش داده می‌شود، به این فرض که این اطلاعات در دسترس باشند.

در ادامه، فهرست مدخل‌های جدول سرآیند برنامه ظاهر می‌شود. برای شرح تفصیلی خروجی به بخش‌های بعدی مراجعه کنید. باینری‌های اجرایی و کتابخانه‌های اشتراکی همواره حاوی جدول سرآیند برنامه هستند.

در نهایت، مدخل‌های جدول سرآیند بخش‌ها نمایش داده می‌شوند. برای شرح تفصیلی خروجی به بخش‌های بعدی مراجعه کنید. فایل‌های ELF تقریباً همیشه حاوی یک جدول سرآیند بخش‌ها هستند، اگرچه وجود آن تنها برای فایل‌های شیء الزامی است.

مدخل‌های جدول سرآیند برنامه در قالب زیر نمایش داده می‌شوند:

ind T rwx pos size address

شماره نمایه (index) مدخل در جدول سرآیند برنامه.
حرفی که نوع مدخل را مشخص می‌کند. انواع ممکن عبارتند از:
  B
داده‌های باینری: دستورالعمل‌های زبان ماشین یا داده‌های مورد استفاده توسط خود برنامه.
  P
جدول سرآیند برنامه.
  D
بخش اطلاعات پیوند پویا (dynamic linking).
  I
مشخصات مفسر (interpreter). معمولاً این مقدار مسیر مفسر پیوند پویای برنامه است.
  N
یک بخش یادداشت (note)، که جزئیات آن مشخص نشده است.
  U
داده‌های فریم پشته استثناها (exception frame stack)، مورد استفاده توسط کد برای باز کردن پشته (unwind).
پرچم‌هایی که مجوزهای حافظه را برای محتوای این مدخل تعیین می‌کنند. r نشان می‌دهد که محتوا باید در حافظهٔ قابل خواندن بارگذاری شود، w نشان می‌دهد که حافظه باید قابل نوشتن باشد، و x نشان می‌دهد که حافظه باید قابل اجرا باشد. حرف s نیز می‌تواند در موقعیت نهایی قرار گیرد که علاوه بر این، نشان‌دهندهٔ نقطهٔ شروع برنامه در این بخش است.
عددی در مبنای شانزده (hexadecimal) که موقعیت محتوای این مدخل را در داخل فایل مشخص می‌کند.
عددی در مبنای شانزده که اندازهٔ محتوای این مدخل را مشخص می‌کند.
عددی در مبنای شانزده که آدرس حافظه‌ای که محتوای این مدخل باید در آن بارگذاری شود را مشخص می‌کند.

یک عدد در مبنای شانزده در انتهای مدخل با پیشوند + نشان می‌دهد که اندازه این مدخل در حافظه چقدر باید بزرگتر از اندازهٔ آن در فایل باشد (با بایت‌های اضافی در انتها که با صفر مقداردهی اولیه می‌شوند).

توجه داشته باشید که مگر در صورت مشخص کردن گزینهٔ --nostr، مدخل‌های interpreter و note در جدول سرآیند برنامه، صرفاً به‌صورت رشته‌ای که محتوای آن‌ها را نشان می‌دهد نمایش داده می‌شوند.

مدخل‌های جدول سرآیند بخش‌ها در قالب زیر نمایش داده می‌شوند:

ind T rwx pos size name

شماره نمایه مدخل در جدول سرآیند بخش‌ها.
حرفی که نوع مدخل را مشخص می‌کند. انواع ممکن عبارتند از:
  B
داده‌های برنامه: دستورالعمل‌های زبان ماشین یا داده‌هایی که بخشی از خود برنامه هستند.
  0
داده‌های برنامه با مقداردهی اولیه صفر: حافظه به‌صورت معمول برای این مدخل تخصیص داده می‌شود، اما هیچ داده‌ای در فایل وجود ندارد؛ در عوض حافظه با تمام بیت‌های صفر مقداردهی اولیه می‌شود.
  S
جدولی از نمادها (symbols) که در فایل به کار رفته‌اند.
  $
جدول رشته‌ها (string table).
  H
جدول درهم‌سازی (hash table) نمادها برای پیوند پویا.
  D
بخش اطلاعات پیوند پویا.
  P
یک جدول پیوند رویه‌ها (Procedure Linking Table).
  O
جدول آفست سراسری (Global Offset Table).
  I
مشخصات مفسر. معمولاً این مقدار مسیر مفسر پیوند پویای برنامه است.
  R
فهرستی از رکوردهای بازآرایی (relocation records).
  V
بخشی که وابستگی‌های نسخه را برای برنامه مشخص می‌کند.
  G
بخشی که اطلاعات اشکال‌زدایی (debug) را فراهم می‌کند.
  U
بخش داده‌های سرآیند استثنا، مورد استفاده در باز کردن پشته (stack unwinding).
  N
یک بخش یادداشت (note) که محتوای آن نامشخص است.
  C
یک بخش توضیحات (comment): اطلاعات کمکی که معمولاً توسط برنامه‌ای که فایل را ایجاد کرده درج می‌شود.
پرچم‌هایی که نحوه استفاده و مجوزهای حافظه را برای این مدخل نشان می‌دهند. r نشان می‌دهد که محتویات باید در زمان اجرای فرایند در حافظه بارگذاری شوند، w نشان می‌دهد که محتویات باید در زمان اجرای فرایند قابل نوشتن باشند، و x نشان می‌دهد که محتویات شامل دستورالعمل‌های ماشین و قابل اجرا هستند.
عددی در مبنای شانزده که موقعیت مکانی محتوای این مدخل را در داخل فایل مشخص می‌کند.
عددی در مبنای شانزده که اندازهٔ محتوای این مدخل را مشخص می‌کند.
نام این بخش. اگر بخش یک فهرست از مدخل‌های بازآرایی باشد، نام آن با یک دونقطه و یک عدد همراه خواهد بود که آن عدد نشان‌دهنده نمایه بخشی است که اطلاعات بازآرایی بر آن اعمال می‌شود. علاوه بر این، انواع مختلفی از بخش‌ها حاوی اطلاعاتی هستند که به رشته‌ها و/یا نمادها ارجاع دارند، که این رشته‌ها یا نمادها در یک بخش جدول رشته و/یا بخش جدول درهم‌سازی نمادها قرار دارند. چنین بخش‌هایی بعد از نام، عددی داخل براکت خواهند داشت که نمایهٔ این بخش مربوطه را مشخص می‌کند. حرف S در داخل براکت پس از نام یک بخش جدول رشته، مشخص‌کننده جدول رشته‌ای است که نام بخش‌ها را در بر دارد.

توجه داشته باشید که مگر در صورت مشخص کردن --nostr، مدخل‌های interpreter، comment و note در جدول سرآیند بخش‌ها، صرفاً به‌صورت رشته‌ای حاوی محتوای آن‌ها نمایش داده می‌شوند.

حق نشر © 1999,2011 Brian Raiter <breadbox@muppetlabs.com>.

مجوز GPLv2+: گنو GPL نسخه ۲ یا بالاتر. این یک نرم‌افزار آزاد است: شما در تغییر و بازتوزیع آن آزاد هستید. تا حد مجاز تعیین‌شده توسط قانون، هیچ ضمانتی وجود ندارد.

objdump(1), readelf(1)

May 2011 ELF kickers 3.0