LD.LLD(1) General Commands Manual LD.LLD(1)

ld.lld — پیونددهنده ELF از پروژه LLVM

ld.lld [options] objfile ...

یک پیونددهنده یک یا چند فایل شیء (object)، آرشیو و کتابخانه را دریافت کرده و آن‌ها را در یک فایل خروجی (یک فایل اجرایی، یک کتابخانه اشتراکی یا یک فایل شیء دیگر) ترکیب می‌کند. این ابزار کدها و داده‌ها را از فایل‌های ورودی بازنشانی (relocate) کرده و ارجاعات نمادها میان آن‌ها را حل‌وفصل می‌کند.

ld.lld جایگزینی مستقیم برای پیونددهنده‌های GNU BFD و gold است. این ابزار بیشتر آرگومان‌های خط فرمان و اسکریپت‌های پیونددهنده مشابه پیونددهنده‌های GNU را می‌پذیرد.

ld.lld در حال حاضر از مقصدهای i386،‏ x86-64،‏ ARM،‏ AArch64،‏ LoongArch،‏ PowerPC32،‏ PowerPC64،‏ MIPS32،‏ MIPS64،‏ RISC-V،‏ AMDGPU،‏ Hexagon و SPARC V9 پشتیبانی می‌کند. ld.lld اگر به‌صورت lld-link فراخوانی شود مانند پیونددهنده‌ای سازگار با link.exe مایکروسافت عمل می‌کند و اگر به‌صورت ld.ld64 فراخوانی شود مانند ld در macOS عمل می‌کند. صرف‌نظر از اینکه ld.lld چگونه ساخته شده باشد، تمامی این مقصدها همیشه پشتیبانی می‌شوند؛ بنابراین همیشه می‌توانید از ld.lld هم به‌عنوان پیونددهنده بومی (native) و هم پیونددهنده متقاطع (cross linker) استفاده کنید.

بسیاری از گزینه‌ها دارای هر دو شکل تک‌حرفی و بلند هستند. هنگام استفاده از شکل بلند، گزینه‌هایی به‌جز مواردی که با حرف o آغاز می‌شوند را می‌توان با یک یا دو خط تیره پیش از نام گزینه مشخص کرد. گزینه‌های بلندی که با o شروع می‌شوند، برای جلوگیری از اشتباه گرفته شدن با گزینهٔ -o path به دو خط تیره نیاز دارند.

