.\" Automatically generated by Pod::Man version 1.02
.\" Wed May 30 12:24:28 2001
.\"
.\" Standard preamble:
.\" ======================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.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.  | will give a
.\" real vertical bar.  \*(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-|\(bv\*(Tr
.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" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr
.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
.\" index entries marked with X<> in POD.  Of course, you'll have to process
.\" the output yourself in some meaningful fashion.
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
.    .
.    nr % 0
.    rr F
.\}
.\"
.\" For nroff, turn off justification.  Always turn off hyphenation; it
.\" makes way too many mistakes in technical documents.
.hy 0
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.bd B 3
.    \" 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 1"
.TH OBJCOPY.1 1 "binutils-2.11.90" "2001-05-30" "GNU"
.UC
.SH "NAME"
objcopy \- copy and translate object files
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
objcopy [ \-F \fIbfdname\fR | \-\-target=\fIbfdname\fR ]
        [ \-I \fIbfdname\fR | \-\-input-target=\fIbfdname\fR ]
        [ \-O \fIbfdname\fR | \-\-output-target=\fIbfdname\fR ]
        [ \-B \fIbfdarch\fR | \-\-binary-architecture=\fIbfdarch\fR ]
        [ \-S | \-\-strip-all ]  [ \-g | \-\-strip-debug ]
        [ \-K \fIsymbolname\fR | \-\-keep-symbol=\fIsymbolname\fR ]
        [ \-N \fIsymbolname\fR | \-\-strip-symbol=\fIsymbolname\fR ]
        [ \-G \fIsymbolname\fR | \-\-keep-global-symbol=\fIsymbolname\fR]
        [ \-L \fIsymbolname\fR | \-\-localize-symbol=\fIsymbolname\fR ]
        [ \-W \fIsymbolname\fR | \-\-weaken-symbol=\fIsymbolname\fR ]
        [ \-x | \-\-discard-all ]  [ \-X | \-\-discard-locals ]
        [ \-b \fIbyte\fR | \-\-byte=\fIbyte\fR ]
        [ \-i \fIinterleave\fR | \-\-interleave=\fIinterleave\fR ]
        [ \-j \fIsectionname\fR | \-\-only-section=\fIsectionname\fR ]
        [ \-R \fIsectionname\fR | \-\-remove-section=\fIsectionname\fR ]
        [ \-p | \-\-preserve-dates ] [ \-\-debugging ]
        [ \-\-gap-fill=\fIval\fR ] [ \-\-pad-to=\fIaddress\fR ]
        [ \-\-set-start=\fIval\fR ] [ \-\-adjust-start=\fIincr\fR ]
        [ \-\-change-addresses=\fIincr\fR ]
        [ \-\-change-section-address \fIsection\fR{=,+,\-}\fIval\fR ]
        [ \-\-change-section-lma \fIsection\fR{=,+,\-}\fIval\fR ]
        [ \-\-change-section-vma \fIsection\fR{=,+,\-}\fIval\fR ]
        [ \-\-change-warnings ] [ \-\-no-change-warnings ]
        [ \-\-set-section-flags \fIsection\fR=\fIflags\fR ]
        [ \-\-add-section \fIsectionname\fR=\fIfilename\fR ]
        [ \-\-change-leading-char ] [ \-\-remove-leading-char ]
        [ \-\-srec-len=\fIival\fR ] [ \-\-srec-forceS3 ]
        [ \-\-redefine-sym \fIold\fR=\fInew\fR ] [ \-\-weaken ]
        [ \-\-keep-symbols=\fIfilename\fR ]
        [ \-\-strip-symbols=\fIfilename\fR ]
        [ \-\-keep-global-symbols=\fIfilename\fR ]
        [ \-\-localize-symbols=\fIfilename\fR ]
        [ \-\-weaken-symbols=\fIfilename\fR ]
        [ \-v | \-\-verbose ] [ \-V | \-\-version ]  [ \-\-help ]
        \fIinfile\fR [\fIoutfile\fR]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
