.\" generated with Ronn-NG/v0.9.1 .\" http://github.com/apjanke/ronn-ng/tree/0.9.1 .TH "MOLD" "1" "August 2026" "" .SH "نام (NAME)" mold \- یک پیونددهنده مدرن و سریع .SH "خلاصه دستور (SYNOPSIS)" \fBmold\fR [\fIoption\fR\|\.\|\.\|\.] \fIfile\fR\|\.\|\.\|\. .SH "توضیحات (DESCRIPTION)" دستور \fBmold\fR یک جایگزین سریع‌تر و بدون نیاز به تغییر برای پیونددهنده پیش‌فرض GNU ld(1) است\. .SS "روش استفاده" به \fIhttps://github\.com/rui314/mold#how\-to\-use\fR مراجعه کنید\. .SS "سازگاری" پیونددهنده \fBmold\fR به گونه‌ای طراحی شده است که جایگزینی مستقیم برای پیونددهنده‌های GNU در پیوند برنامه‌های فضای کاربر باشد\. اگر برنامه فضای کاربر شما به دلیل نبود برخی گزینه‌های خط فرمان ساخته نمی‌شود، لطفاً یک گزارش اشکال در \fIhttps://github\.com/rui314/mold/issues\fR ثبت کنید\. .P دستور \fBmold\fR از مجموعه بسیار محدودی از قابلیت‌های اسکریپت پیونددهنده (linker script) پشتیبانی می‌کند، که صرفاً برای خواندن \fB/usr/lib/x86_64\-linux\-gnu/libc\.so\fR در سیستم‌های لینوکس کافی است (در لینوکس، این فایل بر خلاف نامش یک کتابخانه اشتراکی نیست بلکه یک اسکریپت پیونددهنده متنی ASCII است که فایل واقعی \fBlibc\.so\fR را بارگذاری می‌کند\.) .P فراتر از آن، برنامه‌ای برای پشتیبانی از قابلیت‌های اضافی اسکریپت‌های پیونددهنده وجود ندارد\. زبان اسکریپت پیونددهنده زبانی موردی، بیش از حد طراحی‌شده و پیچیده است که به باور ما باید با سازوکار ساده‌تری جایگزین شود\. در عوض، قصد داریم جایگزینی برای اسکریپت پیونددهنده به \fBmold\fR اضافه کنیم\. .SS "تفکیک نمادهای آرشیو" به طور سنتی، پیونددهنده‌های یونیکس به ترتیبی که فایل‌های ورودی در خط فرمان ظاهر می‌شوند حساس هستند\. آن‌ها فایل‌های ورودی را یکی‌یکی از اولین فایل (سمت چپ‌ترین) تا آخرین فایل (سمت راست‌ترین) پردازش می‌کنند\. هنگام خواندن فایل‌های ورودی، آن‌ها مجموعه‌ای از نمادهای تعریف‌شده و تعریف‌نشده را نگهداری می‌کنند\. هنگام رسیدن به یک فایل آرشیو (فایل‌های \fB\.a\fR)، آن‌ها فایل‌های شیء را برای تفکیک بیشترین تعداد ممکن از نمادهای تعریف‌نشده بیرون می‌کشند و به فایل ورودی بعدی می‌روند\. فایل‌های شیئی که بیرون کشیده نشده‌اند، هرگز فرصتی برای بررسی دوباره نخواهند داشت\. .P به دلیل این رفتار، معمولاً باید فایل‌های آرشیو را در انتهای خط فرمان اضافه کنید تا وقتی پیونددهنده به فایل‌های آرشیو می‌رسد، بداند چه نمادهایی هنوز تعریف‌نشده باقی مانده‌اند\. .P اگر فایل‌های آرشیو را در ابتدای خط فرمان قرار دهید، پیونددهنده هیچ نماد تعریف‌نشده‌ای ندارد و بنابراین هیچ فایل شیئی از آرشیوها بیرون کشیده نمی‌شود\. می‌توانید با استفاده از گزینه‌های \fB\-\-start\-group\fR و \fB\-\-end\-group\fR ترتیب پردازش را تغییر دهید، اگرچه این کار سرعت پیونددهنده را کاهش می‌دهد\. .P پیونددهنده \fBmold\fR و همچنین پیونددهنده LLVM lld(1) رویکرد متفاوتی در پیش می‌گیرند\. آن‌ها به جای فراموش کردن نمادها پس از پردازش هر آرشیو، به خاطر می‌سپارند کدام نمادها را می‌توان از فایل‌های آرشیو تفکیک کرد\. بنابراین، \fBmold\fR و lld(1) می‌توانند در خط فرمان «به عقب برگردند» تا فایل‌های شیء را از آرشیوها بیرون بکشند در صورتی که برای تفکیک نمادهای تعریف‌نشده باقی‌مانده مورد نیاز باشند\. آن‌ها به ترتیب فایل‌های ورودی حساس نیستند\. .P گزینه‌های \fB\-\-start\-group\fR و \fB\-\-end\-group\fR همچنان توسط \fBmold\fR و lld(1) برای سازگاری با پیونددهنده‌های سنتی پذیرفته می‌شوند، اما در سکوت نادیده گرفته می‌شوند\. .SS "تفکیک پویای نمادها" درک برخی از قابلیت‌های پیونددهنده‌های یونیکس بدون فهم معناشناسی تفکیک پویای نمادها دشوار است\. بنابراین، هرچند که این موضوع مختص \fBmold\fR نیست، آن را در اینجا توضیح می‌دهیم\. .P ما از اصطلاح «ماژول ELF» یا به سادگی «ماژول» به عنوان واژه‌ای فراگیر برای اشاره به یک فایل اجرایی یا یک کتابخانه اشتراکی در قالب ELF استفاده می‌کنیم\. .P یک ماژول ELF ممکن است فهرستی از نمادهای وارداتی و نمادهای صادراتی و همچنین فهرستی از نام‌های کتابخانه‌های اشتراکی داشته باشد که نمادهای وارداتی باید از آن‌ها وارد شوند\. نکته این است که نمادهای وارداتی تا زمان اجرا به هیچ کتابخانه اشتراکی خاصی متصل نیستند\. .P نحوه تفکیک نمادهای پویا توسط پیونددهنده پویای یونیکس به این صورت است: هنگام شروع یک برنامه ELF، پیونددهنده پویا فهرستی از ماژول‌های ELF می‌سازد که در کل یک برنامه کامل را تشکیل می‌دهند\. فایل اجرایی همیشه در ابتدای فهرست قرار دارد و پس از آن کتابخانه‌های اشتراکی وابسته به آن می‌آیند\. یک نماد وارداتی از ابتدای فهرست تا انتها جستجو می‌شود\. اگر دو یا چند ماژول نماد یکسانی را تعریف کنند، ماژولی که زودتر در فهرست ظاهر شده بر دیگران اولویت دارد\. .P این معناشناسی یونیکس بر خلاف سیستم‌هایی مانند ویندوز است که فضای نام دو سطحی برای نمادهای پویا دارند\. به عنوان مثال در ویندوز، نمادهای پویا به صورت تاپلی از (\fBsymbol\-name\fR, \fBshared\-library\-name\fR) نشان داده می‌شوند، به طوری که تضمین می‌شود هر نماد پویا از یک کتابخانه خاص تفکیک شود\. .P معمولاً یک ماژول ELF که نمادی را صادر می‌کند، همان نماد را وارد نیز می‌کند\. چنین نمادی معمولاً به خودش تفکیک می‌شود، اما اگر ماژولی که قبل از آن در فهرست جستجوی نماد ظاهر شده تعریف دیگری از همان نماد را ارائه دهد، این‌گونه نخواهد بود\. .P بیایید \fBmalloc\fR را به عنوان مثال در نظر بگیریم\. فرض کنید نسخه خود را از \fBmalloc\fR در فایل اجرایی اصلی خود تعریف کرده‌اید\. سپس، تمام فراخوانی‌های \fBmalloc\fR از هر ماژولی به جای تابع موجود در libc به تابع شما تفکیک می‌شوند، زیرا فایل اجرایی همیشه در ابتدای فهرست جستجوی نمادهای پویا قرار دارد\. توجه داشته باشید که حتی فراخوانی‌های \fBmalloc\fR درون libc نیز به تعریف شما تفکیک می‌شوند زیرا libc تابع \fBmalloc\fR را هم صادر و هم وارد می‌کند\. بنابراین با تعریف \fBmalloc\fR توسط خودتان، می‌توانید یک تابع کتابخانه را رونویسی کنید و \fBmalloc\fR موجود در libc به کد مرده تبدیل می‌شود\. .P این معناشناسی یونیکس پیچیده است و گاهی زیان‌بار تلقی می‌شود\. برای مثال، فرض کنید به طور تصادفی \fBatoi\fR را به عنوان یک تابع سراسری در فایل اجرایی خود تعریف کنید که کاملاً متفاوت از تابع استاندارد C رفتار می‌کند\. در این صورت تمام فراخوانی‌های تابع \fBatoi\fR از هر ماژولی (حتی فراخوانی‌های درون libc) به جای تابع موجود در libc به تابع شما هدایت می‌شوند که به احتمال زیاد باعث بروز مشکل خواهد شد\. این یک پیامد تا حدی غافلگیرکننده برای یک تداخل نام تصادفی است\. از سوی دیگر، این معناشناسی گاهی مفید است زیرا به کاربران امکان می‌دهد توابع کتابخانه‌ای را بدون بازسازی مجدد ماژول‌های حاوی آن‌ها بازنویسی (override) کنند\. .P خوب یا بد، باید این معناشناسی را به خاطر بسپارید تا رفتارهای پیونددهنده‌های یونیکس را درک کنید\. .SS "بازتولیدپذیری ساخت" خروجی \fBmold\fR قطعی است؛ یعنی اگر فایل‌های شیء و گزینه‌های خط فرمان یکسانی را به یک نسخه از \fBmold\fR بدهید، تضمین می‌شود که \fBmold\fR خروجی کاملاً یکسان بیت‌به‌بیت تولید می‌کند\. تصادفی‌بودن‌های داخلی پیونددهنده مانند زمان‌بندی ریسمان‌ها یا ترتیب پیمایش جدول‌های درهم‌سازی تاثیری بر خروجی ندارند\. .P دستور \fBmold\fR هیچ تنظیمات پیش‌فرض مختص میزبانی ندارد\. این بر خلاف پیونددهنده‌های GNU است که برخی مقادیر قابل تنظیم در آن‌ها مانند مسیرهای جستجوی کتابخانه‌های وابسته به سیستم به صورت هاردکدشده هستند\. دستور \fBmold\fR فقط به آرگومان‌های خط فرمان خود وابسته است\. .SH "قالب‌بندی گزینه‌ها (OPTION NOTATIONS)" گزینه‌های طولانی چندحرفی ممکن است پس از یک خط‌تیره یا دو خط‌تیره بیایند، به جز گزینه‌هایی که با حرف "o" شروع می‌شوند\. به دلایل تاریخی، گزینه‌های طولانی که با "o" شروع می‌شوند باید حتماً پس از دو خط‌تیره بیایند\. .P برای مثال، می‌توانید \fB\-\-as\-needed\fR را به صورت \fB\-as\-needed\fR بنویسید، اما \fB\-\-omagic\fR نباید به صورت \fB\-omagic\fR نوشته شود؛ چرا که \fB\-omagic\fR به عنوان \fB\-\-omagic\fR تفسیر نمی‌شود بلکه به صورت \fB\-o magic\fR تفسیر خواهد شد\. .SH "گزینه‌های اختصاصی MOLD (MOLD-SPECIFIC OPTIONS)" .TP \fB\-\-chroot\fR=\fIdir\fR پوشه \fIdir\fR را به عنوان دایرکتوری ریشه تنظیم می‌کند\. .TP \fB\-\-color\-diagnostics\fR=[ \fIauto\fR | \fIalways\fR | \fInever\fR ] پیام‌های عیب‌یابی را با استفاده از توالی‌های گریز ANSI رنگی نمایش می‌دهد\. مقدار \fBauto\fR بدین معناست که \fBmold\fR پیام‌ها را فقط در صورتی رنگی چاپ می‌کند که خروجی استاندارد به یک TTY متصل باشد\. حالت پیش‌فرض \fBauto\fR است\. .TP \fB\-\-color\-diagnostics\fR هم‌معنی \fB\-\-color\-diagnostics=auto\fR\. .TP \fB\-\-no\-color\-diagnostics\fR هم‌معنی \fB\-\-color\-diagnostics=never\fR\. .TP \fB\-\-detach\fR, \fB\-\-no\-detach\fR به mold اجازه می‌دهد یا مانع می‌شود که فایل اطلاعات اشکال‌زدایی را در پس‌زمینه ایجاد کند\. .TP \fB\-\-fork\fR, \fB\-\-no\-fork\fR یک فرایند فرزند ایجاد می‌کند و پیوند واقعی را به آن می‌سپارد\. هنگام پیوند دادن یک برنامه بزرگ، هسته سیستم‌عامل ممکن است چند صد میلی‌ثانیه برای پایان دادن به فرایند \fBmold\fR زمان ببرد\. گزینه \fB\-\-fork\fR این تأخیر را پنهان می‌کند\. به طور پیش‌فرض چنگال (fork) انجام می‌شود\. .IP توجه داشته باشید که \fB\-\-fork\fR همچنین آمار مصرف منابع گزارش‌شده توسط time(2) را پنهان می‌کند، زیرا waitpid(2) را روی فرایند فرزند فراخوانی نمی‌کند\. اگر به این آمارها نیاز دارید، گزینه \fB\-\-no\-fork\fR را بدهید\. .TP \fB\-\-perf\fR آمارهای کارایی و عملکرد را چاپ می‌کند\. .TP \fB\-\-print\-dependencies\fR اطلاعات وابستگی فایل‌های ورودی را چاپ می‌کند\. .IP هر خط از خروجی این گزینه نشان می‌دهد کدام فایل برای استفاده از یک نماد خاص به کدام فایل وابسته است\. این گزینه برای اشکال‌زدایی این‌که چرا یک فایل شیء در یک آرشیو ایستا پیوند خورده است یا چرا یک کتابخانه اشتراکی حتی با وجود \fB\-\-as\-needed\fR در فهرست وابستگی‌های فایل خروجی باقی مانده مفید است\. .TP \fB\-\-relocatable\-merge\-sections\fR به طور پیش‌فرض هنگام ادغام فایل‌های شیء ورودی در یک فایل شیء خروجی برای \fB\-r\fR، پیونددهنده \fBmold\fR بخش‌های ورودی را بر اساس نام ادغام نمی‌کند\. برای مثال، \fB\.text\.foo\fR و \fB\.text\.bar\fR برای \fB\-r\fR ادغام نمی‌شوند حتی اگر بر اساس قواعد پیش‌فرض ادغام بخش‌ها در \fB\.text\fR ادغام گردند\. .IP این گزینه این رفتار را تغییر می‌دهد تا \fBmold\fR بخش‌های ورودی را طبق قواعد پیش‌فرض ادغام بخش‌ها بر اساس نام ادغام کند\. .TP \fB\-\-repro\fR فایل‌های ورودی و همچنین یک فایل متنی حاوی گزینه‌های خط فرمان را در یک فایل tar آرشیو می‌کند تا بتوانید مجدداً \fBmold\fR را با دقیقاً همان ورودی‌ها اجرا کنید\. این گزینه برای گزارش اشکال به همراه نمونه بازتولیدکننده مفید است\. نام فایل خروجی \fBpath/to/output\.tar\fR خواهد بود، که در آن \fBpath/to/output\fR نام فایل خروجی مشخص‌شده با \fB\-o\fR است\. .TP \fB\-\-reverse\-sections\fR ترتیب بخش‌های ورودی را قبل از تخصیص آفست‌ها در فایل خروجی معکوس می‌کند\. .IP این گزینه برای یافتن اشکالاتی که به ترتیب مقداردهی اولیه اشیاء سراسری وابسته هستند مفید است\. در ++C، سازنده‌های اشیاء سراسری در یک فایل منبع واحد تضمین می‌شوند که به ترتیب موجود در کد منبع اجرا شوند، اما چنین تضمینی در میان واحدهای ترجمه مختلف وجود ندارد\. معمولاً سازنده‌ها به ترتیبی که به پیونددهنده داده می‌شوند اجرا می‌گردند، اما تکیه بر این موضوع اشتباه است\. .IP با معکوس کردن ترتیب بخش‌های ورودی با استفاده از \fB\-\-reverse\-sections\fR، می‌توانید به راحتی بررسی کنید که آیا برنامه شما با ترتیب معکوس مقداردهی اولیه به درستی کار می‌کند یا خیر\. .TP \fB\-\-run\fR \fIcommand\fR \fIarg\fR\|\.\|\.\|\. دستور \fIcommand\fR را با قرار دادن \fBmold\fR به جای \fB/usr/bin/ld\fR اجرا می‌کند\. به طور دقیق‌تر، \fBmold\fR دستور مشخص‌شده را با متغیر محیطی \fBLD_PRELOAD\fR برای رهگیری خانواده توابع exec(3) اجرا کرده و در صورت یکی بودن نام برنامه با \fBld\fR، \fBld\.gold\fR یا \fBld\.lld\fR، مقدار \fBargv[0]\fR را با خود جایگزین می‌کند\. .TP \fB\-\-separate\-debug\-file\fR, \fB\-\-separate\-debug\-file\fR=\fIfile\fR بخش‌های اطلاعات اشکال‌زدایی را به جای جاسازی در فایل اجرایی یا کتابخانه اشتراکی خروجی، در یک فایل جداگانه بسته‌بندی می‌کند\. دستور mold به طور پیش‌فرض فایل اطلاعات اشکال‌زدایی را در پس‌زمینه ایجاد می‌کند تا بتوانید اجرای فایل اجرایی خود را در سریع‌ترین زمان ممکن آغاز کنید\. .IP به طور پیش‌فرض، فایل اطلاعات اشکال‌زدایی در همان پوشه فایل خروجی و با پسوند \fB\.dbg\fR ایجاد می‌شود\. این نام فایل در فایل خروجی جاسازی می‌شود تا \fBgdb\fR بتواند به طور خودکار فایل اطلاعات اشکال‌زدایی مربوط به فایل خروجی را پیدا کند\. برای اطلاعات بیشتر درباره ویژگی‌های gdb مرتبط با فایل‌های اشکال‌زدایی جداگانه، به \fIhttps://sourceware\.org/gdb/current/onlinedocs/gdb\.html/Separate\-Debug\-Files\.html\fR مراجعه کنید\. .IP پیونددهنده mold هنگام ایجاد فایل اطلاعات اشکال‌زدایی در پس‌زمینه، با استفاده از flock(2) قفل فایل را نگه می‌دارد\. .IP اگر مایل نیستید فایل اطلاعات اشکال‌زدایی در پس‌زمینه ایجاد شود، گزینه \fB\-\-no\-detach\fR را مشخص کنید\. .TP \fB\-\-shuffle\-sections\fR, \fB\-\-shuffle\-sections\fR=\fInumber\fR با برهم زدن تصادفی ترتیب بخش‌های ورودی قبل از تخصیص آفست‌ها در فایل خروجی، خروجی را تصادفی‌سازی می‌کند\. اگر یک \fInumber\fR داده شود، به عنوان بذر (seed) تولیدکننده اعداد تصادفی استفاده می‌شود تا پیونددهنده برای بذر یکسان، خروجی یکسانی تولید کند\. اگر بذری مشخص نشود، یک عدد تصادفی به عنوان بذر استفاده می‌شود\. .IP این گزینه برای محک‌زنی (benchmarking) مفید است\. پردازنده‌های مدرن نسبت به چیدمان حافظه برنامه حساس هستند\. یک تغییر به ظاهر بی‌ضرر در چیدمان برنامه، مانند افزایش جزئی اندازه یک تابع در میانه برنامه، می‌تواند بر عملکرد برنامه تأثیر بگذارد\. بنابراین، حتی اگر کد جدیدی بنویسید و نتیجه محک خوبی بگیرید، دشوار است بگوییم آیا کد جدید کارایی برنامه را بهبود بخشیده است یا خیر؛ ممکن است چیدمان جدید حافظه بر حسب تصادف عملکرد بهتری داشته باشد\. .IP با اجرای چندین باره یک آزمون محک با چیدمان‌های تصادفی حافظه با استفاده از \fB\-\-shuffle\-sections\fR، می‌توانید عملکرد واقعی برنامه خود را از تصادفی بودن ناشی از تغییر چیدمان حافظه جدا کنید\. .TP \fB\-\-spare\-program\-headers\fR=\fInumber\fR تعداد مشخص‌شده‌ای از مدخل‌های \fBPT_NULL\fR را به انتهای سرآیند برنامه اضافه می‌کند، تا ابزارهای پردازش پس از پیوند بتوانند به راحتی با بازنویسی مدخل‌های تهی، بخش‌های جدیدی اضافه کنند\. .IP توجه داشته باشید که استاندارد ELF نیازمند آن است که تمام سگمنت‌های \fBPT_LOAD\fR بر اساس \fBp_vaddr\fR مرتب شوند\. بنابراین، اگر یک سگمنت LOAD جدید اضافه کنید، ممکن است لازم باشد کل سرآیند برنامه را مرتب کنید\. .TP \fB\-\-stats\fR آمارهای ورودی را چاپ می‌کند\. .TP \fB\-\-thread\-count\fR=\fIcount\fR از تعداد \fIcount\fR ریسمان استفاده می‌کند\. .TP \fB\-\-threads\fR, \fB\-\-no\-threads\fR از چند ریسمان استفاده می‌کند\. به طور پیش‌فرض، \fBmold\fR به اندازه تعداد هسته‌ها یا ۳۲ ریسمان (هر کدام که کمتر باشد) استفاده می‌کند\. دلیل محدود شدن به ۳۲ این است که \fBmold\fR فراتر از آن نقطه مقیاس‌پذیری خوبی ندارد\. برای استفاده از فقط یک ریسمان، \fB\-\-no\-threads\fR یا \fB\-\-thread\-count=1\fR را ارسال کنید\. .TP \fB\-\-quick\-exit\fR, \fB\-\-no\-quick\-exit\fR برای خروج از تابع \fBquick_exit\fR استفاده می‌کند یا نمی‌کند\. .TP \fB\-\-zero\-to\-bss\fR بخش‌های داده کاملاً صفر را به BSS تبدیل می‌کند\. .IP هنگامی که این گزینه فعال باشد، \fBmold\fR بخش‌های داده ورودی را که از نوع \fBSHT_NOBITS\fR نیستند بررسی کرده و وارسی می‌کند که آیا محتوای آن‌ها صرفاً از بایت‌های صفر تشکیل شده است یا خیر\. این بخش‌ها سپس به بخش‌های BSS (\fBSHT_NOBITS\fR) تبدیل می‌شوند\. این کار اندازه فایل خروجی را کاهش می‌دهد، زیرا بخش‌های BSS فضایی در تصویر فایل اشغال نمی‌کنند\. .IP این رفتار به ویژه برای بخش‌های تعریف‌شده توسط کاربر که با \fB__attribute__((section("\.sectname")))\fR ایجاد شده و شامل متغیرهای سراسری مقداردهی‌نشده هستند مفید است\. کامپایلرهای GCC و Clang این بخش‌ها را حتی اگر محتوایشان کاملاً صفر باشد به طور خودکار به عنوان BSS علامت‌گذاری نمی‌کنند و در عوض آن‌ها را به عنوان بخش‌های داده عادی منتشر می‌کنند\. .IP برای مثال، \fB__attribute__((section("\.sectname"))) int vec[256];\fR را در نظر بگیرید\. .IP به طور پیش‌فرض این تعریف منجر به بخشی به نام \fB\.sectname\fR از نوع \fBSHT_PROGBITS\fR پر از صفر می‌شود\. با گزینه \fB\-\-zero\-to\-bss\fR، پیونددهنده آن را به عنوان داده خالی تشخیص داده و به یک بخش \fBSHT_NOBITS\fR تبدیل می‌کند که بدون تغییر در معناشناسی زمان اجرا، اندازه فایل خروجی را کاهش می‌دهد\. .TP \fB\-z rewrite\-endbr\fR, \fB\-z norewrite\-endbr\fR به عنوان یک اقدام امنیتی، برخی از مجموعه‌های دستورالعمل CPU اخیراً قابلیتی را برای محافظت از یکپارچگی جریان کنترل با غیرمجاز کردن پرش‌های غیرمستقیم به طور پیش‌فرض دریافت کرده‌اند\. اگر این ویژگی فعال باشد، دستورالعملی که بلافاصله پس از یک پرش غیرمستقیم اجرا می‌شود باید یک دستورالعمل نشانه‌گذار مقصد پرش باشد، وگرنه خطایی در سطح CPU رخ می‌دهد\. دستورالعمل نشانه‌گذار با نام «landing pad» نیز شناخته می‌شود که پرش‌های غیرمستقیم می‌توانند بر روی آن فرود آیند\. این ویژگی انجام حملات ROP را سخت‌تر می‌کند\. .IP برای استفاده از این قابلیت، تابعی که اشاره‌گر آن گرفته می‌شود باید با یک landing pad شروع شود، زیرا فراخوانی تابع از طریق اشاره‌گر تابع به یک پرش غیرمستقیم کامپایل می‌شود\. از سوی دیگر، اگر یک تابع فقط به صورت مستقیم فراخوانی شود (یعنی فقط دستورالعمل‌های پرش \fIمستقیم\fR به آن اشاره کنند)، نیازی به شروع با آن ندارد\. .IP به طور پیش‌فرض، کامپایلر همیشه یک landing pad در ابتدای هر تابع سراسری منتشر می‌کند زیرا نمی‌داند آیا اشاره‌گر آن تابع در واحد ترجمه دیگری گرفته شده است یا خیر\. در نتیجه، باینری حاصل سطح حمله بیشتری نسبت به حد نیاز دارد\. .IP اگر گزینه \fB\-\-rewrite\-endbr\fR داده شود، mold یک تحلیل روی کل برنامه انجام می‌دهد تا توابعی را که آدرس آن‌ها واقعاً گرفته شده است شناسایی کرده و landing padها را برای توابعی که آدرس آن‌ها گرفته نشده با دستورهای no-op بازنویسی می‌کند و در نتیجه سطح حمله را کاهش می‌دهد\. .IP این ویژگی در حال حاضر فقط روی x86\-64 در دسترس است\. .SH "گزینه‌های سازگار با GNU (GNU-COMPATIBLE OPTIONS)" .TP \fB\-\-help\fR اطلاعات نحوه استفاده را در خروجی استاندارد نمایش می‌دهد و خارج می‌شود\. .TP \fB\-v\fR, \fB\-\-version\fR اطلاعات نسخه را در خروجی استاندارد گزارش می‌دهد\. .TP \fB\-V\fR اطلاعات نسخه و هدف را در خروجی استاندارد گزارش می‌دهد\. .TP \fB\-E\fR, \fB\-\-export\-dynamic\fR, \fB\-\-no\-export\-dynamic\fR هنگام ایجاد یک فایل اجرایی، استفاده از گزینه \fB\-E\fR باعث می‌شود همه نمادهای سراسری در جدول نمادهای پویا قرار گیرند، به طوری که نمادها در زمان اجرا برای سایر ماژول‌های ELF قابل مشاهده باشند\. .IP به طور پیش‌فرض یا در صورت ارائه گزینه \fB\-\-no\-export\-dynamic\fR، تنها نمادهایی که در زمان پیوند توسط DSOها ارجاع داده شده‌اند از یک فایل اجرایی صادر می‌شوند\. .TP \fB\-F\fR \fIlibname\fR, \fB\-\-filter\fR=\fIlibname\fR فیلد بخش پویای \fBDT_FILTER\fR را به \fIlibname\fR تنظیم می‌کند\. .TP \fB\-I\fR \fIfile\fR, \fB\-\-dynamic\-linker\fR=\fIfile\fR, \fB\-\-no\-dynamic\-linker\fR مسیر پیونددهنده پویا را روی \fIfile\fR تنظیم می‌کند\. اگر گزینه \fB\-I\fR داده نشود یا اگر \fB\-\-no\-dynamic\-linker\fR داده شود، هیچ مسیر پیونددهنده پویایی برای فایل خروجی تنظیم نمی‌شود\. این بر خلاف پیونددهنده‌های GNU است که در این حالت یک مسیر پیش‌فرض پیونددهنده پویا تنظیم می‌کنند\. این تفاوت معمولاً تفاوتی ایجاد نمی‌کند زیرا راه‌انداز کامپایلر همیشه \fB\-I\fR را به پیونددهنده ارسال می‌کند\. .TP \fB\-L\fR \fIdir\fR, \fB\-\-library\-path\fR=\fIdir\fR پوشه \fIdir\fR را به فهرست مسیرهای جستجوی کتابخانه اضافه می‌کند که \fBmold\fR از آن‌ها کتابخانه‌ها را برای گزینه \fB\-l\fR جستجو می‌کند\. .IP برخلاف پیونددهنده‌های GNU، پیونددهنده \fBmold\fR مسیرهای جستجوی پیش‌فرض ندارد\. این تفاوت معمولاً تأثیری در عمل ندارد زیرا راه‌انداز کامپایلر همیشه تمام مسیرهای جستجوی لازم را به پیونددهنده ارسال می‌کند\. .TP \fB\-M\fR, \fB\-\-print\-map\fR یک فایل نگاشت (map file) در خروجی استاندارد می‌نویسد\. .TP \fB\-N\fR, \fB\-\-omagic\fR, \fB\-\-no\-omagic\fR پیونددهنده \fBmold\fR را مجبور می‌کند تا فایل خروجی را با چیدمان حافظه قدیمی تولید کند\. نخست، اولین سگمنت داده را در مرز صفحه تراز نمی‌کند\. دوم، اگر این گزینه مشخص شود بخش‌های متنی به عنوان قابل نوشتن علامت‌گذاری می‌شوند\. .TP \fB\-S\fR, \fB\-\-strip\-debug\fR بخش‌های \fB\.debug_*\fR را از فایل خروجی حذف می‌کند\. .TP \fB\-T\fR \fIfile\fR, \fB\-\-script\fR=\fIfile\fR اسکریپت پیونددهنده را از \fIfile\fR می‌خواند\. .TP \fB\-X\fR, \fB\-\-discard\-locals\fR نمادهای محلی موقت را برای کاهش اندازه جدول نمادها و جدول رشته‌ها حذف می‌کند\. نمادهای محلی موقت، نمادهای محلی هستند که با \fB\.L\fR شروع می‌شوند\. کامپایلرها معمولاً چنین نمادهایی را برای عناصر بی‌نام برنامه مانند رشته‌های لفظی یا مقادیر لفظی ممیز شناور ایجاد می‌کنند\. این رفتار پیش‌فرض است؛ برای حفظ نمادهای محلی موقت از \fB\-\-discard\-none\fR استفاده کنید\. .TP \fB\-\-discard\-none\fR همه نمادهای محلی را در جدول نمادها نگه می‌دارد، از جمله نمادهای موقتی که با \fB\.L\fR شروع می‌شوند، به جز نمادهای موجود در بخش‌های قابل ادغام\. این رفتار پیش‌فرض GNU ld را بازیابی می‌کند\. پیونددهنده‌های \fBmold\fR و \fBld\.lld\fR نمادهای محلی موقت را به طور پیش‌فرض دور می‌اندازند\. .TP \fB\-e\fR \fIsymbol\fR, \fB\-\-entry\fR=\fIsymbol\fR: نقطه ورود برنامه را روی \fIsymbol\fR تنظیم می‌کند\. .TP \fB\-f\fR \fIshlib\fR, \fB\-\-auxiliary\fR=\fIshlib\fR فیلد بخش پویای \fBDT_AUXILIARY\fR را به \fIshlib\fR تنظیم می‌کند\. .TP \fB\-h\fR \fIlibname\fR, \fB\-\-soname\fR=\fIlibname\fR فیلد بخش پویای \fBDT_SONAME\fR را به \fIlibname\fR تنظیم می‌کند\. این گزینه هنگام ساخت یک فایل شیء اشتراکی استفاده می‌شود\. معمولاً هنگامی که \fBlibfoo\.so\fR را می‌سازید، می‌خواهید \fB\-\-soname=foo\fR را به پیونددهنده ارسال کنید\. .TP \fB\-l\fR \fIlibname\fR به دنبال \fBlib\fR\fIlibname\fR\fB\.so\fR یا \fBlib\fR\fIlibname\fR\fB\.a\fR در مسیرهای جستجوی کتابخانه می‌گردد\. .TP \fB\-m\fR \fItarget\fR یک هدف (\fItarget\fR) را انتخاب می‌کند\. .TP \fB\-o\fR \fIfile\fR, \fB\-\-output\fR=\fIfile\fR از \fIfile\fR به عنوان نام فایل خروجی به جای نام پیش‌فرض \fBa\.out\fR استفاده می‌کند\. .TP \fB\-r\fR, \fB\-\-relocatable\fR به جای تولید یک فایل اجرایی یا شیء اشتراکی، فایل‌های شیء ورودی را ترکیب کرده تا فایل شیء دیگری تولید کند که بتواند به عنوان ورودی برای یک پیونددهنده استفاده شود\. .TP \fB\-s\fR, \fB\-\-strip\-all\fR بخش \fB\.symtab\fR را از فایل خروجی حذف می‌کند\. .TP \fB\-u\fR \fIsymbol\fR, \fB\-\-undefined\fR=\fIsymbol\fR اگر \fIsymbol\fR پس از خواندن تمام فایل‌های شیء به عنوان یک نماد تعریف‌نشده باقی بماند، و اگر آرشیو ایستایی حاوی فایل شیئی باشد که \fIsymbol\fR را تعریف می‌کند، آن فایل شیء را بیرون کشیده و پیوند می‌دهد تا فایل خروجی حاوی تعریفی از \fIsymbol\fR باشد\. .TP \fB\-y\fR \fIsymbol\fR, \fB\-\-trace\-symbol\fR=\fIsymbol\fR مراجع به \fIsymbol\fR را ردگیری می‌کند\. .TP \fB\-\-Bdynamic\fR پیوند را با کتابخانه‌های اشتراکی انجام می‌دهد\. .TP \fB\-\-Bstatic\fR پیوند را با کتابخانه‌های اشتراکی انجام نمی‌دهد\. .TP \fB\-\-Bsymbolic\fR هنگام ایجاد یک کتابخانه اشتراکی، نمادهای سراسری را فقط صادراتی می‌کند (یعنی همان نماد را وارد نمی‌کند)\. در نتیجه، ارجاعات درون یک کتابخانه اشتراکی همیشه به صورت محلی تفکیک می‌شوند و بازنویسی نماد در زمان اجرا بی‌اثر می‌شود\. برای اطلاعات بیشتر در مورد واردات و صادرات نمادها، بخش «تفکیک پویای نمادها» را ببینید\. .TP \fB\-\-Bsymbolic\-functions\fR این گزینه همان اثر \fB\-\-Bsymbolic\fR را دارد اما فقط برای نمادهای تابع کار می‌کند\. نمادهای داده همچنان هم وارد و هم صادر می‌شوند\. .TP \fB\-\-Bsymbolic\-non\-weak\fR این گزینه همان اثر \fB\-\-Bsymbolic\fR را دارد اما فقط برای نمادهای غیرضعیف (non-weak) کار می‌کند\. نمادهای ضعیف همچنان هم وارد و هم صادر می‌شوند\. .TP \fB\-\-Bsymbolic\-non\-weak\-functions\fR این گزینه همان اثر \fB\-\-Bsymbolic\fR را دارد اما فقط برای نمادهای تابع غیرضعیف کار می‌کند\. نمادهای داده و نمادهای تابع ضعیف همچنان هم وارد و هم صادر می‌شوند\. .TP \fB\-\-Bno\-symbolic\fR گزینه‌های \fB\-\-Bsymbolic\fR، \fB\-\-Bsymbolic\-functions\fR، \fB\-\-Bsymbolic\-non\-weak\fR و \fB\-\-Bsymbolic\-non\-weak\-functions\fR را لغو می‌کند\. .TP \fB\-\-Map\fR=\fIfile\fR فایل نگاشت را در \fIfile\fR می‌نویسد\. .TP \fB\-\-Tbss\fR=\fIaddress\fR نام مستعار برای \fB\-\-section\-start=\.bss=\fR\fIaddress\fR\. .TP \fB\-\-Tdata\fR=\fIaddress\fR نام مستعار برای \fB\-\-section\-start=\.data=\fR\fIaddress\fR\. .TP \fB\-\-Ttext\fR=\fIaddress\fR نام مستعار برای \fB\-\-section\-start=\.text=\fR\fIaddress\fR\. .TP \fB\-\-Ttext\-segment\fR=\fIaddress\fR آدرس اولین بایت سگمنت متن را تنظیم می‌کند\. .TP \fB\-\-allow\-multiple\-definition\fR به طور معمول، اگر بیش از یک تعریف از یک نماد وجود داشته باشد، پیونددهنده خطا گزارش می‌کند\. این گزینه رفتار پیش‌فرض را تغییر می‌دهد تا برای تعاریف تکراری خطا گزارش نکند و در عوض از اولین تعریف استفاده کند\. .TP \fB\-\-allow\-shlib\-undefined\fR, \fB\-\-no\-allow\-shlib\-undefined\fR حتی اگر mold در پیوند دادن یک فایل اجرایی اصلی بدون خطاهای نماد تعریف‌نشده موفق شود، ممکن است در زمان اجرا با خطاهای جستجوی نماد روبرو شوید زیرا پیونددهنده پویا نمی‌تواند برخی نمادها در کتابخانه‌های اشتراکی را در هیچ ماژول ELF پیدا کند\. این اتفاق می‌افتد زیرا mold به طور پیش‌فرض نمادهای تعریف‌نشده در کتابخانه‌های اشتراکی را نادیده می‌گیرد\. .IP اگر گزینه \fB\-\-no\-allow\-shlib\-undefined\fR را بدهید، mold بررسی می‌کند که آیا نمادهای تعریف‌نشده در کتابخانه‌های اشتراکی داده‌شده به پیونددهنده در زمان پیوند قابل تفکیک هستند یا خیر\. به عبارت دیگر، این کار خطای زمان اجرا را به خطای زمان پیوند تبدیل می‌کند\. .IP توجه داشته باشید که باید تمام کتابخانه‌های اشتراکی، از جمله کتابخانه‌های وابسته غیرمستقیم را به عنوان آرگومان‌های \fB\-l\fR به پیونددهنده ارسال کنید\. اگر یک کتابخانه اشتراکی به کتابخانه‌ای وابسته باشد که به پیونددهنده داده نشده است، تأیید برای آن فایل نادیده گرفته می‌شود\. .TP \fB\-\-as\-needed\fR, \fB\-\-no\-as\-needed\fR به طور پیش‌فرض، کتابخانه‌های اشتراکی داده‌شده به پیونددهنده بدون قید و شرط به فهرست کتابخانه‌های مورد نیاز در یک فایل خروجی اضافه می‌شوند\. با این حال، کتابخانه‌های اشتراکی پس از \fB\-\-as\-needed\fR تنها زمانی به فهرست اضافه می‌شوند که حداقل یک نماد واقعاً توسط فایل خروجی استفاده شده باشد\. به عبارت دیگر، کتابخانه‌های اشتراکی پس از \fB\-\-as\-needed\fR اگر توسط برنامه مورد نیاز نباشند به فهرست کتابخانه‌های لازم اضافه نمی‌شوند\. .IP گزینه \fB\-\-no\-as\-needed\fR رفتار پیش‌فرض را برای فایل‌های بعدی بازمی‌گرداند\. .TP \fB\-\-build\-id\fR=[ \fBmd5\fR | \fBsha1\fR | \fBsha256\fR | \fBfast\fR | \fBuuid\fR | \fB0x\fR\fIhexstring\fR | \fBnone\fR ] یک بخش \fB\.note\.gnu\.build\-id\fR شامل یک رشته بایتی برای شناسایی منحصر‌به‌فرد فایل خروجی ایجاد می‌کند\. مقدار \fBsha256\fR یک درهم‌سازی رمزنگاری ۲۵۶ بیتی از فایل خروجی محاسبه کرده و آن را برای شناسه ساخت تنظیم می‌کند\. مقادیر \fBmd5\fR و \fBsha1\fR همان درهم‌سازی را محاسبه می‌کنند اما قبل از تنظیم برای شناسه ساخت، آن را به ترتیب به ۱۲۸ و ۱۶۰ بیت کوتاه می‌کنند\. مقدار \fBuuid\fR یک شناسه تصادفی ۱۲۸ بیتی UUID تنظیم می‌کند\. مقدار \fB0x\fR\fIhexstring\fR مقدار \fIhexstring\fR را تنظیم می‌کند\. مقدار \fBfast\fR هم‌معنی \fBsha256\fR است\. .TP \fB\-\-build\-id\fR هم‌معنی \fB\-\-build\-id=sha256\fR\. .TP \fB\-\-no\-build\-id\fR هم‌معنی \fB\-\-build\-id=none\fR\. .TP \fB\-\-compress\-debug\-sections\fR=[ \fBzlib\fR | \fBzlib\-gabi\fR | \fBzlib:\fR\fIN\fR | \fBzstd\fR | \fBzstd:\fR\fIN\fR | \fBnone\fR ] اطلاعات اشکال‌زدایی DWARF (بخش‌های \fB\.debug_*\fR) را با استفاده از الگوریتم فشرده‌سازی zlib یا zstd فشرده می‌کند\. مقدار \fBzlib\-gabi\fR نام مستعار \fBzlib\fR است\. مقدار \fBzlib:\fR\fIN\fR سطح فشرده‌سازی zlib را تعیین می‌کند که در آن \fIN\fR بین ۰ تا ۹ است (۰ به معنی عدم فشرده‌سازی است)، و \fBzstd:\fR\fIN\fR سطح فشرده‌سازی zstd را تعیین می‌کند که \fIN\fR بین ۱ تا ۲۲ است\. سطوح بالاتر به نسبت‌های فشرده‌سازی بهتری دست می‌یابند اما کندتر هستند\. مقدار \fBzlib\fR معادل \fBzlib:1\fR و \fBzstd\fR معادل \fBzstd:3\fR است\. .TP \fB\-\-defsym\fR=\fIsymbol\fR=\fIvalue\fR نماد \fIsymbol\fR را به عنوان نام مستعار برای \fIvalue\fR تعریف می‌کند\. .IP مقدار \fIvalue\fR یا یک عدد صحیح (در مبنای ۱۰ یا ۱۶ با پیشوند \fB0x\fR) یا یک نام نماد است\. اگر یک عدد صحیح به عنوان مقدار داده شود، \fIsymbol\fR به عنوان یک نماد مطلق با مقدار داده‌شده تعریف می‌شود\. .TP \fB\-\-default\-symver\fR از soname به عنوان نسخه نماد استفاده کرده و آن نسخه را به همه نمادها الحاق می‌کند\. .TP \fB\-\-demangle\fR, \fB\-\-no\-demangle\fR نمادهای ++C و Rust را در پیام‌های گزارش رمزگشایی و خوانا (demangle) می‌کند\. .TP \fB\-\-dependency\-file\fR=\fIfile\fR یک فایل وابستگی در \fIfile\fR می‌نویسد\. محتوای فایل نوشته‌شده توسط make(1) قابل خواندن است، که تنها یک قاعده با فایل خروجی پیونددهنده به عنوان هدف و تمام فایل‌های ورودی به عنوان پیش‌نیازهای آن تعریف می‌کند\. انتظار می‌رود کاربران فایل وابستگی تولیدشده را در یک Makefile بگنجانند تا مدیریت وابستگی خودکار شود\. این گزینه شبیه به گزینه‌های \fB\-MM \-MF\fR کامپایلر است\. .TP \fB\-\-dynamic\-list\fR=\fIfile\fR فهرستی از نمادهای پویا را از \fIfile\fR می‌خواند\. مشابه \fB\-\-export\-dynamic\-symbol\-list\fR است، با این تفاوت که بر \fB\-\-Bsymbolic\fR دلالت دارد\. اگر \fIfile\fR در پوشه فعلی وجود نداشته باشد، به منظور سازگاری با GNU ld در مسیرهای جستجوی کتابخانه جستجو می‌شود\. .TP \fB\-\-eh\-frame\-hdr\fR, \fB\-\-no\-eh\-frame\-hdr\fR بخش \fB\.eh_frame_hdr\fR را ایجاد می‌کند\. .TP \fB\-\-emit\-relocs\fR پیونددهنده معمولاً بخش‌های بازمکانی (relocation) را مصرف می‌کند؛ یعنی بازمکانی‌ها را روی بخش‌های دیگر اعمال کرده و خود بخش‌های بازمکانی دور انداخته می‌شوند\. .IP گزینه \fB\-\-emit\-relocs\fR به پیونددهنده دستور می‌دهد بخش‌های بازمکانی را در فایل خروجی باقی بگذارد\. برخی از ابزارهای بهینه‌سازی یا تحلیل باینری پس از پیوند مانند LLVM Bolt به آن‌ها نیاز دارند\. .TP \fB\-\-enable\-new\-dtags\fR, \fB\-\-disable\-new\-dtags\fR به طور پیش‌فرض، \fBmold\fR برچسب \fBDT_RUNPATH\fR را برای \fB\-\-rpath\fR منتشر می‌کند\. اگر \fB\-\-disable\-new\-dtags\fR را بدهید، \fBmold\fR در عوض \fBDT_RPATH\fR را برای \fB\-\-rpath\fR منتشر می‌کند\. .TP \fB\-\-execute\-only\fR: صفحات کد را فقط قابل اجرا تعیین می‌کند\. .TP \fB\-\-exclude\-libs\fR=\fIlibraries\fR \|\.\|\.\|\. همه نمادها در \fIlibraries\fR داده‌شده را پنهان علامت‌گذاری می‌کند\. .TP \fB\-\-export\-dynamic\-symbol\fR=\fIsymbol\fR نمادهای منطبق بر \fIsymbol\fR را در جدول نمادهای پویا قرار می‌دهد\. مقدار \fIsymbol\fR ممکن است یک الگوی تطبیق (glob pattern) با همان ساختار نحوی گزینه‌های \fB\-\-export\-dynamic\-symbol\-list\fR یا \fB\-\-version\-script\fR باشد\. .TP \fB\-\-export\-dynamic\-symbol\-list\fR=\fIfile\fR فهرستی از نمادهای پویا را از \fIfile\fR می‌خواند\. .TP \fB\-\-fatal\-warnings\fR, \fB\-\-no\-fatal\-warnings\fR هشدارها را به عنوان خطا در نظر می‌گیرد\. .TP \fB\-\-fini\fR=\fIsymbol\fR نماد \fIsymbol\fR را در زمان تخلیه (unload) فراخوانی می‌کند\. .TP \fB\-\-gc\-sections\fR, \fB\-\-no\-gc\-sections\fR بخش‌های بدون ارجاع را حذف می‌کند\. .TP \fB\-\-gdb\-index\fR یک بخش \fB\.gdb_index\fR برای افزایش سرعت اشکال‌زدای GNU ایجاد می‌کند\. برای استفاده از این قابلیت، باید فایل‌های منبع را با پرچم کامپایلر \fB\-ggnu\-pubnames\fR کامپایل کنید\. .TP \fB\-\-hash\-style\fR=[ \fBsysv\fR | \fBgnu\fR | \fBboth\fR | \fBnone\fR ] سبک درهم‌سازی را تنظیم می‌کند\. .TP \fB\-\-icf\fR=[ \fBsafe\fR | \fBall\fR | \fBnone\fR ], \fB\-\-no\-icf\fR غیرمعمول نیست که یک برنامه شامل توابع یکسان بسیاری باشد که فقط در نام با هم تفاوت دارند\. برای مثال، قالب \fBstd::vector\fR در ++C بسیار محتمل است که برای \fBstd::vector\fR و \fBstd::vector\fR به کدهای یکسانی تبدیل شود زیرا برای این ظرف تنها اندازه نوع پارامتر اهمیت دارد\. تا کردن کدهای یکسان (ICF یا Identical Code Folding) یک بهینه‌سازی اندازه برای شناسایی و ادغام چنین توابع یکسانی است\. .IP اگر \fB\-\-icf=all\fR داده شود، \fBmold\fR سعی می‌کند همه توابع یکسان را ادغام کند\. این کار اندازه خروجی را بیش از همه کاهش می‌دهد، اما یک بهینه‌سازی «ایمن» نیست\. در C و ++C تضمین شده است که دو اشاره‌گر به دو تابع مختلف هرگز برابر نخواهند بود، اما \fB\-\-icf=all\fR این فرض را می‌شکند زیرا دو تابع یکسان پس از ادغام دارای آدرس یکسانی خواهند بود\. بنابراین هنگام استفاده از این پرچم باید مراقب باشید که برنامه شما به یکتا بودن اشاره‌گر توابع وابسته نباشد\. .IP گزینه \fB\-\-icf=safe\fR پرچمی است برای ادغام توابع تنها در زمانی که انجام آن ایمن باشد؛ یعنی اگر برنامه‌ای آدرس یک تابع را نگیرد، ادغام آن تابع با تابع دیگر ایمن است، زیرا نمی‌توانید بدون گرفتن آدرس یک تابع، اشاره‌گر تابع را با چیز دیگری مقایسه کنید\. .IP گزینه \fB\-\-icf=safe\fR باید با کامپایلری استفاده شود که از بخش \fB\.llvm_addrsig\fR پشتیبانی کند، بخشی که حاوی اطلاعات مربوط به نمادهایی است که آدرس آن‌ها گرفته شده است\. کامپایلر LLVM/Clang به طور پیش‌فرض از این بخش پشتیبانی می‌کند\. از آنجا که GCC هنوز از آن پشتیبانی نمی‌کند، نمی‌توانید از \fB\-\-icf=safe\fR همراه با GCC استفاده کنید (هیچ آسیبی نمی‌رساند اما اصلاً بهینه‌سازی نمی‌کند\.) .IP گزینه‌های \fB\-\-icf=none\fR و \fB\-\-no\-icf\fR قابلیت ICF را غیرفعال می‌کنند\. .TP \fB\-\-ignore\-data\-address\-equality\fR باعث می‌شود ICF نه تنها توابع، بلکه داده‌ها را نیز ادغام کند\. این گزینه باید در ترکیب با \fB\-\-icf=all\fR استفاده شود\. .TP \fB\-\-image\-base\fR=\fIaddr\fR آدرس پایه را به \fIaddr\fR تنظیم می‌کند\. .TP \fB\-\-init\fR=\fIsymbol\fR نماد \fIsymbol\fR را در زمان بارگذاری فراخوانی می‌کند\. .TP \fB\-\-no\-undefined\fR نمادهای تعریف‌نشده را گزارش می‌دهد (حتی با \fB\-\-shared\fR)\. .TP \fB\-\-noinhibit\-exec\fR حتی در صورت وقوع خطا، فایل خروجی را ایجاد می‌کند\. .TP \fB\-\-package\-metadata\fR=\fIpercent\-encoded\-string\fR یک رشته مشخص را در بخش \fB\.note\.package\fR جاسازی می‌کند\. این گزینه برای اسکریپت‌های ساختی طراحی شده است که بسته‌های باینری مانند \fB\.rpm\fR یا \fB\.deb\fR تولید می‌کنند تا متاداده‌های بسته را در هر فایل اجرایی بگنجانند\. این کار فرآیند شناسایی بسته مربوطه را برای یک فایل اجرایی یا فایل هسته داده‌شده (core file) ساده می‌کند\. .IP آرگومان این گزینه به صورت کدگذاری درصدی (percent-encoded) در نظر گرفته شده و قبل از درج در بخش رمزگشایی می‌شود، که به شما امکان می‌دهد از استفاده از نویسه کاما (\fB,\fR) در آرگومان اجتناب کنید\. این امر مفید است زیرا کامپایلر تمام موارد کاما در \fB\-Wl,\fR را قبل از ارسال به پیونددهنده با فاصله جایگزین می‌کند\. توجه داشته باشید که \fBmold\fR همیشه آرگومان را به عنوان کدگذاری درصدی تفسیر می‌کند، بنابراین باید تمام نویسه‌های \fB%\fR را نیز با \fB%25\fR اسکیپ کنید\. .TP \fB\-\-pack\-dyn\-relocs\fR=[ \fBrelr\fR | \fBandroid\fR | \fBandroid+relr\fR | \fBnone\fR ] بازمکانی‌های پویا را در فایل خروجی فشرده می‌کند\. .IP اگر \fBrelr\fR مشخص شود، تمام بازمکانی‌های \fBR_*_RELATIVE\fR به جای بخش‌های \fB\.rel\.dyn\fR یا \fB\.rela\.dyn\fR در بخش \fB\.relr\.dyn\fR قرار می‌گیرند\. از آنجا که بخش \fB\.relr\.dyn\fR از یک طرح کدگذاری با بهره‌وری فضایی بالا استفاده می‌کند، تعیین این پرچم می‌تواند اندازه خروجی را کاهش دهد\. این معمولاً برای فایل‌های اجرایی مستقل از موقعیت (PIE) بیشترین کارایی را دارد\. .IP اگر \fBandroid\fR مشخص شود، تمام بازمکانی‌های پویا در قالب بازمکانی بسته‌بندی‌شده اندروید (APS2) کدگذاری شده و در بخش \fB\.rel\.dyn\fR یا \fB\.rela\.dyn\fR ذخیره می‌شوند که نوع بخش آن‌ها به \fBSHT_ANDROID_REL\fR یا \fBSHT_ANDROID_RELA\fR تغییر می‌یابد\. جدول پویا به‌روزرسانی می‌شود تا از \fBDT_ANDROID_REL\fR / \fBDT_ANDROID_RELA\fR و گونه‌های \fBSZ\fR آن‌ها به جای برچسب‌های استاندارد استفاده کند\. .IP مقدار \fBandroid+relr\fR هر دو را ترکیب می‌کند: بازمکانی‌های \fBR_*_RELATIVE\fR به \fB\.relr\.dyn\fR می‌روند و بقیه با APS2 کدگذاری می‌شوند\. این پیکربندی است که توسط بیشتر باینری‌های سیستم اندروید استفاده می‌شود\. .IP توجه داشته باشید که یک بارگذار زمان اجرا باید از \fB\.relr\.dyn\fR پشتیبانی کند تا فایل‌های اجرایی یا کتابخانه‌های اشتراکی پیوند خورده با \fB\-\-pack\-dyn\-relocs=relr\fR را اجرا کند\. تا سال ۲۰۲۶، کتابخانه‌های glibc (از نسخه ۲٫۳۶)، musl (از نسخه ۱٫۲٫۴)، Android، ChromeOS و Fuchsia همگی از آن پشتیبانی می‌کنند\. از سوی دیگر، قالب APS2 تنها توسط بارگذار bionic اندروید پشتیبانی می‌شود؛ خود کدگذار مستقل از هدف است، اما باینری تولیدشده تنها در پلتفرم‌هایی قابل بارگذاری است که bionic (یا یک بارگذار سازگار) برچسب‌های \fBDT_ANDROID_REL(A)\fR را مدیریت کند\. .TP \fB\-\-pie\fR, \fB\-\-pic\-executable\fR, \fB\-\-no\-pie\fR, \fB\-\-no\-pic\-executable\fR یک فایل اجرایی مستقل از موقعیت (PIE) ایجاد می‌کند\. .TP \fB\-\-print\-gc\-sections\fR, \fB\-\-no\-print\-gc\-sections\fR بخش‌های بدون ارجاع حذف‌شده را چاپ می‌کند\. .TP \fB\-\-print\-icf\-sections\fR, \fB\-\-no\-print\-icf\-sections\fR بخش‌های یکسان تا شده (ادغام‌شده) را چاپ می‌کند\. .TP \fB\-\-push\-state\fR, \fB\-\-pop\-state\fR گزینه \fB\-\-push\-state\fR مقادیر فعلی \fB\-\-as\-needed\fR، \fB\-\-whole\-archive\fR، \fB\-\-static\fR و \fB\-\-start\-lib\fR را ذخیره می‌کند\. مقادیر ذخیره‌شده را می‌توان با pop\-state بازیابی کرد\. .IP جفت‌های \fB\-\-push\-state\fR و \fB\-\-pop\-state\fR می‌توانند به صورت تو در تو استفاده شوند\. .IP این گزینه‌ها زمانی مفید هستند که بخواهید گزینه‌های خط فرمان پیونددهنده را به صورت برنامه‌نویسی بسازید\. به عنوان مثال اگر می‌خواهید \fBlibfoo\.so\fR را بر اساس نیاز پیوند دهید اما نمی‌خواهید وضعیت سراسری \fB\-\-as\-needed\fR را تغییر دهید، می‌توانید \fB\-\-push\-state \-\-as\-needed \-lfoo \-\-pop\-state\fR را به گزینه‌های خط فرمان پیونددهنده اضافه کنید\. .TP \fB\-\-relax, \-\-no\-relax\fR دستورالعمل‌های ماشین را برای برخی بازمکانی‌ها با دستورالعمل‌های کارآمدتر بازنویسی می‌کند\. این ویژگی به طور پیش‌فرض فعال است\. .TP \fB\-\-require\-defined\fR=\fIsymbol\fR مشابه \fB\-\-undefined\fR است، با این تفاوت که نماد جدید باید تا پایان پیوند تعریف شده باشد\. .TP \fB\-\-retain\-symbols\-file\fR=\fIfile\fR تنها نمادهای فهرست‌شده در \fIfile\fR را نگه می‌دارد\. فایل \fIfile\fR یک فایل متنی حاوی یک نام نماد در هر خط است\. دستور \fBmold\fR تمام نمادهای محلی و همچنین نمادهای سراسری را که در \fIfile\fR نیستند دور می‌اندازد\. توجه داشته باشید که این گزینه نمادها را فقط از بخش \fB\.symtab\fR حذف می‌کند و تأثیری بر بخش \fB\.dynsym\fR که برای پیوند پویا استفاده می‌شود ندارد\. .TP \fB\-\-rpath\fR=\fIdir\fR پوشه \fIdir\fR را به مسیرهای جستجوی زمان اجرا اضافه می‌کند\. .TP \fB\-\-section\-start\fR=\fIsection\fR=\fIaddress\fR مقدار \fIaddress\fR را برای بخش تنظیم می‌کند\. مقدار \fIaddress\fR یک عدد در مبنای ۱۶ است که ممکن است با \fB0x\fR اختیاری شروع شود\. .TP \fB\-\-shared\fR, \fB\-\-Bshareable\fR یک کتابخانه اشتراکی ایجاد می‌کند\. .TP \fB\-\-spare\-dynamic\-tags\fR=\fInumber\fR تعداد مشخص‌شده از مدخل‌های \fBDT_NULL\fR را به انتهای بخش \fB\.dynamic\fR اضافه می‌کند، به طوری که ابزارهای پردازش پس از پیوند بتوانند به راحتی با بازنویسی مدخل‌های خالی، برچسب‌های پویای جدیدی اضافه کنند\. .TP \fB\-\-start\-lib\fR, \fB\-\-end\-lib\fR با فایل‌های شیء بین \fB\-\-start\-lib\fR و \fB\-\-end\-lib\fR طوری رفتار می‌کند که گویی در یک فایل آرشیو هستند؛ یعنی فایل‌های شیء بین آن‌ها تنها زمانی پیوند داده می‌شوند که برای تفکیک نمادهای تعریف‌نشده مورد نیاز باشند\. این گزینه‌ها در صورتی مفید هستند که بخواهید فایل‌های شیء را فقط در صورت نیاز پیوند دهید، اما بخواهید از سربار اجرای ar(3) اجتناب کنید\. .TP \fB\-\-static\fR پیوند را با کتابخانه‌های اشتراکی انجام نمی‌دهد\. .TP \fB\-\-sysroot\fR=\fIdir\fR پوشه ریشه سیستم هدف را به \fIdir\fR تنظیم می‌کند\. .TP \fB\-\-trace\fR نام هر فایل ورودی را چاپ می‌کند\. .TP \fB\-\-undefined\-glob\fR=\fIpattern\fR هم‌معنی \fB\-\-undefined\fR است، با این تفاوت که \fB\-\-undefined\-glob\fR به جای یک نام نماد منفرد، یک الگوی تطبیق می‌گیرد\. .TP \fB\-\-undefined\-version\fR, \fB\-\-no\-undefined\-version\fR به طور پیش‌فرض، \fBmold\fR در مورد نمادی که توسط یک اسکریپت نسخه یا توسط \fB\-\-export\-dynamic\-symbol\fR مشخص شده ولی تعریف نشده باشد هشدار می‌دهد\. می‌توانید با \fB\-\-undefined\-version\fR این هشدار را بی‌صدا کنید\. .TP \fB\-\-unique\fR=\fIpattern\fR بخش‌های ورودی را که با الگوی تطبیق داده‌شده \fIpattern\fR مطابقت دارند ادغام نمی‌کند\. .TP \fB\-\-unresolved\-symbols\fR=[ \fBreport\-all\fR | \fBignore\-all\fR | \fBignore\-in\-object\-files\fR | \fBignore\-in\-shared\-libs\fR ] نحوه مدیریت نمادهای تعریف‌نشده را تعیین می‌کند\. .TP \fB\-\-version\-script\fR=\fIfile\fR اسکریپت نسخه را از \fIfile\fR می‌خواند\. اگر \fIfile\fR در پوشه فعلی وجود نداشته باشد، به منظور سازگاری با GNU ld در مسیرهای جستجوی کتابخانه جستجو می‌شود\. .TP \fB\-w\fR, \fB\-\-no\-warnings\fR هشدارها را سرکوب کرده و \fB\-\-fatal\-warnings\fR را لغو می‌کند\. .TP \fB\-\-warn\-common\fR, \fB\-\-no\-warn\-common\fR درباره نمادهای مشترک (common symbols) هشدار می‌دهد\. .TP \fB\-\-warn\-once\fR برای هر نماد تعریف‌نشده فقط یک بار هشدار می‌دهد به جای اینکه برای هر بازمکانی که به یک نماد تعریف‌نشده ارجاع می‌دهد هشدار دهد\. .TP \fB\-\-warn\-unresolved\-symbols\fR, \fB\-\-error\-unresolved\-symbols\fR به طور معمول، پیونددهنده برای نمادهای تفکیک‌نشده خطا گزارش می‌کند\. گزینه \fB\-\-warn\-unresolved\-symbols\fR آن را به هشدار تبدیل می‌کند\. گزینه \fB\-\-error\-unresolved\-symbols\fR رفتار پیش‌فرض را بازمی‌گرداند\. .TP \fB\-\-whole\-archive\fR, \fB\-\-no\-whole\-archive\fR هنگامی که فایل‌های آرشیو (فایل‌های \fB\.a\fR) به پیونددهنده داده می‌شوند، تنها فایل‌های شیئی که برای تفکیک نمادهای تعریف‌نشده مورد نیاز هستند از آن‌ها استخراج شده و به فایل خروجی پیوند می‌خورند\. گزینه \fB\-\-whole\-archive\fR این رفتار را برای آرشیوهای بعدی تغییر می‌دهد تا پیونددهنده تمام فایل‌های شیء را استخراج کرده و به خروجی پیوند دهد\. برای مثال اگر در حال ایجاد یک فایل شیء اشتراکی هستید و می‌خواهید تمام اعضای آرشیو را در خروجی بگنجانید، باید \fB\-\-whole\-archive\fR را ارسال کنید\. گزینه \fB\-\-no\-whole\-archive\fR رفتار پیش‌فرض را برای آرشیوهای بعدی بازمی‌گرداند\. .TP \fB\-\-wrap\fR=\fIsymbol\fR باعث می‌شود \fIsymbol\fR به \fB__wrap_\fR\fIsymbol\fR تفکیک شود\. نماد اصلی می‌تواند به عنوان \fB__real_\fR\fIsymbol\fR تفکیک شود\. این گزینه معمولاً برای پوشش دادن (wrapping) یک تابع موجود استفاده می‌شود\. .TP \fB\-z cet\-report\fR=[ \fBwarning\fR | \fBerror\fR | \fBnone\fR ] فناوری اجرای جریان کنترل اینتل (CET) یک ویژگی جدید x86 است که از زمان Tiger Lake (منتشرشده در ۲۰۲۰) در دسترس است\. این فناوری دستورالعمل‌های جدیدی برای سخت‌تر کردن امنیت تعریف می‌کند تا از برنامه‌ها در برابر حملات ربودن کنترل محافظت کند\. می‌توانید با تعیین پرچم \fB\-fcf\-protection\fR به کامپایلر بگویید از این ویژگی استفاده کند\. .IP پرچم \fB\-z cet\-report\fR برای اطمینان از این است که تمام فایل‌های شیء با یک پرچم صحیح \fB\-fcf\-protection\fR کامپایل شده‌اند\. اگر \fBwarning\fR یا \fBerror\fR داده شود، در صورتی که یک فایل شیء با پرچم کامپایلر کامپایل نشده باشد، \fBmold\fR یک پیام هشدار یا خطا چاپ می‌کند\. .IP پیونددهنده \fBmold\fR به دنبال بیت‌های \fBGNU_PROPERTY_X86_FEATURE_1_IBT\fR و \fBGNU_PROPERTY_X86_FEATURE_1_SHSTK\fR در بخش \fB\.note\.gnu\.property\fR می‌گردد تا مشخص کند آیا یک فایل شیء با \fB\-fcf\-protection\fR کامپایل شده است یا خیر\. .TP \fB\-z now\fR, \fB\-z lazy\fR به طور پیش‌فرض، توابعی که به ماژول‌های ELF دیگر ارجاع می‌دهند توسط پیونددهنده پویا زمانی که برای نخستین بار فراخوانی می‌شوند تفکیک می‌گردند\. گزینه \fB\-z now\fR یک فایل اجرایی یا کتابخانه اشتراکی را علامت‌گذاری می‌کند تا تمام نمادهای پویا در زمان بارگذاری فایل در حافظه تفکیک شوند\. گزینه \fB\-z lazy\fR رفتار پیش‌فرض را بازمی‌گرداند\. .TP \fB\-z origin\fR شیء را نیازمند پردازش فوری \fB$ORIGIN\fR در زمان اجرا علامت‌گذاری می‌کند\. .TP \fB\-z ibt\fR بیت \fBGNU_PROPERTY_X86_FEATURE_1_IBT\fR را در بخش \fB\.note\.gnu\.property\fR روشن می‌کند تا نشان دهد که خروجی از PLT با قابلیت IBT استفاده می‌کند\. این گزینه بر \fB\-z ibtplt\fR دلالت دارد\. .TP \fB\-z ibtplt\fR یک PLT با قابلیت ردگیری شاخه اینتل (IBT) تولید می‌کند که در x86\-64 پیش‌فرض است\. این حالت پیش‌فرض است\. .TP \fB\-z execstack\fR, \fB\-z noexecstack\fR به طور پیش‌فرض، صفحات مربوط به ناحیه پشته (یعنی صفحاتی که متغیرهای محلی در آن‌ها قرار دارند) به دلایل امنیتی قابل اجرا نیستند\. گزینه \fB\-z execstack\fR آن را قابل اجرا می‌کند\. گزینه \fB\-z noexecstack\fR رفتار پیش‌فرض را بازمی‌گرداند\. .TP \fB\-z keep\-text\-section\-prefix\fR, \fB\-z nokeep\-text\-section\-prefix\fR بخش‌های \fB\.text\.hot\fR، \fB\.text\.unknown\fR، \fB\.text\.unlikely\fR، \fB\.text\.startup\fR و \fB\.text\.exit\fR را به عنوان بخش‌های جداگانه در باینری نهایی نگه می‌دارد به جای اینکه آن‌ها را به صورت \fB\.text\fR ادغام کند\. .TP \fB\-z rodynamic\fR بخش \fB\.dynamic\fR را فقط‌خواندنی می‌کند\. .TP \fB\-z relro\fR, \fB\-z norelro\fR برخی بخش‌ها مانند \fB\.dynamic\fR تنها در زمان بارگذاری ماژول در حافظه باید قابل نوشتن باشند\. هنگامی که پیونددهنده پویا کار خود را به پایان رساند، چنین بخش‌هایی توسط هیچ‌کس تغییر نخواهند کرد\. به عنوان یک راهکار امنیتی، ترجیح داده می‌شود چنین سگمنت‌هایی در طول اجرای برنامه فقط‌خواندنی شوند\. .IP گزینه \fB\-z relro\fR چنین بخش‌هایی را در یک سگمنت ویژه به نام \fBrelro\fR قرار می‌دهد\. پیونددهنده پویا پس از اتمام کار خود، سگمنت relro را فقط‌خواندنی می‌کند\. .IP به طور پیش‌فرض، \fBmold\fR یک سگمنت relro تولید می‌کند\. گزینه \fB\-z norelro\fR این ویژگی را غیرفعال می‌کند\. .TP \fB\-z sectionheader\fR, \fB\-z nosectionheader\fR گزینه \fB\-z nosectionheader\fR به پیونددهنده دستور می‌دهد از درج سرآیند بخش صرف‌نظر کند\. به طور پیش‌فرض، پیونددهنده از سرآیند بخش صرف‌نظر نمی‌کند\. .TP \fB\-z separate\-loadable\-segments\fR, \fB\-z separate\-code\fR, \fB\-z noseparate\-code\fR اگر یک صفحه حافظه شامل چندین سگمنت باشد، بیت‌های حفاظت از صفحه به گونه‌ای تنظیم می‌شوند که ویژگی‌های مورد نیاز (قابل نوشتن یا قابل اجرا) برای تمام سگمنت‌ها برآورده شوند\. این حالت معمولاً در مرز دو سگمنت با دو ویژگی متفاوت رخ می‌دهد\. .IP گزینه \fBseparate\-loadable\-segments\fR بین سگمنت‌هایی با ویژگی‌های متفاوت فاصله‌گذاری (padding) اضافه می‌کند تا آن‌ها یک صفحه مشترک نداشته باشند\. .IP گزینه \fBseparate\-code\fR فقط بین سگمنت‌های قابل اجرا و غیرقابل اجرا فاصله‌گذاری اضافه می‌کند\. این حالت پیش‌فرض است\. .IP گزینه \fBnoseparate\-code\fR هیچ فاصله‌گذاری بین سگمنت‌ها اضافه نمی‌کند\. .TP \fB\-z defs\fR, \fB\-z nodefs\fR نمادهای تعریف‌نشده را گزارش می‌دهد (حتی با \fB\-\-shared\fR)\. .TP \fB\-z shstk\fR پشته سایه (shadow stack) را با روشن کردن بیت \fBGNU_PROPERTY_X86_FEATURE_1_SHSTK\fR در بخش خروجی \fB\.note\.gnu\.property\fR اعمال می‌کند\. پشته سایه بخشی از فناوری اجرای جریان کنترل اینتل (CET) است که از Tiger Lake (سال ۲۰۲۰) در دسترس است\. .TP \fB\-z start_stop_visibility\fR=[ \fBhidden\fR | \fBprotected\fR ] اگر نام یک بخش به عنوان شناسه C معتبر باشد (یعنی با الگوی \fB/^[_a\-zA\-Z][_a\-zA\-Z0\-9]*$/\fR مطابقت داشته باشد)، پیونددهنده mold نمادهای \fB__start_SECNAME\fR و \fB__stop_SECNAME\fR را برای مشخص کردن ابتدا و انتهای بخش ایجاد می‌کند، که در آن \fBSECNAME\fR نام بخش است\. .IP می‌توانید با ارسال \fB\-z start_stop_visibility=protected\fR این نمادهای نشانه‌گذار را برای سایر ماژول‌های ELF قابل مشاهده کنید\. مقدار پیش‌فرض \fBhidden\fR است\. .TP \fB\-z text\fR, \fB\-z notext\fR, \fB\-z textoff\fR پیونددهنده \fBmold\fR به طور پیش‌فرض اگر بازمکانی‌های پویا در بخش‌های فقط‌خواندنی ایجاد شوند، خطا گزارش می‌کند\. اگر \fB\-z notext\fR یا \fB\-z textoff\fR داده شود، \fBmold\fR چنین بازمکانی‌های پویایی را بدون گزارش خطا ایجاد می‌کند\. گزینه \fB\-z text\fR رفتار پیش‌فرض را بازمی‌گرداند\. .TP \fB\-z max\-page\-size\fR=\fInumber\fR برخی از معماری‌های پردازنده از چندین اندازه صفحه حافظه پشتیبانی می‌کنند\. این گزینه حداکثر اندازه صفحه‌ای را مشخص می‌کند که یک باینری خروجی می‌تواند روی آن اجرا شود\. به طور کلی، باینری‌های ساخته‌شده برای اندازه صفحه بزرگ‌تر می‌توانند روی سیستمی با اندازه صفحه کوچک‌تر اجرا شوند، اما عکس آن ممکن نیست\. مقدار پیش‌فرض ۴ کیلوبایت برای i386، x86\-64 و RISC\-V، و ۶۴ کیلوبایت برای ARM64 است\. .TP \fB\-z nodefaultlib\fR باعث می‌شود بارگذار پویا مسیرهای جستجوی پیش‌فرض را نادیده بگیرد\. .TP \fB\-z nodelete\fR ماژول DSO را به عنوان غیرقابل حذف در زمان اجرا علامت‌گذاری می‌کند\. .TP \fB\-z nodlopen\fR ماژول DSO را برای dlopen(3) غیرقابل دسترس علامت‌گذاری می‌کند\. این گزینه به پیونددهنده امکان می‌دهد با بازنویسی دستورالعمل‌ها برای برخی اهداف، دسترسی به متغیرهای محلی ریسمان را بهینه‌سازی کند\. .TP \fB\-z nodump\fR ماژول DSO را برای dldump(3) غیرقابل دسترس علامت‌گذاری می‌کند\. .TP \fB\-z nocopyreloc\fR بازمکانی‌های رونوشت (copy relocations) ایجاد نمی‌کند\. .TP \fB\-z initfirst\fR ماژول DSO را علامت‌گذاری می‌کند تا ابتدا در زمان اجرا مقداردهی اولیه شود\. .TP \fB\-z interpose\fR شیء را علامت‌گذاری می‌کند تا بین همه DSOها به جز فایل اجرایی میانجیگری کند\. .TP \fB\-(\fR, \fB\-)\fR, \fB\-EL\fR, \fB\-O\fR\fInumber\fR, \fB\-\-dc\fR, \fB\-\-dp\fR, \fB\-\-end\-group\fR, \fB\-\-no\-add\-needed\fR, \fB\-\-no\-copy\-dt\-needed\-entries\fR, \fB\-\-nostdlib\fR, \fB\-\-rpath\-link=Ar dir\fR, \fB\-\-sort\-common\fR, \fB\-\-sort\-section\fR, \fB\-\-start\-group\fR, \fB\-\-warn\-constructors\fR, \fB\-\-warn\-once\fR, \fB\-\-fix\-cortex\-a53\-835769\fR, \fB\-\-fix\-cortex\-a53\-843419\fR, \fB\-z combreloc\fR, \fB\-z common\-page\-size\fR, \fB\-z nocombreloc\fR نادیده گرفته می‌شوند\. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .TP \fBMOLD_JOBS\fR اگر این متغیر روی \fB1\fR تنظیم شود، در هر لحظه فقط یک فرایند \fBmold\fR اجرا خواهد شد\. اگر یک فرایند جدید mold در حالی که فرایند دیگری فعال است شروع شود، فرایند جدید منتظر می‌ماند تا فرایند فعال قبل از شروع تکمیل شود\. .IP دلیل اصلی این متغیر محیطی، به حداقل رساندن اوج مصرف حافظه است\. از آنجا که mold برای کار با هم‌زمانی بالا طراحی شده است، اجرای همزمان چندین نمونه mold ممکن است مفید نباشد\. اگر N نمونه از mold را به طور همزمان اجرا کنید، ممکن است به N برابر زمان و N برابر حافظه نیاز داشته باشد\. از سوی دیگر، اجرای آن‌ها یکی پس از دیگری ممکن است همچنان N برابر بیشتر طول بکشد، اما اوج مصرف حافظه همانند اجرای یک نمونه منفرد خواهد بود\. .IP اگر سیستم ساخت شما چندین فرایند پیونددهنده را به طور همزمان فراخوانی می‌کند و برخی از آن‌ها اغلب به دلیل خطای کمبود حافظه (OOM) متوقف می‌شوند، می‌توانید این متغیر محیطی را روی \fB1\fR تنظیم کنید تا ببینید آیا مشکل OOM برطرف می‌شود یا خیر\. .IP در حال حاضر، هر مقداری به جز \fB1\fR در سکوت نادیده گرفته می‌شود\. .TP \fBMOLD_DEBUG\fR اگر این متغیر روی یک رشته غیرخالی تنظیم شود، \fBmold\fR گزینه‌های خط فرمان خود را در بخش \fB\.comment\fR فایل خروجی جاسازی می‌کند\. .TP \fBMOLD_REPRO\fR تنظیم این متغیر روی یک رشته غیرخالی همان اثر ارسال گزینه \fB\-\-repro\fR را دارد\. .SH "همچنین ببینید (SEE ALSO)" gold(1), ld(1), elf(5), ld\.so(8) .SH "نویسنده (AUTHOR)" Rui Ueyama \fIruiu@cs\.stanford\.edu\fR .SH "اشکالات (BUGS)" گزارش اشکالات را به \fIhttps://github\.com/rui314/mold/issues\fR ارسال کنید\.