در صورت تعریف چندبارهٔ یک نماد، خطایی صادر نشود. از اولین تعریف استفاده خواهد شد.
اجازه دادن به ارجاعات حل‌نشده در کتابخانه‌های اشتراکی. این گزینه هنگام پیوند دادن یک کتابخانه اشتراکی به‌طور پیش‌فرض فعال است.
اعمال مقادیر زمان پیوند برای بازنشانی‌های پویا.
تنظیم DT_NEEDED برای کتابخانه‌های اشتراکی، تنها در صورت استفاده از آن‌ها.
=value
تنظیم فیلد DT_AUXILIARY به نام مشخص‌شده.
, --dy
پیوند با کتابخانه‌های اشتراکی.
, --static, --dn
عدم پیوند با کتابخانه‌های اشتراکی.
عدم مقیدسازی محلی نمادهای تعریف‌شده با نمایانی پیش‌فرض برای -shared (پیش‌فرض).
مقیدسازی محلی نمادهای تعریف‌شده با نمایانی پیش‌فرض برای -shared. همچنین پرچم DF_SYMBOLIC را تنظیم می‌کند.
مقیدسازی محلی نمادهای STB_GLOBAL تعریف‌شده با نمایانی پیش‌فرض برای -shared.
مقیدسازی محلی نمادهای توابع تعریف‌شده با نمایانی پیش‌فرض برای -shared.
مقیدسازی محلی نمادهای توابع STB_GLOBAL تعریف‌شده با نمایانی پیش‌فرض برای -shared.
نوشتن یک فایل ELF با ترتیب بایت بزرگ (Big Endian) با استفاده از قالب BE8 (فقط در AArch32).
فعال‌سازی بهینه‌سازی‌های پرش به پرش: دستوری که مقصد آن یک دستور پرش دیگر است بازنویسی می‌شود تا مستقیماً به مقصد پرش دوم اشاره کند (تنها در AArch64 و X86_64). به‌طور پیش‌فرض در -O2 فعال است.
=value
تولید یک یادداشت شناسه ساخت (build ID note). value می‌تواند یکی از موارد fast ، md5 ، sha1 ، tree ، uuid ، 0xhex-string و none باشد. tree نام مستعاری برای sha1 است. شناسه‌های ساخت از نوع fast ، md5 ، sha1 و tree از محتوای شیء محاسبه می‌شوند. fast برای امنیت از نظر رمزنگاری در نظر گرفته نشده است.
مترادفی برای --build-id=sha1.
=algorithm
algorithm می‌تواند موارد زیر باشد:
نادیده گرفتن پروفایل گراف فراخوانی.
استفاده از hfsort.
استفاده از cdsort (پیش‌فرض).
=value
استفاده از رنگ‌ها در پیام‌های عیب‌یابی. value می‌تواند یکی از مقادیر always ، auto و never باشد. auto رنگ‌ها را تنها در صورتی فعال می‌کند که خروجی به ترمینال فرستاده شود.
نام مستعاری برای --color-diagnostics=auto.
=value
فشرده‌سازی بخش‌های اشکال‌زدایی DWARF. اگر محتوای فشرده‌شده بزرگ‌تر شود، بخش‌ها بدون فشرده‌سازی باقی می‌مانند. value می‌تواند مقادیر زیر باشد:
بدون فشرده‌سازی.
سطح فشرده‌سازی پیش‌فرض ۱ (سریع‌ترین) است؛ زیرا اطلاعات اشکال‌زدایی معمولاً در این سطح به‌خوبی فشرده می‌شوند.
استفاده از سطح فشرده‌سازی پیش‌فرض در zstd.
=section-glob={none,zlib,zstd}[:level]
فشرده‌سازی بخش‌های خروجی که با glob مطابقت دارند و فاقد پرچم SHF_ALLOC هستند. اگر محتوای فشرده‌شده بزرگ‌تر شود، بخش‌های منطبق بدون فشرده‌سازی باقی می‌مانند. سطح فشرده‌سازی برابر با level (در صورت مشخص شدن) یا سطح پیش‌فرض متمرکز بر سرعت است. این گزینه مشابه حالت تعمیم‌یافتهٔ --compress-debug-sections است.
خروجی دادن جدول ارجاع متقابل. در صورت مشخص شدن -Map، در فایل نگاشت (map file) چاپ می‌شود.
تولید یک بخش ادغام‌شدهٔ .debug_names.
=file, -dT file
در صورت عدم وجود --script، این اسکریپت پیونددهنده پیش‌فرض خوانده شود.
=symbol=expression
تعریف یک نام مستعار برای نماد. expression می‌تواند نمادی دیگر یا یک عبارت اسکریپت پیونددهنده باشد. برای نمونه، ‘--defsym=foo=bar’ یا ‘--defsym=foo=bar+0x100’.
برگرداندن نام نمادها به شکل اولیه (Demangle).
غیرفعال کردن برچسب‌های پویای جدید.
, -x
حذف تمام نمادهای محلی.
, -X
حذف نمادهای محلی موقت.
نگه‌داشتن تمام نمادها در جدول نمادها.
=value
مشخص کردن پیونددهنده پویایی که برای یک فایل اجرایی با پیوند پویا باید استفاده شود. این مقدار در یک سگمنت ELF از نوع PT_INTERP ثبت می‌شود.
=file
مشابه با --export-dynamic-symbol-list. هنگام ایجاد یک شیء اشتراکی، متضمن -Bsymbolic است، اما DF_SYMBOLIC را تنظیم نمی‌کند.
انتخاب قالب ترتیب بایت بزرگ در دستور OUTPUT_FORMAT.
انتخاب قالب ترتیب بایت کوچک در دستور OUTPUT_FORMAT.
درخواست ایجاد بخش .eh_frame_hdr و سرآیند سگمنت PT_GNU_EH_FRAME.
, -q
تولید بازنشانی‌ها در خروجی.
فعال کردن برچسب‌های پویای جدید.
سرریز کردن بخش‌های ورودی به بخش‌های خروجی منطبق بعدی برای جلوگیری از سرریز ناحیه حافظه.
پایان دادن به گروه‌بندی اشیائی که باید طوری در نظر گرفته شوند که گویی با هم در یک آرشیو هستند.
=entry
نام نماد نقطه ورود.
=value
حداکثر تعداد خطاهایی که پیش از توقف نمایش داده می‌شوند. مقدار صفر نشان‌دهنده نامحدود بودن است.
گزارش کردن نمادهای حل‌نشده به عنوان خطا.
=script_path
فراخوانی اسکریپت script_path در صورت بروز خطا، با tag به عنوان آرگومان نخست و یک پارامتر اضافی به عنوان آرگومان دوم. انتظار می‌رود اسکریپت در صورت موفقیت 0 را برگرداند. هر مقدار دیگری به عنوان یک خطای عمومی در نظر گرفته می‌شود..Ar tag می‌تواند missing-lib به همراه نام کتابخانهٔ مفقود، یا undefined-symbol به همراه نام نماد تعریف‌نشده باشد.
بخش‌های قابل‌اجرا را به عنوان غیرقابل‌خواندن علامت‌گذاری می‌کند. این گزینه در حال حاضر تنها روی AArch64 پشتیبانی می‌شود.
=value
کتابخانه‌های ایستا را از برون‌ریزی خودکار مستثنی می‌کند.
, -E
نمادها را در جدول نمادهای پویا قرار می‌دهد.
=glob
(فایل اجرایی) نمادهای تعریف‌شدهٔ غیرمحلی منطبق را در جدول نمادهای پویا قرار می‌دهد. (شیء اشتراکی) ارجاعات به نمادهای STV_DEFAULT غیرمحلی منطبق نباید به تعاریف درون شیء اشتراکی مقید شوند، حتی اگر در غیر این صورت به دلیل -Bsymbolic ، -Bsymbolic-functions یا --dynamic-list چنین می‌شدند.
=file
فهرستی از الگوهای نمادهای پویا را از file می‌خواند. --export-dynamic-symbol را روی هر الگو اعمال می‌کند.
با هشدارها مانند خطا رفتار می‌کند.
=value, -F value
فیلد DT_FILTER را به مقدار مشخص‌شده تنظیم می‌کند.
=symbol
یک تابع نهایی‌ساز (finalizer) را مشخص می‌کند.
تنها برای -r معنادار است. گروه‌های بخش دور ریخته می‌شوند. اگر دو عضو یک گروه بخش در بخش خروجی یکسانی قرار گیرند، بازنشانی‌های (relocations) آن‌ها را نیز ترکیب می‌کند.
=input-format, -b input-format
قالب ورودی‌های پس از این گزینه را مشخص می‌کند. input-format می‌تواند یکی از binary ، elf یا default باشد. default مترادفی برای elf است.
جمع‌آوری زبالهٔ (garbage collection) بخش‌های استفاده‌نشده را فعال می‌کند.
بخش .gdb_index را تولید می‌کند.
=value
سبک درهم‌سازی (hash style) را مشخص می‌کند. value می‌تواند sysv ، gnu یا both باشد. both پیش‌فرض است.
پیام راهنما را چاپ می‌کند.
=all
تا کردن کدهای یکسان (identical code folding) را فعال می‌کند.
=safe
تا کردن ایمن کدهای یکسان را فعال می‌کند.
=none
تا کردن کدهای یکسان را غیرفعال می‌کند.
برابری نشانی داده‌ها را نادیده می‌گیرد. در C/C++ الزامی است که هر داده نشانی یکتایی داشته باشد. این گزینه به lld اجازه می‌دهد بهینه‌سازی ناامنی را انجام دهد که این الزام را نقض می‌کند: ایجاد کپی از داده‌های فقط‌خواندنی، یا ادغام دو یا چند دادهٔ فقط‌خواندنی که اتفاقاً مقادیر یکسانی دارند.
برابری نشانی توابع را نادیده می‌گیرد. این گزینه فراخوانی‌های غیر-PIC به تابعی با نمایانی غیرپیش‌فرض در یک شیء اشتراکی را مجاز می‌داند. تابع ممکن است در فایل اجرایی و در شیء اشتراکی نشانی‌های متفاوتی داشته باشد.
=value
نشانی پایه را به value تنظیم می‌کند.
=symbol
یک تابع مقداردهی اولیه (initializer) را مشخص می‌کند.
=symbol
نماد symbol را در طول ICF تا نمی‌کند.
libName, --library=libName
نام اصلی کتابخانه برای استفاده.
dir, --library-path=dir
یک دایرکتوری به مسیر جستجوی کتابخانه اضافه می‌کند.
=value
خط‌لولهٔ AA برای اجرا در حین LTO. در ترکیب با --lto-newpm-passes استفاده می‌شود.
=value
گذرها (passes) برای اجرا در حین LTO.
opt-level
سطح بهینه‌سازی برای LTO.
=value
تعداد بخش‌های تولید کد (codegen) در LTO.
value
شبیه‌سازی هدف را تعیین می‌کند.
=file, -M file
نگاشت پیوند (link map) را در file چاپ می‌کند.
, -n
بخش‌ها را هم‌تراز با صفحه نمی‌کند، پیوند را با کتابخانه‌های ایستا انجام می‌دهد.
ارجاعات حل‌نشده در کتابخانه‌های اشتراکی را مجاز نمی‌داند. این گزینه به طور پیش‌فرض هنگام پیوند دادن یک فایل اجرایی فعال است.
همواره DT_NEEDED را برای کتابخانه‌های اشتراکی تنظیم می‌کند.
از رنگ‌ها در پیام‌های عیب‌یابی استفاده نمی‌کند.
نام‌های نمادها را رمزگشایی (demangle) نمی‌کند.
از خروجی دادن بخش .interp جلوگیری می‌کند.
اعضای آرشیو را برای تعاریفی که نمادهای COMMON را بازنویسی می‌کنند جستجو نمی‌کند.
جمع‌آوری زبالهٔ بخش‌های استفاده‌نشده را غیرفعال می‌کند.
اتصال نماد STB_GNU_UNIQUE را غیرفعال می‌کند.
ادغام مدخل‌های .ARM.exidx را غیرفعال می‌کند.
بخش‌ها را هم‌تراز با صفحه می‌کند.
بخش‌های کد و داده را به صورت قابل‌نوشتن تنظیم نمی‌کند، و بخش‌ها را هم‌تراز با صفحه قرار می‌دهد.
تعدیل‌های (relaxations) وابسته به معماری هدف را غیرفعال می‌کند. برای x86-64 این گزینه بهینه‌سازی‌های GOT با R_X86_64_GOTPCRELX و R_X86_64_REX_GOTPCRELX را غیرفعال می‌کند.
بخش‌های فقط‌خواندنی غیرقابل‌اجرا را در قطعهٔ (segment) جداگانهٔ خود قرار نمی‌دهد.
اسکریپت‌های نسخه‌ای را که به نمادهای تعریف‌نشده ارجاع می‌دهند گزارش نمی‌کند.
نمادهای حل‌نشده را حتی در صورت ساخت یک شیء اشتراکی توسط پیونددهنده گزارش می‌کند.
انواع بخش‌های ناشناخته را رد نمی‌کند.
در مورد مشکلات فایل مرتب‌سازی نمادها یا پروفایل گراف فراخوانی هشداری صادر نمی‌کند.
, -w
هشدارها را فرومی‌نشاند و --fatal-warnings را لغو می‌کند.
رفتار پیش‌فرض بارگذاری اعضای آرشیو را بازیابی می‌کند.
, --no-pic-executable
یک فایل اجرایی مستقل از موقعیت (PIE) ایجاد نمی‌کند.
فایل خروجی اجرایی را تا زمانی که همچنان قابل استفاده باشد نگه می‌دارد.
تنها دایرکتوری‌های مشخص‌شده در خط فرمان را جستجو می‌کند.
path
فایل اجرایی، کتابخانه یا شیء خروجی را در path می‌نویسد. در صورت عدم تعیین، a.out به‌عنوان پیش‌فرض استفاده می‌شود.
value
فایل خروجی را بهینه‌سازی می‌کند. value می‌تواند مقادیر زیر باشد:
ادغام رشته‌ها را غیرفعال می‌کند.
ادغام رشته‌ها را فعال می‌کند.
ادغام انتهای رشته‌ها (string tail merging) و بهینه‌سازی شاخه-به-شاخه را فعال می‌کند. حالت پیش‌فرض -O1 است.
=format
قالب فایل شیء خروجی را مشخص می‌کند. تنها format پشتیبانی‌شده binary است، که خروجی را بدون سرآیند ELF تولید می‌کند.
, -N
بخش‌های text و data را خواندنی و نوشتنی تنظیم می‌کند، بخش‌ها را هم‌تراز صفحه (page align) نمی‌کند، و پیوند را در برابر کتابخانه‌های ایستا انجام می‌دهد.
file
ملاحظات بهینه‌سازی را در قالب YAML درون file می‌نویسد.
pass-regex
ملاحظات بهینه‌سازی را فقط با مجاز کردن گذرهایی (passes) که با pass-regex تطابق دارند، پالایش می‌کند.
اطلاعات بسامد اجرا (hotness) را در فایل ملاحظات بهینه‌سازی می‌گنجاند.
=mode
نحوه مدیریت بخش‌های یتیم (orphan sections) را کنترل می‌کند. بخش یتیم بخشی است که به‌طور مشخص در اسکریپت پیوندساز ذکر نشده باشد. mode می‌تواند یکی از موارد زیر باشد:
قرار دادن بخش‌های یتیم در بخش‌های خروجی مناسب.
قرار دادن بخش‌های یتیم مانند place و همچنین گزارش دادن یک هشدار.
قرار دادن بخش‌های یتیم مانند place و همچنین گزارش دادن یک خطا.

