@cindex command line
@cindex options
-Here is a summary of the options you can use on the @code{ld} command
-line:
-
-@c FIXME! -relax only avail h8/300, i960. Conditionals screwed in examples.
-@smallexample
-ld [ -o @var{output} ] @var{objfile}@dots{}
- [ -A@var{architecture} ] [ -b @var{input-format} ]
- [ -Bstatic ] [ -Bdynamic ] [ -Bsymbolic ]
- [ -c @var{MRI-commandfile} ] [ -d | -dc | -dp ]
- [ -defsym @var{symbol}=@var{expression} ]
- [ -dynamic-linker @var{file} ] [ -embedded-relocs ] [ -E ]
- [ -export-dynamic ] [ -e @var{entry} ] [ -F ] [ -F @var{format} ]
- [ -format @var{input-format} ] [ -g ] [ -G @var{size} ]
- [ -help ] [ -i ] [ -l@var{archive} ] [ -L@var{searchdir} ]
- [ -M ] [ -Map @var{mapfile} ] [ -m @var{emulation} ]
- [ -N | -n ] [ -noinhibit-exec ] [ -no-keep-memory ]
- [ -oformat @var{output-format} ] [ -R @var{filename} ]
- [ -relax ] [ -retain-symbols-file @var{filename} ]
- [ -r | -Ur ] [ -rpath @var{dir} ] [-rpath-link @var{dir} ]
- [ -S ] [ -s ] [ -soname @var{name} ] [ -shared ]
- [ -sort-common ] [ -stats ] [ -T @var{commandfile} ]
- [ -Ttext @var{org} ] [ -Tdata @var{org} ]
- [ -Tbss @var{org} ] [ -t ] [ -traditional-format ]
- [ -u @var{symbol}] [-V] [-v] [ -verbose] [ -version ]
- [ -warn-common ] [ -warn-constructors] [ -warn-multiple-gp ]
- [ -warn-once ] [ -y @var{symbol} ] [ -X ] [-x ]
- [ -( [ archives ] -) ]
- [ --start-group [ archives ] --end-group ]
- [ -split-by-reloc @var{count} ] [ -split-by-file ]
- [ --whole-archive ] [ --no-whole-archive ] [ --wrap @var{symbol} ]
-@end smallexample
-
-This plethora of command-line options may seem intimidating, but in
-actual practice few of them are used in any particular context.
+The linker supports a plethora of command-line options, but in actual
+practice few of them are used in any particular context.
@cindex standard Unix system
For instance, a frequent use of @code{ld} is to link standard Unix
object files on a standard, supported Unix system. On such a system, to
directories. (See the discussion of the @samp{-l} option below.)
The command-line options to @code{ld} may be specified in any order, and
-may be repeated at will. Repeating most options with a
-different argument will either have no further effect, or override prior
+may be repeated at will. Repeating most options with a different
+argument will either have no further effect, or override prior
occurrences (those further to the left on the command line) of that
-option.
-
-@ifclear SingleFormat
-The exceptions---which may meaningfully be used more than once---are
-@samp{-A}, @samp{-b} (or its synonym @samp{-format}), @samp{-defsym},
-@samp{-L}, @samp{-l}, @samp{-R}, @samp{-u}, and @samp{-(} (or its
-synonym @samp{--start-group}).
-@end ifclear
-@ifset SingleFormat
-The exceptions---which may meaningfully be used more than once---are
-@samp{-A}, @samp{-defsym}, @samp{-L}, @samp{-l}, @samp{-R}, @samp{-u},
-and @samp{-(} (or its synonym @samp{--start-group}).
-@end ifset
+option. Options which may be meaningfully specified more than once are
+noted in the descriptions below.
@cindex object files
-The list of object files to be linked together, shown as @var{objfile}@dots{},
-may follow, precede, or be mixed in with command-line options, except that
-an @var{objfile} argument may not be placed between an option and
-its argument.
+Non-option arguments are objects files which are to be linked together.
+They may follow, precede, or be mixed in with command-line options,
+except that an object file argument may not be placed between an option
+and its argument.
Usually the linker is invoked with at least one object file, but you can
specify other forms of binary input files using @samp{-l}, @samp{-R},
of multiple-letter options are accepted.
@table @code
+@kindex -a@var{keyword}
+@item -a@var{keyword}
+This option is supported for HP/UX compatibility. The @var{keyword}
+argument must be one of the strings @samp{archive}, @samp{shared}, or
+@samp{default}. @samp{-aarchive} is functionally equivalent to
+@samp{-Bstatic}, and the other two keywords are functionally equivalent
+to @samp{-Bdynamic}. This option may be used any number of times.
+
@ifset I960
@cindex architectures
@kindex -A@var{arch}
@item -A@var{architecture}
+@kindex --architecture=@var{arch}
+@itemx --architecture=@var{architecture}
In the current release of @code{ld}, this option is useful only for the
Intel 960 family of architectures. In that @code{ld} configuration, the
@var{architecture} argument identifies the particular architecture in
@ifclear SingleFormat
@cindex binary input format
@kindex -b @var{format}
+@kindex --format=@var{format}
@cindex input format
@cindex input format
@item -b @var{input-format}
+@itemx --format=@var{input-format}
@code{ld} may be configured to support more than one kind of object
file. If your @code{ld} is configured this way, you can use the
@samp{-b} option to specify the binary format for input object files
default input format the most usual format on each machine.
@var{input-format} is a text string, the name of a particular format
supported by the BFD libraries. (You can list the available binary
-formats with @samp{objdump -i}.) @w{@samp{-format @var{input-format}}}
-has the same effect, as does the script command @code{TARGET}.
+formats with @samp{objdump -i}.)
@xref{BFD}.
You may want to use this option if you are linking files with an unusual
Commands}.
@end ifclear
-@kindex -Bstatic
-@item -Bstatic
-Do not link against shared libraries. This is only meaningful on
-platforms for which shared libraries are supported.
-
-@kindex -Bdynamic
-@item -Bdynamic
-Link against dynamic libraries. This is only meaningful on platforms
-for which shared libraries are supported. This option is normally the
-default on such platforms.
-
-@kindex -Bsymbolic
-@item -Bsymbolic
-When creating a shared library, bind references to global symbols to the
-definition within the shared library, if any. Normally, it is possible
-for a program linked against a shared library to override the definition
-within the shared library. This option is only meaningful on ELF
-platforms which support shared libraries.
-
@kindex -c @var{MRI-cmdfile}
+@kindex --mri-script=@var{MRI-cmdfile}
@cindex compatibility, MRI
@item -c @var{MRI-commandfile}
+@itemx --mri-script=@var{MRI-commandfile}
For compatibility with linkers produced by MRI, @code{ld} accepts script
files written in an alternate, restricted command language, described in
@ref{MRI,,MRI Compatible Script Files}. Introduce MRI script files with
@code{FORCE_COMMON_ALLOCATION} has the same effect. @xref{Option
Commands}.
-@cindex symbols, from command line
-@kindex -defsym @var{symbol}=@var{exp}
-@item -defsym @var{symbol}=@var{expression}
-Create a global symbol in the output file, containing the absolute
-address given by @var{expression}. You may use this option as many
-times as necessary to define multiple symbols in the command line. A
-limited form of arithmetic is supported for the @var{expression} in this
-context: you may give a hexadecimal constant or the name of an existing
-symbol, or use @code{+} and @code{-} to add or subtract hexadecimal
-constants or symbols. If you need more elaborate expressions, consider
-using the linker command language from a script (@pxref{Assignment, ,
-Assignment: Symbol Definitions}). @emph{Note:} there should be no
-white space between @var{symbol}, the equals sign (``@key{=}''), and
-@var{expression}.
-
-@ifset GENERIC
-@cindex dynamic linker, from command line
-@kindex -dynamic-linker @var{file}
-@item -dynamic-linker @var{file}
-Set the name of the dynamic linker. This is only meaningful when
-generating dynamically linked ELF executables. The default dynamic
-linker is normally correct; don't use this unless you know what you are
-doing.
-@end ifset
-
-@cindex MIPS embedded PIC code
-@kindex -embedded-relocs
-@item -embedded-relocs
-This option is only meaningful when linking MIPS embedded PIC code,
-generated by the -membedded-pic option to the @sc{gnu} compiler and
-assembler. It causes the linker to create a table which may be used at
-runtime to relocate any data which was statically initialized to pointer
-values. See the code in testsuite/ld-empic for details.
-
@cindex entry point, from command line
@kindex -e @var{entry}
+@kindex --entry=@var{entry}
@item -e @var{entry}
+@itemx --entry=@var{entry}
Use @var{entry} as the explicit symbol for beginning execution of your
program, rather than the default entry point. @xref{Entry Point}, for a
discussion of defaults and other ways of specifying the
@kindex -export-dynamic
@item -E
@itemx -export-dynamic
-When creating an ELF file, add all symbols to the dynamic symbol table.
-Normally, the dynamic symbol table contains only symbols which are used
-by a dynamic object. This option is needed for some uses of
-@code{dlopen}.
+When creating a dynamically linked executable, add all symbols to the
+dynamic symbol table. Normally, the dynamic symbol table contains only
+symbols which are used by a dynamic object. This option is needed for
+some uses of @code{dlopen}.
@ifclear SingleFormat
@kindex -F
the @code{GNUTARGET} environment variable) are more flexible, but
@code{ld} accepts the @samp{-F} option for compatibility with scripts
written to call the old linker.
-
-@kindex -format
-@item -format @var{input-format}
-Synonym for @samp{-b @var{input-format}}.
@end ifclear
@kindex -g
Ignored. Provided for compatibility with other tools.
@kindex -G
+@kindex --gpsize
@cindex object size
@item -G@var{value}
-@itemx -G @var{value}
+@itemx --gpsize=@var{value}
Set the maximum size of objects to be optimized using the GP register to
-@var{size} under MIPS ECOFF. Ignored for other object file formats.
+@var{size}. This is only meaningful for object file formats such as
+MIPS ECOFF which supports putting large and small objects into different
+sections. This is ignored for other object file formats.
-@cindex help
-@cindex usage
-@kindex -help
-@item -help
-Print a summary of the command-line options on the standard output and exit.
+@cindex runtime library name
+@kindex -h@var{name}
+@kindex -soname=@var{name}
+@item -h@var{name}
+@itemx -soname=@var{name}
+When creating an ELF shared object, set the internal DT_SONAME field to
+the specified name. When an executable is linked with a shared object
+which has a DT_SONAME field, then when the executable is run the dynamic
+linker will attempt to load the shared object specified by the DT_SONAME
+field rather than the using the file name given to the linker.
@kindex -i
@cindex incremental link
@cindex archive files, from cmd line
@kindex -l@var{archive}
-@item -l@var{ar}
-Add archive file @var{archive} to the list of files to link. This
+@kindex --library=@var{archive}
+@item -l@var{archive}
+@itemx --library=@var{archive}
+Add archive file @var{archive} to the list of files to link. This
option may be used any number of times. @code{ld} will search its
-path-list for occurrences of @code{lib@var{ar}.a} for every @var{archive}
-specified.
+path-list for occurrences of @code{lib@var{archive}.a} for every
+@var{archive} specified. File extensions other than @code{.a} may be
+used on certain systems.
@cindex search directory, from cmd line
@kindex -L@var{dir}
+@kindex --library-path=@var{dir}
@item -L@var{searchdir}
-@itemx -L @var{searchdir}
+@itemx --library-path=@var{searchdir}
Add path @var{searchdir} to the list of paths that @code{ld} will search
for archive libraries and @code{ld} control scripts. You may use this
option any number of times. The directories are searched in the order
@code{SEARCH_DIR} command. Directories specified this way are searched
at the point in which the linker script appears in the command line.
-@cindex link map
-@kindex -M
-@item -M
-Print (to the standard output) a link map---diagnostic information about
-where symbols are mapped by @code{ld}, and information on global common
-storage allocation.
-
-@cindex link map
-@kindex -Map
-@item -Map @var{mapfile}
-Print to the file @var{mapfile} a link map---diagnostic information
-about where symbols are mapped by @code{ld}, and information on global
-common storage allocation.
-
@cindex emulation
@kindex -m @var{emulation}
@item -m@var{emulation}
-@itemx -m @var{emulation}
Emulate the @var{emulation} linker. You can list the available
emulations with the @samp{--verbose} or @samp{-V} options. The default
depends on how your @code{ld} was configured.
+@cindex link map
+@kindex -M
+@kindex --print-map
+@item -M
+@itemx --print-map
+Print (to the standard output) a link map---diagnostic information about
+where symbols are mapped by @code{ld}, and information on global common
+storage allocation.
+
+@kindex -n
+@cindex read-only text
+@cindex NMAGIC
+@kindex --nmagic
+@item -n
+@itemx --nmagic
+Set the text segment to be read only, and mark the output as
+@code{NMAGIC} if possible.
+
@kindex -N
+@kindex --omagic
@cindex read/write from cmd line
-@kindex OMAGIC
+@cindex OMAGIC
@item -N
+@itemx --omagic
Set the text and data sections to be readable and writable. Also, do
not page-align the data segment. If the output format supports Unix
style magic numbers, mark the output as @code{OMAGIC}.
-@kindex -n
-@cindex read-only text
-@kindex NMAGIC
-@item -n
-Set the text segment to be read only, and mark the output as
-@code{NMAGIC} if possible.
+@kindex -o @var{output}
+@kindex --output=@var{output}
+@cindex naming the output file
+@item -o @var{output}
+@itemx --output=@var{output}
+Use @var{output} as the name for the program produced by @code{ld}; if this
+option is not specified, the name @file{a.out} is used by default. The
+script command @code{OUTPUT} can also specify the output file name.
-@cindex output file after errors
-@kindex -noinhibit-exec
-@item -noinhibit-exec
-Retain the executable output file whenever it is still usable.
-Normally, the linker will not produce an output file if it encounters
-errors during the link process; it exits without writing an output file
-when it issues any error whatsoever.
+@cindex partial link
+@cindex relocatable output
+@kindex -r
+@kindex --relocateable
+@item -r
+@itemx --relocateable
+Generate relocatable output---i.e., generate an output file that can in
+turn serve as input to @code{ld}. This is often called @dfn{partial
+linking}. As a side effect, in environments that support standard Unix
+magic numbers, this option also sets the output file's magic number to
+@code{OMAGIC}.
+@c ; see @code{-N}.
+If this option is not specified, an absolute file is produced. When
+linking C++ programs, this option @emph{will not} resolve references to
+constructors; to do that, use @samp{-Ur}.
+
+This option does the same thing as @samp{-i}.
+
+@kindex -R @var{file}
+@kindex --just-symbols=@var{file}
+@cindex symbol-only input
+@item -R @var{filename}
+@itemx --just-symbols=@var{filename}
+Read symbol names and their addresses from @var{filename}, but do not
+relocate it or include it in the output. This allows your output file
+to refer symbolically to absolute locations of memory defined in other
+programs. You may use this option more than once.
+
+For compatibility with other ELF linkers, if the @code{-R} option is
+followed by a directory name, rather than a file name, it is treated as
+the @code{-rpath} option.
+
+@kindex -s
+@kindex --strip-all
+@cindex strip all symbols
+@item -s
+@itemx --strip-all
+Omit all symbol information from the output file.
+
+@kindex -S
+@kindex --strip-debug
+@cindex strip debugger symbols
+@item -S
+@itemx --strip-debug
+Omit debugger symbol information (but not all symbols) from the output file.
+
+@kindex -t
+@kindex --trace
+@cindex input files, displaying
+@item -t
+@itemx --trace
+Print the names of the input files as @code{ld} processes them.
+
+@kindex -T @var{script}
+@kindex --script=@var{script}
+@cindex script files
+@item -T @var{commandfile}
+@itemx --script=@var{commandfile}
+Read link commands from the file @var{commandfile}. These commands
+replace @code{ld}'s default link script (rather than adding
+to it), so @var{commandfile} must specify everything necessary to describe
+the target format. @xref{Commands}. If @var{commandfile} does not
+exist, @code{ld} looks for it in the directories specified by any
+preceding @samp{-L} options. Multiple @samp{-T} options accumulate.
+
+@kindex -u @var{symbol}
+@kindex --undefined=@var{symbol}
+@cindex undefined symbol
+@item -u @var{symbol}
+@itemx --undefined=@var{symbol}
+Force @var{symbol} to be entered in the output file as an undefined symbol.
+Doing this may, for example, trigger linking of additional modules from
+standard libraries. @samp{-u} may be repeated with different option
+arguments to enter additional undefined symbols.
+@c Nice idea, but no such command: This option is equivalent
+@c to the @code{EXTERN} linker command.
+
+@kindex -v
+@kindex -V
+@kindex --version
+@cindex version
+@item -v
+@itemx --version
+@itemx -V
+Display the version number for @code{ld}. The @code{-V} option also
+lists the supported emulations.
+
+@kindex -x
+@kindex --discard-all
+@cindex deleting local symbols
+@item -x
+@itemx --discard-all
+Delete all local symbols.
+
+@kindex -X
+@kindex --discard-locals
+@cindex local symbols, deleting
+@cindex L, deleting symbols beginning
+@item -X
+@itemx --discard-locals
+Delete all temporary local symbols. For most targets, this is all local
+symbols whose names begin with @samp{L}.
+
+@kindex -y @var{symbol}
+@kindex --trace-symbol=@var{symbol}
+@cindex symbol tracing
+@item -y @var{symbol}
+@itemx --trace-symbol=@var{symbol}
+Print the name of each linked file in which @var{symbol} appears. This
+option may be given any number of times. On many systems it is necessary
+to prepend an underscore.
+
+This option is useful when you have an undefined symbol in your link but
+don't know where the reference is coming from.
+
+@kindex -Y @var{path}
+@item -Y @var{path}
+Add @var{path} to the default library search path. This option exists
+for Solaris compatibility.
+
+@kindex -z @var{keyword}
+@item -z @var{keyword}
+This option is ignored for Solaris compatibility.
+
+@kindex -(
+@cindex groups of archives
+@item -( @var{archives} -)
+@itemx --start-group @var{archives} --end-group
+The @var{archives} should be a list of archive files. They may be
+either explicit file names, or @samp{-l} options.
+
+The specified archives are searched repeatedly until no new undefined
+references are created. Normally, an archive is searched only once in
+the order that it is specified on the command line. If a symbol in that
+archive is needed to resolve an undefined symbol referred to by an
+object in an archive that appears later on the command line, the linker
+would not be able to resolve that reference. By grouping the archives,
+they all be searched repeatedly until all possible references are
+resolved.
+
+Using this option has a significant performance cost. It is best to use
+it only when there are unavoidable circular references between two or
+more archives.
+
+@kindex -assert @var{keyword}
+@item -assert @var{keyword}
+This option is ignored for SunOS compatibility.
+
+@kindex -Bdynamic
+@kindex -dy
+@kindex -call_shared
+@item -Bdynamic
+@itemx -dy
+@itemx -call_shared
+Link against dynamic libraries. This is only meaningful on platforms
+for which shared libraries are supported. This option is normally the
+default on such platforms. The different variants of this option are
+for compatibility with various systems. You may use this option
+multiple times on the command line: it affects library searching for
+@code{-l} options which follow it.
+
+@kindex -Bstatic
+@kindex -dn
+@kindex -non_shared
+@kindex -static
+@item -Bstatic
+@itemx -dn
+@itemx -non_shared
+@itemx -static
+Do not link against shared libraries. This is only meaningful on
+platforms for which shared libraries are supported. The different
+variants of this option are for compatibility with various systems. You
+may use this option multiple times on the command line: it affects
+library searching for @code{-l} options which follow it.
+
+@kindex -Bsymbolic
+@item -Bsymbolic
+When creating a shared library, bind references to global symbols to the
+definition within the shared library, if any. Normally, it is possible
+for a program linked against a shared library to override the definition
+within the shared library. This option is only meaningful on ELF
+platforms which support shared libraries.
+
+@cindex symbols, from command line
+@kindex --defsym @var{symbol}=@var{exp}
+@item --defsym @var{symbol}=@var{expression}
+Create a global symbol in the output file, containing the absolute
+address given by @var{expression}. You may use this option as many
+times as necessary to define multiple symbols in the command line. A
+limited form of arithmetic is supported for the @var{expression} in this
+context: you may give a hexadecimal constant or the name of an existing
+symbol, or use @code{+} and @code{-} to add or subtract hexadecimal
+constants or symbols. If you need more elaborate expressions, consider
+using the linker command language from a script (@pxref{Assignment, ,
+Assignment: Symbol Definitions}). @emph{Note:} there should be no
+white space between @var{symbol}, the equals sign (``@key{=}''), and
+@var{expression}.
+
+@cindex dynamic linker, from command line
+@kindex --dynamic-linker @var{file}
+@item --dynamic-linker @var{file}
+Set the name of the dynamic linker. This is only meaningful when
+generating dynamically linked ELF executables. The default dynamic
+linker is normally correct; don't use this unless you know what you are
+doing.
+
+@cindex big-endian objects
+@cindex endianness
+@kindex -EB
+@item -EB
+Link big-endian objects. This affects the default output format.
+
+@cindex little-endian objects
+@kindex -EL
+@item -EL
+Link little-endian objects. This affects the default output format.
+
+@cindex MIPS embedded PIC code
+@kindex -embedded-relocs
+@item -embedded-relocs
+This option is only meaningful when linking MIPS embedded PIC code,
+generated by the -membedded-pic option to the @sc{gnu} compiler and
+assembler. It causes the linker to create a table which may be used at
+runtime to relocate any data which was statically initialized to pointer
+values. See the code in testsuite/ld-empic for details.
+
+@cindex help
+@cindex usage
+@kindex --help
+@item --help
+Print a summary of the command-line options on the standard output and exit.
+
+@cindex link map
+@kindex -Map
+@item -Map @var{mapfile}
+Print to the file @var{mapfile} a link map---diagnostic information
+about where symbols are mapped by @code{ld}, and information on global
+common storage allocation.
@cindex memory usage
-@kindex -no-keep-memory
-@item -no-keep-memory
+@kindex --no-keep-memory
+@item --no-keep-memory
@code{ld} normally optimizes for speed over memory usage by caching the
symbol tables of input files in memory. This option tells @code{ld} to
instead optimize for memory usage, by rereading the symbol tables as
necessary. This may be required if @code{ld} runs out of memory space
while linking a large executable.
-@kindex -o @var{output}
-@cindex naming the output file
-@item -o @var{output}
-Use @var{output} as the name for the program produced by @code{ld}; if this
-option is not specified, the name @file{a.out} is used by default. The
-script command @code{OUTPUT} can also specify the output file name.
+@kindex --no-whole-archive
+@item --no-whole-archive
+Turn off the effect of the @code{--whole-archive} option for subsequent
+archive files.
+
+@cindex output file after errors
+@kindex --noinhibit-exec
+@item --noinhibit-exec
+Retain the executable output file whenever it is still usable.
+Normally, the linker will not produce an output file if it encounters
+errors during the link process; it exits without writing an output file
+when it issues any error whatsoever.
@ifclear SingleFormat
@kindex -oformat
this option overrides it. @xref{BFD}.
@end ifclear
-@kindex -R @var{file}
-@cindex symbol-only input
-@item -R @var{filename}
-Read symbol names and their addresses from @var{filename}, but do not
-relocate it or include it in the output. This allows your output file
-to refer symbolically to absolute locations of memory defined in other
-programs.
+@kindex -qmagic
+@item -qmagic
+This option is ignored for Linux compatibility.
-For compatibility with other ELF linkers, if the @code{-R} option is
-followed by a directory name, rather than a file name, it is treated as
-the @code{-rpath} option.
+@kindex -Qy
+@item -Qy
+This option is ignored for SVR4 compatibility.
-@kindex -relax
+@kindex --relax
@cindex synthesizing linker
@cindex relaxing addressing modes
-@item -relax
+@item --relax
An option with machine dependent effects.
@ifset GENERIC
-Currently this option is only supported on the H8/300 and the Intel 960.
+This option is only supported on a few targets.
@end ifset
@ifset H8300
@xref{H8/300,,@code{ld} and the H8/300}.
@xref{i960,, @code{ld} and the Intel 960 family}.
@end ifset
-On some platforms, the @samp{-relax} option performs global optimizations that
-become possible when the linker resolves addressing in the program, such
-as relaxing address modes and synthesizing new instructions in the
-output object file.
+On some platforms, the @samp{--relax} option performs global
+optimizations that become possible when the linker resolves addressing
+in the program, such as relaxing address modes and synthesizing new
+instructions in the output object file.
@ifset GENERIC
On platforms where this is not supported, @samp{-relax} is accepted, but
@cindex retaining specified symbols
@cindex stripping all but some symbols
@cindex symbols, retaining selectively
-@item -retain-symbols-file @var{filename}
+@item --retain-symbols-file @var{filename}
Retain @emph{only} the symbols listed in the file @var{filename},
discarding all others. @var{filename} is simply a flat file, with one
symbol name per line. This option is especially useful in environments
warning and continue with the link.
@end ifset
-@cindex partial link
-@cindex relocatable output
-@kindex -r
-@item -r
-Generate relocatable output---i.e., generate an output file that can in
-turn serve as input to @code{ld}. This is often called @dfn{partial
-linking}. As a side effect, in environments that support standard Unix
-magic numbers, this option also sets the output file's magic number to
-@code{OMAGIC}.
-@c ; see @code{-N}.
-If this option is not specified, an absolute file is produced. When
-linking C++ programs, this option @emph{will not} resolve references to
-constructors; to do that, use @samp{-Ur}.
-
-This option does the same thing as @samp{-i}.
-
-@kindex -S
-@cindex strip debugger symbols
-@item -S
-Omit debugger symbol information (but not all symbols) from the output file.
-
-@kindex -s
-@cindex strip all symbols
-@item -s
-Omit all symbol information from the output file.
-
-@ifset GENERIC
-@cindex runtime library name
-@kindex -soname
-@item -soname @var{name}
-When creating an ELF shared object, set the internal DT_SONAME field to
-the specified name. When an executable is linked with a shared object
-which has a DT_SONAME field, then when the executable is run the dynamic
-linker will attempt to load the shared object specified by the DT_SONAME
-field rather than the using the file name given to the linker.
-@end ifset
-
+@kindex -shared
+@kindex -Bshareable
@item -shared
+@itemx -Bshareable
@cindex shared libraries
-@kindex -shared
-Create a shared library. This is currently only supported on ELF and
-SunOS platforms. On SunOS, the linker will automatically create a
+Create a shared library. This is currently only supported on ELF, XCOFF
+and SunOS platforms. On SunOS, the linker will automatically create a
shared library if the @code{-e} option is not used and there are
undefined symbols in the link.
-@item -sort-common
-@kindex -sort-common
-Normally, when @code{ld} places the global common symbols in the
-appropriate output sections, it sorts them by size. First come all the
-one byte symbols, then all the two bytes, then all the four bytes, and
-then everything else. This is to prevent gaps between symbols due to
-alignment constraints. This option disables that sorting.
-
-@kindex split
-@item -split-by-reloc @var{count}
-Trys to creates extra sections in the output file so that no single output section
-in the file contains more than @var{count} relocations. This
-is useful when generating huge relocatable for downloading into
-certain real time kernels with the COFF object file format; since
-COFF cannot represent more than 65535 relocations in a single section.
-Note that this will fail to work with object file formats which do not
-support arbitrary sections. The linker will not split up individual input
-sections for redistribution, so if a single input section contains
+@item --sort-common
+@kindex --sort-common
+This option tells @code{ld} to sort the common symbols by size when it
+places them in the appropriate output sections. First come all the one
+byte symbols, then all the two bytes, then all the four bytes, and then
+everything else. This is to prevent gaps between symbols due to
+alignment constraints.
+
+@kindex --split-by-file
+@item --split-by-file
+Similar to @code{--split-by-reloc} but creates a new output section for
+each input file.
+
+@kindex --split-by-reloc
+@item --split-by-reloc @var{count}
+Trys to creates extra sections in the output file so that no single
+output section in the file contains more than @var{count} relocations.
+This is useful when generating huge relocatable for downloading into
+certain real time kernels with the COFF object file format; since COFF
+cannot represent more than 65535 relocations in a single section. Note
+that this will fail to work with object file formats which do not
+support arbitrary sections. The linker will not split up individual
+input sections for redistribution, so if a single input section contains
more than @var{count} relocations one output section will contain that
many relocations.
-@kindex split
-@item -split-by-file
-Similar to -split-by-reloc but creates a new output section for each
-input file.
-
-@item -stats
-Compute and display statistics about the operation of the linker,
-such as execution time and memory usage.
-
-@kindex -Tbss @var{org}
-@kindex -Tdata @var{org}
-@kindex -Ttext @var{org}
-@cindex segment origins, cmd line
-@item -Tbss @var{org}
-@itemx -Tdata @var{org}
-@itemx -Ttext @var{org}
-Use @var{org} as the starting address for---respectively---the
-@code{bss}, @code{data}, or the @code{text} segment of the output file.
-@var{org} must be a single hexadecimal integer;
-for compatibility with other linkers, you may omit the leading
-@samp{0x} usually associated with hexadecimal values.
-
-@kindex -T @var{script}
-@cindex script files
-@item -T @var{commandfile}
-@itemx -T@var{commandfile}
-Read link commands from the file @var{commandfile}. These commands
-replace @code{ld}'s default link script (rather than adding
-to it), so @var{commandfile} must specify everything necessary to describe
-the target format. @xref{Commands}. If @var{commandfile} does not
-exist, @code{ld} looks for it in the directories specified by any
-preceding @samp{-L} options. Multiple @samp{-T} options accumulate.
-
-@kindex -t
-@cindex input files, displaying
-@item -t
-Print the names of the input files as @code{ld} processes them.
+@kindex --stats
+@item --stats
+Compute and display statistics about the operation of the linker, such
+as execution time and memory usage.
@kindex -traditional-format
@cindex traditional format
trouble). The @samp{-traditional-format} switch tells @code{ld} to not
combine duplicate entries.
-@kindex -u @var{symbol}
-@cindex undefined symbol
-@item -u @var{symbol}
-Force @var{symbol} to be entered in the output file as an undefined symbol.
-Doing this may, for example, trigger linking of additional modules from
-standard libraries. @samp{-u} may be repeated with different option
-arguments to enter additional undefined symbols.
-@c Nice idea, but no such command: This option is equivalent
-@c to the @code{EXTERN} linker command.
+@kindex -Tbss @var{org}
+@kindex -Tdata @var{org}
+@kindex -Ttext @var{org}
+@cindex segment origins, cmd line
+@item -Tbss @var{org}
+@itemx -Tdata @var{org}
+@itemx -Ttext @var{org}
+Use @var{org} as the starting address for---respectively---the
+@code{bss}, @code{data}, or the @code{text} segment of the output file.
+@var{org} must be a single hexadecimal integer;
+for compatibility with other linkers, you may omit the leading
+@samp{0x} usually associated with hexadecimal values.
@kindex -Ur
@cindex constructors
supported. Display which input files can and cannot be opened. Display
the linker script if using a default builtin script.
-@kindex -v
-@kindex -V
-@cindex version
-@item -v
-@itemx -V
-Display the version number for @code{ld}. The @code{-V} option also
-lists the supported emulations.
-
-@kindex -version
-@item -version
-Display the version number for @code{ld} and exit.
-
@kindex -warn-comon
@cindex warnings, on combining symbols
@cindex combining symbols, warnings on
in the link, rather than searching the archive for the required object
files. This is normally used to turn an archive file into a shared
library, forcing every object to be included in the resulting shared
-library.
-
-@kindex --no-whole-archive
-@item --no-whole-archive
-Turn off the effect of the @code{--whole-archive} option for archives
-which appear later on the command line.
+library. This option may be used more than once.
@kindex --wrap
@item --wrap @var{symbol}
file as @code{__wrap_malloc}; if you do, the assembler may resolve the
call before the linker has a chance to wrap it to @code{malloc}.
-@kindex -X
-@cindex local symbols, deleting
-@cindex L, deleting symbols beginning
-@item -X
-Delete all temporary local symbols. For most targets, this is all local
-symbols whose names begin with @samp{L}.
-
-@kindex -x
-@cindex deleting local symbols
-@item -x
-Delete all local symbols.
-
-@kindex -y @var{symbol}
-@cindex symbol tracing
-@item -y @var{symbol}
-Print the name of each linked file in which @var{symbol} appears. This
-option may be given any number of times. On many systems it is necessary
-to prepend an underscore.
-
-This option is useful when you have an undefined symbol in your link but
-don't know where the reference is coming from.
-
-@kindex -(
-@cindex groups of archives
-@item -( @var{archives} -)
-@itemx --start-group @var{archives} --end-group
-The @var{archives} should be a list of archive files. They may be
-either explicit file names, or @samp{-l} options.
-
-The specified archives are searched repeatedly until no new undefined
-references are created. Normally, an archive is searched only once in
-the order that it is specified on the command line. If a symbol in that
-archive is needed to resolve an undefined symbol referred to by an
-object in an archive that appears later on the command line, the linker
-would not be able to resolve that reference. By grouping the archives,
-they all be searched repeatedly until all possible references are
-resolved.
-
-Using this option has a significant performance cost. It is best to use
-it only when there are unavoidable circular references between two or
-more archives.
@end table
@ifset UsesEnvVars
* Evaluation:: Evaluation
* Assignment:: Assignment: Defining Symbols
* Arithmetic Functions:: Built-In Functions
+* Semicolons:: Semicolon Usage
@end menu
@node Integers
@end table
+@node Semicolons
+@subsection Semicolons
+
+Semicolons (``@key{;}'') are required in the following places. In all
+other places they can appear for aesthetic reasons but are otherwise ignored.
+
+@table @code
+@item Assignment
+Semicolons must appear at the end of assignment expressions.
+@xref{Assignment}
+
+@item PHDRS
+Semicolons must appear at the end of a @code{PHDRS} statement.
+@xref{PHDRS}
+@end table
+
@node MEMORY
@section Memory Layout
@kindex MEMORY