.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
.\"
.\" 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
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
.    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 turned on, 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
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "OBJCOPY 1"
.TH OBJCOPY 1 "2014-08-01" "binutils-2.24.0" "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 \- copy and translate object files
.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\-K\fR \fIsymbolname\fR|\fB\-\-keep\-symbol=\fR\fIsymbolname\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\-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\-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\-\-add\-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\-\-globalize\-symbols=\fR\fIfilename\fR]
        [\fB\-\-weaken\-symbols=\fR\fIfilename\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\-\-keep\-file\-symbols\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\fIsize\fR]
        [\fB\-\-image\-base=\fR\fIaddress\fR]
        [\fB\-\-section\-alignment=\fR\fInum\fR]
        [\fB\-\-stack=\fR\fIsize\fR]
        [\fB\-\-subsystem=\fR\fIwhich\fR:\fImajor\fR.\fIminor\fR]
        [\fB\-\-compress\-debug\-sections\fR]
        [\fB\-\-decompress\-debug\-sections\fR]
        [\fB\-\-dwarf\-depth=\fR\fIn\fR]
        [\fB\-\-dwarf\-start=\fR\fIn\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"
The \s-1GNU \s0\fBobjcopy\fR utility copies the contents of an object
file to another.  \fBobjcopy\fR uses the \s-1GNU BFD\s0 Library to
read and write the object files.  It can write the destination object
file in a format different from that of the source object file.  The
exact behavior of \fBobjcopy\fR is controlled by command-line options.
Note that \fBobjcopy\fR should be able to copy a fully linked file
between any two formats. However, copying a relocatable object file
between any two formats may not work as expected.
.PP
\&\fBobjcopy\fR creates temporary files to do its translations and
deletes them afterward.  \fBobjcopy\fR uses \s-1BFD\s0 to do all its
translation work; it has access to all the formats described in \s-1BFD\s0
and thus is able to recognize most formats without being told
explicitly.
.PP
\&\fBobjcopy\fR can be used to generate S\-records by using an output
target of \fBsrec\fR (e.g., use \fB\-O srec\fR).
.PP
\&\fBobjcopy\fR can be used to generate a raw binary file by using an
output target of \fBbinary\fR (e.g., use \fB\-O binary\fR).  When
\&\fBobjcopy\fR generates a raw binary file, it will essentially produce
a memory dump of the contents of the input object file.  All symbols and
relocation information will be discarded.  The memory dump will start at
the load address of the lowest section copied into the output file.
.PP
When generating an S\-record or a raw binary file, it may be helpful to
use \fB\-S\fR to remove sections containing debugging information.  In
some cases \fB\-R\fR will be useful to remove sections which contain
information that is not needed by the binary file.
.PP
Note\-\-\-\fBobjcopy\fR is not able to change the endianness of its input
files.  If the input format has an endianness (some formats do not),
\&\fBobjcopy\fR can only copy the inputs into file formats that have the
same endianness or which have no endianness (e.g., \fBsrec\fR).
(However, see the \fB\-\-reverse\-bytes\fR option.)
.SH "OPTIONS"
.IX Header "OPTIONS"
.IP "\fIinfile\fR" 4
.IX Item "infile"
.PD 0
.IP "\fIoutfile\fR" 4
.IX Item "outfile"
.PD
The input and output files, respectively.
If you do not specify \fIoutfile\fR, \fBobjcopy\fR creates a
temporary file and destructively renames the result with
the name of \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
Consider the source file's object format to be \fIbfdname\fR, rather than
attempting to deduce it.
.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
Write the output file using the object format \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
Use \fIbfdname\fR as the object format for both the input and the output
file; i.e., simply transfer data from source to destination with no
translation.
.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
Useful when transforming a architecture-less input file into an object file.
In this case the output architecture can be set to \fIbfdarch\fR.  This
option will be ignored if the input file has a known \fIbfdarch\fR.  You
can access this binary data inside a program by referencing the special
symbols that are created by the conversion process.  These symbols are
called _binary_\fIobjfile\fR_start, _binary_\fIobjfile\fR_end and
_binary_\fIobjfile\fR_size.  e.g. you can transform a picture file into
an object file and then access it in your code using these symbols.
.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
Copy only the indicated sections from the input file to the output file.
This option may be given more than once.  Note that using this option
inappropriately may make the output file unusable.  Wildcard
characters are accepted in \fIsectionpattern\fR.
.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
Remove any section matching \fIsectionpattern\fR from the output file.
This option may be given more than once.  Note that using this option
inappropriately may make the output file unusable.  Wildcard
characters are accepted in \fIsectionpattern\fR.  Using both the
\&\fB\-j\fR and \fB\-R\fR options together results in undefined
behaviour.
.IP "\fB\-S\fR" 4
.IX Item "-S"
.PD 0
.IP "\fB\-\-strip\-all\fR" 4
.IX Item "--strip-all"
.PD
Do not copy relocation and symbol information from the source file.
.IP "\fB\-g\fR" 4
.IX Item "-g"
.PD 0
.IP "\fB\-\-strip\-debug\fR" 4
.IX Item "--strip-debug"
.PD
Do not copy debugging symbols or sections from the source file.
.IP "\fB\-\-strip\-unneeded\fR" 4
.IX Item "--strip-unneeded"
Strip all symbols that are not needed for relocation processing.
.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
When stripping symbols, keep symbol \fIsymbolname\fR even if it would
normally be stripped.  This option may be given more than once.
.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
Do not copy symbol \fIsymbolname\fR from the source file.  This option
may be given more than once.
.IP "\fB\-\-strip\-unneeded\-symbol=\fR\fIsymbolname\fR" 4
.IX Item "--strip-unneeded-symbol=symbolname"
Do not copy symbol \fIsymbolname\fR from the source file unless it is needed
by a relocation.  This option may be given more than once.
.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
Keep only symbol \fIsymbolname\fR global.  Make all other symbols local
to the file, so that they are not visible externally.  This option may
be given more than once.
.IP "\fB\-\-localize\-hidden\fR" 4
.IX Item "--localize-hidden"
In an \s-1ELF\s0 object, mark all symbols that have hidden or internal visibility
as local.  This option applies on top of symbol-specific localization options
such as \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
Make symbol \fIsymbolname\fR local to the file, so that it is not
visible externally.  This option may be given more than once.
.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
Make symbol \fIsymbolname\fR weak. This option may be given more than once.
.IP "\fB\-\-globalize\-symbol=\fR\fIsymbolname\fR" 4
.IX Item "--globalize-symbol=symbolname"
Give symbol \fIsymbolname\fR global scoping so that it is visible
outside of the file in which it is defined.  This option may be given
more than once.
.IP "\fB\-w\fR" 4
.IX Item "-w"
.PD 0
.IP "\fB\-\-wildcard\fR" 4
.IX Item "--wildcard"
.PD
Permit regular expressions in \fIsymbolname\fRs used in other command
line options.  The question mark (?), asterisk (*), backslash (\e) and
square brackets ([]) operators can be used anywhere in the symbol
name.  If the first character of the symbol name is the exclamation
point (!) then the sense of the switch is reversed for that symbol.
For example:
.Sp
.Vb 1
\&          \-w \-W !foo \-W fo*
.Ve
.Sp
would cause objcopy to weaken all symbols that start with \*(L"fo\*(R"
except for the symbol \*(L"foo\*(R".
.IP "\fB\-x\fR" 4
.IX Item "-x"
.PD 0
.IP "\fB\-\-discard\-all\fR" 4
.IX Item "--discard-all"
.PD
Do not copy non-global symbols from the source file.
.IP "\fB\-X\fR" 4
.IX Item "-X"
.PD 0
.IP "\fB\-\-discard\-locals\fR" 4
.IX Item "--discard-locals"
.PD
Do not copy compiler-generated local symbols.
(These usually start with \fBL\fR or \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
If interleaving has been enabled via the \fB\-\-interleave\fR option
then start the range of bytes to keep at the \fIbyte\fRth byte.
\&\fIbyte\fR can be in the range from 0 to \fIbreadth\fR\-1, where
\&\fIbreadth\fR is the value given by the \fB\-\-interleave\fR option.
.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
Only copy a range out of every \fIbreadth\fR bytes.  (Header data is
not affected).  Select which byte in the range begins the copy with
the \fB\-\-byte\fR option.  Select the width of the range with the
\&\fB\-\-interleave\-width\fR option.
.Sp
This option is useful for creating files to program \s-1ROM. \s0 It is
typically used with an \f(CW\*(C`srec\*(C'\fR output target.  Note that
\&\fBobjcopy\fR will complain if you do not specify the
\&\fB\-\-byte\fR option as well.
.Sp
The default interleave breadth is 4, so with \fB\-\-byte\fR set to 0,
\&\fBobjcopy\fR would copy the first byte out of every four bytes
from the input to the output.
.IP "\fB\-\-interleave\-width=\fR\fIwidth\fR" 4
.IX Item "--interleave-width=width"
When used with the \fB\-\-interleave\fR option, copy \fIwidth\fR
bytes at a time.  The start of the range of bytes to be copied is set
by the \fB\-\-byte\fR option, and the extent of the range is set with
the \fB\-\-interleave\fR option.
.Sp
The default value for this option is 1.  The value of \fIwidth\fR plus
the \fIbyte\fR value set by the \fB\-\-byte\fR option must not exceed
the interleave breadth set by the \fB\-\-interleave\fR option.
.Sp
This option can be used to create images for two 16\-bit flashes interleaved
in a 32\-bit bus by passing \fB\-b 0 \-i 4 \-\-interleave\-width=2\fR
and \fB\-b 2 \-i 4 \-\-interleave\-width=2\fR to two \fBobjcopy\fR
commands.  If the input was '12345678' then the outputs would be
\&'1256' and '3478' respectively.
.IP "\fB\-p\fR" 4
.IX Item "-p"
.PD 0
.IP "\fB\-\-preserve\-dates\fR" 4
.IX Item "--preserve-dates"
.PD
Set the access and modification dates of the output file to be the same
as those of the input file.
.IP "\fB\-D\fR" 4
.IX Item "-D"
.PD 0
.IP "\fB\-\-enable\-deterministic\-archives\fR" 4
.IX Item "--enable-deterministic-archives"
.PD
Operate in \fIdeterministic\fR mode.  When copying archive members
and writing the archive index, use zero for UIDs, GIDs, timestamps,
and use consistent file modes for all files.
.Sp
If \fIbinutils\fR was configured with
\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default.
It can be disabled with the \fB\-U\fR option, below.
.IP "\fB\-U\fR" 4
.IX Item "-U"
.PD 0
.IP "\fB\-\-disable\-deterministic\-archives\fR" 4
.IX Item "--disable-deterministic-archives"
.PD
Do \fInot\fR operate in \fIdeterministic\fR mode.  This is the
inverse of the \fB\-D\fR option, above: when copying archive members
and writing the archive index, use their actual \s-1UID, GID,\s0 timestamp,
and file mode values.
.Sp
This is the default unless \fIbinutils\fR was configured with
\&\fB\-\-enable\-deterministic\-archives\fR.
.IP "\fB\-\-debugging\fR" 4
.IX Item "--debugging"
Convert debugging information, if possible.  This is not the default
because only certain debugging formats are supported, and the
conversion process can be time consuming.
.IP "\fB\-\-gap\-fill\fR \fIval\fR" 4
.IX Item "--gap-fill val"
Fill gaps between sections with \fIval\fR.  This operation applies to
the \fIload address\fR (\s-1LMA\s0) of the sections.  It is done by increasing
the size of the section with the lower address, and filling in the extra
space created with \fIval\fR.
.IP "\fB\-\-pad\-to\fR \fIaddress\fR" 4
.IX Item "--pad-to address"
Pad the output file up to the load address \fIaddress\fR.  This is
done by increasing the size of the last section.  The extra space is
filled in with the value specified by \fB\-\-gap\-fill\fR (default zero).
.IP "\fB\-\-set\-start\fR \fIval\fR" 4
.IX Item "--set-start val"
Set the start address of the new file to \fIval\fR.  Not all object file
formats support setting the start address.
.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
Change the start address by adding \fIincr\fR.  Not all object file
formats support setting the start address.
.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
Change the \s-1VMA\s0 and \s-1LMA\s0 addresses of all sections, as well as the start
address, by adding \fIincr\fR.  Some object file formats do not permit
section addresses to be changed arbitrarily.  Note that this does not
relocate the sections; if the program expects sections to be loaded at a
certain address, and this option is used to change the sections such
that they are loaded at a different address, the program may fail.
.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
Set or change both the \s-1VMA\s0 address and the \s-1LMA\s0 address of any section
matching \fIsectionpattern\fR.  If \fB=\fR is used, the section
address is set to \fIval\fR.  Otherwise, \fIval\fR is added to or
subtracted from the section address.  See the comments under
\&\fB\-\-change\-addresses\fR, above. If \fIsectionpattern\fR does not
match any sections in the input file, a warning will be issued, unless
\&\fB\-\-no\-change\-warnings\fR is used.
.IP "\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
.IX Item "--change-section-lma sectionpattern{=,+,-}val"
Set or change the \s-1LMA\s0 address of any sections matching
\&\fIsectionpattern\fR.  The \s-1LMA\s0 address is the address where the
section will be loaded into memory at program load time.  Normally
this is the same as the \s-1VMA\s0 address, which is the address of the
section at program run time, but on some systems, especially those
where a program is held in \s-1ROM,\s0 the two can be different.  If \fB=\fR
is used, the section address is set to \fIval\fR.  Otherwise,
\&\fIval\fR is added to or subtracted from the section address.  See the
comments under \fB\-\-change\-addresses\fR, above.  If
\&\fIsectionpattern\fR does not match any sections in the input file, a
warning will be issued, unless \fB\-\-no\-change\-warnings\fR is used.
.IP "\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
.IX Item "--change-section-vma sectionpattern{=,+,-}val"
Set or change the \s-1VMA\s0 address of any section matching
\&\fIsectionpattern\fR.  The \s-1VMA\s0 address is the address where the
section will be located once the program has started executing.
Normally this is the same as the \s-1LMA\s0 address, which is the address
where the section will be loaded into memory, but on some systems,
especially those where a program is held in \s-1ROM,\s0 the two can be
different.  If \fB=\fR is used, the section address is set to
\&\fIval\fR.  Otherwise, \fIval\fR is added to or subtracted from the
section address.  See the comments under \fB\-\-change\-addresses\fR,
above.  If \fIsectionpattern\fR does not match any sections in the
input file, a warning will be issued, unless
\&\fB\-\-no\-change\-warnings\fR is used.
.IP "\fB\-\-change\-warnings\fR" 4
.IX Item "--change-warnings"
.PD 0
.IP "\fB\-\-adjust\-warnings\fR" 4
.IX Item "--adjust-warnings"
.PD
If \fB\-\-change\-section\-address\fR or \fB\-\-change\-section\-lma\fR or
\&\fB\-\-change\-section\-vma\fR is used, and the section pattern does not
match any sections, issue a warning.  This is the default.
.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
Do not issue a warning if \fB\-\-change\-section\-address\fR or
\&\fB\-\-adjust\-section\-lma\fR or \fB\-\-adjust\-section\-vma\fR is used, even
if the section pattern does not match any sections.
.IP "\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR\fB=\fR\fIflags\fR" 4
.IX Item "--set-section-flags sectionpattern=flags"
Set the flags for any sections matching \fIsectionpattern\fR.  The
\&\fIflags\fR argument is a comma separated string of flag names.  The
recognized names are \fBalloc\fR, \fBcontents\fR, \fBload\fR,
\&\fBnoload\fR, \fBreadonly\fR, \fBcode\fR, \fBdata\fR, \fBrom\fR,
\&\fBshare\fR, and \fBdebug\fR.  You can set the \fBcontents\fR flag
for a section which does not have contents, but it is not meaningful
to clear the \fBcontents\fR flag of a section which does have
contents\*(--just remove the section instead.  Not all flags are
meaningful for all object file formats.
.IP "\fB\-\-add\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4
.IX Item "--add-section sectionname=filename"
Add a new section named \fIsectionname\fR while copying the file.  The
contents of the new section are taken from the file \fIfilename\fR.  The
size of the section will be the size of the file.  This option only
works on file formats which can support sections with arbitrary names.
.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]"
Rename a section from \fIoldname\fR to \fInewname\fR, optionally
changing the section's flags to \fIflags\fR in the process.  This has
the advantage over usng a linker script to perform the rename in that
the output stays as an object file and does not become a linked
executable.
.Sp
This option is particularly helpful when the input format is binary,
since this will always create a section called .data.  If for example,
you wanted instead to create a section called .rodata containing binary
data you could use the following command line to achieve it:
.Sp
.Vb 3
\&          objcopy \-I binary \-O <output_format> \-B <architecture> \e
\&           \-\-rename\-section .data=.rodata,alloc,load,readonly,data,contents \e
\&           <input_binary_file> <output_object_file>
.Ve
.IP "\fB\-\-long\-section\-names {enable,disable,keep}\fR" 4
.IX Item "--long-section-names {enable,disable,keep}"
Controls the handling of long section names when processing \f(CW\*(C`COFF\*(C'\fR
and \f(CW\*(C`PE\-COFF\*(C'\fR object formats.  The default behaviour, \fBkeep\fR,
is to preserve long section names if any are present in the input file.
The \fBenable\fR and \fBdisable\fR options forcibly enable or disable
the use of long section names in the output object; when \fBdisable\fR
is in effect, any long section names in the input object will be truncated.
The \fBenable\fR option will only emit long section names if any are
present in the inputs; this is mostly the same as \fBkeep\fR, but it
is left undefined whether the \fBenable\fR option might force the
creation of an empty string table in the output file.
.IP "\fB\-\-change\-leading\-char\fR" 4
.IX Item "--change-leading-char"
Some object file formats use special characters at the start of
symbols.  The most common such character is underscore, which compilers
often add before every symbol.  This option tells \fBobjcopy\fR to
change the leading character of every symbol when it converts between
object file formats.  If the object file formats use the same leading
character, this option has no effect.  Otherwise, it will add a
character, or remove a character, or change a character, as
appropriate.
.IP "\fB\-\-remove\-leading\-char\fR" 4
.IX Item "--remove-leading-char"
If the first character of a global symbol is a special symbol leading
character used by the object file format, remove the character.  The
most common symbol leading character is underscore.  This option will
remove a leading underscore from all global symbols.  This can be useful
if you want to link together objects of different file formats with
different conventions for symbol names.  This is different from
\&\fB\-\-change\-leading\-char\fR because it always changes the symbol name
when appropriate, regardless of the object file format of the output
file.
.IP "\fB\-\-reverse\-bytes=\fR\fInum\fR" 4
.IX Item "--reverse-bytes=num"
Reverse the bytes in a section with output contents.  A section length must
be evenly divisible by the value given in order for the swap to be able to
take place. Reversing takes place before the interleaving is performed.
.Sp
This option is used typically in generating \s-1ROM\s0 images for problematic
target systems.  For example, on some target boards, the 32\-bit words
fetched from 8\-bit ROMs are re-assembled in little-endian byte order
regardless of the \s-1CPU\s0 byte order.  Depending on the programming model, the
endianness of the \s-1ROM\s0 may need to be modified.
.Sp
Consider a simple file with a section containing the following eight
bytes:  \f(CW12345678\fR.
.Sp
Using \fB\-\-reverse\-bytes=2\fR for the above example, the bytes in the
output file would be ordered \f(CW21436587\fR.
.Sp
Using \fB\-\-reverse\-bytes=4\fR for the above example, the bytes in the
output file would be ordered \f(CW43218765\fR.
.Sp
By using \fB\-\-reverse\-bytes=2\fR for the above example, followed by
\&\fB\-\-reverse\-bytes=4\fR on the output file, the bytes in the second
output file would be ordered \f(CW34127856\fR.
.IP "\fB\-\-srec\-len=\fR\fIival\fR" 4
.IX Item "--srec-len=ival"
Meaningful only for srec output.  Set the maximum length of the Srecords
being produced to \fIival\fR.  This length covers both address, data and
crc fields.
.IP "\fB\-\-srec\-forceS3\fR" 4
.IX Item "--srec-forceS3"
Meaningful only for srec output.  Avoid generation of S1/S2 records,
creating S3\-only record format.
.IP "\fB\-\-redefine\-sym\fR \fIold\fR\fB=\fR\fInew\fR" 4
.IX Item "--redefine-sym old=new"
Change the name of a symbol \fIold\fR, to \fInew\fR.  This can be useful
when one is trying link two things together for which you have no
source, and there are name collisions.
.IP "\fB\-\-redefine\-syms=\fR\fIfilename\fR" 4
.IX Item "--redefine-syms=filename"
Apply \fB\-\-redefine\-sym\fR to each symbol pair "\fIold\fR \fInew\fR"
listed in the file \fIfilename\fR.  \fIfilename\fR is simply a flat file,
with one symbol pair per line.  Line comments may be introduced by the hash
character.  This option may be given more than once.
.IP "\fB\-\-weaken\fR" 4
.IX Item "--weaken"
Change all global symbols in the file to be weak.  This can be useful
when building an object which will be linked against other objects using
the \fB\-R\fR option to the linker.  This option is only effective when
using an object file format which supports weak symbols.
.IP "\fB\-\-keep\-symbols=\fR\fIfilename\fR" 4
.IX Item "--keep-symbols=filename"
Apply \fB\-\-keep\-symbol\fR option to each symbol listed in the file
\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
name per line.  Line comments may be introduced by the hash character.
This option may be given more than once.
.IP "\fB\-\-strip\-symbols=\fR\fIfilename\fR" 4
.IX Item "--strip-symbols=filename"
Apply \fB\-\-strip\-symbol\fR option to each symbol listed in the file
\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
name per line.  Line comments may be introduced by the hash character.
This option may be given more than once.
.IP "\fB\-\-strip\-unneeded\-symbols=\fR\fIfilename\fR" 4
.IX Item "--strip-unneeded-symbols=filename"
Apply \fB\-\-strip\-unneeded\-symbol\fR option to each symbol listed in
the file \fIfilename\fR.  \fIfilename\fR is simply a flat file, with one
symbol name per line.  Line comments may be introduced by the hash
character.  This option may be given more than once.
.IP "\fB\-\-keep\-global\-symbols=\fR\fIfilename\fR" 4
.IX Item "--keep-global-symbols=filename"
Apply \fB\-\-keep\-global\-symbol\fR option to each symbol listed in the
file \fIfilename\fR.  \fIfilename\fR is simply a flat file, with one
symbol name per line.  Line comments may be introduced by the hash
character.  This option may be given more than once.
.IP "\fB\-\-localize\-symbols=\fR\fIfilename\fR" 4
.IX Item "--localize-symbols=filename"
Apply \fB\-\-localize\-symbol\fR option to each symbol listed in the file
\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
name per line.  Line comments may be introduced by the hash character.
This option may be given more than once.
.IP "\fB\-\-globalize\-symbols=\fR\fIfilename\fR" 4
.IX Item "--globalize-symbols=filename"
Apply \fB\-\-globalize\-symbol\fR option to each symbol listed in the file
\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
name per line.  Line comments may be introduced by the hash character.
This option may be given more than once.
.IP "\fB\-\-weaken\-symbols=\fR\fIfilename\fR" 4
.IX Item "--weaken-symbols=filename"
Apply \fB\-\-weaken\-symbol\fR option to each symbol listed in the file
\&\fIfilename\fR.  \fIfilename\fR is simply a flat file, with one symbol
name per line.  Line comments may be introduced by the hash character.
This option may be given more than once.
.IP "\fB\-\-alt\-machine\-code=\fR\fIindex\fR" 4
.IX Item "--alt-machine-code=index"
If the output architecture has alternate machine codes, use the
\&\fIindex\fRth code instead of the default one.  This is useful in case
a machine is assigned an official code and the tool-chain adopts the
new code, but other applications still depend on the original code
being used.  For \s-1ELF\s0 based architectures if the \fIindex\fR
alternative does not exist then the value is treated as an absolute
number to be stored in the e_machine field of the \s-1ELF\s0 header.
.IP "\fB\-\-writable\-text\fR" 4
.IX Item "--writable-text"
Mark the output text as writable.  This option isn't meaningful for all
object file formats.
.IP "\fB\-\-readonly\-text\fR" 4
.IX Item "--readonly-text"
Make the output text write protected.  This option isn't meaningful for all
object file formats.
.IP "\fB\-\-pure\fR" 4
.IX Item "--pure"
Mark the output file as demand paged.  This option isn't meaningful for all
object file formats.
.IP "\fB\-\-impure\fR" 4
.IX Item "--impure"
Mark the output file as impure.  This option isn't meaningful for all
object file formats.
.IP "\fB\-\-prefix\-symbols=\fR\fIstring\fR" 4
.IX Item "--prefix-symbols=string"
Prefix all symbols in the output file with \fIstring\fR.
.IP "\fB\-\-prefix\-sections=\fR\fIstring\fR" 4
.IX Item "--prefix-sections=string"
Prefix all section names in the output file with \fIstring\fR.
.IP "\fB\-\-prefix\-alloc\-sections=\fR\fIstring\fR" 4
.IX Item "--prefix-alloc-sections=string"
Prefix all the names of all allocated sections in the output file with
\&\fIstring\fR.
.IP "\fB\-\-add\-gnu\-debuglink=\fR\fIpath-to-file\fR" 4
.IX Item "--add-gnu-debuglink=path-to-file"
Creates a .gnu_debuglink section which contains a reference to \fIpath-to-file\fR
and adds it to the output file.
.IP "\fB\-\-keep\-file\-symbols\fR" 4
.IX Item "--keep-file-symbols"
When stripping a file, perhaps with \fB\-\-strip\-debug\fR or
\&\fB\-\-strip\-unneeded\fR, retain any symbols specifying source file names,
which would otherwise get stripped.
.IP "\fB\-\-only\-keep\-debug\fR" 4
.IX Item "--only-keep-debug"
Strip a file, removing contents of any sections that would not be
stripped by \fB\-\-strip\-debug\fR and leaving the debugging sections
intact.  In \s-1ELF\s0 files, this preserves all note sections in the output.
.Sp
The intention is that this option will be used in conjunction with
\&\fB\-\-add\-gnu\-debuglink\fR to create a two part executable.  One a
stripped binary which will occupy less space in \s-1RAM\s0 and in a
distribution and the second a debugging information file which is only
needed if debugging abilities are required.  The suggested procedure
to create these files is as follows:
.RS 4
.IP "1.<Link the executable as normal.  Assuming that is is called>" 4
.IX Item "1.<Link the executable as normal. Assuming that is is called>"
\&\f(CW\*(C`foo\*(C'\fR then...
.ie n .IP "1.<Run ""objcopy \-\-only\-keep\-debug foo foo.dbg"" to>" 4
.el .IP "1.<Run \f(CWobjcopy \-\-only\-keep\-debug foo foo.dbg\fR to>" 4
.IX Item "1.<Run objcopy --only-keep-debug foo foo.dbg to>"
create a file containing the debugging info.
.ie n .IP "1.<Run ""objcopy \-\-strip\-debug foo"" to create a>" 4
.el .IP "1.<Run \f(CWobjcopy \-\-strip\-debug foo\fR to create a>" 4
.IX Item "1.<Run objcopy --strip-debug foo to create a>"
stripped executable.
.ie n .IP "1.<Run ""objcopy \-\-add\-gnu\-debuglink=foo.dbg foo"">" 4
.el .IP "1.<Run \f(CWobjcopy \-\-add\-gnu\-debuglink=foo.dbg foo\fR>" 4
.IX Item "1.<Run objcopy --add-gnu-debuglink=foo.dbg foo>"
to add a link to the debugging info into the stripped executable.
.RE
.RS 4
.Sp
Note\-\-\-the choice of \f(CW\*(C`.dbg\*(C'\fR as an extension for the debug info
file is arbitrary.  Also the \f(CW\*(C`\-\-only\-keep\-debug\*(C'\fR step is
optional.  You could instead do this:
.IP "1.<Link the executable as normal.>" 4
.IX Item "1.<Link the executable as normal.>"
.PD 0
.ie n .IP "1.<Copy ""foo"" to  ""foo.full"">" 4
.el .IP "1.<Copy \f(CWfoo\fR to  \f(CWfoo.full\fR>" 4
.IX Item "1.<Copy foo to foo.full>"
.ie n .IP "1.<Run ""objcopy \-\-strip\-debug foo"">" 4
.el .IP "1.<Run \f(CWobjcopy \-\-strip\-debug foo\fR>" 4
.IX Item "1.<Run objcopy --strip-debug foo>"
.ie n .IP "1.<Run ""objcopy \-\-add\-gnu\-debuglink=foo.full foo"">" 4
.el .IP "1.<Run \f(CWobjcopy \-\-add\-gnu\-debuglink=foo.full foo\fR>" 4
.IX Item "1.<Run objcopy --add-gnu-debuglink=foo.full foo>"
.RE
.RS 4
.PD
.Sp
i.e., the file pointed to by the \fB\-\-add\-gnu\-debuglink\fR can be the
full executable.  It does not have to be a file created by the
\&\fB\-\-only\-keep\-debug\fR switch.
.Sp
Note\-\-\-this switch is only intended for use on fully linked files.  It
does not make sense to use it on object files where the debugging
information may be incomplete.  Besides the gnu_debuglink feature
currently only supports the presence of one filename containing
debugging information, not multiple filenames on a one-per-object-file
basis.
.RE
.IP "\fB\-\-strip\-dwo\fR" 4
.IX Item "--strip-dwo"
Remove the contents of all \s-1DWARF \s0.dwo sections, leaving the
remaining debugging sections and all symbols intact.
This option is intended for use by the compiler as part of
the \fB\-gsplit\-dwarf\fR option, which splits debug information
between the .o file and a separate .dwo file.  The compiler
generates all debug information in the same file, then uses
the \fB\-\-extract\-dwo\fR option to copy the .dwo sections to
the .dwo file, then the \fB\-\-strip\-dwo\fR option to remove
those sections from the original .o file.
.IP "\fB\-\-extract\-dwo\fR" 4
.IX Item "--extract-dwo"
Extract the contents of all \s-1DWARF \s0.dwo sections.  See the
\&\fB\-\-strip\-dwo\fR option for more information.
.IP "\fB\-\-file\-alignment\fR \fInum\fR" 4
.IX Item "--file-alignment num"
Specify the file alignment.  Sections in the file will always begin at
file offsets which are multiples of this number.  This defaults to
512.
[This option is specific to \s-1PE\s0 targets.]
.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
Specify the number of bytes of memory to reserve (and optionally commit)
to be used as heap for this program.
[This option is specific to \s-1PE\s0 targets.]
.IP "\fB\-\-image\-base\fR \fIvalue\fR" 4
.IX Item "--image-base value"
Use \fIvalue\fR as the base address of your program or dll.  This is
the lowest memory location that will be used when your program or dll
is loaded.  To reduce the need to relocate and improve performance of
your dlls, each should have a unique base address and not overlap any
other dlls.  The default is 0x400000 for executables, and 0x10000000
for dlls.
[This option is specific to \s-1PE\s0 targets.]
.IP "\fB\-\-section\-alignment\fR \fInum\fR" 4
.IX Item "--section-alignment num"
Sets the section alignment.  Sections in memory will always begin at
addresses which are a multiple of this number.  Defaults to 0x1000.
[This option is specific to \s-1PE\s0 targets.]
.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
Specify the number of bytes of memory to reserve (and optionally commit)
to be used as stack for this program.
[This option is specific to \s-1PE\s0 targets.]
.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
Specifies the subsystem under which your program will execute.  The
legal values for \fIwhich\fR are \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, and \f(CW\*(C`xbox\*(C'\fR.  You may optionally set
the subsystem version also.  Numeric values are also accepted for
\&\fIwhich\fR.
[This option is specific to \s-1PE\s0 targets.]
.IP "\fB\-\-extract\-symbol\fR" 4
.IX Item "--extract-symbol"
Keep the file's section flags and symbols but remove all section data.
Specifically, the option:
.RS 4
.IP "*<removes the contents of all sections;>" 4
.IX Item "*<removes the contents of all sections;>"
.PD 0
.IP "*<sets the size of every section to zero; and>" 4
.IX Item "*<sets the size of every section to zero; and>"
.IP "*<sets the file's start address to zero.>" 4
.IX Item "*<sets the file's start address to zero.>"
.RE
.RS 4
.PD
.Sp
This option is used to build a \fI.sym\fR file for a VxWorks kernel.
It can also be a useful way of reducing the size of a \fB\-\-just\-symbols\fR
linker input file.
.RE
.IP "\fB\-\-compress\-debug\-sections\fR" 4
.IX Item "--compress-debug-sections"
Compress \s-1DWARF\s0 debug sections using zlib.
.IP "\fB\-\-decompress\-debug\-sections\fR" 4
.IX Item "--decompress-debug-sections"
Decompress \s-1DWARF\s0 debug sections using zlib.
.IP "\fB\-V\fR" 4
.IX Item "-V"
.PD 0
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
.PD
Show the version number of \fBobjcopy\fR.
.IP "\fB\-v\fR" 4
.IX Item "-v"
.PD 0
.IP "\fB\-\-verbose\fR" 4
.IX Item "--verbose"
.PD
Verbose output: list all object files modified.  In the case of
archives, \fBobjcopy \-V\fR lists all members of the archive.
.IP "\fB\-\-help\fR" 4
.IX Item "--help"
Show a summary of the options to \fBobjcopy\fR.
.IP "\fB\-\-info\fR" 4
.IX Item "--info"
Display a list showing all architectures and object formats available.
.IP "\fB@\fR\fIfile\fR" 4
.IX Item "@file"
Read command-line options from \fIfile\fR.  The options read are
inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
does not exist, or cannot be read, then the option will be treated
literally, and not removed.
.Sp
Options in \fIfile\fR are separated by whitespace.  A whitespace
character may be included in an option by surrounding the entire
option in either single or double quotes.  Any character (including a
backslash) may be included by prefixing the character to be included
with a backslash.  The \fIfile\fR may itself contain additional
@\fIfile\fR options; any such options will be processed recursively.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fIld\fR\|(1), \fIobjdump\fR\|(1), and the Info entries for \fIbinutils\fR.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1991\-2013 Free Software Foundation, Inc.
.PP
Permission is granted to copy, distribute and/or modify this document
under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R".