The \s-1GNU\s0 \f(CW\*(C`objcopy\*(C'\fR utility copies the contents of an object
file to another.  \f(CW\*(C`objcopy\*(C'\fR uses the \s-1GNU\s0 \s-1BFD\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 \f(CW\*(C`objcopy\*(C'\fR is controlled by command-line options.
Note that \f(CW\*(C`objcopy\*(C'\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
\&\f(CW\*(C`objcopy\*(C'\fR creates temporary files to do its translations and
deletes them afterward.  \f(CW\*(C`objcopy\*(C'\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
\&\f(CW\*(C`objcopy\*(C'\fR can be used to generate S-records by using an output
target of \fBsrec\fR (e.g., use \fB\-O srec\fR).
.PP
\&\f(CW\*(C`objcopy\*(C'\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
\&\f(CW\*(C`objcopy\*(C'\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 \- \f(CW\*(C`objcopy\*(C'\fR is not able to change the endianness of its input
files.  If the input format has an endianness, (some formats do not),
\&\f(CW\*(C`objcopy\*(C'\fR can only copy the inputs into file formats that have the
same endianness or which have no endianness (eg \fBsrec\fR).
.SH "OPTIONS"
.IX Header "OPTIONS"
.Ip "\f(CW\*(C`\f(CIinfile\f(CW\*(C'\fR" 4
.IX Item "infile"
.Ip "\f(CW\*(C`\f(CIoutfile\f(CW\*(C'\fR" 4
.IX Item "outfile"
The input and output files, respectively.
If you do not specify \fIoutfile\fR, \f(CW\*(C`objcopy\*(C'\fR creates a
temporary file and destructively renames the result with
the name of \fIinfile\fR.
.Ip "\f(CW\*(C`\-I \f(CIbfdname\f(CW	\*(C'\fR" 4
.IX Item "-I bfdname	"
.Ip "\f(CW\*(C`\-\-input\-target=\f(CIbfdname\f(CW\*(C'\fR" 4
.IX Item "--input-target=bfdname"
Consider the source file's object format to be \fIbfdname\fR, rather than
attempting to deduce it.  
.Ip "\f(CW\*(C`\-O \f(CIbfdname\f(CW\*(C'\fR" 4
.IX Item "-O bfdname"
.Ip "\f(CW\*(C`\-\-output\-target=\f(CIbfdname\f(CW\*(C'\fR" 4
.IX Item "--output-target=bfdname"
Write the output file using the object format \fIbfdname\fR.
.Ip "\f(CW\*(C`\-F \f(CIbfdname\f(CW\*(C'\fR" 4
.IX Item "-F bfdname"
.Ip "\f(CW\*(C`\-\-target=\f(CIbfdname\f(CW\*(C'\fR" 4
.IX Item "--target=bfdname"
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 "\f(CW\*(C`\-B \f(CIbfdarch\f(CW\*(C'\fR" 4
.IX Item "-B bfdarch"
.Ip "\f(CW\*(C`\-\-binary\-architecture=\f(CIbfdarch\f(CW\*(C'\fR" 4
.IX Item "--binary-architecture=bfdarch"
Useful when transforming a raw binary 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 "\f(CW\*(C`\-j \f(CIsectionname\f(CW\*(C'\fR" 4
.IX Item "-j sectionname"
.Ip "\f(CW\*(C`\-\-only\-section=\f(CIsectionname\f(CW\*(C'\fR" 4
.IX Item "--only-section=sectionname"
Copy only the named section 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.
.Ip "\f(CW\*(C`\-R \f(CIsectionname\f(CW\*(C'\fR" 4
.IX Item "-R sectionname"
.Ip "\f(CW\*(C`\-\-remove\-section=\f(CIsectionname\f(CW\*(C'\fR" 4
.IX Item "--remove-section=sectionname"
Remove any section named \fIsectionname\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.
.Ip "\f(CW\*(C`\-S\*(C'\fR" 4
.IX Item "-S"
.Ip "\f(CW\*(C`\-\-strip\-all\*(C'\fR" 4
.IX Item "--strip-all"
Do not copy relocation and symbol information from the source file.
.Ip "\f(CW\*(C`\-g\*(C'\fR" 4
.IX Item "-g"
.Ip "\f(CW\*(C`\-\-strip\-debug\*(C'\fR" 4
.IX Item "--strip-debug"
Do not copy debugging symbols from the source file.
.Ip "\f(CW\*(C`\-\-strip\-unneeded\*(C'\fR" 4
.IX Item "--strip-unneeded"
Strip all symbols that are not needed for relocation processing.
.Ip "\f(CW\*(C`\-K \f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "-K symbolname"
.Ip "\f(CW\*(C`\-\-keep\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "--keep-symbol=symbolname"
Copy only symbol \fIsymbolname\fR from the source file.  This option may
be given more than once.
.Ip "\f(CW\*(C`\-N \f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "-N symbolname"
.Ip "\f(CW\*(C`\-\-strip\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "--strip-symbol=symbolname"
Do not copy symbol \fIsymbolname\fR from the source file.  This option
may be given more than once.
.Ip "\f(CW\*(C`\-G \f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "-G symbolname"
.Ip "\f(CW\*(C`\-\-keep\-global\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "--keep-global-symbol=symbolname"
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 "\f(CW\*(C`\-L \f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "-L symbolname"
.Ip "\f(CW\*(C`\-\-localize\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "--localize-symbol=symbolname"
Make symbol \fIsymbolname\fR local to the file, so that it is not
visible externally.  This option may be given more than once.
.Ip "\f(CW\*(C`\-W \f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "-W symbolname"
.Ip "\f(CW\*(C`\-\-weaken\-symbol=\f(CIsymbolname\f(CW\*(C'\fR" 4
.IX Item "--weaken-symbol=symbolname"
Make symbol \fIsymbolname\fR weak. This option may be given more than once.
.Ip "\f(CW\*(C`\-x\*(C'\fR" 4
.IX Item "-x"
.Ip "\f(CW\*(C`\-\-discard\-all\*(C'\fR" 4
.IX Item "--discard-all"
Do not copy non-global symbols from the source file.
.Ip "\f(CW\*(C`\-X\*(C'\fR" 4
.IX Item "-X"
.Ip "\f(CW\*(C`\-\-discard\-locals\*(C'\fR" 4
.IX Item "--discard-locals"
Do not copy compiler-generated local symbols.
(These usually start with \fBL\fR or \fB.\fR.)
.Ip "\f(CW\*(C`\-b \f(CIbyte\f(CW\*(C'\fR" 4
.IX Item "-b byte"
.Ip "\f(CW\*(C`\-\-byte=\f(CIbyte\f(CW\*(C'\fR" 4
.IX Item "--byte=byte"
Keep only every \fIbyte\fRth byte of the input file (header data is not
affected).  \fIbyte\fR can be in the range from 0 to \fIinterleave\fR\-1,
where \fIinterleave\fR is given by the \fB\-i\fR or \fB\*(--interleave\fR
option, or the default of 4.  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.
.Ip "\f(CW\*(C`\-i \f(CIinterleave\f(CW\*(C'\fR" 4
.IX Item "-i interleave"
.Ip "\f(CW\*(C`\-\-interleave=\f(CIinterleave\f(CW\*(C'\fR" 4
.IX Item "--interleave=interleave"
Only copy one out of every \fIinterleave\fR bytes.  Select which byte to
copy with the \fI\-b\fR or \fB\*(--byte\fR option.  The default is 4.
\&\f(CW\*(C`objcopy\*(C'\fR ignores this option if you do not specify either \fB\-b\fR or
\&\fB\*(--byte\fR.
.Ip "\f(CW\*(C`\-p\*(C'\fR" 4
.IX Item "-p"
.Ip "\f(CW\*(C`\-\-preserve\-dates\*(C'\fR" 4
.IX Item "--preserve-dates"
Set the access and modification dates of the output file to be the same
as those of the input file.
.Ip "\f(CW\*(C`\-\-debugging\*(C'\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 "\f(CW\*(C`\-\-gap\-fill \f(CIval\f(CW\*(C'\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 "\f(CW\*(C`\-\-pad\-to \f(CIaddress\f(CW\*(C'\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 "\f(CW\*(C`\-\-set\-start \f(CIval\f(CW\*(C'\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 "\f(CW\*(C`\-\-change\-start \f(CIincr\f(CW\*(C'\fR" 4
.IX Item "--change-start incr"
.Ip "\f(CW\*(C`\-\-adjust\-start \f(CIincr\f(CW\*(C'\fR" 4
.IX Item "--adjust-start incr"
Change the start address by adding \fIincr\fR.  Not all object file
formats support setting the start address.
.Ip "\f(CW\*(C`\-\-change\-addresses \f(CIincr\f(CW\*(C'\fR" 4
.IX Item "--change-addresses incr"
.Ip "\f(CW\*(C`\-\-adjust\-vma \f(CIincr\f(CW\*(C'\fR" 4
.IX Item "--adjust-vma incr"
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 "\f(CW\*(C`\-\-change\-section\-address \f(CIsection\f(CW{=,+,\-}\f(CIval\f(CW\*(C'\fR" 4
.IX Item "--change-section-address section{=,+,-}val"
.Ip "\f(CW\*(C`\-\-adjust\-section\-vma \f(CIsection\f(CW{=,+,\-}\f(CIval\f(CW\*(C'\fR" 4
.IX Item "--adjust-section-vma section{=,+,-}val"
Set or change both the \s-1VMA\s0 address and the \s-1LMA\s0 address of the named
\&\fIsection\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 \fIsection\fR does not exist in the input file, a warning will
be issued, unless \fB\*(--no-change-warnings\fR is used.
.Ip "\f(CW\*(C`\-\-change\-section\-lma \f(CIsection\f(CW{=,+,\-}\f(CIval\f(CW\*(C'\fR" 4
.IX Item "--change-section-lma section{=,+,-}val"
Set or change the \s-1LMA\s0 address of the named \fIsection\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 \fIsection\fR does not exist in the input file, a warning
will be issued, unless \fB\*(--no-change-warnings\fR is used.  
.Ip "\f(CW\*(C`\-\-change\-section\-vma \f(CIsection\f(CW{=,+,\-}\f(CIval\f(CW\*(C'\fR" 4
.IX Item "--change-section-vma section{=,+,-}val"
Set or change the \s-1VMA\s0 address of the named \fIsection\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 \fIsection\fR does not exist in
the input file, a warning will be issued, unless
\&\fB\*(--no-change-warnings\fR is used.   
.Ip "\f(CW\*(C`\-\-change\-warnings\*(C'\fR" 4
.IX Item "--change-warnings"
.Ip "\f(CW\*(C`\-\-adjust\-warnings\*(C'\fR" 4
.IX Item "--adjust-warnings"
If \fB\*(--change-section-address\fR or \fB\*(--change-section-lma\fR or
\&\fB\*(--change-section-vma\fR is used, and the named section does not
exist, issue a warning.  This is the default. 
.Ip "\f(CW\*(C`\-\-no\-change\-warnings\*(C'\fR" 4
.IX Item "--no-change-warnings"
.Ip "\f(CW\*(C`\-\-no\-adjust\-warnings\*(C'\fR" 4
.IX Item "--no-adjust-warnings"
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 named section does not exist. 
.Ip "\f(CW\*(C`\-\-set\-section\-flags \f(CIsection\f(CW=\f(CIflags\f(CW\*(C'\fR" 4
.IX Item "--set-section-flags section=flags"
Set the flags for the named section.  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 "\f(CW\*(C`\-\-add\-section \f(CIsectionname\f(CW=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-change\-leading\-char\*(C'\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 \f(CW\*(C`objcopy\*(C'\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 "\f(CW\*(C`\-\-remove\-leading\-char\*(C'\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
\&\f(CW\*(C`\-\-change\-leading\-char\*(C'\fR because it always changes the symbol name
when appropriate, regardless of the object file format of the output
file.
.Ip "\f(CW\*(C`\-\-srec\-len=\f(CIival\f(CW\*(C'\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 "\f(CW\*(C`\-\-srec\-forceS3\*(C'\fR" 4
.IX Item "--srec-forceS3"
Meaningful only for srec output.  Avoid generation of S1/S2 records, 
creating S3\-only record format.
.Ip "\f(CW\*(C`\-\-redefine\-sym \f(CIold\f(CW=\f(CInew\f(CW\*(C'\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 "\f(CW\*(C`\-\-weaken\*(C'\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 \f(CW\*(C`\-R\*(C'\fR option to the linker.  This option is only effective when
using an object file format which supports weak symbols.
.Ip "\f(CW\*(C`\-\-keep\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-strip\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-keep\-global\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-localize\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-\-weaken\-symbols=\f(CIfilename\f(CW\*(C'\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 "\f(CW\*(C`\-V\*(C'\fR" 4
.IX Item "-V"
.Ip "\f(CW\*(C`\-\-version\*(C'\fR" 4
.IX Item "--version"
Show the version number of \f(CW\*(C`objcopy\*(C'\fR.
.Ip "\f(CW\*(C`\-v\*(C'\fR" 4
.IX Item "-v"
.Ip "\f(CW\*(C`\-\-verbose\*(C'\fR" 4
.IX Item "--verbose"
Verbose output: list all object files modified.  In the case of
archives, \fBobjcopy \-V\fR lists all members of the archive.
.Ip "\f(CW\*(C`\-\-help\*(C'\fR" 4
.IX Item "--help"
Show a summary of the options to \f(CW\*(C`objcopy\*(C'\fR.
.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, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 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.1
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".