place حالت پیش‌فرض است.

=format
بسته‌بندی بازنشانی‌های پویا در قالب ارائه‌شده. format می‌تواند یکی از موارد زیر باشد:
بسته‌بندی نشود. بازنشانی‌های پویا در SHT_REL(A) کدگذاری می‌شوند.
بسته‌بندی بازنشانی‌های پویا در SHT_ANDROID_REL(A).
بسته‌بندی بازنشانی‌های نسبی در SHT_RELR و مابقی بازنشانی‌های پویا در SHT_REL(A).
بسته‌بندی بازنشانی‌های نسبی در SHT_RELR و مابقی بازنشانی‌های پویا در SHT_ANDROID_REL(A).

none حالت پیش‌فرض است. اگر --use-android-relr-tags مشخص شده باشد، به‌جای SHT_RELR از SHT_ANDROID_RELR استفاده می‌شود.

درج یک رشته با کدگذاری درصدی (percent-encoded) در بخش .note.package. به عنوان مثال، %25 به یک % تنها رمزگشایی می‌شود.
همیشه thunkهای مستقل از موقعیت تولید می‌کند.
, --pic-executable
یک فایل اجرایی مستقل از موقعیت (position independent executable) ایجاد می‌کند.
=mode
تعیین استفاده از دستورالعمل‌های Power10 در کال‌استاب‌ها (call stubs) برای R_PPC64_REL24_NOTOC و تعامل‌پذیری TOC/NOTOC. mode می‌تواند یکی از موارد زیر باشد:
(پیش‌فرض) استفاده شود.
در حال حاضر همانند yes است.
استفاده نشود.
فهرست کردن بخش‌های بلااستفادهٔ حذف‌شده.
فهرست کردن بخش‌های بلااستفادهٔ حذف‌شده در فایل مشخص‌شده.
فهرست کردن بخش‌های تاخوردهٔ یکسان (identical folded sections).
چاپ نقشه پیوند در خروجی استاندارد.
نوشتن آمار استفاده از بایگانی در فایل مشخص‌شده. تعداد اعضا و اعضای واکشی‌شده را برای هر بایگانی چاپ می‌کند.
ذخیره وضعیت فعلی --as-needed, --static, و --whole-archive.
بازیابی وضعیت‌های ذخیره‌شده توسط --push-state.
=seed
درج فاصله‌گذاری (padding) تصادفی بین بخش‌های ورودی و در ابتدای هر سگمنت با استفاده از seed مشخص‌شده. فاصله‌گذاری در بخش‌های خروجی با نام‌های منطبق بر الگوهای زیر درج می‌شود: .bss, .data, .data.rel.ro, .lbss, .ldata, .lrodata, .ltext, .rodata و .text*.
فعال‌سازی کاهش اشاره‌گر سراسری (global pointer relaxation) برای RISC-V.
, -r
ایجاد فایل شیء با قابلیت بازنشانی.
=from-glob=to-file
فایل‌های ورودی منطبق بر from-glob به to-file نگاشت می‌شوند. برای نادیده گرفتن یک فایل ورودی از /dev/null استفاده کنید.
=file
نگاشت مجدد فایل‌های ورودی بر اساس الگوهای موجود در file. هر خط در فایل نگاشت مجدد در قالب from-glob=to-file یا یک توضیح است که با # آغاز می‌شود.
=path
یک فایل tar درون path می‌نویسد، که شامل تمام فایل‌های ورودی لازم برای بازتولید پیوند، یک فایل متنی با نام response.txt شامل گزینه‌های خط فرمان، و یک فایل متنی با نام version.txt شامل خروجی ld.lld --version است. این بایگانی پس از استخراج، می‌تواند برای اجرای دوباره پیوندساز با همان گزینه‌ها و فایل‌های ورودی استفاده شود.
=file
تنها نمادهای فهرست‌شده در فایل را نگه می‌دارد.
=value, -R value
افزودن یک DT_RUNPATH به خروجی.
=value
سبک نقل‌قول برای فایل‌های پاسخ. مقدارهای پشتیبانی‌شده windows و posix هستند.
=file, -T file
خواندن اسکریپت پیوندساز از file. در صورت ارائه چندین اسکریپت پیوندساز، آن‌ها به‌گونه‌ای پردازش می‌شوند که گویی به ترتیبی که در خط فرمان ظاهر شده‌اند، به یکدیگر متصل شده‌اند.
=section=address
تنظیم نشانی بخش.
, --Bsharable
ساخت یک شیء مشترک (shared object).
=seed
بُر زدن بخش‌های منطبق با استفاده از seed مشخص‌شده پیش از نگاشت آن‌ها به بخش‌های خروجی. اگر -1 باشد، ترتیب بخش‌ها معکوس می‌شود. اگر 0 باشد، از یک seed تصادفی استفاده می‌شود.
=value, -h value
تنظیم DT_SONAME به value.
این گزینه برای سازگاری با GNU نادیده گرفته می‌شود.
=value
قاعده مرتب‌سازی بخش‌ها را هنگام استفاده از linkerscript مشخص می‌کند.
آغاز دسته‌بندی از اشیاء که باید همانند قرار داشتن در یک بایگانی رفتار شوند.
, -s
حذف تمام نمادها. به‌معنای اعمال --strip-debug نیز هست.
, -S
حذف اطلاعات اشکال‌زدایی.
=file
چیدمان بخش‌ها به ترتیبی که توسط file مشخص شده است.
=value
تنظیم ریشه سیستم.
تفسیر R_ARM_TARGET1 به‌عنوان R_ARM_ABS32.
تفسیر R_ARM_TARGET1 به‌عنوان R_ARM_REL32.
=type
تفسیر R_ARM_TARGET2 به‌عنوان type, که در آن type یکی از مقادیر rel, abs, یا got-rel است.
=value
مشابه با --section-start با .bss به‌عنوان نام بخش.
=value
مشابه با --section-start با .data به‌عنوان نام بخش.
=value
مشابه با --section-start با .text به‌عنوان نام بخش.
=value
مسیر به دایرکتوری فایل‌های شیء حافظه‌پنهان ThinLTO.
=value
سیاست هرس کردن برای حافظه‌پنهان ThinLTO.
=value
تعداد کارهای ThinLTO.
=N
تعداد رشته‌ها. مقدار all (پیش‌فرض) به معنی تمام رشته‌های هم‌روندِ پشتیبانی‌شده است. 1 چندرشته‌ای بودن را غیرفعال می‌کند.
استفاده از بخش .llvm.lto، که حاوی بیت‌کد LLVM است، در فایل‌های شیء fat LTO برای انجام LTO..It Fl -no-fat-lto-objects بخش .llvm.lto در فایل‌های شیء قابل بازنشانی (relocatable) نادیده گرفته می‌شود (پیش‌فرض).
ثبت ردگیری زمانی (time trace).
=file
نوشتن خروجی ردگیری زمانی در file.
=value
حداقل دانه‌بندی زمان (به میکروثانیه) که توسط پروفایلر زمانی ردگیری می‌شود.
چاپ نام فایل‌های ورودی.
=symbol, -y symbol
ردگیری ارجاع‌ها به symbol.
=symbol, -u symbol
اگر symbol پس از تفکیک نمادها تعریف نشده باشد، و کتابخانه‌ای ایستا وجود داشته باشد که شامل یک فایل شیء تعریف‌کنندهٔ این نماد باشد، آن عضو بارگذاری می‌شود تا فایل شیء در فایل خروجی گنجانده شود.
=pattern
مترادفی برای --undefined -، با این تفاوت که یک الگوی glob می‌پذیرد. در یک الگوی glob، * با صفر یا چند نویسه، ? با هر نویسهٔ تکی، و [...] با نویسه‌های درون قلاب‌ها تطابق می‌یابد. تمام نمادهایی که با یک الگوی داده‌شده مطابقت داشته باشند طوری مدیریت می‌شوند که گویی به عنوان آرگومان‌های --undefined داده شده‌اند.
یک بخش خروجی جداگانه برای هر بخش ورودی یتیم (orphan) ایجاد می‌کند.
=value
تعیین نحوهٔ مدیریت نمادهای حل‌نشده (unresolved). value می‌تواند یکی از مقادیر زیر باشد:
گزارش نمادهای حل‌نشده (پیش‌فرض).
فقط نمادهای حل‌نشدهٔ موجود در کتابخانه‌های مشترک گزارش شوند.
فقط نمادهای حل‌نشدهٔ موجود در فایل‌های شیء گزارش شوند.
نمادهای حل‌نشده گزارش نشوند.
استفاده از برچسب‌های SHT_ANDROID_RELR / DT_ANDROID_RELR* به جای SHT_RELR / DT_RELR*.
, -V
نمایش شماره نسخه و ادامهٔ روند پیوند در صورتی که فایل‌های شیء مشخص شده باشند.
نمایش شماره نسخه و خروج.
حالت پرگو (verbose).
=file
خواندن اسکریپت نسخه از file.
هشدار دربارهٔ وابستگی‌های معکوس یا چرخه‌ای به یا بین آرشیوهای ایستا. این گزینه می‌تواند برای اطمینان از حفظ سازگاری فراخوانی پیونددهنده با پیونددهنده‌های سنتی شبه‌یونیکس استفاده شود.
=glob
الگوی glob توصیف‌کنندهٔ یک آرشیو (یا یک فایل شیء درون --start-lib) که باید برای --warn-backrefs نادیده گرفته شود.
هشدار دربارهٔ نمادهای مشترک (common symbols) تکراری.
هشدار دربارهٔ استفاده از نمادهای ifunc در ترکیب با بازنشانی‌های متن (text relocations). نسخه‌های قدیمی‌تر کتابخانهٔ glibc (نسخهٔ ۲.۲۸ و پیش از آن) دارای باگی هستند که باعث می‌شود قطعه‌ای که شامل نمادهای ifunc است، هنگام بازنشانی به عنوان غیرقابل‌اجرا علامت‌گذاری شود. در نتیجه، هرچند برنامه با موفقیت کامپایل و پیوند داده می‌شود، اما هنگامی که اشاره‌گر دستورالعمل به یک نماد ifunc می‌رسد خطای segmentation fault رخ می‌دهد. از -warn-ifunc-textrel استفاده کنید تا اگر کد ممکن است شامل نمادهای ifunc باشد، بازنشانی‌های متن انجام دهد و با نسخهٔ قدیمی‌تر glibc پیوند داده شود، lld هشدار دهد. در غیر این صورت، نیازی به استفاده از آن نیست، زیرا مقدار پیش‌فرض هشداری نمی‌دهد. این پرچم در اواخر سال ۲۰۱۸ معرفی شد، معادلی در پیونددهنده‌های ld و gold ندارد، و ممکن است در آینده حذف شود.
گزارش نمادهای حل‌نشده به عنوان هشدار.
اجبار به بارگذاری تمام اعضا در یک کتابخانهٔ ایستا.
=file
چاپ دلیل استخراج اعضای آرشیو در یک فایل.
=glob
گزارش زنجیره‌ای از ارجاع‌ها که مانع از جمع‌آوری زباله (garbage collection) برای هر نماد منطبق با glob می‌شوند.
=symbol
تغییر مسیر ارجاع‌های symbol به __wrap_symbol و ارجاع‌های __real_symbol به symbol.
option
افزونه‌های گزینه‌های پیونددهنده.
=section_glob=value
حل یک بازنشانی در یک بخش غیر SHF_ALLOC تطبیق‌یافته که به یک نماد دور ریخته‌شده ارجاع دارد، به value الگوهای glob را می‌پذیرد؛ در صورتی که یک بخش با بیش از یک گزینه مطابقت داشته باشد، آخرین گزینه اولویت دارد. ترتیبی از تطابق با کمترین ویژگی به بیشترین ویژگی توصیه می‌شود.
قابل‌اجرا کردن پشتهٔ اصلی (main stack). مجوزهای پشته در قطعهٔ PT_GNU_STACK ثبت می‌شوند.
=[none|warning|error]
تعیین نحوهٔ گزارش ویژگی مفقود GNU_PROPERTY_AARCH64_FEATURE_1_BTI. none پیش‌فرض است؛ پیونددهنده ویژگی مفقود را گزارش نمی‌کند، در غیر این صورت به عنوان یک هشدار یا یک خطا گزارش خواهد شد.
=[none|warning|error]
تعیین نحوهٔ گزارش ویژگی‌های مفقود GNU_PROPERTY_X86_FEATURE_1_IBT یا GNU_PROPERTY_X86_FEATURE_1_SHSTK. none پیش‌فرض است؛ پیونددهنده ویژگی مفقود را گزارش نمی‌کند، در غیر این صورت به عنوان یک هشدار یا یک خطا گزارش خواهد شد.
=[none|warning|error]
تعیین نحوهٔ گزارش ویژگی مفقود GNU_PROPERTY_AARCH64_FEATURE_1_GCS. ویژگی GNU_PROPERTY_AARCH64_FEATURE_1_GCS نشان‌دهندهٔ پشتیبانی فایل شیء از قابلیت امنیتی Guarded Control Stack است. none پیش‌فرض است؛ پیونددهنده ویژگی مفقود را گزارش نمی‌کند، در غیر این صورت به عنوان یک هشدار یا یک خطا گزارش خواهد شد.
پویا کردن نمادهای ضعیف (weak) تعریف‌نشده در صورت وجود جدول نمادهای پویا، در صورتی که از فایل‌های شیء قابل بازنشانی به آن‌ها ارجاع داده شده باشد و با دیداری‌پذیری نماد یا نسخه‌بندی به حالت محلی محدود نشده باشند. در صورت مشخص شدن nodynamic-undefined-weak آن‌ها را پویا نکنید. dynamic-undefined-weak هنگام ساخت یک شیء مشترک (shared object)، یا زمانی که یک شیء مشترک ورودی وجود دارد، حالت پیش‌فرض است.
=[none|warning|error]
تعیین نحوهٔ گزارش ویژگی مفقود GNU_PROPERTY_AARCH64_FEATURE_PAUTH. none پیش‌فرض است؛ پیونددهنده ویژگی مفقود را گزارش نمی‌کند، در غیر این صورت به عنوان یک هشدار یا یک خطا گزارش خواهد شد.
فعال‌سازی اجباری دستورالعمل BTI مربوط به AArch64 در PLT؛ اگر فایل ELF ورودی فاقد ویژگی GNU_PROPERTY_AARCH64_FEATURE_1_BTI باشد، هشدار می‌دهد.
فعال‌سازی اجباری Intel Indirect Branch Tracking در PLT؛ اگر یک فایل ELF ورودی فاقد ویژگی GNU_PROPERTY_X86_FEATURE_1_IBT باشد، هشدار می‌دهد.
تنظیم پرچم DF_1_GLOBAL در بخش DYNAMIC. بارگذارهای مختلف می‌توانند به خودی خود نحوهٔ مدیریت این پرچم را تعیین کنند.
تولید نکردن مدخل‌های PLT برای نمادهای ifunc. در عوض، بازنشانی‌های متنی ارجاع‌دهنده به resolver ایجاد می‌شوند. این یک بهینه‌سازی آزمایشی است و تنها برای محیط‌های مستقل (standalone) مناسب است که در آن‌ها بازنشانی‌های متن معایب معمول را ندارند. این گزینه باید با گزینهٔ -z notext ترکیب شود.
تنظیم پرچم DF_1_INITFIRST برای نشان دادن این‌که پودمان (module) باید ابتدا مقداردهی اولیه شود.
تنظیم پرچم DF_1_INTERPOSE برای نشان دادن به پیونددهندهٔ زمان اجرا مبنی بر این‌که شیء یک interposer است. در هنگام تفکیک نمادها، interposerها پس از برنامه اما پیش از سایر وابستگی‌ها جستجو می‌شوند..Pp
قرار دادن .lrodata پس از .bss.
در صورت تعریف چندبارهٔ یک نماد، خطایی صادر نشود. نخستین تعریف استفاده خواهد شد. این گزینه مترادفی برای --allow-multiple-definition است.
غیرفعال‌سازی ترکیب و مرتب‌سازی چندین بخش بازآرایی (relocation).
غیرفعال‌سازی ایجاد بازآرایی‌های کپی (copy relocations).
تنظیم پرچم DF_1_NODEFLIB برای مشخص ساختن اینکه مسیرهای پیش‌فرض جستجوی کتابخانه باید نادیده گرفته شوند.
تنظیم پرچم DF_1_NODELETE برای مشخص ساختن اینکه شیء نباید از یک فرایند تخلیه شود.
تنظیم پرچم DF_1_NOOPEN برای مشخص ساختن اینکه شیء نباید توسط dlopen(3) باز شود.
عدم صدور قطعهٔ PT_GNU_STACK.
عدم مشخص‌سازی اینکه بخش‌هایی از شیء باید پس از پردازش اولیهٔ بازآرایی، به صورت فقط‌خواندنی نگاشت شوند. شیء از درج قطعهٔ PT_GNU_RELRO صرف‌نظر خواهد کرد.
عدم تولید جدول سرآیند بخش‌ها (section header table).
مجاز دانستن بازآرایی‌ها بر روی قطعه‌های فقط‌خواندنی. پرچم DT_TEXTREL را در بخش DYNAMIC تنظیم می‌کند.
تنظیم پرچم DF_BIND_NOW برای مشخص ساختن اینکه بارگذار زمان اجرا (run-time loader) باید تمام پردازش بازآرایی را به عنوان بخشی از مقداردهی اولیهٔ شیء انجام دهد. به طور پیش‌فرض، بازآرایی‌ها ممکن است برحسب تقاضا انجام شوند.
تنظیم پرچم DF_ORIGIN برای مشخص ساختن اینکه شیء نیازمند پردازش $ORIGIN است.
تنها در AArch64، استفاده از احراز هویت اشاره‌گر در PLT.
مشابه -pack-dyn-relocs=relr است، اما در صورت وجود وابستگی نسخهٔ GLIBC_2.*، وابستگی نسخهٔ GLIBC_ABI_DT_RELR را تولید می‌کند. بخش ld.so در glibc از بارگذاری یک شیء پیوند خورده به صورت پویا بدون وابستگی نسخهٔ GLIBC_ABI_DT_RELR خودداری می‌کند.
استفاده از قالب REL برای بازآرایی‌های پویا.
استفاده از قالب RELA برای بازآرایی‌های پویا.
تولید ورودی‌های PLT با قالب retpoline به عنوان راهکاری برای کاهش اثر CVE-2017-5715.
فقط‌خواندنی کردن بخش .dynamic. برچسب DT_DEBUG صادر نخواهد شد.
 
 
مشخص می‌کند که آیا دو قطعهٔ مجاور PT_LOAD مجاز به هم‌پوشانی در صفحات هستند یا خیر. noseparate-code (پیش‌فرض) هم‌پوشانی را مجاز می‌داند. separate-code هم‌پوشانی بین دو قطعهٔ قابل اجرا یا دو قطعهٔ غیرقابل اجرا را مجاز می‌داند. separate-loadable-segments هم‌پوشانی را غیرمجاز می‌کند.
تنها در x86، استفاده از پشتهٔ سایه (shadow stack).
=[implicit|never|always]
مشخص می‌کند که بیت GNU_PROPERTY_AARCH64_FEATURE_1_GCS چگونه در فایل ELF خروجی تنظیم شود. هنگامی که تنظیم شود، نشان‌دهندهٔ پشتیبانی از ویژگی امنیتی پشتهٔ کنترل محافظت‌شده (GCS) است. implicit (پیش‌فرض) بیت ویژگی GCS در صورتی تنظیم می‌شود که همهٔ فایل‌های بازآرایی‌پذیر ورودی دارای یک بخش .note.gnu.property حاوی بیت GNU_PROPERTY_AARCH64_FEATURE_1_GCS باشند. never صرف‌نظر از نشانه‌گذاری‌های فایل‌های بازآرایی‌پذیر ورودی، بیت ویژگی GCS را پاک می‌کند. always صرف‌نظر از نشانه‌گذاری‌های شیء ورودی، بیت ویژگی GCS را تنظیم می‌کند.
=size
تنظیم اندازهٔ پشتهٔ رشتهٔ اصلی به size. اندازهٔ پشته به عنوان اندازهٔ size. قطعهٔ برنامهٔ PT_GNU_STACK ثبت می‌شود.
ارجاعات __start_/__stop_ مانع از جمع‌آوری بخش‌های نام شناسهٔ C متناظر نشوند (پیش‌فرض).
به ارجاعات __start_/__stop_ اجازه می‌دهد بخش‌های نام شناسهٔ C متناظر را حفظ کنند.
عدم اجازه به بازآرایی‌ها بر روی قطعه‌های فقط‌خواندنی. این حالت پیش‌فرض است.
ایجاد یک قطعهٔ PT_OPENBSD_NOBTCFI.
ایجاد یک قطعهٔ PT_OPENBSD_WXNEEDED.
یک فایل tarball بازتولید با نام مشخص‌شده ایجاد می‌کند. در صورت مشخص شدن --reproduce گزینهٔ --reproduce اولویت خواهد داشت.
دستور ld.lld بخشی به نام .comment حاوی رشتهٔ نگارش LLD ایجاد می‌کند. این رشتهٔ نگارش را می‌توان با این متغیر محیطی بازنویسی کرد، که برای از بین بردن تفاوت‌های ایجادشده در باینری ناشی از تفاوت شماره نگارش LLD سودمند است.

