.\" -*- 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-07-30 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)" ابزار .B objcopy در گنو، محتویات یک فایل شیء (Object File) را درون فایلی دیگر کپی می‌کند. .B objcopy برای خواندن و نوشتن فایل‌های شیء از کتابخانه BFD گنو (GNU BFD Library) بهره می‌برد و می‌تواند فایل شیء مقصد را در قالبی متفاوت از فایل شیء مبدأ بنویسد. رفتار دقیق .B objcopy توسط گزینه‌های خط فرمان کنترل می‌شود. توجه داشته باشید که .B objcopy باید بتواند فایلی را که پیوند کامل خورده است (Fully Linked) بین هر دو قالب دلخواه کپی کند؛ با این حال، کپی کردن یک فایل شیء قابل‌بازنشانی (Relocatable) میان دو قالب گوناگون ممکن است آن‌طور که انتظار می‌رود عمل نکند. .PP دستور .B objcopy برای انجام تبدیلات خود فایل‌های موقتی می‌سازد و پس از پایان کار آن‌ها را حذف می‌کند. .B objcopy تمام کارهای تبدیل خود را با کتابخانه BFD انجام می‌دهد؛ بنابراین به کلیه قالب‌های تعریف‌شده در BFD دسترسی دارد و می‌تواند بیشتر قالب‌ها را بدون نیاز به معرفی صریح و خودکار شناسایی کند. .PP می‌توان از .B objcopy برای تولید رکوردهای اس (S-records) استفاده کرد؛ برای این کار کافی است هدف خروجی روی .B srec تنظیم شود (مانند .BR \-O\ srec ). .PP از .B objcopy می‌توان برای ایجاد یک فایل باینری خام با تعیین هدف خروجی روی .B binary استفاده کرد (مانند .BR \-O\ binary ). هنگامی که .B objcopy یک فایل باینری خام تولید می‌کند، در عمل یک رونوشت حافظه (Memory Dump) از محتویات فایل شیء ورودی به دست می‌دهد. در این حالت کلیه نمادها و اطلاعات بازنشانی دور ریخته می‌شوند و تخلیه حافظه از آدرس بارگذاری پایین‌ترین بخشی که در فایل خروجی کپی می‌شود آغاز خواهد شد. .PP هنگام تولید رکورد اس یا فایل باینری خام، استفاده از گزینه .B \-S برای حذف بخش‌های حاوی اطلاعات اشکال‌زدایی سودمند خواهد بود. در برخی موارد نیز گزینه .B \-R برای حذف بخش‌هایی که اطلاعات آن‌ها در فایل باینری مورد نیاز نیست مفید واقع می‌شود. .PP نکته: .B objcopy قادر به تغییر ترتیب بایت‌ها (Endianness) در فایل‌های ورودی نیست. اگر قالب ورودی دارای ترتیب بایت باشد (برخی قالب‌ها فاقد آن هستند)، .B objcopy تنها می‌تواند ورودی‌ها را در قالب‌هایی کپی کند که همان ترتیب بایت را دارند یا اساساً فاقد ترتیب بایت هستند (مانند .BR srec ). (البته به گزینه .B \-\-reverse\-bytes مراجعه کنید). .SH "گزینه‌ها (OPTIONS)" .IX Header "گزینه‌ها (OPTIONS)" .IP \fIinfile\fR 4 .IX Item "infile" .PD 0 .IP \fIoutfile\fR 4 .IX Item "outfile" .PD به‌ترتیب فایل‌های ورودی و خروجی. اگر \fIoutfile\fR را مشخص نکنید، .B objcopy یک فایل موقت می‌سازد و نتیجه را به شکلی مخرب با همان نام \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 تنظیم می‌شود. اگر فایل ورودی خود معماری شناخته‌شده‌ای داشته باشد، این گزینه نادیده گرفته خواهد شد. درون یک برنامه می‌توان با ارجاع به نمادهای ویژه‌ای که در این فرآیند تبدیل ساخته می‌شوند، به این داده‌های باینری دسترسی پیدا کرد. این نمادها به نام‌های _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 علامت تعجب (!) باشد، بخش‌های منطبق کپی نخواهند شد، حتی اگر کاربرد قبلی .B \-\-only\-section در همان خط فرمان خلاف آن را نشان دهد. برای نمونه: .Sp .Vb 1 \& \-\-only\-section=.text.* \-\-only\-section=!.text.foo .Ve .Sp کلیه بخش‌های منطبق با '.text.*' را کپی خواهد کرد، اما بخش '.text.foo' را کپی نمی‌کند. .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 پذیرفته می‌شوند. استفاده هم‌زمان از گزینه‌های .B \-j و .B \-R رفتار تعریف‌نشده‌ای به دنبال دارد. .Sp اگر نخستین نویسه \fIsectionpattern\fR علامت تعجب (!) باشد، بخش‌های منطبق حذف نخواهند شد، حتی اگر در کاربرد قبلی .B \-\-remove\-section در همان خط فرمان دستور حذف آن‌ها داده شده باشد. برای نمونه: .Sp .Vb 1 \& \-\-remove\-section=.text.* \-\-remove\-section=!.text.foo .Ve .Sp تمام بخش‌های منطبق با الگوی '.text.*' را حذف می‌کند، اما بخش '.text.foo' را نگه می‌دارد و حذف نخواهد کرد. .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 مطابقت دارد از فایل خروجی حذف می‌کند. این گزینه می‌تواند بیش از یک بار مشخص شود. توجه داشته باشید استفاده نادرست از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند؛ همچنین تلاش برای حذف بخش‌های بازنشانی پویا مانند .B .rela.plt از یک فایل اجرایی یا کتابخانه مشترک با دستور .B \-\-remove\-relocations=.plt کار نخواهد کرد. نویسه‌های عامه‌نما در \fIsectionpattern\fR پذیرفته می‌شوند. برای نمونه: .Sp .Vb 1 \& \-\-remove\-relocations=.text.* .Ve .Sp بازنشانی‌های مربوط به تمام بخش‌های منطبق با الگوی '.text.*' را حذف می‌کند. .Sp اگر نخستین نویسه \fIsectionpattern\fR علامت تعجب (!) باشد، بازنشانی‌های بخش‌های منطبق حذف نخواهند شد، حتی اگر در کاربرد قبلی .B \-\-remove\-relocations در همان خط فرمان دستور حذف آن‌ها صادر شده باشد. برای نمونه: .Sp .Vb 1 \& \-\-remove\-relocations=.text.* \-\-remove\-relocations=!.text.foo .Ve .Sp بازنشانی‌های بخش‌های منطبق با الگوی '.text.*' را حذف می‌کند، اما بازنشانی‌های بخش '.text.foo' را دست‌نخورده نگه می‌دارد. .IP \fB\-\-strip\-section\-headers\fR 4 .IX Item "--strip-section-headers" جدول هدر بخش‌ها (Section Headers) را حذف می‌کند. این گزینه ویژه فایل‌های ELF است و به‌طور خودکار گزینه‌های .B \-\-strip\-all و .B \-\-merge\-notes را نیز اعمال می‌نماید. .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 نمادها و بخش‌های اشکال‌زدایی را از فایل مبدأ کپی نمی‌کند. .IP \fB\-\-strip\-unneeded\fR 4 .IX Item "--strip-unneeded" علاوه بر نمادها و بخش‌های اشکال‌زدایی که با .B \-\-strip\-debug حذف می‌شوند، کلیه نمادهایی را که برای پردازش بازنشانی‌ها ضروری نیستند نیز حذف می‌کند. .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 را سراسری (global) نگه دارید. همه نمادهای دیگر را محلی پرونده کنید تا از بیرون قابل مشاهده نباشند. این گزینه می‌تواند بیش از یک بار مشخص شود. توجه: این گزینه نمی‌تواند همراه با گزینه‌های \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 نماد سراسری یا ضعیف (weak) به نام \fIsymbolname\fR را به یک نماد محلی تبدیل کنید تا از بیرون قابل مشاهده نباشد. این گزینه می‌تواند بیش از یک بار مشخص شود. نکته: نمادهای یکتا (unique) تبدیل نمی‌شوند. .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 به طور پیش‌فرض، گرداننده ورودی باینری نام پیشوند نماد را از نسخه درهم‌پیچیده (mangled) نام پرونده ورودی و پیشوند _binary به دست می‌آورد. این گزینه امکان تعیین صریح آن را فراهم می‌کند. .IP \fB\-\-globalize\-symbol=\fR\fIsymbolname\fR 4 .IX Item "--globalize-symbol=symbolname" به نماد \fIsymbolname\fR دامنه دید سراسری (global) بدهید تا بیرون از پرونده‌ای که در آن تعریف شده است، قابل مشاهده باشد. این گزینه می‌تواند بیش از یک بار مشخص شود. توجه: این گزینه نمی‌تواند همراه با گزینه‌های \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 اگر درهم‌بافی (interleaving) از طریق گزینه \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 این گزینه می‌تواند برای ساخت تصویر (image) برای دو حافظه فلش 16 بیتی درهم‌بافته در یک گذرگاه 32 بیتی با ارسال \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 در حالت \fIمعین\fR (deterministic) عمل کنید. هنگام رونوشت اعضای آرشیو و نوشتن نمایه آرشیو، برای UIDها، GIDها، و برچسب‌های زمان صفر قرار داده، و برای تمام پرونده‌ها از حالت‌های پرونده (file modes) یکسان استفاده کنید. .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 در حالت \fIمعین\fR (deterministic) عمل \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 پر کنید. این عملیات روی \fIنشانی بارگذاری\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 تنظیم کنید. همه قالب‌های پرونده شیء از تنظیم نشانی شروع پشتیبانی نمی‌کنند. .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 بخش‌ها در یک پروندهٔ دودویی کاملاً پیوندخورده می‌تواند خطرآفرین باشد، زیرا ممکن است کدی وجود داشته باشد که انتظار دارد بخش‌ها در نشانی پیشین خود مستقر باشند. .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 کاربردی ندارد. پرچم اختصاصی \fBlarge\fR در ELF x86\-64 متناظر با 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 است، با این تفاوت که پرونده‌ای قالب‌بندی‌شده نمی‌سازد، بلکه محتویات را به‌صورت داده‌های دودویی خام و بدون اِعمال هیچ‌گونه بازنشانی تخلیه می‌کند. این گزینه را می‌توان بیش از یک بار مشخص کرد. .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 (مطلق) خواهد بود. تعیین یک بخش تعریف‌نشده به یک خطای مهلک می‌انجامد. هیچ بررسی‌ای روی مقدار انجام نمی‌شود و همان‌طور که مشخص شده پذیرفته خواهد شد. پرچم‌های نماد را می‌توان تعیین کرد، هرچند تمامی پرچم‌ها برای همهٔ قالب‌های پروندهٔ شیء معنادار نخواهند بود. به‌طور پیش‌فرض، نماد سراسری خواهد بود. پرچم ویژهٔ \&\*(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 تغییر دهد. مزیت این کار نسبت به استفاده از اسکریپت پیونددهنده جهت انجام تغییر نام این است که خروجی همچنان به‌صورت یک پروندهٔ شیء باقی می‌ماند و به یک پروندهٔ اجراییِ پیوندخورده تبدیل نمی‌شود. این گزینه همان مجموعه پرچم‌های گزینهٔ \&\fB\-\-set\-section\-flags\fR را می‌پذیرد. .Sp این گزینه به‌ویژه زمانی سودمند است که قالب ورودی دودویی باشد، زیرا در این حالت همواره بخشی با نام .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 در حال اجرا باشد، هرگونه نام طولانیِ بخش در شیء ورودی بریده و کوتاه (Truncate) خواهد شد. گزینهٔ \fBenable\fR تنها در صورتی نام‌های طولانی بخش را صادر می‌کند که در ورودی‌ها وجود داشته باشند؛ این رفتار تا حد زیادی مانند \fBkeep\fR است، اما این مسئله که آیا گزینهٔ \fBenable\fR ممکن است ایجاد یک جدول رشتهٔ خالی را در پروندهٔ خروجی تحمیل کند یا خیر، تعریف‌نشده رها شده است. .IP \fB\-\-change\-leading\-char\fR 4 .IX Item "--change-leading-char" برخی قالب‌های پروندهٔ شیء از نویسه‌های ویژه‌ای در آغاز نمادها استفاده می‌کنند. رایج‌ترین چنین نویسه‌ای زیرخط (_) است که کامپایلرها غالباً آن را پیش از هر نماد می‌افزایند. این گزینه به \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) بازچینی می‌شوند. بسته به مدل برنامه‌ریزی، ممکن است تغییر ترتیب بایت‌های حافظه 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 استفاده می‌کند. این ویژگی زمانی مفید است که برای یک ماشین یک کد رسمی تعیین شده و زنجیره ابزار از کد جدید پشتیبانی می‌کند، اما برنامه‌های دیگر همچنان به استفاده از کد پیشین وابسته هستند. در معماری‌های مبتنی بر 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 شامل درج مجموع مقابله‌ای (checksum) از محتوای فایل اطلاعات اشکال‌زدایی در این بخش است. .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" هنگام پالایش نمادهای یک فایل، احتمالاً با \fB\-\-strip\-debug\fR یا \&\fB\-\-strip\-unneeded\fR، هر نمادی را که نام بخش‌ها را تعیین می‌کند و در غیر این صورت حذف می‌شد، حفظ می‌کند. .IP \fB\-\-keep\-file\-symbols\fR 4 .IX Item "--keep-file-symbols" هنگام پالایش نمادهای یک فایل، احتمالاً با \fB\-\-strip\-debug\fR یا \&\fB\-\-strip\-unneeded\fR، هر نمادی را که نام فایل‌های منبع را مشخص می‌کند و در غیر این صورت حذف می‌شد، نگه می‌دارد. .IP \fB\-\-only\-keep\-debug\fR 4 .IX Item "--only-keep-debug" فایل را پالایش کرده، محتوای هر بخشی را که توسط \fB\-\-strip\-debug\fR حذف نمی‌شد پاک می‌کند و بخش‌های اشکال‌زدایی را دست‌نخورده باقی می‌گذارد. در فایل‌های ELF، این گزینه تمام بخش‌های یادداشت (note sections) را در خروجی حفظ می‌کند. .Sp نکته \- سرآیندهای بخش‌های پالایش‌شده، از جمله اندازه‌های آن‌ها، حفظ می‌شوند اما محتوای واقعی بخش‌ها دور ریخته می‌شود. سرآیندهای بخش حفظ می‌شوند تا سایر ابزارها بتوانند فایل debuginfo را با فایل اجرایی واقعی تطبیق دهند، حتی اگر آن فایل اجرایی به فضای آدرس متفاوتی جابه‌جا شده باشد. .Sp هدف این است که از این گزینه همراه با \&\fB\-\-add\-gnu\-debuglink\fR برای ساخت یک فایل اجرایی دوقسمتی استفاده شود: یکی باینری پالایش‌شده که فضای کمتری در 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 برای ایجاد یک پرونده اجرایی پیراسته (stripped)، دستور \f(CW\*(C`objcopy \-\-strip\-debug foo\*(C'\fR را اجرا کنید. .IP 4. 4 برای افزودن پیوند به اطلاعات اشکال‌زدایی در پرونده اجرایی پیراسته، دستور \f(CW\*(C`objcopy \-\-add\-gnu\-debuglink=foo.dbg foo\*(C'\fR را اجرا کنید. .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 نکته\-\-\-این گزینه تنها برای استفاده روی پرونده‌های کاملاً پیوندخورده در نظر گرفته شده است. استفاده از آن روی پرونده‌های شیء که اطلاعات اشکال‌زدایی آن‌ها ممکن است ناقص باشد توجیهی ندارد. افزون بر این، ویژگی gnu_debuglink در حال حاضر تنها از وجود یک نام پرونده حاوی اطلاعات اشکال‌زدایی پشتیبانی می‌کند، نه چند نام پرونده به ازای هر پرونده شیء. .RE .IP \fB\-\-strip\-dwo\fR 4 .IX Item "--strip-dwo" محتوای تمام بخش‌های DWARF .dwo را حذف کرده، و دیگر بخش‌های اشکال‌زدایی و تمامی نمادها را دست‌نخورده باقی می‌گذارد. این گزینه برای استفاده توسط کامپایلر به عنوان بخشی از گزینه \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" محتوای تمام بخش‌های DWARF .dwo را استخراج می‌کند. برای اطلاعات بیشتر گزینه \&\fB\-\-strip\-dwo\fR را ببینید. .IP "\fB\-\-file\-alignment\fR \fInum\fR" 4 .IX Item "--file-alignment num" هم‌ترازی پرونده را مشخص می‌کند. بخش‌ها در پرونده همواره در آفست‌هایی از پرونده آغاز خواهند شد که مضربی از این عدد باشند. مقدار پیش‌فرض آن 512 است. [این گزینه ویژه مقاصد 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 شما استفاده خواهد شد. برای کاهش نیاز به بازنشانی و بهبود کارایی dllهای شما، هر یک باید نشانی پایه یکتایی داشته باشند و با هیچ dll دیگری هم‌پوشانی نداشته باشند. مقدار پیش‌فرض برای پرونده‌های اجرایی 0x400000 و برای dllها 0x10000000 است. [این گزینه ویژه مقاصد PE است.] .IP "\fB\-\-section\-alignment\fR \fInum\fR" 4 .IX Item "--section-alignment num" [این گزینه ویژه مقاصد PE است.] .Sp فیلد هم‌ترازی بخش‌ها در سرایند 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، این گزینه‌ها تعیین می‌کنند که آیا نمادهای عمومی باید به نوع \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، این گزینه تعداد بایت‌های تبدیل‌شده برای هر عنصر داده خروجی را کنترل می‌کند. هدف ورودی، ترتیب بایت‌های (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" حق نشر (c) 1991\-2026 Free Software Foundation, Inc. .PP اجازهٔ رونوشت‌برداری، توزیع و/یا ویرایش این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، ویرایش ۱.۳ یا هر ویرایش پسین منتشرشده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های ناوردا، بدون متن‌های روی جلد، و بدون متن‌های پشت جلد. یک نسخه از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است.