.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "OBJCOPY 1" .TH OBJCOPY 1 2026-08-03 binutils-2.47 "GNU Development Tools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" objcopy \- رونوشت و تبدیل فایل‌های شیء .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" objcopy [\fB\-F\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR] [\fB\-I\fR \fIbfdname\fR|\fB\-\-input\-target=\fR\fIbfdname\fR] [\fB\-O\fR \fIbfdname\fR|\fB\-\-output\-target=\fR\fIbfdname\fR] [\fB\-B\fR \fIbfdarch\fR|\fB\-\-binary\-architecture=\fR\fIbfdarch\fR] [\fB\-S\fR|\fB\-\-strip\-all\fR] [\fB\-g\fR|\fB\-\-strip\-debug\fR] [\fB\-\-strip\-unneeded\fR] [\fB\-K\fR \fIsymbolname\fR|\fB\-\-keep\-symbol=\fR\fIsymbolname\fR] [\fB\-\-keep\-file\-symbols\fR] [\fB\-\-keep\-section\-symbols\fR] [\fB\-N\fR \fIsymbolname\fR|\fB\-\-strip\-symbol=\fR\fIsymbolname\fR] [\fB\-\-strip\-unneeded\-symbol=\fR\fIsymbolname\fR] [\fB\-G\fR \fIsymbolname\fR|\fB\-\-keep\-global\-symbol=\fR\fIsymbolname\fR] [\fB\-\-localize\-hidden\fR] [\fB\-L\fR \fIsymbolname\fR|\fB\-\-localize\-symbol=\fR\fIsymbolname\fR] [\fB\-\-globalize\-symbol=\fR\fIsymbolname\fR] [\fB\-\-globalize\-symbols=\fR\fIfilename\fR] [\fB\-W\fR \fIsymbolname\fR|\fB\-\-weaken\-symbol=\fR\fIsymbolname\fR] [\fB\-w\fR|\fB\-\-wildcard\fR] [\fB\-x\fR|\fB\-\-discard\-all\fR] [\fB\-X\fR|\fB\-\-discard\-locals\fR] [\fB\-b\fR \fIbyte\fR|\fB\-\-byte=\fR\fIbyte\fR] [\fB\-i\fR [\fIbreadth\fR]|\fB\-\-interleave\fR[=\fIbreadth\fR]] [\fB\-\-interleave\-width=\fR\fIwidth\fR] [\fB\-j\fR \fIsectionpattern\fR|\fB\-\-only\-section=\fR\fIsectionpattern\fR] [\fB\-R\fR \fIsectionpattern\fR|\fB\-\-remove\-section=\fR\fIsectionpattern\fR] [\fB\-\-keep\-section=\fR\fIsectionpattern\fR] [\fB\-\-remove\-relocations=\fR\fIsectionpattern\fR] [\fB\-\-strip\-section\-headers\fR] [\fB\-p\fR|\fB\-\-preserve\-dates\fR] [\fB\-D\fR|\fB\-\-enable\-deterministic\-archives\fR] [\fB\-U\fR|\fB\-\-disable\-deterministic\-archives\fR] [\fB\-\-debugging\fR] [\fB\-\-gap\-fill=\fR\fIval\fR] [\fB\-\-pad\-to=\fR\fIaddress\fR] [\fB\-\-set\-start=\fR\fIval\fR] [\fB\-\-adjust\-start=\fR\fIincr\fR] [\fB\-\-change\-addresses=\fR\fIincr\fR] [\fB\-\-change\-section\-address\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR] [\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR] [\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR] [\fB\-\-change\-warnings\fR] [\fB\-\-no\-change\-warnings\fR] [\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR=\fIflags\fR] [\fB\-\-set\-section\-alignment\fR \fIsectionpattern\fR=\fIalign\fR] [\fB\-\-add\-section\fR \fIsectionname\fR=\fIfilename\fR] [\fB\-\-dump\-section\fR \fIsectionname\fR=\fIfilename\fR] [\fB\-\-update\-section\fR \fIsectionname\fR=\fIfilename\fR] [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR[,\fIflags\fR]] [\fB\-\-long\-section\-names\fR {enable,disable,keep}] [\fB\-\-change\-leading\-char\fR] [\fB\-\-remove\-leading\-char\fR] [\fB\-\-reverse\-bytes=\fR\fInum\fR] [\fB\-\-srec\-len=\fR\fIival\fR] [\fB\-\-srec\-forceS3\fR] [\fB\-\-redefine\-sym\fR \fIold\fR=\fInew\fR] [\fB\-\-redefine\-syms=\fR\fIfilename\fR] [\fB\-\-weaken\fR] [\fB\-\-keep\-symbols=\fR\fIfilename\fR] [\fB\-\-strip\-symbols=\fR\fIfilename\fR] [\fB\-\-strip\-unneeded\-symbols=\fR\fIfilename\fR] [\fB\-\-keep\-global\-symbols=\fR\fIfilename\fR] [\fB\-\-localize\-symbols=\fR\fIfilename\fR] [\fB\-\-weaken\-symbols=\fR\fIfilename\fR] [\fB\-\-binary\-symbol\-prefix\fR\fIstring\fR] [\fB\-\-add\-symbol\fR \fIname\fR=[\fIsection\fR:]\fIvalue\fR[,\fIflags\fR]] [\fB\-\-alt\-machine\-code=\fR\fIindex\fR] [\fB\-\-prefix\-symbols=\fR\fIstring\fR] [\fB\-\-prefix\-sections=\fR\fIstring\fR] [\fB\-\-prefix\-alloc\-sections=\fR\fIstring\fR] [\fB\-\-add\-gnu\-debuglink=\fR\fIpath\-to\-file\fR] [\fB\-\-only\-keep\-debug\fR] [\fB\-\-strip\-dwo\fR] [\fB\-\-extract\-dwo\fR] [\fB\-\-extract\-symbol\fR] [\fB\-\-writable\-text\fR] [\fB\-\-readonly\-text\fR] [\fB\-\-pure\fR] [\fB\-\-impure\fR] [\fB\-\-file\-alignment=\fR\fInum\fR] [\fB\-\-heap=\fR\fIreserve\fR[,\fIcommit\fR]] [\fB\-\-image\-base=\fR\fIaddress\fR] [\fB\-\-section\-alignment=\fR\fInum\fR] [\fB\-\-stack=\fR\fIreserve\fR[,\fIcommit\fR]] [\fB\-\-subsystem=\fR\fIwhich\fR:\fImajor\fR.\fIminor\fR] [\fB\-\-compress\-debug\-sections\fR] [\fB\-\-decompress\-debug\-sections\fR] [\fB\-\-elf\-stt\-common=\fR\fIval\fR] [\fB\-\-merge\-notes\fR] [\fB\-\-no\-merge\-notes\fR] [\fB\-\-verilog\-data\-width=\fR\fIval\fR] [\fB\-v\fR|\fB\-\-verbose\fR] [\fB\-V\fR|\fB\-\-version\fR] [\fB\-\-help\fR] [\fB\-\-info\fR] \fIinfile\fR [\fIoutfile\fR].SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" ابزار \fBobjcopy\fR گنو محتویات یک فایل شیء (object file) را به فایل دیگری رونوشت می‌کند. \fBobjcopy\fR برای خواندن و نوشتن فایل‌های شیء از کتابخانهٔ GNU BFD استفاده می‌کند. این ابزار می‌تواند فایل شیء مقصد را در قالبی متفاوت از قالب فایل شیء مبدأ بنویسد. رفتار دقیق \fBobjcopy\fR توسط گزینه‌های خط فرمان کنترل می‌شود. توجه داشته باشید که \fBobjcopy\fR باید بتواند یک فایل کاملاً پیوندخورده را میان هر دو قالبی کپی کند. با این حال، کپی کردن یک فایل شیء با قابلیت بازنشانی (relocatable) میان هر دو قالبی ممکن است مطابق انتظار عمل نکند. .PP \&\fBobjcopy\fR برای انجام تبدیل‌های خود فایل‌های موقت ایجاد کرده و پس از اتمام کار آن‌ها را حذف می‌کند. \fBobjcopy\fR از BFD برای انجام تمامی کارهای تبدیل خود استفاده می‌کند؛ این ابزار به تمامی قالب‌های توصیف‌شده در BFD دسترسی دارد و بنابراین قادر است بیشتر قالب‌ها را بدون مشخص کردن صریح آنها شناسایی کند. .PP می‌توان از \fBobjcopy\fR برای تولید رکوردهای S (یا S\-records) با استفاده از یک هدف خروجی \fBsrec\fR استفاده کرد (برای نمونه، با استفاده از \fB\-O srec\fR). .PP می‌توان از \fBobjcopy\fR برای تولید یک فایل باینری خام با استفاده از یک هدف خروجی \fBbinary\fR استفاده کرد (برای نمونه، با استفاده از \fB\-O binary\fR). هنگامی که \&\fBobjcopy\fR یک فایل باینری خام تولید می‌کند، در اصل یک روگرفت حافظه (memory dump) از محتویات فایل شیء ورودی ایجاد خواهد کرد. تمامی نمادها و اطلاعات بازنشانی دور ریخته خواهند شد. این روگرفت حافظه از نشانی بارگذاری پایین‌ترین بخشی که در فایل خروجی کپی می‌شود، آغاز خواهد شد. .PP هنگام تولید یک S\-record یا یک فایل باینری خام، استفاده از \fB\-S\fR برای حذف بخش‌های حاوی اطلاعات اشکال‌زدایی می‌تواند مفید باشد. در برخی موارد نیز \&\fB\-R\fR برای حذف بخش‌هایی که حاوی اطلاعات غیرضروری برای فایل باینری هستند، مفید خواهد بود. .PP توجه: \fBobjcopy\fR قادر به تغییر ترتیب بایت‌ها (endianness) در فایل‌های ورودی خود نیست. اگر قالب ورودی دارای ترتیب بایت باشد (برخی قالب‌ها فاقد آن هستند)، \&\fBobjcopy\fR تنها می‌تواند ورودی‌ها را به قالب‌های فایلی کپی کند که دارای همان ترتیب بایت باشند یا فاقد ترتیب بایت باشند (مانند \fBsrec\fR). (با این حال، گزینهٔ \fB\-\-reverse\-bytes\fR را ببینید.) .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP \fIinfile\fR 4 .IX Item "infile" .PD 0 .IP \fIoutfile\fR 4 .IX Item "outfile" .PD به‌ترتیب، فایل‌های ورودی و خروجی. اگر \fIoutfile\fR را مشخص نکنید، \fBobjcopy\fR یک فایل موقت ایجاد کرده و نتیجه را با بازنویسی مخرب، با نام \fIinfile\fR جایگزین می‌کند. .IP "\fB\-I\fR \fIbfdname\fR" 4 .IX Item "-I bfdname" .PD 0 .IP \fB\-\-input\-target=\fR\fIbfdname\fR 4 .IX Item "--input-target=bfdname" .PD قالب شیء فایل مبدأ را به‌جای تلاش برای تشخیص خودکار آن، \fIbfdname\fR در نظر می‌گیرد. .IP "\fB\-O\fR \fIbfdname\fR" 4 .IX Item "-O bfdname" .PD 0 .IP \fB\-\-output\-target=\fR\fIbfdname\fR 4 .IX Item "--output-target=bfdname" .PD فایل خروجی را با استفاده از قالب شیء \fIbfdname\fR می‌نویسد. .IP "\fB\-F\fR \fIbfdname\fR" 4 .IX Item "-F bfdname" .PD 0 .IP \fB\-\-target=\fR\fIbfdname\fR 4 .IX Item "--target=bfdname" .PD از \fIbfdname\fR به‌عنوان قالب شیء برای هر دو فایل ورودی و خروجی استفاده می‌کند؛ یعنی صرفاً انتقال داده از مبدأ به مقصد بدون هیچ‌گونه تبدیل. .IP "\fB\-B\fR \fIbfdarch\fR" 4 .IX Item "-B bfdarch" .PD 0 .IP \fB\-\-binary\-architecture=\fR\fIbfdarch\fR 4 .IX Item "--binary-architecture=bfdarch" .PD هنگام تبدیل یک فایل ورودی بدون معماری به یک فایل شیء کاربرد دارد. در این حالت معماری خروجی می‌تواند روی \fIbfdarch\fR تنظیم شود. این گزینه اگر فایل ورودی دارای یک \fIbfdarch\fR شناخته‌شده باشد نادیده گرفته خواهد شد. می‌توانید با ارجاع به نمادهای ویژه‌ای که طی فرایند تبدیل ایجاد می‌شوند، در داخل یک برنامه به این داده‌های باینری دسترسی داشته باشید. این نمادها _binary_\fIobjfile\fR_start، _binary_\fIobjfile\fR_end و _binary_\fIobjfile\fR_size نامیده می‌شوند. برای نمونه می‌توانید یک فایل تصویری را به یک فایل شیء تبدیل کرده و سپس با استفاده از این نمادها در کد خود به آن دسترسی پیدا کنید. .IP "\fB\-j\fR \fIsectionpattern\fR" 4 .IX Item "-j sectionpattern" .PD 0 .IP \fB\-\-only\-section=\fR\fIsectionpattern\fR 4 .IX Item "--only-section=sectionpattern" .PD تنها بخش‌های مشخص‌شده را از فایل ورودی به فایل خروجی کپی می‌کند. این گزینه را می‌توان بیش از یک بار مشخص کرد. توجه داشته باشید که استفادهٔ نادرست از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند. نویسه‌های عامه‌نما (wildcard) در \fIsectionpattern\fR پذیرفته می‌شوند. .Sp اگر نخستین نویسه از \fIsectionpattern\fR علامت تعجب (!) باشد، بخش‌های منطبق کپی نخواهند شد، حتی اگر استفاده‌های قبلی از \fB\-\-only\-section\fR روی همان خط فرمان موجب کپی شدن آن بخش می‌شد. برای نمونه: .Sp .Vb 1 \& \-\-only\-section=.text.* \-\-only\-section=!.text.foo .Ve .Sp تمام بخش‌های منطبق با \*(Aq.text.*\*(Aq را کپی می‌کند، اما بخش \&\*(Aq.text.foo\*(Aq را کپی نخواهد کرد. .IP "\fB\-R\fR \fIsectionpattern\fR" 4 .IX Item "-R sectionpattern" .PD 0 .IP \fB\-\-remove\-section=\fR\fIsectionpattern\fR 4 .IX Item "--remove-section=sectionpattern" .PD هر بخشی را که با \fIsectionpattern\fR مطابقت داشته باشد از فایل خروجی حذف می‌کند. این گزینه را می‌توان بیش از یک بار مشخص کرد. توجه داشته باشید که استفادهٔ نادرست از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند. نویسه‌های عامه‌نما در \&\fIsectionpattern\fR پذیرفته می‌شوند. استفاده از هر دو گزینهٔ \fB\-j\fR و \fB\-R\fR به‌طور هم‌زمان منجر به رفتاری تعریف‌نشده می‌شود. .Sp اگر نخستین نویسه از \fIsectionpattern\fR علامت تعجب (!) باشد، بخش‌های منطبق حذف نخواهند شد، حتی اگر استفاده‌های قبلی از \fB\-\-remove\-section\fR روی همان خط فرمان در حالت عادی موجب حذف آن می‌شد. برای نمونه: .Sp .Vb 1 \& \-\-remove\-section=.text.* \-\-remove\-section=!.text.foo .Ve .Sp تمام بخش‌های منطبق با الگوی \*(Aq.text.*\*(Aq را حذف خواهد کرد، اما بخش \&\*(Aq.text.foo\*(Aq را حذف نمی‌کند. .IP \fB\-\-keep\-section=\fR\fIsectionpattern\fR 4 .IX Item "--keep-section=sectionpattern" هنگام حذف بخش‌ها از فایل خروجی، بخش‌هایی را که با \fIsectionpattern\fR مطابقت دارند نگه می‌دارد. .IP \fB\-\-remove\-relocations=\fR\fIsectionpattern\fR 4 .IX Item "--remove-relocations=sectionpattern" بازنشانی‌های غیرپویا (non\-dynamic relocations) را از فایل خروجی برای هر بخشی که با \fIsectionpattern\fR مطابقت داشته باشد حذف می‌کند. این گزینه را می‌توان بیش از یک بار مشخص کرد. توجه داشته باشید که استفادهٔ نادرست از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند؛ همچنین تلاش برای حذف یک بخش بازنشانی پویا مانند \fB.rela.plt\fR از یک فایل اجرایی یا کتابخانهٔ اشتراکی با دستور \fB\-\-remove\-relocations=.plt\fR کارساز نخواهد بود. نویسه‌های عامه‌نما در \fIsectionpattern\fR پذیرفته می‌شوند. برای نمونه: .Sp .Vb 1 \& \-\-remove\-relocations=.text.* .Ve .Sp بازنشانی‌های تمام بخش‌های منطبق با الگوی \*(Aq.text.*\*(Aq را حذف خواهد کرد. .Sp اگر نخستین نویسه از \fIsectionpattern\fR علامت تعجب (!) باشد، بازنشانی‌های بخش‌های منطبق حذف نخواهند شد، حتی اگر استفاده‌های قبلی از \fB\-\-remove\-relocations\fR روی همان خط فرمان در حالت عادی موجب حذف بازنشانی‌ها می‌شد. برای نمونه: .Sp .Vb 1 \& \-\-remove\-relocations=.text.* \-\-remove\-relocations=!.text.foo .Ve .Sp تمام بازنشانی‌های بخش‌های منطبق با الگوی \*(Aq.text.*\*(Aq را حذف می‌کند، اما بازنشانی‌های بخش \*(Aq.text.foo\*(Aq را حذف نخواهد کرد. .IP \fB\-\-strip\-section\-headers\fR 4 .IX Item "--strip-section-headers" سرایند بخش‌ها را حذف می‌کند. این گزینه مختص فایل‌های ELF است. به‌طور ضمنی گزینه‌های \fB\-\-strip\-all\fR و \fB\-\-merge\-notes\fR را نیز اعمال می‌کند. .IP \fB\-S\fR 4 .IX Item "-S" .PD 0 .IP \fB\-\-strip\-all\fR 4 .IX Item "--strip-all" .PD اطلاعات بازنشانی و نمادها را از فایل مبدأ کپی نمی‌کند. همچنین بخش‌های اشکال‌زدایی را حذف می‌کند..IP \fB\-g\fR 4 .IX Item "-g" .PD 0 .IP \fB\-\-strip\-debug\fR 4 .IX Item "--strip-debug" .PD نمادها یا بخش‌های اشکال‌زدایی (debugging) را از فایل مبدأ رونوشت نمی‌کند. .IP \fB\-\-strip\-unneeded\fR 4 .IX Item "--strip-unneeded" علاوه بر نمادها و بخش‌های اشکال‌زدایی حذف‌شده توسط \&\fB\-\-strip\-debug\fR، تمام نمادهایی را که برای پردازش بازنشانی (relocation) مورد نیاز نیستند حذف می‌کند. .IP "\fB\-K\fR \fIsymbolname\fR" 4 .IX Item "-K symbolname" .PD 0 .IP \fB\-\-keep\-symbol=\fR\fIsymbolname\fR 4 .IX Item "--keep-symbol=symbolname" .PD هنگام پیراستن نمادها، نماد \fIsymbolname\fR را حتی اگر در حالت عادی پیراسته می‌شد، نگه می‌دارد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP "\fB\-N\fR \fIsymbolname\fR" 4 .IX Item "-N symbolname" .PD 0 .IP \fB\-\-strip\-symbol=\fR\fIsymbolname\fR 4 .IX Item "--strip-symbol=symbolname" .PD نماد \fIsymbolname\fR را از فایل مبدأ رونوشت نمی‌کند. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-strip\-unneeded\-symbol=\fR\fIsymbolname\fR 4 .IX Item "--strip-unneeded-symbol=symbolname" نماد \fIsymbolname\fR را از فایل مبدأ رونوشت نمی‌کند، مگر آن‌که برای یک بازنشانی (relocation) مورد نیاز باشد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP "\fB\-G\fR \fIsymbolname\fR" 4 .IX Item "-G symbolname" .PD 0 .IP \fB\-\-keep\-global\-symbol=\fR\fIsymbolname\fR 4 .IX Item "--keep-global-symbol=symbolname" .PD تنها نماد \fIsymbolname\fR را سراسری نگه می‌دارد. تمام نمادهای دیگر را برای فایل محلی می‌کند تا از بیرون قابل مشاهده نباشند. این گزینه می‌تواند بیش از یک بار مشخص شود. نکته: این گزینه را نمی‌توان همراه با گزینه‌های \fB\-\-globalize\-symbol\fR یا \&\fB\-\-globalize\-symbols\fR استفاده کرد. .IP \fB\-\-localize\-hidden\fR 4 .IX Item "--localize-hidden" در یک شیء ELF، تمام نمادهایی را که دارای دید پنهان (hidden) یا داخلی (internal) هستند، به عنوان محلی علامت‌گذاری می‌کند. این گزینه علاوه‌بر گزینه‌های محلی‌سازی ویژه نماد مانند \fB\-L\fR اعمال می‌شود. .IP "\fB\-L\fR \fIsymbolname\fR" 4 .IX Item "-L symbolname" .PD 0 .IP \fB\-\-localize\-symbol=\fR\fIsymbolname\fR 4 .IX Item "--localize-symbol=symbolname" .PD یک نماد سراسری یا ضعیف با نام \fIsymbolname\fR را به یک نماد محلی تبدیل می‌کند تا از بیرون قابل مشاهده نباشد. این گزینه می‌تواند بیش از یک بار مشخص شود. نکته \- نمادهای منحصربه‌فرد (unique symbols) تبدیل نمی‌شوند. .IP "\fB\-W\fR \fIsymbolname\fR" 4 .IX Item "-W symbolname" .PD 0 .IP \fB\-\-weaken\-symbol=\fR\fIsymbolname\fR 4 .IX Item "--weaken-symbol=symbolname" .PD نماد \fIsymbolname\fR را ضعیف (weak) می‌کند. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-binary\-symbol\-prefix=\fR\fIstring\fR 4 .IX Item "--binary-symbol-prefix=string" هنگامی که همراه با \fB\-\-input\-target=binary\fR استفاده شود، \fIstring\fR را به عنوان نام پایه نمادهای ایجادشده برای فایل ورودی تنظیم می‌کند. این نمادها عبارتند از: .Sp .Vb 3 \& _start \& _end \& _size .Ve .Sp به‌طور پیش‌فرض، گرداننده ورودی باینری، نام پیشوند نماد را از نسخه تغییریافته نام فایل ورودی و پیشوند _binary مشتق می‌کند. این گزینه امکان مشخص کردن صریح آن را فراهم می‌سازد. .IP \fB\-\-globalize\-symbol=\fR\fIsymbolname\fR 4 .IX Item "--globalize-symbol=symbolname" به نماد \fIsymbolname\fR حوزه سراسری می‌دهد تا در بیرون از فایلی که در آن تعریف شده است قابل مشاهده باشد. این گزینه می‌تواند بیش از یک بار مشخص شود. نکته: این گزینه را نمی‌توان همراه با گزینه‌های \fB\-G\fR یا \fB\-\-keep\-global\-symbol\fR استفاده کرد. .IP \fB\-w\fR 4 .IX Item "-w" .PD 0 .IP \fB\-\-wildcard\fR 4 .IX Item "--wildcard" .PD امکان استفاده از عبارات باقاعده (regular expressions) را در \fIsymbolname\fRهای به‌کاررفته در سایر گزینه‌های خط فرمان فراهم می‌کند. عملگرهای علامت سؤال (?)، ستاره (*)، ممیز وارونه (\e) و قلاب‌ها ([]) می‌توانند در هر کجای نام نماد استفاده شوند. اگر نخستین نویسه از نام نماد علامت تعجب (!) باشد، مفهوم گزینه برای آن نماد معکوس می‌شود. برای نمونه: .Sp .Vb 1 \& \-w \-W !foo \-W fo* .Ve .Sp باعث می‌شود objcopy تمام نمادهایی را که با "fo" شروع می‌شوند، به جز نماد "foo"، ضعیف کند. .IP \fB\-x\fR 4 .IX Item "-x" .PD 0 .IP \fB\-\-discard\-all\fR 4 .IX Item "--discard-all" .PD نمادهای غیرسراسری را از فایل مبدأ رونوشت نمی‌کند. .IP \fB\-X\fR 4 .IX Item "-X" .PD 0 .IP \fB\-\-discard\-locals\fR 4 .IX Item "--discard-locals" .PD نمادهای محلی تولیدشده توسط کامپایلر را رونوشت نمی‌کند. (این نمادها معمولاً با \fBL\fR یا \fB.\fR آغاز می‌شوند.) .IP "\fB\-b\fR \fIbyte\fR" 4 .IX Item "-b byte" .PD 0 .IP \fB\-\-byte=\fR\fIbyte\fR 4 .IX Item "--byte=byte" .PD اگر درهم‌تنیدگی از طریق گزینه \fB\-\-interleave\fR فعال شده باشد، محدوده بایت‌های نگه‌داشتنی را از بایت \fIbyte\fRام آغاز می‌کند. \&\fIbyte\fR می‌تواند در محدوده 0 تا \fIbreadth\fR\-1 باشد، که در آن \&\fIbreadth\fR مقداری است که توسط گزینه \fB\-\-interleave\fR تعیین شده است. .IP "\fB\-i [\fR\fIbreadth\fR\fB]\fR" 4 .IX Item "-i [breadth]" .PD 0 .IP \fB\-\-interleave[=\fR\fIbreadth\fR\fB]\fR 4 .IX Item "--interleave[=breadth]" .PD فقط یک محدوده از هر \fIbreadth\fR بایت را رونوشت می‌کند. (داده‌های سرآیند تحت تأثیر قرار نمی‌گیرند). با استفاده از گزینه \fB\-\-byte\fR مشخص کنید کدام بایت در محدوده، آغازگر رونوشت باشد. پهنای این محدوده را با گزینه \&\fB\-\-interleave\-width\fR انتخاب کنید. .Sp این گزینه برای ساخت فایل‌ها جهت برنامه‌ریزی ROM سودمند است. معمولاً با یک هدف خروجی \f(CW\*(C`srec\*(C'\fR استفاده می‌شود. توجه داشته باشید که اگر گزینه \&\fB\-\-byte\fR را نیز تعیین نکنید، \&\fBobjcopy\fR خطا می‌گیرد. .Sp پهنای پیش‌فرض درهم‌تنیدگی 4 است، بنابراین با تنظیم \fB\-\-byte\fR روی 0، \&\fBobjcopy\fR نخستین بایت از هر چهار بایت را از ورودی به خروجی رونوشت می‌کند. .IP \fB\-\-interleave\-width=\fR\fIwidth\fR 4 .IX Item "--interleave-width=width" هنگامی که همراه با گزینه \fB\-\-interleave\fR استفاده شود، هر بار \fIwidth\fR بایت را رونوشت می‌کند. شروع محدوده بایت‌های رونوشت‌شونده با گزینه \fB\-\-byte\fR و وسعت محدوده با گزینه \fB\-\-interleave\fR تعیین می‌شود. .Sp مقدار پیش‌فرض این گزینه 1 است. مجموع مقدار \fIwidth\fR به علاوه مقدار \fIbyte\fR تنظیم‌شده توسط گزینه \fB\-\-byte\fR نباید از مقدار پهنای درهم‌تنیدگی تعیین‌شده توسط گزینه \fB\-\-interleave\fR فراتر رود. .Sp این گزینه می‌تواند برای ایجاد ایمیج‌ها برای دو حافظه فلش ۱۶ بیتی درهم‌تنیده در یک گذرگاه ۳۲ بیتی، با ارسال \fB\-b 0 \-i 4 \-\-interleave\-width=2\fR و \fB\-b 2 \-i 4 \-\-interleave\-width=2\fR به دو دستور \fBobjcopy\fR استفاده شود. اگر ورودی \*(Aq12345678\*(Aq باشد، خروجی‌ها به ترتیب \&\*(Aq1256\*(Aq و \*(Aq3478\*(Aq خواهند بود. .IP \fB\-p\fR 4 .IX Item "-p" .PD 0 .IP \fB\-\-preserve\-dates\fR 4 .IX Item "--preserve-dates" .PD تاریخ‌های دسترسی و اصلاح فایل خروجی را با تاریخ‌های فایل ورودی یکسان قرار می‌دهد. .Sp این گزینه همچنین تاریخی را که در سرآیند فایل با ساختار PE ذخیره شده است رونوشت می‌کند، مگر این‌که متغیر محیطی SOURCE_DATE_EPOCH تعریف شده باشد. در صورت تعریف، این متغیر به عنوان تاریخ ذخیره‌شده در سرآیند استفاده می‌شود که بیانگر تعداد ثانیه‌های گذشته از مبدأ یونیکس (Unix epoch) است. .IP \fB\-D\fR 4 .IX Item "-D" .PD 0 .IP \fB\-\-enable\-deterministic\-archives\fR 4 .IX Item "--enable-deterministic-archives".PD عملکرد در حالت \fIdeterministic\fR (معین). هنگام کپی کردن اعضای آرشیو و نوشتن نمایهٔ آرشیو، از مقدار صفر برای UIDها، GIDها و برچسب‌های زمانی استفاده می‌کند و حالت‌های فایل یکسانی را برای تمام فایل‌ها به کار می‌برد. .Sp اگر \fIbinutils\fR با \&\fB\-\-enable\-deterministic\-archives\fR پیکربندی شده باشد، این حالت به صورت پیش‌فرض فعال است. می‌توان آن را با گزینهٔ \fB\-U\fR در زیر غیرفعال کرد. .IP \fB\-U\fR 4 .IX Item "-U" .PD 0 .IP \fB\-\-disable\-deterministic\-archives\fR 4 .IX Item "--disable-deterministic-archives" .PD در حالت \fIdeterministic\fR (معین) کار \fIنمی‌کند\fR. این برعکس گزینهٔ \fB\-D\fR در بالا است: هنگام کپی کردن اعضای آرشیو و نوشتن نمایهٔ آرشیو، از مقادیر واقعی UID، GID، برچسب زمانی و حالت فایل آن‌ها استفاده می‌کند. .Sp این حالت پیش‌فرض است، مگر اینکه \fIbinutils\fR با \&\fB\-\-enable\-deterministic\-archives\fR پیکربندی شده باشد. .IP \fB\-\-debugging\fR 4 .IX Item "--debugging" در صورت امکان، اطلاعات اشکال‌زدایی (debugging) را تبدیل می‌کند. این حالت پیش‌فرض نیست زیرا تنها قالب‌های اشکال‌زدایی خاصی پشتیبانی می‌شوند و فرآیند تبدیل می‌تواند زمان‌بر باشد. .IP "\fB\-\-gap\-fill\fR \fIval\fR" 4 .IX Item "--gap-fill val" شکاف‌های بین بخش‌ها (sections) را با \fIval\fR پر می‌کند. این عملیات روی \fIload address\fR (آدرس بارگذاری یا LMA) بخش‌ها اعمال می‌شود. این کار با افزایش اندازهٔ بخشی که آدرس پایین‌تری دارد و پر کردن فضای اضافهٔ ایجادشده با \fIval\fR انجام می‌شود. .IP "\fB\-\-pad\-to\fR \fIaddress\fR" 4 .IX Item "--pad-to address" فایل خروجی را تا آدرس بارگذاری \fIaddress\fR پد (pad) می‌کند. این کار با افزایش اندازهٔ آخرین بخش انجام می‌شود. فضای اضافی با مقدار مشخص‌شده توسط \fB\-\-gap\-fill\fR (پیش‌فرض صفر) پر می‌شود. .IP "\fB\-\-set\-start\fR \fIval\fR" 4 .IX Item "--set-start val" آدرس شروع (که به عنوان آدرس ورودی یا entry address نیز شناخته می‌شود) فایل جدید را روی \fIval\fR تنظیم می‌کند. همهٔ قالب‌های فایل شیء (object file) از تنظیم آدرس شروع پشتیبانی نمی‌کنند. .IP "\fB\-\-change\-start\fR \fIincr\fR" 4 .IX Item "--change-start incr" .PD 0 .IP "\fB\-\-adjust\-start\fR \fIincr\fR" 4 .IX Item "--adjust-start incr" .PD آدرس شروع (که به عنوان آدرس ورودی نیز شناخته می‌شود) را با افزودن \&\fIincr\fR تغییر می‌دهد. همهٔ قالب‌های فایل شیء از تنظیم آدرس شروع پشتیبانی نمی‌کنند. .IP "\fB\-\-change\-addresses\fR \fIincr\fR" 4 .IX Item "--change-addresses incr" .PD 0 .IP "\fB\-\-adjust\-vma\fR \fIincr\fR" 4 .IX Item "--adjust-vma incr" .PD آدرس‌های VMA و LMA تمام بخش‌ها و همچنین آدرس شروع را با افزودن \fIincr\fR تغییر می‌دهد. برخی از قالب‌های فایل شیء اجازهٔ تغییر دلخواه آدرس بخش‌ها را نمی‌دهند. توجه داشته باشید که این گزینه بخش‌ها را بازمکان‌یابی (relocate) نمی‌کند؛ اگر برنامه انتظار داشته باشد که بخش‌ها در یک آدرس خاص بارگذاری شوند و از این گزینه برای تغییر بخش‌ها به گونه‌ای که در آدرس متفاوتی بارگذاری شوند استفاده شود، ممکن است برنامه با شکست مواجه شود. .IP "\fB\-\-change\-section\-address\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4 .IX Item "--change-section-address sectionpattern{=,+,-}val" .PD 0 .IP "\fB\-\-adjust\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4 .IX Item "--adjust-section-vma sectionpattern{=,+,-}val" .PD هر دو آدرس VMA و LMA هر بخشی را که با \fIsectionpattern\fR مطابقت دارد تنظیم کرده یا تغییر می‌دهد. اگر از \fB=\fR استفاده شود، آدرس بخش روی \fIval\fR تنظیم می‌شود. در غیر این صورت، \fIval\fR به آدرس بخش اضافه یا از آن کم می‌شود. توضیحات ذکرشده در \&\fB\-\-change\-addresses\fR در بالا را ببینید. اگر \fIsectionpattern\fR با هیچ بخشی در فایل ورودی مطابقت نداشته باشد، یک هشدار صادر خواهد شد، مگر اینکه از \&\fB\-\-no\-change\-warnings\fR استفاده شود. .IP "\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4 .IX Item "--change-section-lma sectionpattern{=,+,-}val" آدرس LMA هر بخشی را که با \&\fIsectionpattern\fR مطابقت دارد تنظیم کرده یا تغییر می‌دهد. آدرس LMA آدرسی است که بخش در زمان بارگذاری برنامه در حافظه بارگذاری خواهد شد. به طور معمول این آدرس با آدرس VMA (که آدرس بخش در زمان اجرای برنامه است) یکسان است، اما در برخی سیستم‌ها، به ویژه سیستم‌هایی که برنامه در ROM نگهداری می‌شود، این دو می‌توانند متفاوت باشند. اگر از \fB=\fR استفاده شود، آدرس بخش روی \fIval\fR تنظیم می‌شود. در غیر این صورت، \&\fIval\fR به آدرس بخش اضافه یا از آن کم می‌شود. توضیحات ذکرشده در \fB\-\-change\-addresses\fR در بالا را ببینید. اگر \&\fIsectionpattern\fR با هیچ بخشی در فایل ورودی مطابقت نداشته باشد، یک هشدار صادر خواهد شد، مگر اینکه از \fB\-\-no\-change\-warnings\fR استفاده شود. .IP "\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4 .IX Item "--change-section-vma sectionpattern{=,+,-}val" آدرس VMA هر بخشی را که با \&\fIsectionpattern\fR مطابقت دارد تنظیم کرده یا تغییر می‌دهد. آدرس VMA آدرسی است که پس از شروع اجرای برنامه، بخش در آنجا قرار خواهد گرفت. به طور معمول این آدرس با آدرس LMA (که آدرس بارگذاری بخش در حافظه است) یکسان است، اما در برخی سیستم‌ها، به ویژه سیستم‌هایی که برنامه در ROM نگهداری می‌شود، این دو می‌توانند متفاوت باشند. اگر از \fB=\fR استفاده شود، آدرس بخش روی \&\fIval\fR تنظیم می‌شود. در غیر این صورت، \fIval\fR به آدرس بخش اضافه یا از آن کم می‌شود. توضیحات ذکرشده در \fB\-\-change\-addresses\fR در بالا را ببینید. اگر \fIsectionpattern\fR با هیچ بخشی در فایل ورودی مطابقت نداشته باشد، یک هشدار صادر خواهد شد، مگر اینکه از \&\fB\-\-no\-change\-warnings\fR استفاده شود. .Sp نکته \- تغییر VMA بخش‌ها در یک باینری کاملاً پیوندخورده (fully linked) می‌تواند خطرناک باشد، زیرا ممکن است کدهایی وجود داشته باشند که انتظار دارند بخش‌ها در آدرس قدیمی خود قرار داشته باشند. .IP \fB\-\-change\-warnings\fR 4 .IX Item "--change-warnings" .PD 0 .IP \fB\-\-adjust\-warnings\fR 4 .IX Item "--adjust-warnings" .PD اگر از \fB\-\-change\-section\-address\fR یا \fB\-\-change\-section\-lma\fR یا \&\fB\-\-change\-section\-vma\fR استفاده شود و الگوی بخش با هیچ بخشی مطابقت نداشته باشد، یک هشدار صادر می‌کند. این حالت پیش‌فرض است. .IP \fB\-\-no\-change\-warnings\fR 4 .IX Item "--no-change-warnings" .PD 0 .IP \fB\-\-no\-adjust\-warnings\fR 4 .IX Item "--no-adjust-warnings" .PD اگر از \fB\-\-change\-section\-address\fR یا \&\fB\-\-adjust\-section\-lma\fR یا \fB\-\-adjust\-section\-vma\fR استفاده شود، حتی اگر الگوی بخش با هیچ بخشی مطابقت نداشته باشد، هشداری صادر نمی‌کند. .IP "\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR\fB=\fR\fIflags\fR" 4 .IX Item "--set-section-flags sectionpattern=flags" پرچم‌های هر بخشی را که با \fIsectionpattern\fR مطابقت دارد تنظیم می‌کند. آرگومان \&\fIflags\fR رشته‌ای از نام پرچم‌ها است که با کاما از هم جدا شده‌اند. نام‌های شناخته‌شده عبارتند از \fBalloc\fR، \fBcontents\fR، \fBload\fR، \&\fBnoload\fR، \fBreadonly\fR، \fBcode\fR، \fBdata\fR، \fBrom\fR، \&\fBexclude\fR، \fBshare\fR، \fBdebug\fR و \fBlarge\fR. می‌توانید پرچم \fBcontents\fR را برای بخشی که فاقد محتوا است تنظیم کنید، اما پاک کردن پرچم \fBcontents\fR از بخشی که دارای محتوا است معنایی ندارد \- به جای این کار صرفاً بخش را حذف کنید. همهٔ پرچم‌ها برای همهٔ قالب‌های فایل شیء معنادار نیستند. به ویژه پرچم \&\fBshare\fR تنها برای فایل‌های با قالب COFF معنادار است و برای فایل‌های با قالب ELF کاربردی ندارد. پرچم ویژهٔ ELF x86\-64 با نام \fBlarge\fR متناظر با SHF_X86_64_LARGE است. .IP "\fB\-\-set\-section\-alignment\fR \fIsectionpattern\fR\fB=\fR\fIalign\fR" 4 .IX Item "--set-section-alignment sectionpattern=align" ترازسازی (alignment) را برای هر بخشی که با \fIsectionpattern\fR مطابقت دارد تنظیم می‌کند. \&\fIalign\fR تراز را بر حسب بایت مشخص می‌کند و باید توانی از دو باشد، یعنی ۱، ۲، ۴، ۸ و غیره. .Sp نکته \- تنظیم ترازسازی یک بخش به طور خودکار آدرس‌های LMA یا VMA آن را تراز نمی‌کند. اگر نیاز به تغییر آن‌ها نیز باشد، باید از گزینه‌های \&\fB\-\-change\-section\-lma\fR و/یا \fB\-\-change\-section\-vma\fR استفاده شود. همچنین توجه داشته باشید که تغییر VMAها می‌تواند در باینری‌های کاملاً پیوندخورده باعث بروز مشکل شود، جایی که ممکن است کدهایی انتظار داشته باشند محتویات بخش‌ها در آدرس قدیمی‌شان قرار داشته باشند. .IP "\fB\-\-add\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4 .IX Item "--add-section sectionname=filename" هنگام کپی کردن فایل، یک بخش جدید به نام \fIsectionname\fR اضافه می‌کند. محتویات بخش جدید از فایل \fIfilename\fR گرفته می‌شود. اندازهٔ این بخش برابر با اندازهٔ فایل خواهد بود. این گزینه تنها روی قالب‌های فایلی کار می‌کند که می‌توانند از بخش‌هایی با نام‌های دلخواه پشتیبانی کنند. نکته \- ممکن است لازم باشد برای تنظیم ویژگی‌های بخش تازه‌ایجادشده از گزینهٔ \fB\-\-set\-section\-flags\fR استفاده شود. .IP "\fB\-\-dump\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4 .IX Item "--dump-section sectionname=filename" محتویات بخش با نام \fIsectionname\fR را درون فایل \&\fIfilename\fR قرار می‌دهد و محتویاتی را که پیش‌تر در آنجا بوده بازنویسی می‌کند. این گزینه برعکس \fB\-\-add\-section\fR است. این گزینه مشابه گزینهٔ \fB\-\-only\-section\fR است، با این تفاوت که فایل قالب‌بندی‌شده‌ای ایجاد نمی‌کند، بلکه محتویات را بدون اعمال هیچ‌گونه بازمکان‌یابی، صرفاً به صورت داده‌های باینری خام تخلیه (dump) می‌کند. این گزینه را می‌توان بیش از یک بار مشخص کرد. .IP "\fB\-\-update\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4 .IX Item "--update-section sectionname=filename" محتویات موجود در بخش با نام \fIsectionname\fR را با محتویات فایل \&\fIfilename\fR جایگزین می‌کند. اندازهٔ بخش متناسب با اندازهٔ فایل تنظیم خواهد شد. پرچم‌های بخش برای \&\fIsectionname\fR بدون تغییر باقی می‌مانند. برای فایل‌های با قالب ELF، نگاشت بخش به قطعه (segment) نیز بدون تغییر باقی خواهد ماند؛ چیزی که با استفاده از \fB\-\-remove\-section\fR و سپس \&\fB\-\-add\-section\fR ممکن نیست. این گزینه را می‌توان بیش از یک بار مشخص کرد. .Sp نکته \- امکان استفاده از \fB\-\-rename\-section\fR و \&\fB\-\-update\-section\fR برای به‌روزرسانی و تغییر نام هم‌زمان یک بخش از طریق یک خط فرمان وجود دارد. در این حالت، نام بخش اصلی را به \&\fB\-\-update\-section\fR و نام‌های اصلی و جدید بخش را به \&\fB\-\-rename\-section\fR ارسال کنید..IP "\fB\-\-add\-symbol\fR \fIname\fR\fB=[\fR\fIsection\fR\fB:]\fR\fIvalue\fR\fB[,\fR\fIflags\fR\fB]\fR" 4 .IX Item "--add-symbol name=[section:]value[,flags]" هنگام رونوشت فایل، یک نماد جدید با نام \fIname\fR اضافه می‌کند. این گزینه می‌تواند چندین بار مشخص شود. اگر \fIsection\fR مشخص شده باشد، نماد مرتبط با آن بخش و نسبت به آن تعریف می‌شود؛ در غیر این صورت یک نماد ABS خواهد بود. تعیین یک بخش تعریف‌نشده منجر به خطای مهلک خواهد شد. هیچ بررسی روی مقدار انجام نمی‌شود و دقیقاً همان‌گونه که مشخص شده پذیرفته می‌شود. پرچم‌های نماد را می‌توان مشخص کرد، اما همه پرچم‌ها برای تمامی قالب‌های فایل شیء معنادار نخواهند بود. به‌طور پیش‌فرض، نماد سراسری (global) خواهد بود. پرچم ویژه \&\*(Aqbefore=\fIothersym\fR\*(Aq نماد جدید را پیش از \fIothersym\fR مشخص‌شده درج می‌کند، در غیر این صورت نماد(ها) به همان ترتیبی که ظاهر می‌شوند در انتهای جدول نمادها اضافه خواهند شد. .IP "\fB\-\-rename\-section\fR \fIoldname\fR\fB=\fR\fInewname\fR\fB[,\fR\fIflags\fR\fB]\fR" 4 .IX Item "--rename-section oldname=newname[,flags]" نام یک بخش را از \fIoldname\fR به \fInewname\fR تغییر می‌دهد، و در حین فرآیند، به‌صورت اختیاری پرچم‌های بخش را به \fIflags\fR تغییر می‌دهد. این کار نسبت به استفاده از اسکریپت پیونددهنده (linker script) برای تغییر نام، این مزیت را دارد که خروجی به صورت یک فایل شیء باقی می‌ماند و به یک فایل اجرایی پیوندیافته تبدیل نمی‌شود. این گزینه همان مجموعه پرچم‌های گزینه \&\fB\-\-set\-section\-flags\fR را می‌پذیرد. .Sp این گزینه به ویژه زمانی مفید است که قالب ورودی دودویی (binary) باشد، زیرا در این حالت همیشه بخشی با نام .data ایجاد می‌شود. به عنوان مثال، اگر در عوض می‌خواستید بخشی با نام .rodata حاوی داده‌های دودویی بسازید، می‌توانید از خط فرمان زیر برای دستیابی به آن استفاده کنید: .Sp .Vb 3 \& objcopy \-I binary \-O \-B \e \& \-\-rename\-section .data=.rodata,alloc,load,readonly,data,contents \e \& .Ve .IP "\fB\-\-long\-section\-names {enable,disable,keep}\fR" 4 .IX Item "--long-section-names {enable,disable,keep}" مدیریت نام‌های طولانی بخش‌ها را هنگام پردازش قالب‌های شیء \f(CW\*(C`COFF\*(C'\fR و \f(CW\*(C`PE\-COFF\*(C'\fR کنترل می‌کند. رفتار پیش‌فرض، یعنی \fBkeep\fR، حفظ نام‌های طولانی بخش‌ها در صورت وجود در فایل ورودی است. گزینه‌های \fBenable\fR و \fBdisable\fR استفاده از نام‌های طولانی بخش‌ها را در شیء خروجی به‌صورت اجباری فعال یا غیرفعال می‌کنند؛ هنگامی که \fBdisable\fR فعال باشد، هر نام بخش طولانی در شیء ورودی کوتاه (بُرش‌خورده) خواهد شد. گزینه \fBenable\fR تنها در صورتی نام‌های بخش طولانی را صادر می‌کند که در ورودی‌ها وجود داشته باشند؛ این عملکرد تا حد زیادی مشابه \fBkeep\fR است، اما مشخص نشده که آیا گزینه \fBenable\fR ممکن است ایجاد یک جدول رشته خالی را در فایل خروجی تحمیل کند یا خیر. .IP \fB\-\-change\-leading\-char\fR 4 .IX Item "--change-leading-char" برخی از قالب‌های فایل شیء از نویسه‌های ویژه‌ای در آغاز نمادها استفاده می‌کنند. رایج‌ترین نویسه از این دست زیرخط (underscore) است که کامپایلرها اغلب قبل از هر نماد اضافه می‌کنند. این گزینه به \fBobjcopy\fR می‌گوید هنگام تبدیل بین قالب‌های فایل شیء، نویسه آغازین هر نماد را تغییر دهد. اگر قالب‌های فایل شیء از نویسه آغازین یکسانی استفاده کنند، این گزینه هیچ اثری ندارد. در غیر این صورت، برحسب نیاز نویسه‌ای را اضافه، حذف یا جایگزین می‌کند. .IP \fB\-\-remove\-leading\-char\fR 4 .IX Item "--remove-leading-char" اگر نویسه نخست یک نماد سراسری، نویسه آغازین ویژه نمادی باشد که قالب فایل شیء از آن استفاده می‌کند، آن نویسه را حذف می‌کند. متداول‌ترین نویسه آغازین نماد، زیرخط است. این گزینه زیرخط آغازین را از تمام نمادهای سراسری حذف می‌کند. این قابلیت در مواردی مفید است که قصد دارید اشیایی از قالب‌های فایلی مختلف را با قراردادهای نام‌گذاری متفاوت برای نمادها به یکدیگر پیوند دهید. این گزینه با \&\fB\-\-change\-leading\-char\fR تفاوت دارد، زیرا صرف‌نظر از قالب فایل شیء خروجی، در صورت لزوم همواره نام نماد را تغییر می‌دهد. .IP \fB\-\-reverse\-bytes=\fR\fInum\fR 4 .IX Item "--reverse-bytes=num" بایت‌ها را در بخشی با محتویات خروجی معکوس می‌کند. طول بخش باید بر مقدار مشخص‌شده بخش‌پذیر باشد تا تعویض بایت‌ها امکان‌پذیر باشد. معکوس‌سازی قبل از انجام درهم‌تنیدگی (interleaving) صورت می‌گیرد. .Sp این گزینه معمولاً در ایجاد ایمیج‌های ROM برای سیستم‌های مقصد دارای مشکل کاربرد دارد. به عنوان مثال، در برخی از بردهای مقصد، کلمات ۳۲ بیتی که از ROMهای ۸ بیتی خوانده می‌شوند، بدون در نظر گرفتن ترتیب بایت پردازنده، با ترتیب بایت little\-endian سرهم‌بندی می‌شوند. بسته به مدل برنامه‌نویسی، ممکن است نیاز به اصلاح ترتیب بایت (endianness) در ROM باشد. .Sp یک فایل ساده را با بخشی شامل هشت بایت زیر در نظر بگیرید: \f(CW12345678\fR. .Sp با استفاده از \fB\-\-reverse\-bytes=2\fR برای مثال فوق، بایت‌ها در فایل خروجی به صورت \f(CW21436587\fR مرتب خواهند شد. .Sp با استفاده از \fB\-\-reverse\-bytes=4\fR برای مثال فوق، بایت‌ها در فایل خروجی به صورت \f(CW43218765\fR مرتب خواهند شد. .Sp با استفاده از \fB\-\-reverse\-bytes=2\fR برای مثال فوق، و به دنبال آن اجرای \&\fB\-\-reverse\-bytes=4\fR روی فایل خروجی، بایت‌ها در فایل خروجی دوم به صورت \f(CW34127856\fR مرتب خواهند شد. .IP \fB\-\-srec\-len=\fR\fIival\fR 4 .IX Item "--srec-len=ival" تنها برای خروجی srec معنادار است. حداکثر طول رکوردهای S (Srecords) تولیدی را بر روی \fIival\fR تنظیم می‌کند. این طول شامل هر سه فیلد نشانی، داده و crc می‌شود. .IP \fB\-\-srec\-forceS3\fR 4 .IX Item "--srec-forceS3" تنها برای خروجی srec معنادار است. از تولید رکوردهای S1/S2 جلوگیری کرده و خروجی را منحصراً در قالب رکوردهای S3 ایجاد می‌کند. .IP "\fB\-\-redefine\-sym\fR \fIold\fR\fB=\fR\fInew\fR" 4 .IX Item "--redefine-sym old=new" نام نماد \fIold\fR را به \fInew\fR تغییر می‌دهد. این گزینه زمانی مفید است که قصد دارید دو بخش را که به سورس‌کد آن‌ها دسترسی ندارید به یکدیگر پیوند دهید و تداخل نام وجود دارد. .IP \fB\-\-redefine\-syms=\fR\fIfilename\fR 4 .IX Item "--redefine-syms=filename" گزینه \fB\-\-redefine\-sym\fR را بر روی هر جفت نماد "\fIold\fR \fInew\fR" فهرست‌شده در فایل \fIfilename\fR اعمال می‌کند. \fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک جفت نماد قرار دارد. توضیحات خطی را می‌توان با نویسه هش (#) مشخص کرد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-weaken\fR 4 .IX Item "--weaken" تمام نمادهای سراسری موجود در فایل را به نماد ضعیف (weak) تبدیل می‌کند. این قابلیت هنگام ساخت شیئی که قرار است با استفاده از گزینه \fB\-R\fR پیونددهنده در برابر اشیاء دیگر پیوند داده شود، کاربرد دارد. این گزینه تنها زمانی مؤثر است که از قالب فایل شیئی استفاده شود که از نمادهای ضعیف پشتیبانی می‌کند. .IP \fB\-\-keep\-symbols=\fR\fIfilename\fR 4 .IX Item "--keep-symbols=filename" گزینه \fB\-\-keep\-symbol\fR را برای هر نماد فهرست‌شده در فایل \&\fIfilename\fR اعمال می‌کند. \&\fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک نام نماد قرار دارد. توضیحات خطی را می‌توان با نویسه هش درج کرد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-strip\-symbols=\fR\fIfilename\fR 4 .IX Item "--strip-symbols=filename" گزینه \fB\-\-strip\-symbol\fR را برای هر نماد فهرست‌شده در فایل \&\fIfilename\fR اعمال می‌کند. \&\fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک نام نماد قرار دارد. توضیحات خطی را می‌توان با نویسه هش درج کرد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-strip\-unneeded\-symbols=\fR\fIfilename\fR 4 .IX Item "--strip-unneeded-symbols=filename" گزینه \fB\-\-strip\-unneeded\-symbol\fR را برای هر نماد فهرست‌شده در فایل \fIfilename\fR اعمال می‌کند. \fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک نام نماد قرار دارد. توضیحات خطی را می‌توان با نویسه هش درج کرد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-keep\-global\-symbols=\fR\fIfilename\fR 4 .IX Item "--keep-global-symbols=filename" گزینه \fB\-\-keep\-global\-symbol\fR را برای هر نماد فهرست‌شده در فایل \fIfilename\fR اعمال می‌کند. \fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک نام نماد قرار دارد. توضیحات خطی را می‌توان با نویسه هش درج کرد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-localize\-symbols=\fR\fIfilename\fR 4 .IX Item "--localize-symbols=filename" گزینه \fB\-\-localize\-symbol\fR را برای هر نماد فهرست‌شده در فایل \&\fIfilename\fR اعمال می‌کند. \&\fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک نام نماد قرار دارد. توضیحات خطی را می‌توان با نویسه هش درج کرد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-globalize\-symbols=\fR\fIfilename\fR 4 .IX Item "--globalize-symbols=filename" گزینه \fB\-\-globalize\-symbol\fR را برای هر نماد فهرست‌شده در فایل \&\fIfilename\fR اعمال می‌کند. \&\fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک نام نماد قرار دارد. توضیحات خطی را می‌توان با نویسه هش درج کرد. این گزینه می‌تواند بیش از یک بار مشخص شود. نکته: این گزینه نمی‌تواند همراه با گزینه‌های \fB\-G\fR یا \fB\-\-keep\-global\-symbol\fR استفاده شود. .IP \fB\-\-weaken\-symbols=\fR\fIfilename\fR 4 .IX Item "--weaken-symbols=filename" گزینه \fB\-\-weaken\-symbol\fR را برای هر نماد فهرست‌شده در فایل \&\fIfilename\fR اعمال می‌کند. \&\fIfilename\fR صرفاً یک فایل متنی ساده است که در هر خط آن یک نام نماد قرار دارد. توضیحات خطی را می‌توان با نویسه هش درج کرد. این گزینه می‌تواند بیش از یک بار مشخص شود. .IP \fB\-\-alt\-machine\-code=\fR\fIindex\fR 4 .IX Item "--alt-machine-code=index" اگر معماری خروجی کدهای ماشین جایگزین داشته باشد، به جای کد پیش‌فرض از کد \&\fIindex\fR‌اُم استفاده می‌کند. این ویژگی زمانی مفید است که برای یک ماشین کد رسمی اختصاص داده شده و زنجیره ابزار (toolchain) از کد جدید استفاده کند، اما برنامه‌های دیگر همچنان وابسته به کد اولیه باشند. برای معماری‌های مبتنی بر ELF، اگر جایگزین \fIindex\fR وجود نداشته باشد، این مقدار به عنوان یک عدد مطلق برای ذخیره‌سازی در فیلد e_machine از سرآیند ELF در نظر گرفته می‌شود. .IP \fB\-\-writable\-text\fR 4 .IX Item "--writable-text" بخش کد خروجی (text) را به صورت قابل نوشتن علامت‌گذاری می‌کند. این گزینه برای همه قالب‌های فایل شیء معنادار نیست. .IP \fB\-\-readonly\-text\fR 4 .IX Item "--readonly-text" بخش کد خروجی (text) را در برابر نوشتن محافظت می‌کند (فقط‌خواندنی). این گزینه برای همه قالب‌های فایل شیء معنادار نیست. .IP \fB\-\-pure\fR 4 .IX Item "--pure" فایل خروجی را به عنوان demand paged (صفحه‌بندی بر اساس تقاضا) علامت‌گذاری می‌کند. این گزینه برای همه قالب‌های فایل شیء معنادار نیست. .IP \fB\-\-impure\fR 4 .IX Item "--impure" فایل خروجی را به عنوان impure علامت‌گذاری می‌کند. این گزینه برای همه قالب‌های فایل شیء معنادار نیست..IP \fB\-\-prefix\-symbols=\fR\fIstring\fR 4 .IX Item "--prefix-symbols=string" پیشوند قرار دادن \fIstring\fR برای تمام نمادها در فایل خروجی. .IP \fB\-\-prefix\-sections=\fR\fIstring\fR 4 .IX Item "--prefix-sections=string" پیشوند قرار دادن \fIstring\fR برای نام تمام بخش‌ها در فایل خروجی. .IP \fB\-\-prefix\-alloc\-sections=\fR\fIstring\fR 4 .IX Item "--prefix-alloc-sections=string" پیشوند قرار دادن \&\fIstring\fR برای نام تمام بخش‌های تخصیص‌یافته در فایل خروجی. .IP \fB\-\-add\-gnu\-debuglink=\fR\fIpath\-to\-file\fR 4 .IX Item "--add-gnu-debuglink=path-to-file" یک بخش .gnu_debuglink که حاوی ارجاعی به \&\fIpath\-to\-file\fR است ایجاد کرده و آن را به فایل خروجی اضافه می‌کند. نکته: فایل در \&\fIpath\-to\-file\fR باید وجود داشته باشد. بخشی از فرایند افزودن بخش \&.gnu_debuglink شامل قرار دادن چِک‌سامِ محتویات فایل اطلاعات اشکال‌زدایی در این بخش است. .Sp اگر فایل اطلاعات اشکال‌زدایی در یک مکان ساخته شده اما قرار است بعداً در مکان دیگری نصب شود، از مسیر مکان نصب‌شده استفاده نکنید. گزینهٔ \fB\-\-add\-gnu\-debuglink\fR با شکست مواجه خواهد شد زیرا فایل نصب‌شده هنوز وجود ندارد. در عوض فایل اطلاعات اشکال‌زدایی را در دایرکتوری جاری قرار دهید و از گزینهٔ \&\fB\-\-add\-gnu\-debuglink\fR بدون مشخص کردن هیچ دایرکتوری، مانند این استفاده کنید: .Sp .Vb 1 \& objcopy \-\-add\-gnu\-debuglink=foo.debug .Ve .Sp در هنگام اشکال‌زدایی، دیباگر تلاش خواهد کرد تا فایل جداگانهٔ اطلاعات اشکال‌زدایی را در مجموعه‌ای از مکان‌های شناخته‌شده جستجو کند. مجموعهٔ دقیق این مکان‌ها بسته به توزیعِ مورد استفاده متفاوت است، اما معمولاً شامل موارد زیر است: .RS 4 .IP \(bu 4 همان دایرکتوریِ حاوی فایل اجرایی. .IP \(bu 4 یک زیردایرکتوری از دایرکتوری حاوی فایل اجرایی با نام \&.debug. .IP \(bu 4 یک دایرکتوری سراسریِ اشکال‌زدایی مانند /usr/lib/debug. .RE .RS 4 .Sp تا زمانی که فایل اطلاعات اشکال‌زدایی پیش از اجرای دیباگر در یکی از این مکان‌ها نصب شده باشد، همه‌چیز باید به درستی کار کند. .RE .IP \fB\-\-keep\-section\-symbols\fR 4 .IX Item "--keep-section-symbols" هنگام strip کردن یک فایل، احتمالاً با \fB\-\-strip\-debug\fR یا \&\fB\-\-strip\-unneeded\fR، نمادهای مشخص‌کنندهٔ نام بخش‌ها که در غیر این صورت حذف می‌شدند را حفظ می‌کند. .IP \fB\-\-keep\-file\-symbols\fR 4 .IX Item "--keep-file-symbols" هنگام strip کردن یک فایل، احتمالاً با \fB\-\-strip\-debug\fR یا \&\fB\-\-strip\-unneeded\fR، نمادهای مشخص‌کنندهٔ نام فایل‌های منبع که در غیر این صورت حذف می‌شدند را حفظ می‌کند. .IP \fB\-\-only\-keep\-debug\fR 4 .IX Item "--only-keep-debug" یک فایل را strip می‌کند، به طوری که محتویات هر بخشی را که توسط \fB\-\-strip\-debug\fR حذف نمی‌شود پاک کرده و بخش‌های اشکال‌زدایی را دست‌نخورده باقی می‌گذارد. در فایل‌های ELF، این گزینه تمام بخش‌های note را در خروجی حفظ می‌کند. .Sp نکته \- سرایندهای بخش‌های خالی‌شده (stripped)، شامل اندازه‌های آن‌ها، حفظ می‌شوند، اما محتویات بخش دور ریخته می‌شود. سرایندهای بخش از این جهت حفظ می‌شوند تا ابزارهای دیگر بتوانند فایل debuginfo را با فایل اجرایی واقعی تطبیق دهند، حتی اگر آن فایل اجرایی به فضای آدرس متفاوتی بازنشانی شده باشد. .Sp هدف این است که از این گزینه به همراه \&\fB\-\-add\-gnu\-debuglink\fR برای ایجاد یک فایل اجرایی دو بخشی استفاده شود: یکی باینری strip شده که فضای کمتری را در RAM و در توزیع اشغال می‌کند، و دومی فایلی حاوی اطلاعات اشکال‌زدایی که تنها در صورت نیاز به قابلیت‌های اشکال‌زدایی به آن احتیاج است. رویهٔ پیشنهادی برای ایجاد این فایل‌ها به شرح زیر است: .RS 4 .IP 1. 4 فایل اجرایی را به روال معمول پیوند دهید. با فرض اینکه نام آن \f(CW\*(C`foo\*(C'\fR باشد، سپس... .IP 2. 4 دستور \f(CW\*(C`objcopy \-\-only\-keep\-debug foo foo.dbg\*(C'\fR را برای ایجاد فایلی حاوی اطلاعات اشکال‌زدایی اجرا کنید. .IP 3. 4 دستور \f(CW\*(C`objcopy \-\-strip\-debug foo\*(C'\fR را برای ایجاد یک فایل اجرایی strip شده اجرا کنید. .IP 4. 4 دستور \f(CW\*(C`objcopy \-\-add\-gnu\-debuglink=foo.dbg foo\*(C'\fR را برای افزودن پیوندی به اطلاعات اشکال‌زدایی در فایل اجرایی strip شده اجرا کنید. .RE .RS 4 .Sp نکته\-\-\-انتخاب \f(CW\*(C`.dbg\*(C'\fR به عنوان پسوند فایل اطلاعات اشکال‌زدایی اختیاری است. همچنین مرحلهٔ \f(CW\*(C`\-\-only\-keep\-debug\*(C'\fR اختیاری است. به جای آن می‌توانید این کار را انجام دهید: .IP 1. 4 فایل اجرایی را به روال معمول پیوند دهید. .IP 2. 4 فایل \f(CW\*(C`foo\*(C'\fR را در \f(CW\*(C`foo.full\*(C'\fR کپی کنید. .IP 3. 4 دستور \f(CW\*(C`objcopy \-\-strip\-debug foo\*(C'\fR را اجرا کنید. .IP 4. 4 دستور \f(CW\*(C`objcopy \-\-add\-gnu\-debuglink=foo.full foo\*(C'\fR را اجرا کنید. .RE .RS 4 .Sp یعنی فایلی که توسط \fB\-\-add\-gnu\-debuglink\fR به آن اشاره می‌شود می‌تواند همان فایل اجرایی کامل باشد. لزومی ندارد فایلی باشد که با سوییچ \&\fB\-\-only\-keep\-debug\fR ایجاد شده است. .Sp نکته\-\-\-این سوییچ فقط برای استفاده روی فایل‌های کاملاً پیوندیافته (fully linked) در نظر گرفته شده است. استفاده از آن روی فایل‌های شیء (object files) که ممکن است اطلاعات اشکال‌زدایی‌شان ناکامل باشد، منطقی نیست. به علاوه، قابلیت gnu_debuglink در حال حاضر تنها از وجود یک نام فایل حاوی اطلاعات اشکال‌زدایی پشتیبانی می‌کند، نه چندین نام فایل به ازای هر فایل شیء. .RE .IP \fB\-\-strip\-dwo\fR 4 .IX Item "--strip-dwo" محتویات تمام بخش‌های .dwo مربوط به DWARF را حذف می‌کند، در حالی که باقی بخش‌های اشکال‌زدایی و تمام نمادها دست‌نخورده باقی می‌مانند. این گزینه برای استفاده توسط کامپایلر به عنوان بخشی از گزینهٔ \fB\-gsplit\-dwarf\fR در نظر گرفته شده است، که اطلاعات اشکال‌زدایی را بین فایل .o و یک فایل جداگانهٔ .dwo تقسیم می‌کند. کامپایلر ابتدا تمام اطلاعات اشکال‌زدایی را در همان فایل تولید می‌کند، سپس از گزینهٔ \fB\-\-extract\-dwo\fR برای کپی کردن بخش‌های .dwo به فایل .dwo و سپس از گزینهٔ \fB\-\-strip\-dwo\fR برای حذف آن بخش‌ها از فایل اصلی .o استفاده می‌کند. .IP \fB\-\-extract\-dwo\fR 4 .IX Item "--extract-dwo" محتویات تمام بخش‌های .dwo مربوط به DWARF را استخراج می‌کند. برای اطلاعات بیشتر گزینهٔ \&\fB\-\-strip\-dwo\fR را ببینید. .IP "\fB\-\-file\-alignment\fR \fInum\fR" 4 .IX Item "--file-alignment num" تراز فایل (file alignment) را مشخص می‌کند. بخش‌ها در فایل همیشه در آفست‌هایی آغاز خواهند شد که مضربی از این عدد هستند. مقدار پیش‌فرض ۵۱۲ است. [این گزینه مختص هدف‌های PE است.] .IP "\fB\-\-heap\fR \fIreserve\fR" 4 .IX Item "--heap reserve" .PD 0 .IP "\fB\-\-heap\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 .IX Item "--heap reserve,commit" .PD تعداد بایت‌های حافظه را برای رزرو (و در صورت تمایل commit کردن) جهت استفاده به عنوان هیپ (heap) برای این برنامه مشخص می‌کند. [این گزینه مختص هدف‌های PE است.] .IP "\fB\-\-image\-base\fR \fIvalue\fR" 4 .IX Item "--image-base value" از \fIvalue\fR به عنوان آدرس پایهٔ برنامه یا dll خود استفاده کنید. این پایین‌ترین مکان حافظه است که هنگام بارگذاری برنامه یا dll شما استفاده خواهد شد. برای کاهش نیاز به بازنشانی (relocate) و بهبود کارایی dllهای شما، هر یک باید یک آدرس پایهٔ یکتا داشته باشند و با هیچ dll دیگری تداخل نداشته باشند. مقدار پیش‌فرض برای فایل‌های اجرایی 0x400000 و برای dllها برابر 0x10000000 است. [این گزینه مختص هدف‌های PE است.] .IP "\fB\-\-section\-alignment\fR \fInum\fR" 4 .IX Item "--section-alignment num" [این گزینه مختص هدف‌های PE است.] .Sp فیلد تراز بخش (section alignment) را در سرایند PE تنظیم می‌کند \- در صورتی که در باینری موجود باشد. بخش‌ها در حافظه همواره از آدرس‌هایی شروع می‌شوند که مضربی از این عدد باشند. مقدار پیش‌فرض 0x1000 است. .Sp نکته \- اگر آدرس‌های LMA یا VMA یک بخش دیگر تراز نباشند، و این آدرس‌ها از طریق گزینه‌های \fB\-\-set\-section\-lma\fR یا \&\fB\-\-set\-section\-vma\fR تنظیم نشده باشند، و فایل به طور کامل بازنشانی شده باشد، پیام هشداری صادر خواهد شد. آنگاه تصمیم‌گیری دربارهٔ نیاز به به‌روزرسانی LMA و VMA بر عهدهٔ کاربر خواهد بود. .IP "\fB\-\-stack\fR \fIreserve\fR" 4 .IX Item "--stack reserve" .PD 0 .IP "\fB\-\-stack\fR \fIreserve\fR\fB,\fR\fIcommit\fR" 4 .IX Item "--stack reserve,commit" .PD تعداد بایت‌های حافظه را برای رزرو (و در صورت تمایل commit کردن) جهت استفاده به عنوان پشته (stack) برای این برنامه مشخص می‌کند. [این گزینه مختص هدف‌های PE است.] .IP "\fB\-\-subsystem\fR \fIwhich\fR" 4 .IX Item "--subsystem which".PD 0 .IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR" 4 .IX Item "--subsystem which:major" .IP "\fB\-\-subsystem\fR \fIwhich\fR\fB:\fR\fImajor\fR\fB.\fR\fIminor\fR" 4 .IX Item "--subsystem which:major.minor" .PD زیرسیستمی که برنامه‌تان تحت آن اجرا خواهد شد را مشخص می‌کند. مقادیر مجاز برای \fIwhich\fR عبارتند از \f(CW\*(C`native\*(C'\fR، \f(CW\*(C`windows\*(C'\fR، \&\f(CW\*(C`console\*(C'\fR، \f(CW\*(C`posix\*(C'\fR، \f(CW\*(C`efi\-app\*(C'\fR، \f(CW\*(C`efi\-bsd\*(C'\fR، \&\f(CW\*(C`efi\-rtd\*(C'\fR، \f(CW\*(C`sal\-rtd\*(C'\fR و \f(CW\*(C`xbox\*(C'\fR. همچنین به صورت اختیاری می‌توانید نسخه زیرسیستم را نیز تنظیم کنید. مقادیر عددی نیز برای \&\fIwhich\fR پذیرفته می‌شوند. [این گزینه مخصوص هدف‌های PE است.] .IP \fB\-\-extract\-symbol\fR 4 .IX Item "--extract-symbol" پرچم‌ها و نمادهای بخش‌های فایل را نگه می‌دارد، اما تمام داده‌های بخش‌ها را حذف می‌کند. به طور مشخص، این گزینه: .RS 4 .IP \(bu 4 محتوای تمامی بخش‌ها را حذف می‌کند. .IP \(bu 4 اندازه هر بخش را برابر صفر قرار می‌دهد. .IP \(bu 4 آدرس شروع فایل را برابر صفر قرار می‌دهد. .RE .RS 4 .Sp این گزینه برای ساخت یک فایل \fI.sym\fR برای یک هسته VxWorks استفاده می‌شود. همچنین می‌تواند روش مفیدی برای کاهش حجم فایل ورودی پیونددهنده با \fB\-\-just\-symbols\fR باشد. .RE .IP \fB\-\-compress\-debug\-sections\fR 4 .IX Item "--compress-debug-sections" بخش‌های اشکال‌زدایی DWARF را با استفاده از zlib و SHF_COMPRESSED برگرفته از ELF ABI فشرده می‌کند. توجه \- اگر فشرده‌سازی در واقع باعث \fIبزرگ‌تر شدن\fR یک بخش شود، آن بخش فشرده نخواهد شد. .IP \fB\-\-compress\-debug\-sections=none\fR 4 .IX Item "--compress-debug-sections=none" .PD 0 .IP \fB\-\-compress\-debug\-sections=zlib\fR 4 .IX Item "--compress-debug-sections=zlib" .IP \fB\-\-compress\-debug\-sections=zlib\-gnu\fR 4 .IX Item "--compress-debug-sections=zlib-gnu" .IP \fB\-\-compress\-debug\-sections=zlib\-gabi\fR 4 .IX Item "--compress-debug-sections=zlib-gabi" .IP \fB\-\-compress\-debug\-sections=zstd\fR 4 .IX Item "--compress-debug-sections=zstd" .PD برای فایل‌های ELF، این گزینه‌ها چگونگی فشرده‌سازی بخش‌های اشکال‌زدایی DWARF را کنترل می‌کنند. گزینه \fB\-\-compress\-debug\-sections=none\fR معادل \fB\-\-decompress\-debug\-sections\fR است. گزینه‌های \&\fB\-\-compress\-debug\-sections=zlib\fR و \&\fB\-\-compress\-debug\-sections=zlib\-gabi\fR معادل \&\fB\-\-compress\-debug\-sections\fR هستند. گزینه \&\fB\-\-compress\-debug\-sections=zlib\-gnu\fR بخش‌های اشکال‌زدایی DWARF را با استفاده از قالب منسوخ‌شده zlib\-gnu فشرده می‌کند. نام بخش‌های اشکال‌زدایی تغییر می‌یابد تا با \fB.zdebug\fR آغاز شوند. گزینه \&\fB\-\-compress\-debug\-sections=zstd\fR بخش‌های اشکال‌زدایی DWARF را با استفاده از zstd فشرده می‌کند. توجه \- اگر فشرده‌سازی در واقع باعث \fIبزرگ‌تر شدن\fR یک بخش شود، فشرده‌سازی نشده و نام آن نیز تغییر نمی‌کند. .IP \fB\-\-decompress\-debug\-sections\fR 4 .IX Item "--decompress-debug-sections" بخش‌های اشکال‌زدایی DWARF را از حالت فشرده خارج می‌کند. برای یک بخش \fB.zdebug\fR، نام اصلی بازیابی می‌شود. .IP \fB\-\-elf\-stt\-common=yes\fR 4 .IX Item "--elf-stt-common=yes" .PD 0 .IP \fB\-\-elf\-stt\-common=no\fR 4 .IX Item "--elf-stt-common=no" .PD برای فایل‌های ELF، این گزینه‌ها مشخص می‌کنند که آیا نمادهای عمومی (common symbols) باید به نوع \f(CW\*(C`STT_COMMON\*(C'\fR یا \f(CW\*(C`STT_OBJECT\*(C'\fR تبدیل شوند یا خیر. گزینه \&\fB\-\-elf\-stt\-common=yes\fR نوع نمادهای عمومی را به \&\f(CW\*(C`STT_COMMON\*(C'\fR تبدیل می‌کند. گزینه \fB\-\-elf\-stt\-common=no\fR نوع نمادهای عمومی را به \f(CW\*(C`STT_OBJECT\*(C'\fR تبدیل می‌کند. .IP \fB\-\-merge\-notes\fR 4 .IX Item "--merge-notes" .PD 0 .IP \fB\-\-no\-merge\-notes\fR 4 .IX Item "--no-merge-notes" .PD برای فایل‌های ELF، با حذف یادداشت‌های تکراری تلاش می‌کند (یا تلاش نمی‌کند) تا اندازه هر بخش از نوع SHT_NOTE را کاهش دهد. .IP \fB\-V\fR 4 .IX Item "-V" .PD 0 .IP \fB\-\-version\fR 4 .IX Item "--version" .PD نمایش شماره نسخه \fBobjcopy\fR. .IP \fB\-\-verilog\-data\-width=\fR\fIbytes\fR 4 .IX Item "--verilog-data-width=bytes" برای خروجی Verilog، این گزینه تعداد بایت‌های تبدیل‌شده برای هر عنصر داده خروجی را کنترل می‌کند. هدف ورودی (input target)، ترتیب بایت‌ها (endianness) در تبدیل را تعیین می‌کند. .IP \fB\-v\fR 4 .IX Item "-v" .PD 0 .IP \fB\-\-verbose\fR 4 .IX Item "--verbose" .PD خروجی پرحرّافی: فهرست کردن تمامی فایل‌های شیء اصلاح‌شده. در مورد آرشیوها، \fBobjcopy \-V\fR تمامی اعضای آرشیو را فهرست می‌کند. .IP \fB\-\-help\fR 4 .IX Item "--help" نمایش خلاصه‌ای از گزینه‌های \fBobjcopy\fR. .IP \fB\-\-info\fR 4 .IX Item "--info" نمایش فهرستی از تمامی معماری‌ها و قالب‌های شیء در دسترس. .IP \fB@\fR\fIfile\fR 4 .IX Item "@file" گزینه‌های خط فرمان را از \fIfile\fR می‌خواند. گزینه‌های خوانده‌شده به جای گزینه اصلی @\fIfile\fR درج می‌شوند. اگر \fIfile\fR وجود نداشته باشد، یا نتوان آن را خواند، با این گزینه به صورت لفظی برخورد شده و حذف نخواهد شد. .Sp گزینه‌ها در \fIfile\fR با نویسه‌های فاصله‌ساز از یکدیگر جدا می‌شوند. یک نویسه فاصله‌ساز می‌تواند با قرار گرفتن کل گزینه در داخل علامت نقل‌قول تکی یا دوتایی در آن گنجانده شود. هر نویسه‌ای (از جمله ممیز وارونه) را می‌توان با پیشوند کردن یک علامت ممیز وارونه قبل از آن وارد کرد. خود \fIfile\fR می‌تواند شامل گزینه‌های @\fIfile\fR اضافی نیز باشد؛ هر یک از این گزینه‌ها به صورت بازگشتی پردازش خواهند شد..SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBld\fR\|(1)، \fBobjdump\fR\|(1)، و مدخل‌های Info برای \fIbinutils\fR. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" Copyright (c) 1991\-2026 Free Software Foundation, Inc. .PP اجازهٔ کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخهٔ 1.3 یا هر نسخهٔ متأخر دیگری که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر (Invariant Sections)، بدون متون روی جلد (Front\-Cover Texts)، و بدون متون پشت جلد (Back\-Cover Texts). نسخه‌ای از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.