نحوهٔ مدیریت فایل‌های آرشیو (آن‌هایی که پسوند فایل .a دارند) توسط ld.lld با پیونددهنده‌های سنتی مورد استفاده در سیستم‌های شبیه یونیکس متفاوت است.

پیونددهنده‌های سنتی مجموعه‌ای از نمادهای تعریف‌نشده را در طول فرایند پیوند نگهداری می‌کنند. پیونددهنده هر فایل را به ترتیبی که در خط فرمان ظاهر می‌شود پردازش می‌کند تا زمانی که مجموعهٔ نمادهای تعریف‌نشده خالی شود. یک فایل شیء هنگام مواجهه در شیء خروجی پیوند داده شده و نمادهای تعریف‌نشدهٔ آن به مجموعه افزوده می‌شوند. یک پیونددهندهٔ سنتی پس از مواجهه با یک فایل آرشیو، اشیاء درون آن را جستجو کرده و مواردی را پردازش می‌کند که نمادهای موجود در مجموعهٔ برطرف‌نشده را برآورده سازند.

مدیریت آرشیوهایی با وابستگی متقابل هنگام استفاده از یک پیونددهندهٔ سنتی می‌تواند دشوار باشد. ممکن است لازم باشد فایل‌های آرشیو چندین بار مشخص شوند، یا از گزینه‌های ویژهٔ خط فرمان --start-group و --end-group استفاده شود تا پیونددهنده روی فایل‌های درون گروه تا زمانی که هیچ نماد جدیدی به مجموعه افزوده نشود حلقه بزند.

ld.lld هم‌زمان با پیمایش آرگومان‌های خط فرمان، تمام نمادهای یافت‌شده در اشیاء و آرشیوها را ثبت می‌کند. هنگامی که ld.lld با یک نماد تعریف‌نشده مواجه می‌شود که می‌تواند توسط یک فایل شیء موجود در یک فایل آرشیوِ از قبل پردازش‌شده برطرف شود، بلافاصله آن را استخراج کرده و در شیء خروجی پیوند می‌دهد.

با برخی ورودی‌های آرشیو، ld.lld ممکن است در مقایسه با پیونددهنده‌های سنتی نتایج متفاوتی تولید کند. در عمل، بخش‌های وسیعی از نرم‌افزارهای شخص ثالث بدون مشکلات اساسی با ld.lld پیوند داده شده‌اند.

گزینهٔ --warn-backrefs می‌تواند برای شناسایی فراخوانی‌هایی از پیونددهنده به کار رود که ممکن است با رفتار سنتی پیونددهنده‌ها در سیستم‌های شبیه یونیکس ناسازگار باشند.

July 25, 2023 Linux 6.12.113+deb13-amd64