\-\-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 \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
.IX Item "--change-section-address section{=,+,-}val"
.PD 0
.IP "\fB\-\-adjust\-section\-vma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
.IX Item "--adjust-section-vma section{=,+,-}val"
.PD
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 "\fB\-\-change\-section\-lma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\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 "\fB\-\-change\-section\-vma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\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 "\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 named section does not
exist, 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 named section does not exist.
.IP "\fB\-\-set\-section\-flags\fR \fIsection\fR\fB=\fR\fIflags\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 "\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""\fR to  \f(CW""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\-\-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, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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".
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
.\"
.\" 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 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" ''
'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 (.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.
.ie \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.el \{\
.    de IX
..
.\}
.\"
.\" 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 "ELFEDIT 1"
.TH ELFEDIT 1 "2010-12-08" "binutils-2.21" "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"
elfedit \- Update the ELF header of ELF files.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
elfedit [\fB\-\-input\-mach=\fR\fImachine\fR]
        [\fB\-\-input\-type=\fR\fItype\fR]
        [\fB\-\-input\-osabi=\fR\fIosbi\fR]
        \fB\-\-output\-mach=\fR\fImachine\fR
        \fB\-\-output\-type=\fR\fItype\fR
        \fB\-\-output\-osabi=\fR\fIosbi\fR
        [\fB\-v\fR|\fB\-\-version\fR]
        [\fB\-h\fR|\fB\-\-help\fR]
        \fIelffile\fR...
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBelfedit\fR updates the \s-1ELF\s0 header of \s-1ELF\s0 files which have
the matching \s-1ELF\s0 machine and file types.  The options control how and
which fields in the \s-1ELF\s0 header should be updated.
.PP
\&\fIelffile\fR... are the \s-1ELF\s0 files to be updated.  32\-bit and
64\-bit \s-1ELF\s0 files are supported, as are archives containing \s-1ELF\s0 files.
.SH "OPTIONS"
.IX Header "OPTIONS"
The long and short forms of options, shown here as alternatives, are
equivalent. At least one of the \fB\-\-output\-mach\fR,
\&\fB\-\-output\-type\fR and \fB\-\-output\-osabi\fR options must be given.
.IP "\fB\-\-input\-mach=\fR\fImachine\fR" 4
.IX Item "--input-mach=machine"
Set the matching input \s-1ELF\s0 machine type to \fImachine\fR.  If
\&\fB\-\-input\-mach\fR isn't specified, it will match any \s-1ELF\s0
machine types.
.Sp
The supported \s-1ELF\s0 machine types are, \fIL1OM\fR and \fIx86\-64\fR.
.IP "\fB\-\-output\-mach=\fR\fImachine\fR" 4
.IX Item "--output-mach=machine"
Change the \s-1ELF\s0 machine type in the \s-1ELF\s0 header to \fImachine\fR.  The
supported \s-1ELF\s0 machine types are the same as \fB\-\-input\-mach\fR.
.IP "\fB\-\-input\-type=\fR\fItype\fR" 4
.IX Item "--input-type=type"
Set the matching input \s-1ELF\s0 file type to \fItype\fR.  If
\&\fB\-\-input\-type\fR isn't specified, it will match any \s-1ELF\s0 file types.
.Sp
The supported \s-1ELF\s0 file types are, \fIrel\fR, \fIexec\fR and \fIdyn\fR.
.IP "\fB\-\-output\-type=\fR\fItype\fR" 4
.IX Item "--output-type=type"
Change the \s-1ELF\s0 file type in the \s-1ELF\s0 header to \fItype\fR.  The
supported \s-1ELF\s0 types are the same as \fB\-\-input\-type\fR.
.IP "\fB\-\-input\-osabi=\fR\fIosabi\fR" 4
.IX Item "--input-osabi=osabi"
Set the matching input \s-1ELF\s0 file \s-1OSABI\s0 to \fIosbi\fR.  If
\&\fB\-\-input\-osabi\fR isn't specified, it will match any \s-1ELF\s0 OSABIs.
.Sp
The supported \s-1ELF\s0 OSABIs are, \fInone\fR, \fI\s-1HPUX\s0\fR, \fINetBSD\fR,
\&\fILinux\fR, \fIHurd\fR, \fISolaris\fR, \fI\s-1AIX\s0\fR, \fIIrix\fR,
\&\fIFreeBSD\fR, \fI\s-1TRU64\s0\fR, \fIModesto\fR, \fIOpenBSD\fR, \fIOpenVMS\fR,
\&\fI\s-1NSK\s0\fR, \fI\s-1AROS\s0\fR and \fIFenixOS\fR.
.IP "\fB\-\-output\-osabi=\fR\fIosabi\fR" 4
.IX Item "--output-osabi=osabi"
Change the \s-1ELF\s0 \s-1OSABI\s0 in the \s-1ELF\s0 header to \fItype\fR.  The
supported \s-1ELF\s0 \s-1OSABI\s0 are the same as \fB\-\-input\-osabi\fR.
.IP "\fB\-v\fR" 4
.IX Item "-v"
.PD 0
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
.PD
Display the version number of \fBelfedit\fR.
.IP "\fB\-h\fR" 4
.IX Item "-h"
.PD 0
.IP "\fB\-\-help\fR" 4
.IX Item "--help"
.PD
Display the command line options understood by \fBelfedit\fR.
.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"
\&\fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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".
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
.\"
.\" 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 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" ''
'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 (.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.
.ie \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.el \{\
.    de IX
..
.\}
.\"
.\" 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 "ADDR2LINE 1"
.TH ADDR2LINE 1 "2010-12-08" "binutils-2.21" "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"
addr2line \- convert addresses into file names and line numbers.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
addr2line [\fB\-a\fR|\fB\-\-addresses\fR]
          [\fB\-b\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR]
          [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]]
          [\fB\-e\fR \fIfilename\fR|\fB\-\-exe=\fR\fIfilename\fR]
          [\fB\-f\fR|\fB\-\-functions\fR] [\fB\-s\fR|\fB\-\-basename\fR]
          [\fB\-i\fR|\fB\-\-inlines\fR]
          [\fB\-p\fR|\fB\-\-pretty\-print\fR]
          [\fB\-j\fR|\fB\-\-section=\fR\fIname\fR]
          [\fB\-H\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
          [addr addr ...]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBaddr2line\fR translates addresses into file names and line numbers.
Given an address in an executable or an offset in a section of a relocatable
object, it uses the debugging information to figure out which file name and
line number are associated with it.
.PP
The executable or relocatable object to use is specified with the \fB\-e\fR
option.  The default is the file \fIa.out\fR.  The section in the relocatable
object to use is specified with the \fB\-j\fR option.
.PP
\&\fBaddr2line\fR has two modes of operation.
.PP
In the first, hexadecimal addresses are specified on the command line,
and \fBaddr2line\fR displays the file name and line number for each
address.
.PP
In the second, \fBaddr2line\fR reads hexadecimal addresses from
standard input, and prints the file name and line number for each
address on standard output.  In this mode, \fBaddr2line\fR may be used
in a pipe to convert dynamically chosen addresses.
.PP
The format of the output is \fB\s-1FILENAME:LINENO\s0\fR.  The file name and
line number for each address is printed on a separate line.  If the
\&\fB\-f\fR option is used, then each \fB\s-1FILENAME:LINENO\s0\fR line is
preceded by a \fB\s-1FUNCTIONNAME\s0\fR line which is the name of the function
containing the address.  If the \fB\-a\fR option is used, then the
address read is first printed.
.PP
If the file name or function name can not be determined,
\&\fBaddr2line\fR will print two question marks in their place.  If the
line number can not be determined, \fBaddr2line\fR will print 0.
.SH "OPTIONS"
.IX Header "OPTIONS"
The long and short forms of options, shown here as alternatives, are
equivalent.
.IP "\fB\-a\fR" 4
.IX Item "-a"
.PD 0
.IP "\fB\-\-addresses\fR" 4
.IX Item "--addresses"
.PD
Display address before function names or file and line number
information.  The address is printed with a \fB0x\fR prefix to easily
identify it.
.IP "\fB\-b\fR \fIbfdname\fR" 4
.IX Item "-b bfdname"
.PD 0
.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
.IX Item "--target=bfdname"
.PD
Specify that the object-code format for the object files is
\&\fIbfdname\fR.
.IP "\fB\-C\fR" 4
.IX Item "-C"
.PD 0
.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4
.IX Item "--demangle[=style]"
.PD
Decode (\fIdemangle\fR) low-level symbol names into user-level names.
Besides removing any initial underscore prepended by the system, this
makes \*(C+ function names readable.  Different compilers have different
mangling styles. The optional demangling style argument can be used to
choose an appropriate demangling style for your compiler.
.IP "\fB\-e\fR \fIfilename\fR" 4
.IX Item "-e filename"
.PD 0
.IP "\fB\-\-exe=\fR\fIfilename\fR" 4
.IX Item "--exe=filename"
.PD
Specify the name of the executable for which addresses should be
translated.  The default file is \fIa.out\fR.
.IP "\fB\-f\fR" 4
.IX Item "-f"
.PD 0
.IP "\fB\-\-functions\fR" 4
.IX Item "--functions"
.PD
Display function names as well as file and line number information.
.IP "\fB\-s\fR" 4
.IX Item "-s"
.PD 0
.IP "\fB\-\-basenames\fR" 4
.IX Item "--basenames"
.PD
Display only the base of each file name.
.IP "\fB\-i\fR" 4
.IX Item "-i"
.PD 0
.IP "\fB\-\-inlines\fR" 4
.IX Item "--inlines"
.PD
If the address belongs to a function that was inlined, the source
information for all enclosing scopes back to the first non-inlined
function will also be printed.  For example, if \f(CW\*(C`main\*(C'\fR inlines
\&\f(CW\*(C`callee1\*(C'\fR which inlines \f(CW\*(C`callee2\*(C'\fR, and address is from
\&\f(CW\*(C`callee2\*(C'\fR, the source information for \f(CW\*(C`callee1\*(C'\fR and \f(CW\*(C`main\*(C'\fR
will also be printed.
.IP "\fB\-j\fR" 4
.IX Item "-j"
.PD 0
.IP "\fB\-\-section\fR" 4
.IX Item "--section"
.PD
Read offsets relative to the specified section instead of absolute addresses.
.IP "\fB\-p\fR" 4
.IX Item "-p"
.PD 0
.IP "\fB\-\-pretty\-print\fR" 4
.IX Item "--pretty-print"
.PD
Make the output more human friendly: each location are printed on one line.
If option \fB\-i\fR is specified, lines for all enclosing scopes are
prefixed with \fB(inlined by)\fR.
.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"
Info entries for \fIbinutils\fR.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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".
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
.\"
.\" 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 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" ''
'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 (.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.
.ie \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.el \{\
.    de IX
..
.\}
.\"
.\" 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 "SIZE 1"
.TH SIZE 1 "2010-12-08" "binutils-2.21" "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"
size \- list section sizes and total size.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
size [\fB\-A\fR|\fB\-B\fR|\fB\-\-format=\fR\fIcompatibility\fR]
     [\fB\-\-help\fR]
     [\fB\-d\fR|\fB\-o\fR|\fB\-x\fR|\fB\-\-radix=\fR\fInumber\fR]
     [\fB\-\-common\fR]
     [\fB\-t\fR|\fB\-\-totals\fR]
     [\fB\-\-target=\fR\fIbfdname\fR] [\fB\-V\fR|\fB\-\-version\fR]
     [\fIobjfile\fR...]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
The \s-1GNU\s0 \fBsize\fR utility lists the section sizes\-\-\-and the total
size\-\-\-for each of the object or archive files \fIobjfile\fR in its
argument list.  By default, one line of output is generated for each
object file or each module in an archive.
.PP
\&\fIobjfile\fR... are the object files to be examined.
If none are specified, the file \f(CW\*(C`a.out\*(C'\fR will be used.
.SH "OPTIONS"
.IX Header "OPTIONS"
The command line options have the following meanings:
.IP "\fB\-A\fR" 4
.IX Item "-A"
.PD 0
.IP "\fB\-B\fR" 4
.IX Item "-B"
.IP "\fB\-\-format=\fR\fIcompatibility\fR" 4
.IX Item "--format=compatibility"
.PD
Using one of these options, you can choose whether the output from \s-1GNU\s0
\&\fBsize\fR resembles output from System V \fBsize\fR (using \fB\-A\fR,
or \fB\-\-format=sysv\fR), or Berkeley \fBsize\fR (using \fB\-B\fR, or
\&\fB\-\-format=berkeley\fR).  The default is the one-line format similar to
Berkeley's.
.Sp
Here is an example of the Berkeley (default) format of output from
\&\fBsize\fR:
.Sp
.Vb 4
\&        $ size \-\-format=Berkeley ranlib size
\&        text    data    bss     dec     hex     filename
\&        294880  81920   11592   388392  5ed28   ranlib
\&        294880  81920   11888   388688  5ee50   size
.Ve
.Sp
This is the same data, but displayed closer to System V conventions:
.Sp
.Vb 7
\&        $ size \-\-format=SysV ranlib size
\&        ranlib  :
\&        section         size         addr
\&        .text         294880         8192
\&        .data          81920       303104
\&        .bss           11592       385024
\&        Total         388392
\&        
\&        
\&        size  :
\&        section         size         addr
\&        .text         294880         8192
\&        .data          81920       303104
\&        .bss           11888       385024
\&        Total         388688
.Ve
.IP "\fB\-\-help\fR" 4
.IX Item "--help"
Show a summary of acceptable arguments and options.
.IP "\fB\-d\fR" 4
.IX Item "-d"
.PD 0
.IP "\fB\-o\fR" 4
.IX Item "-o"
.IP "\fB\-x\fR" 4
.IX Item "-x"
.IP "\fB\-\-radix=\fR\fInumber\fR" 4
.IX Item "--radix=number"
.PD
Using one of these options, you can control whether the size of each
section is given in decimal (\fB\-d\fR, or \fB\-\-radix=10\fR); octal
(\fB\-o\fR, or \fB\-\-radix=8\fR); or hexadecimal (\fB\-x\fR, or
\&\fB\-\-radix=16\fR).  In \fB\-\-radix=\fR\fInumber\fR, only the three
values (8, 10, 16) are supported.  The total size is always given in two
radices; decimal and hexadecimal for \fB\-d\fR or \fB\-x\fR output, or
octal and hexadecimal if you're using \fB\-o\fR.
.IP "\fB\-\-common\fR" 4
.IX Item "--common"
Print total size of common symbols in each file.  When using Berkeley
format these are included in the bss size.
.IP "\fB\-t\fR" 4
.IX Item "-t"
.PD 0
.IP "\fB\-\-totals\fR" 4
.IX Item "--totals"
.PD
Show totals of all objects listed (Berkeley format listing mode only).
.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
.IX Item "--target=bfdname"
Specify that the object-code format for \fIobjfile\fR is
\&\fIbfdname\fR.  This option may not be necessary; \fBsize\fR can
automatically recognize many formats.
.IP "\fB\-V\fR" 4
.IX Item "-V"
.PD 0
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
.PD
Display the version number of \fBsize\fR.
.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"
\&\fIar\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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".
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������å*���.���_$���..��æ*���
..install.cmd���ç*���.installè*��À
ib_user_mad.h���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������cmd_/usr/local/home/bellard/cpux86/rootdisk/buildroot-2011.02/output/toolchain/linux/include/rdma/.install := perl scripts/headers_install.pl /usr/local/home/bellard/cpux86/rootdisk/buildroot-2011.02/output/toolchain/linux-2.6.37.2/include/rdma /usr/local/home/bellard/cpux86/rootdisk/buildroot-2011.02/output/toolchain/linux/include/rdma x86 ib_user_mad.h; perl scripts/headers_install.pl /usr/local/home/bellard/cpux86/rootdisk/buildroot-2011.02/output/toolchain/linux-2.6.37.2/include/rdma /usr/local/home/bellard/cpux86/rootdisk/buildroot-2011.02/output/toolchain/linux/include/rdma x86 ; touch /usr/local/home/bellard/cpux86/rootdisk/buildroot-2011.02/output/toolchain/linux/include/rdma/.install
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*
 * Copyright (c) 2004 Topspin Communications.  All rights reserved.
 * Copyright (c) 2005 Voltaire, Inc. All rights reserved.
 *
 * This software is available to you under a choice of one of two
 * licenses.  You may choose to be licensed under the terms of the GNU
 * General Public License (GPL) Version 2, available from the file
 * COPYING in the main directory of this source tree, or the
 * OpenIB.org BSD license below:
 *
 *     Redistribution and use in source and binary forms, with or
 *     without modification, are permitted provided that the following
 *     conditions are met:
 *
 *      - Redistributions of source code must retain the above
 *        copyright notice, this list of conditions and the following
 *        disclaimer.
 *
 *      - Redistributions in binary form must reproduce the above
 *        copyright notice, this list of conditions and the following
 *        disclaimer in the documentation and/or other materials
 *        provided with the distribution.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#ifndef IB_USER_MAD_H
#define IB_USER_MAD_H

#include <linux/types.h>
#include <linux/ioctl.h>

/*
 * Increment this value if any changes that break userspace ABI
 * compatibility are made.
 */
#define IB_USER_MAD_ABI_VERSION	5

/*
 * Make sure that all structs defined in this file remain laid out so
 * that they pack the same way on 32-bit and 64-bit architectures (to
 * avoid incompatibility between 32-bit userspace and 64-bit kernels).
 */

/**
 * ib_user_mad_hdr_old - Old version of MAD packet header without pkey_index
 * @id - ID of agent MAD received with/to be sent with
 * @status - 0 on successful receive, ETIMEDOUT if no response
 *   received (transaction ID in data[] will be set to TID of original
 *   request) (ignored on send)
 * @timeout_ms - Milliseconds to wait for response (unset on receive)
 * @retries - Number of automatic retries to attempt
 * @qpn - Remote QP number received from/to be sent to
 * @qkey - Remote Q_Key to be sent with (unset on receive)
 * @lid - Remote lid received from/to be sent to
 * @sl - Service level received with/to be sent with
 * @path_bits - Local path bits received with/to be sent with
 * @grh_present - If set, GRH was received/should be sent
 * @gid_index - Local GID index to send with (unset on receive)
 * @hop_limit - Hop limit in GRH
 * @traffic_class - Traffic class in GRH
 * @gid - Remote GID in GRH
 * @flow_label - Flow label in GRH
 */
struct ib_user_mad_hdr_old {
	__u32	id;
	__u32	status;
	__u32	timeout_ms;
	__u32	retries;
	__u32	length;
	__be32	qpn;
	__be32  qkey;
	__be16	lid;
	__u8	sl;
	__u8	path_bits;
	__u8	grh_present;
	__u8	gid_index;
	__u8	hop_limit;
	__u8	traffic_class;
	__u8	gid[16];
	__be32	flow_label;
};

/**
 * ib_user_mad_hdr - MAD packet header
 *   This layout allows specifying/receiving the P_Key index.  To use
 *   this capability, an application must call the
 *   IB_USER_MAD_ENABLE_PKEY ioctl on the user MAD file handle before
 *   any other actions with the file handle.
 * @id - ID of agent MAD received with/to be sent with
 * @status - 0 on successful receive, ETIMEDOUT if no response
 *   received (transaction ID in data[] will be set to TID of original
 *   request) (ignored on send)
 * @timeout_ms - Milliseconds to wait for response (unset on receive)
 * @retries - Number of automatic retries to attempt
 * @qpn - Remote QP number received from/to be sent to
 * @qkey - Remote Q_Key to be sent with (unset on receive)
 * @lid - Remote lid received from/to be sent to
 * @sl - Service level received with/to be sent with
 * @path_bits - Local path bits received with/to be sent with
 * @grh_present - If set, GRH was received/should be sent
 * @gid_index - Local GID index to send with (unset on receive)
 * @hop_limit - Hop limit in GRH
 * @traffic_class - Traffic class in GRH
 * @gid - Remote GID in GRH
 * @flow_label - Flow label in GRH
 * @pkey_index - P_Key index
 */
struct ib_user_mad_hdr {
	__u32	id;
	__u32	status;
	__u32	timeout_ms;
	__u32	retries;
	__u32	length;
	__be32	qpn;
	__be32  qkey;
	__be16	lid;
	__u8	sl;
	__u8	path_bits;
	__u8	grh_present;
	__u8	gid_index;
	__u8	hop_limit;
	__u8	traffic_class;
	__u8	gid[16];
	__be32	flow_label;
	__u16	pkey_index;
	__u8	reserved[6];
};

/**
 * ib_user_mad - MAD packet
 * @hdr - MAD packet header
 * @data - Contents of MAD
 *
 */
struct ib_user_mad {
	struct ib_user_mad_hdr hdr;
	__u64	data[0];
};

/*
 * Earlier versions of this interface definition declared the
 * method_mask[] member as an array of __u32 but treated it as a
 * bitmap made up of longs in the kernel.  This ambiguity meant that
 * 32-bit big-endian applications that can run on both 32-bit and
 * 64-bit kernels had no consistent ABI to rely on, and 64-bit
 * big-endian applications that treated method_mask as being made up
 * of 32-bit words would have their bitmap misinterpreted.
 *
 * To clear up this confusion, we change the declaration of
 * method_mask[] to use unsigned long and handle the conversion from
 * 32-bit userspace to 64-bit kernel for big-endian systems in the
 * compat_ioctl method.  Unfortunately, to keep the structure layout
 * the same, we need the method_mask[] array to be aligned only to 4
 * bytes even when long is 64 bits, which forces us into this ugly
 * typedef.
 */
typedef unsigned long __attribute__((aligned(4))) packed_ulong;
#define IB_USER_MAD_LONGS_PER_METHOD_MASK (128 / (8 * sizeof (long)))

/**
 * ib_user_mad_reg_req - MAD registration request
 * @id - Set by the kernel; used to identify agent in future requests.
 * @qpn - Queue pair number; must be 0 or 1.
 * @method_mask - The caller will receive unsolicited MADs for any method
 *   where @method_mask = 1.
 * @mgmt_class - Indicates which management class of MADs should be receive
 *   by the caller.  This field is only required if the user wishes to
 *   receive unsolicited MADs, otherwise it should be 0.
 * @mgmt_class_version - Indicates which version of MADs for the given
 *   management class to receive.
 * @oui: Indicates IEEE OUI when mgmt_class is a vendor class
 *   in the range from 0x30 to 0x4f. Otherwise not used.
 * @rmpp_version: If set, indicates the RMPP version used.
 *
 */
struct ib_user_mad_reg_req {
	__u32	id;
	packed_ulong method_mask[IB_USER_MAD_LONGS_PER_METHOD_MASK];
	__u8	qpn;
	__u8	mgmt_class;
	__u8	mgmt_class_version;
	__u8    oui[3];
	__u8	rmpp_version;
};

#define IB_IOCTL_MAGIC		0x1b

#define IB_USER_MAD_REGISTER_AGENT	_IOWR(IB_IOCTL_MAGIC, 1, \
					      struct ib_user_mad_reg_req)

#define IB_USER_MAD_UNREGISTER_AGENT	_IOW(IB_IOCTL_MAGIC, 2, __u32)

#define IB_USER_MAD_ENABLE_PKEY		_IO(IB_IOCTL_MAGIC, 3)

#endif /* IB_USER_MAD_H */
������������������������������������é*���.���_$���..��ê*���nftl-user.h�ë*���
mtd-user.h��ì*���
..install.cmd���í*���.installî*���
ubi-user.h��ï*���	mtd-abi.h���ð*��pinftl-user.h��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*
 * Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */

#ifndef __MTD_NFTL_USER_H__
#define __MTD_NFTL_USER_H__

#include <linux/types.h>

/* Block Control Information */

struct nftl_bci {
	unsigned char ECCSig[6];
	__u8 Status;
	__u8 Status1;
}__attribute__((packed));

/* Unit Control Information */

struct nftl_uci0 {
	__u16 VirtUnitNum;
	__u16 ReplUnitNum;
	__u16 SpareVirtUnitNum;
	__u16 SpareReplUnitNum;
} __attribute__((packed));

struct nftl_uci1 {
	__u32 WearInfo;
	__u16 EraseMark;
	__u16 EraseMark1;
} __attribute__((packed));

struct nftl_uci2 {
        __u16 FoldMark;
        __u16 FoldMark1;
	__u32 unused;
} __attribute__((packed));

union nftl_uci {
	struct nftl_uci0 a;
	struct nftl_uci1 b;
	struct nftl_uci2 c;
};

struct nftl_oob {
	struct nftl_bci b;
	union nftl_uci u;
};

/* NFTL Media Header */

struct NFTLMediaHeader {
	char DataOrgID[6];
	__u16 NumEraseUnits;
	__u16 FirstPhysicalEUN;
	__u32 FormattedSize;
	unsigned char UnitSizeFactor;
} __attribute__((packed));

#define MAX_ERASE_ZONES (8192 - 512)

#define ERASE_MARK 0x3c69
#define SECTOR_FREE 0xff
#define SECTOR_USED 0x55
#define SECTOR_IGNORE 0x11
#define SECTOR_DELETED 0x00

#define FOLD_MARK_IN_PROGRESS 0x5555

#define ZONE_GOOD 0xff
#define ZONE_BAD_ORIGINAL 0
#define ZONE_BAD_MARKED 7


#endif /* __MTD_NFTL_USER_H__