@set HPPA
@set I960
@set M68HC11
+@set M68K
@set MMIX
@set MSP430
@set POWERPC
@ifset M68HC11
* M68HC11/68HC12:: ld and the Motorola 68HC11 and 68HC12 families
@end ifset
+@ifset M68K
+* M68K:: ld and Motorola 68K family
+@end ifset
@ifset POWERPC
* PowerPC ELF32:: ld and PowerPC 32-bit ELF Support
@end ifset
linker is normally correct; don't use this unless you know what you are
doing.
-
@kindex --fatal-warnings
+@kindex --no-fatal-warnings
@item --fatal-warnings
-Treat all warnings as errors.
+@itemx --no-fatal-warnings
+Treat all warnings as errors. The default behaviour can be restored
+with the option @option{--no-fatal-warnings}.
@kindex --force-exe-suffix
@item --force-exe-suffix
shared library if the @option{-e} option is not used and there are
undefined symbols in the link.
-@item --sort-common
+@item --sort-common [= ascending | descending]
@kindex --sort-common
-This option tells @command{ld} to sort the common symbols by alignment when
-it places them in the appropriate output sections. First come all the
-sixteen-byte aligned symbols, then all the eight-byte, then all the
-four-byte, then all the two-byte, and then everything else. This is to
-prevent gaps between symbols due to alignment constraints.
+This option tells @command{ld} to sort the common symbols by alignment in
+ascending or descending order when it places them in the appropriate output
+sections. The symbol alignments considered are sixteen-byte or larger,
+eight-byte, four-byte, two-byte, and one-byte. This is to prevent gaps
+between symbols due to alignment constraints. If no sorting order is
+specified, then descending order is assumed.
@kindex --sort-section name
@item --sort-section name
@c man end
@end ifset
+@ifset M68K
+@subsection Options specific to Motorola 68K target
+
+@c man begin OPTIONS
+
+The following options are supported to control handling of GOT generation
+when linking for 68K targets.
+
+@table @gcctabopt
+
+@kindex --got
+@item --got=@var{type}
+This option tells the linker which GOT generation scheme to use.
+@var{type} should be one of @samp{single}, @samp{negative},
+@samp{multigot} or @samp{target}. For more information refer to the
+Info entry for @file{ld}.
+
+@end table
+
+@c man end
+@end ifset
+
@ifset UsesEnvVars
@node Environment
@section Environment Variables
with the @option{-L} option. You can nest calls to @code{INCLUDE} up to
10 levels deep.
+You can place @code{INCLUDE} directives at the top level, in @code{MEMORY} or
+@code{SECTIONS} commands, or in output section descriptions.
+
@item INPUT(@var{file}, @var{file}, @dots{})
@itemx INPUT(@var{file} @var{file} @dots{})
@kindex INPUT(@var{files})
data.o(.data)
@end smallexample
+You can also specify files within archives by writing a pattern
+matching the archive, a colon, then the pattern matching the file,
+with no whitespace around the colon.
+
+@table @samp
+@item archive:file
+matches file within archive
+@item archive:
+matches the whole archive
+@item :file
+matches file but not one in an archive
+@end table
+
+Either one or both of @samp{archive} and @samp{file} can contain shell
+wildcards. On DOS based file systems, the linker will assume that a
+single letter followed by a colon is a drive specifier, so
+@samp{c:myfile.o} is a simple file specification, not @samp{myfile.o}
+within an archive called @samp{c}. @samp{archive:file} filespecs may
+also be used within an @code{EXCLUDE_FILE} list, but may not appear in
+other linker script contexts. For instance, you cannot extract a file
+from an archive by using @samp{archive:file} in an @code{INPUT}
+command.
+
If you use a file name without a list of sections, then all sections in
the input file will be included in the output section. This is not
commonly done, but it may by useful on occasion. For example:
data.o
@end smallexample
-When you use a file name which does not contain any wild card
+When you use a file name which is not an @samp{archive:file} specifier
+and does not contain any wild card
characters, the linker will first see if you also specified the file
name on the linker command line or in an @code{INPUT} command. If you
did not, the linker will attempt to open the file as an input file, as
well as section flag.
If an orphaned section's name is representable as a C identifier then
-the linker will automatically @xref{PROVIDE} two symbols:
+the linker will automatically @pxref{PROVIDE} two symbols:
__start_SECNAME and __end_SECNAME, where SECNAME is the name of the
section. These indicate the start address and end address of the
orphaned section respectively. Note: most section names are not
@ifset HPPA
* HPPA ELF32:: @command{ld} and HPPA 32-bit ELF
@end ifset
+@ifset M68K
+* M68K:: @command{ld} and the Motorola 68K family
+@end ifset
@ifset MMIX
* MMIX:: @command{ld} and MMIX
@end ifset
using enumeration values fitted into the smallest possible space will
not be diagnosed.
+@cindex NO_WCHAR_SIZE_WARNING
+@kindex --no-wchar-size-warning
+The @option{--no-wchar-size-warning} switch prevents the linker from
+warning when linking object files that specify incompatible EABI
+@code{wchar_t} size attributes. For example, with this switch enabled,
+linking of an object file using 32-bit @code{wchar_t} values with another
+using 16-bit @code{wchar_t} values will not be diagnosed.
+
@cindex PIC_VENEER
@kindex --pic-veneer
The @samp{--pic-veneer} switch makes the linker use PIC sequences for
The default, if @option{--stub-group-size=} is not specified, is
@samp{N = +1}.
+Farcalls stubs insertion is fully supported for the ARM-EABI target
+only, because it relies on object files properties not present
+otherwise.
+
@ifclear GENERIC
@lowersections
@end ifclear
@end ifclear
@end ifset
+@ifset M68K
+@ifclear GENERIC
+@raisesections
+@end ifclear
+
+@node M68K
+@section @command{ld} and the Motorola 68K family
+
+@cindex Motorola 68K GOT generation
+@kindex --got=@var{type}
+The @samp{--got=@var{type}} option lets you choose the GOT generation scheme.
+The choices are @samp{single}, @samp{negative}, @samp{multigot} and
+@samp{target}. When @samp{target} is selected the linker chooses
+the default GOT generation scheme for the current target.
+@samp{single} tells the linker to generate a single GOT with
+entries only at non-negative offsets.
+@samp{negative} instructs the linker to generate a single GOT with
+entries at both negative and positive offsets. Not all environments
+support such GOTs.
+@samp{multigot} allows the linker to generate several GOTs in the
+output file. All GOT references from a single input object
+file access the same GOT, but references from different input object
+files might access different GOTs. Not all environments support such GOTs.
+
+@ifclear GENERIC
+@lowersections
+@end ifclear
+@end ifset
+
@ifset MMIX
@ifclear GENERIC
@raisesections
this section; it is always set to the program entry, which is at the
symbol @code{Main} for @code{mmo} files.
-Symbols with the prefix @code{__.MMIX.start.}, for example
-@code{__.MMIX.start..text} and @code{__.MMIX.start..data} are special;
-there must be only one each, even if they are local. The default linker
-script uses these to set the default start address of a section.
+Global symbols with the prefix @code{__.MMIX.start.}, for example
+@code{__.MMIX.start..text} and @code{__.MMIX.start..data} are special.
+The default linker script uses these to set the default start address
+of a section.
Initial and trailing multiples of zero-valued 32-bit words in a section,
are left out from an mmo file.