| 1 | This is ld.info, produced by makeinfo version 4.3 from ./ld.texinfo.
 | 
|---|
| 2 | 
 | 
|---|
| 3 | START-INFO-DIR-ENTRY
 | 
|---|
| 4 | * Ld: (ld).                       The GNU linker.
 | 
|---|
| 5 | END-INFO-DIR-ENTRY
 | 
|---|
| 6 | 
 | 
|---|
| 7 |    This file documents the GNU linker LD version 2.14.
 | 
|---|
| 8 | 
 | 
|---|
| 9 |    Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
 | 
|---|
| 10 | 2002, 2003 Free Software Foundation, Inc.
 | 
|---|
| 11 | 
 | 
|---|
| 12 | 
 | 
|---|
| 13 | File: ld.info,  Node: Options,  Next: Environment,  Up: Invocation
 | 
|---|
| 14 | 
 | 
|---|
| 15 | Command Line Options
 | 
|---|
| 16 | ====================
 | 
|---|
| 17 | 
 | 
|---|
| 18 |    The linker supports a plethora of command-line options, but in actual
 | 
|---|
| 19 | practice few of them are used in any particular context.  For instance,
 | 
|---|
| 20 | a frequent use of `ld' is to link standard Unix object files on a
 | 
|---|
| 21 | standard, supported Unix system.  On such a system, to link a file
 | 
|---|
| 22 | `hello.o':
 | 
|---|
| 23 | 
 | 
|---|
| 24 |      ld -o OUTPUT /lib/crt0.o hello.o -lc
 | 
|---|
| 25 | 
 | 
|---|
| 26 |    This tells `ld' to produce a file called OUTPUT as the result of
 | 
|---|
| 27 | linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a',
 | 
|---|
| 28 | which will come from the standard search directories.  (See the
 | 
|---|
| 29 | discussion of the `-l' option below.)
 | 
|---|
| 30 | 
 | 
|---|
| 31 |    Some of the command-line options to `ld' may be specified at any
 | 
|---|
| 32 | point in the command line.  However, options which refer to files, such
 | 
|---|
| 33 | as `-l' or `-T', cause the file to be read at the point at which the
 | 
|---|
| 34 | option appears in the command line, relative to the object files and
 | 
|---|
| 35 | other file options.  Repeating non-file options with a different
 | 
|---|
| 36 | argument will either have no further effect, or override prior
 | 
|---|
| 37 | occurrences (those further to the left on the command line) of that
 | 
|---|
| 38 | option.  Options which may be meaningfully specified more than once are
 | 
|---|
| 39 | noted in the descriptions below.
 | 
|---|
| 40 | 
 | 
|---|
| 41 |    Non-option arguments are object files or archives which are to be
 | 
|---|
| 42 | linked together.  They may follow, precede, or be mixed in with
 | 
|---|
| 43 | command-line options, except that an object file argument may not be
 | 
|---|
| 44 | placed between an option and its argument.
 | 
|---|
| 45 | 
 | 
|---|
| 46 |    Usually the linker is invoked with at least one object file, but you
 | 
|---|
| 47 | can specify other forms of binary input files using `-l', `-R', and the
 | 
|---|
| 48 | script command language.  If _no_ binary input files at all are
 | 
|---|
| 49 | specified, the linker does not produce any output, and issues the
 | 
|---|
| 50 | message `No input files'.
 | 
|---|
| 51 | 
 | 
|---|
| 52 |    If the linker cannot recognize the format of an object file, it will
 | 
|---|
| 53 | assume that it is a linker script.  A script specified in this way
 | 
|---|
| 54 | augments the main linker script used for the link (either the default
 | 
|---|
| 55 | linker script or the one specified by using `-T').  This feature
 | 
|---|
| 56 | permits the linker to link against a file which appears to be an object
 | 
|---|
| 57 | or an archive, but actually merely defines some symbol values, or uses
 | 
|---|
| 58 | `INPUT' or `GROUP' to load other objects.  Note that specifying a
 | 
|---|
| 59 | script in this way merely augments the main linker script; use the `-T'
 | 
|---|
| 60 | option to replace the default linker script entirely.  *Note Scripts::.
 | 
|---|
| 61 | 
 | 
|---|
| 62 |    For options whose names are a single letter, option arguments must
 | 
|---|
| 63 | either follow the option letter without intervening whitespace, or be
 | 
|---|
| 64 | given as separate arguments immediately following the option that
 | 
|---|
| 65 | requires them.
 | 
|---|
| 66 | 
 | 
|---|
| 67 |    For options whose names are multiple letters, either one dash or two
 | 
|---|
| 68 | can precede the option name; for example, `-trace-symbol' and
 | 
|---|
| 69 | `--trace-symbol' are equivalent.  Note--there is one exception to this
 | 
|---|
| 70 | rule.  Multiple letter options that start with a lower case 'o' can
 | 
|---|
| 71 | only be preceeded by two dashes.  This is to reduce confusion with the
 | 
|---|
| 72 | `-o' option.  So for example `-omagic' sets the output file name to
 | 
|---|
| 73 | `magic' whereas `--omagic' sets the NMAGIC flag on the output.
 | 
|---|
| 74 | 
 | 
|---|
| 75 |    Arguments to multiple-letter options must either be separated from
 | 
|---|
| 76 | the option name by an equals sign, or be given as separate arguments
 | 
|---|
| 77 | immediately following the option that requires them.  For example,
 | 
|---|
| 78 | `--trace-symbol foo' and `--trace-symbol=foo' are equivalent.  Unique
 | 
|---|
| 79 | abbreviations of the names of multiple-letter options are accepted.
 | 
|---|
| 80 | 
 | 
|---|
| 81 |    Note--if the linker is being invoked indirectly, via a compiler
 | 
|---|
| 82 | driver (e.g. `gcc') then all the linker command line options should be
 | 
|---|
| 83 | prefixed by `-Wl,' (or whatever is appropriate for the particular
 | 
|---|
| 84 | compiler driver) like this:
 | 
|---|
| 85 | 
 | 
|---|
| 86 |        gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
 | 
|---|
| 87 | 
 | 
|---|
| 88 |    This is important, because otherwise the compiler driver program may
 | 
|---|
| 89 | silently drop the linker options, resulting in a bad link.
 | 
|---|
| 90 | 
 | 
|---|
| 91 |    Here is a table of the generic command line switches accepted by the
 | 
|---|
| 92 | GNU linker:
 | 
|---|
| 93 | 
 | 
|---|
| 94 | `-aKEYWORD'
 | 
|---|
| 95 |      This option is supported for HP/UX compatibility.  The KEYWORD
 | 
|---|
| 96 |      argument must be one of the strings `archive', `shared', or
 | 
|---|
| 97 |      `default'.  `-aarchive' is functionally equivalent to `-Bstatic',
 | 
|---|
| 98 |      and the other two keywords are functionally equivalent to
 | 
|---|
| 99 |      `-Bdynamic'.  This option may be used any number of times.
 | 
|---|
| 100 | 
 | 
|---|
| 101 | `-AARCHITECTURE'
 | 
|---|
| 102 | `--architecture=ARCHITECTURE'
 | 
|---|
| 103 |      In the current release of `ld', this option is useful only for the
 | 
|---|
| 104 |      Intel 960 family of architectures.  In that `ld' configuration, the
 | 
|---|
| 105 |      ARCHITECTURE argument identifies the particular architecture in
 | 
|---|
| 106 |      the 960 family, enabling some safeguards and modifying the
 | 
|---|
| 107 |      archive-library search path.  *Note `ld' and the Intel 960 family:
 | 
|---|
| 108 |      i960, for details.
 | 
|---|
| 109 | 
 | 
|---|
| 110 |      Future releases of `ld' may support similar functionality for
 | 
|---|
| 111 |      other architecture families.
 | 
|---|
| 112 | 
 | 
|---|
| 113 | `-b INPUT-FORMAT'
 | 
|---|
| 114 | `--format=INPUT-FORMAT'
 | 
|---|
| 115 |      `ld' may be configured to support more than one kind of object
 | 
|---|
| 116 |      file.  If your `ld' is configured this way, you can use the `-b'
 | 
|---|
| 117 |      option to specify the binary format for input object files that
 | 
|---|
| 118 |      follow this option on the command line.  Even when `ld' is
 | 
|---|
| 119 |      configured to support alternative object formats, you don't
 | 
|---|
| 120 |      usually need to specify this, as `ld' should be configured to
 | 
|---|
| 121 |      expect as a default input format the most usual format on each
 | 
|---|
| 122 |      machine.  INPUT-FORMAT is a text string, the name of a particular
 | 
|---|
| 123 |      format supported by the BFD libraries.  (You can list the
 | 
|---|
| 124 |      available binary formats with `objdump -i'.)  *Note BFD::.
 | 
|---|
| 125 | 
 | 
|---|
| 126 |      You may want to use this option if you are linking files with an
 | 
|---|
| 127 |      unusual binary format.  You can also use `-b' to switch formats
 | 
|---|
| 128 |      explicitly (when linking object files of different formats), by
 | 
|---|
| 129 |      including `-b INPUT-FORMAT' before each group of object files in a
 | 
|---|
| 130 |      particular format.
 | 
|---|
| 131 | 
 | 
|---|
| 132 |      The default format is taken from the environment variable
 | 
|---|
| 133 |      `GNUTARGET'.  *Note Environment::.  You can also define the input
 | 
|---|
| 134 |      format from a script, using the command `TARGET'; see *Note Format
 | 
|---|
| 135 |      Commands::.
 | 
|---|
| 136 | 
 | 
|---|
| 137 | `-c MRI-COMMANDFILE'
 | 
|---|
| 138 | `--mri-script=MRI-COMMANDFILE'
 | 
|---|
| 139 |      For compatibility with linkers produced by MRI, `ld' accepts script
 | 
|---|
| 140 |      files written in an alternate, restricted command language,
 | 
|---|
| 141 |      described in *Note MRI Compatible Script Files: MRI.  Introduce
 | 
|---|
| 142 |      MRI script files with the option `-c'; use the `-T' option to run
 | 
|---|
| 143 |      linker scripts written in the general-purpose `ld' scripting
 | 
|---|
| 144 |      language.  If MRI-CMDFILE does not exist, `ld' looks for it in the
 | 
|---|
| 145 |      directories specified by any `-L' options.
 | 
|---|
| 146 | 
 | 
|---|
| 147 | `-d'
 | 
|---|
| 148 | `-dc'
 | 
|---|
| 149 | `-dp'
 | 
|---|
| 150 |      These three options are equivalent; multiple forms are supported
 | 
|---|
| 151 |      for compatibility with other linkers.  They assign space to common
 | 
|---|
| 152 |      symbols even if a relocatable output file is specified (with
 | 
|---|
| 153 |      `-r').  The script command `FORCE_COMMON_ALLOCATION' has the same
 | 
|---|
| 154 |      effect.  *Note Miscellaneous Commands::.
 | 
|---|
| 155 | 
 | 
|---|
| 156 | `-e ENTRY'
 | 
|---|
| 157 | `--entry=ENTRY'
 | 
|---|
| 158 |      Use ENTRY as the explicit symbol for beginning execution of your
 | 
|---|
| 159 |      program, rather than the default entry point.  If there is no
 | 
|---|
| 160 |      symbol named ENTRY, the linker will try to parse ENTRY as a number,
 | 
|---|
| 161 |      and use that as the entry address (the number will be interpreted
 | 
|---|
| 162 |      in base 10; you may use a leading `0x' for base 16, or a leading
 | 
|---|
| 163 |      `0' for base 8).  *Note Entry Point::, for a discussion of defaults
 | 
|---|
| 164 |      and other ways of specifying the entry point.
 | 
|---|
| 165 | 
 | 
|---|
| 166 | `-E'
 | 
|---|
| 167 | `--export-dynamic'
 | 
|---|
| 168 |      When creating a dynamically linked executable, add all symbols to
 | 
|---|
| 169 |      the dynamic symbol table.  The dynamic symbol table is the set of
 | 
|---|
| 170 |      symbols which are visible from dynamic objects at run time.
 | 
|---|
| 171 | 
 | 
|---|
| 172 |      If you do not use this option, the dynamic symbol table will
 | 
|---|
| 173 |      normally contain only those symbols which are referenced by some
 | 
|---|
| 174 |      dynamic object mentioned in the link.
 | 
|---|
| 175 | 
 | 
|---|
| 176 |      If you use `dlopen' to load a dynamic object which needs to refer
 | 
|---|
| 177 |      back to the symbols defined by the program, rather than some other
 | 
|---|
| 178 |      dynamic object, then you will probably need to use this option when
 | 
|---|
| 179 |      linking the program itself.
 | 
|---|
| 180 | 
 | 
|---|
| 181 |      You can also use the version script to control what symbols should
 | 
|---|
| 182 |      be added to the dynamic symbol table if the output format supports
 | 
|---|
| 183 |      it.  See the description of `--version-script' in *Note VERSION::.
 | 
|---|
| 184 | 
 | 
|---|
| 185 | `-EB'
 | 
|---|
| 186 |      Link big-endian objects.  This affects the default output format.
 | 
|---|
| 187 | 
 | 
|---|
| 188 | `-EL'
 | 
|---|
| 189 |      Link little-endian objects.  This affects the default output
 | 
|---|
| 190 |      format.
 | 
|---|
| 191 | 
 | 
|---|
| 192 | `-f'
 | 
|---|
| 193 | `--auxiliary NAME'
 | 
|---|
| 194 |      When creating an ELF shared object, set the internal DT_AUXILIARY
 | 
|---|
| 195 |      field to the specified name.  This tells the dynamic linker that
 | 
|---|
| 196 |      the symbol table of the shared object should be used as an
 | 
|---|
| 197 |      auxiliary filter on the symbol table of the shared object NAME.
 | 
|---|
| 198 | 
 | 
|---|
| 199 |      If you later link a program against this filter object, then, when
 | 
|---|
| 200 |      you run the program, the dynamic linker will see the DT_AUXILIARY
 | 
|---|
| 201 |      field.  If the dynamic linker resolves any symbols from the filter
 | 
|---|
| 202 |      object, it will first check whether there is a definition in the
 | 
|---|
| 203 |      shared object NAME.  If there is one, it will be used instead of
 | 
|---|
| 204 |      the definition in the filter object.  The shared object NAME need
 | 
|---|
| 205 |      not exist.  Thus the shared object NAME may be used to provide an
 | 
|---|
| 206 |      alternative implementation of certain functions, perhaps for
 | 
|---|
| 207 |      debugging or for machine specific performance.
 | 
|---|
| 208 | 
 | 
|---|
| 209 |      This option may be specified more than once.  The DT_AUXILIARY
 | 
|---|
| 210 |      entries will be created in the order in which they appear on the
 | 
|---|
| 211 |      command line.
 | 
|---|
| 212 | 
 | 
|---|
| 213 | `-F NAME'
 | 
|---|
| 214 | `--filter NAME'
 | 
|---|
| 215 |      When creating an ELF shared object, set the internal DT_FILTER
 | 
|---|
| 216 |      field to the specified name.  This tells the dynamic linker that
 | 
|---|
| 217 |      the symbol table of the shared object which is being created
 | 
|---|
| 218 |      should be used as a filter on the symbol table of the shared
 | 
|---|
| 219 |      object NAME.
 | 
|---|
| 220 | 
 | 
|---|
| 221 |      If you later link a program against this filter object, then, when
 | 
|---|
| 222 |      you run the program, the dynamic linker will see the DT_FILTER
 | 
|---|
| 223 |      field.  The dynamic linker will resolve symbols according to the
 | 
|---|
| 224 |      symbol table of the filter object as usual, but it will actually
 | 
|---|
| 225 |      link to the definitions found in the shared object NAME.  Thus the
 | 
|---|
| 226 |      filter object can be used to select a subset of the symbols
 | 
|---|
| 227 |      provided by the object NAME.
 | 
|---|
| 228 | 
 | 
|---|
| 229 |      Some older linkers used the `-F' option throughout a compilation
 | 
|---|
| 230 |      toolchain for specifying object-file format for both input and
 | 
|---|
| 231 |      output object files.  The GNU linker uses other mechanisms for
 | 
|---|
| 232 |      this purpose: the `-b', `--format', `--oformat' options, the
 | 
|---|
| 233 |      `TARGET' command in linker scripts, and the `GNUTARGET'
 | 
|---|
| 234 |      environment variable.  The GNU linker will ignore the `-F' option
 | 
|---|
| 235 |      when not creating an ELF shared object.
 | 
|---|
| 236 | 
 | 
|---|
| 237 | `-fini NAME'
 | 
|---|
| 238 |      When creating an ELF executable or shared object, call NAME when
 | 
|---|
| 239 |      the executable or shared object is unloaded, by setting DT_FINI to
 | 
|---|
| 240 |      the address of the function.  By default, the linker uses `_fini'
 | 
|---|
| 241 |      as the function to call.
 | 
|---|
| 242 | 
 | 
|---|
| 243 | `-g'
 | 
|---|
| 244 |      Ignored.  Provided for compatibility with other tools.
 | 
|---|
| 245 | 
 | 
|---|
| 246 | `-GVALUE'
 | 
|---|
| 247 | `--gpsize=VALUE'
 | 
|---|
| 248 |      Set the maximum size of objects to be optimized using the GP
 | 
|---|
| 249 |      register to SIZE.  This is only meaningful for object file formats
 | 
|---|
| 250 |      such as MIPS ECOFF which supports putting large and small objects
 | 
|---|
| 251 |      into different sections.  This is ignored for other object file
 | 
|---|
| 252 |      formats.
 | 
|---|
| 253 | 
 | 
|---|
| 254 | `-hNAME'
 | 
|---|
| 255 | `-soname=NAME'
 | 
|---|
| 256 |      When creating an ELF shared object, set the internal DT_SONAME
 | 
|---|
| 257 |      field to the specified name.  When an executable is linked with a
 | 
|---|
| 258 |      shared object which has a DT_SONAME field, then when the
 | 
|---|
| 259 |      executable is run the dynamic linker will attempt to load the
 | 
|---|
| 260 |      shared object specified by the DT_SONAME field rather than the
 | 
|---|
| 261 |      using the file name given to the linker.
 | 
|---|
| 262 | 
 | 
|---|
| 263 | `-i'
 | 
|---|
| 264 |      Perform an incremental link (same as option `-r').
 | 
|---|
| 265 | 
 | 
|---|
| 266 | `-init NAME'
 | 
|---|
| 267 |      When creating an ELF executable or shared object, call NAME when
 | 
|---|
| 268 |      the executable or shared object is loaded, by setting DT_INIT to
 | 
|---|
| 269 |      the address of the function.  By default, the linker uses `_init'
 | 
|---|
| 270 |      as the function to call.
 | 
|---|
| 271 | 
 | 
|---|
| 272 | `-lARCHIVE'
 | 
|---|
| 273 | `--library=ARCHIVE'
 | 
|---|
| 274 |      Add archive file ARCHIVE to the list of files to link.  This
 | 
|---|
| 275 |      option may be used any number of times.  `ld' will search its
 | 
|---|
| 276 |      path-list for occurrences of `libARCHIVE.a' for every ARCHIVE
 | 
|---|
| 277 |      specified.
 | 
|---|
| 278 | 
 | 
|---|
| 279 |      On systems which support shared libraries, `ld' may also search for
 | 
|---|
| 280 |      libraries with extensions other than `.a'.  Specifically, on ELF
 | 
|---|
| 281 |      and SunOS systems, `ld' will search a directory for a library with
 | 
|---|
| 282 |      an extension of `.so' before searching for one with an extension of
 | 
|---|
| 283 |      `.a'.  By convention, a `.so' extension indicates a shared library.
 | 
|---|
| 284 | 
 | 
|---|
| 285 |      The linker will search an archive only once, at the location where
 | 
|---|
| 286 |      it is specified on the command line.  If the archive defines a
 | 
|---|
| 287 |      symbol which was undefined in some object which appeared before
 | 
|---|
| 288 |      the archive on the command line, the linker will include the
 | 
|---|
| 289 |      appropriate file(s) from the archive.  However, an undefined
 | 
|---|
| 290 |      symbol in an object appearing later on the command line will not
 | 
|---|
| 291 |      cause the linker to search the archive again.
 | 
|---|
| 292 | 
 | 
|---|
| 293 |      See the `-(' option for a way to force the linker to search
 | 
|---|
| 294 |      archives multiple times.
 | 
|---|
| 295 | 
 | 
|---|
| 296 |      You may list the same archive multiple times on the command line.
 | 
|---|
| 297 | 
 | 
|---|
| 298 |      This type of archive searching is standard for Unix linkers.
 | 
|---|
| 299 |      However, if you are using `ld' on AIX, note that it is different
 | 
|---|
| 300 |      from the behaviour of the AIX linker.
 | 
|---|
| 301 | 
 | 
|---|
| 302 | `-LSEARCHDIR'
 | 
|---|
| 303 | `--library-path=SEARCHDIR'
 | 
|---|
| 304 |      Add path SEARCHDIR to the list of paths that `ld' will search for
 | 
|---|
| 305 |      archive libraries and `ld' control scripts.  You may use this
 | 
|---|
| 306 |      option any number of times.  The directories are searched in the
 | 
|---|
| 307 |      order in which they are specified on the command line.
 | 
|---|
| 308 |      Directories specified on the command line are searched before the
 | 
|---|
| 309 |      default directories.  All `-L' options apply to all `-l' options,
 | 
|---|
| 310 |      regardless of the order in which the options appear.
 | 
|---|
| 311 | 
 | 
|---|
| 312 |      If SEARCHDIR begins with `=', then the `=' will be replaced by the
 | 
|---|
| 313 |      "sysroot prefix", a path specified when the linker is configured.
 | 
|---|
| 314 | 
 | 
|---|
| 315 |      The default set of paths searched (without being specified with
 | 
|---|
| 316 |      `-L') depends on which emulation mode `ld' is using, and in some
 | 
|---|
| 317 |      cases also on how it was configured.  *Note Environment::.
 | 
|---|
| 318 | 
 | 
|---|
| 319 |      The paths can also be specified in a link script with the
 | 
|---|
| 320 |      `SEARCH_DIR' command.  Directories specified this way are searched
 | 
|---|
| 321 |      at the point in which the linker script appears in the command
 | 
|---|
| 322 |      line.
 | 
|---|
| 323 | 
 | 
|---|
| 324 | `-mEMULATION'
 | 
|---|
| 325 |      Emulate the EMULATION linker.  You can list the available
 | 
|---|
| 326 |      emulations with the `--verbose' or `-V' options.
 | 
|---|
| 327 | 
 | 
|---|
| 328 |      If the `-m' option is not used, the emulation is taken from the
 | 
|---|
| 329 |      `LDEMULATION' environment variable, if that is defined.
 | 
|---|
| 330 | 
 | 
|---|
| 331 |      Otherwise, the default emulation depends upon how the linker was
 | 
|---|
| 332 |      configured.
 | 
|---|
| 333 | 
 | 
|---|
| 334 | `-M'
 | 
|---|
| 335 | `--print-map'
 | 
|---|
| 336 |      Print a link map to the standard output.  A link map provides
 | 
|---|
| 337 |      information about the link, including the following:
 | 
|---|
| 338 | 
 | 
|---|
| 339 |         * Where object files and symbols are mapped into memory.
 | 
|---|
| 340 | 
 | 
|---|
| 341 |         * How common symbols are allocated.
 | 
|---|
| 342 | 
 | 
|---|
| 343 |         * All archive members included in the link, with a mention of
 | 
|---|
| 344 |           the symbol which caused the archive member to be brought in.
 | 
|---|
| 345 | 
 | 
|---|
| 346 | `-n'
 | 
|---|
| 347 | `--nmagic'
 | 
|---|
| 348 |      Turn off page alignment of sections, and mark the output as
 | 
|---|
| 349 |      `NMAGIC' if possible.
 | 
|---|
| 350 | 
 | 
|---|
| 351 | `-N'
 | 
|---|
| 352 | `--omagic'
 | 
|---|
| 353 |      Set the text and data sections to be readable and writable.  Also,
 | 
|---|
| 354 |      do not page-align the data segment, and disable linking against
 | 
|---|
| 355 |      shared libraries.  If the output format supports Unix style magic
 | 
|---|
| 356 |      numbers, mark the output as `OMAGIC'.
 | 
|---|
| 357 | 
 | 
|---|
| 358 | `--no-omagic'
 | 
|---|
| 359 |      This option negates most of the effects of the `-N' option.  It
 | 
|---|
| 360 |      sets the text section to be read-only, and forces the data segment
 | 
|---|
| 361 |      to be page-aligned.  Note - this option does not enable linking
 | 
|---|
| 362 |      against shared libraries.  Use `-Bdynamic' for this.
 | 
|---|
| 363 | 
 | 
|---|
| 364 | `-o OUTPUT'
 | 
|---|
| 365 | `--output=OUTPUT'
 | 
|---|
| 366 |      Use OUTPUT as the name for the program produced by `ld'; if this
 | 
|---|
| 367 |      option is not specified, the name `a.out' is used by default.  The
 | 
|---|
| 368 |      script command `OUTPUT' can also specify the output file name.
 | 
|---|
| 369 | 
 | 
|---|
| 370 | `-O LEVEL'
 | 
|---|
| 371 |      If LEVEL is a numeric values greater than zero `ld' optimizes the
 | 
|---|
| 372 |      output.  This might take significantly longer and therefore
 | 
|---|
| 373 |      probably should only be enabled for the final binary.
 | 
|---|
| 374 | 
 | 
|---|
| 375 | `-q'
 | 
|---|
| 376 | `--emit-relocs'
 | 
|---|
| 377 |      Leave relocation sections and contents in fully linked
 | 
|---|
| 378 |      exececutables.  Post link analysis and optimization tools may need
 | 
|---|
| 379 |      this information in order to perform correct modifications of
 | 
|---|
| 380 |      executables.  This results in larger executables.
 | 
|---|
| 381 | 
 | 
|---|
| 382 |      This option is currently only supported on ELF platforms.
 | 
|---|
| 383 | 
 | 
|---|
| 384 | `-r'
 | 
|---|
| 385 | `--relocateable'
 | 
|---|
| 386 |      Generate relocatable output--i.e., generate an output file that
 | 
|---|
| 387 |      can in turn serve as input to `ld'.  This is often called "partial
 | 
|---|
| 388 |      linking".  As a side effect, in environments that support standard
 | 
|---|
| 389 |      Unix magic numbers, this option also sets the output file's magic
 | 
|---|
| 390 |      number to `OMAGIC'.  If this option is not specified, an absolute
 | 
|---|
| 391 |      file is produced.  When linking C++ programs, this option _will
 | 
|---|
| 392 |      not_ resolve references to constructors; to do that, use `-Ur'.
 | 
|---|
| 393 | 
 | 
|---|
| 394 |      When an input file does not have the same format as the output
 | 
|---|
| 395 |      file, partial linking is only supported if that input file does
 | 
|---|
| 396 |      not contain any relocations.  Different output formats can have
 | 
|---|
| 397 |      further restrictions; for example some `a.out'-based formats do
 | 
|---|
| 398 |      not support partial linking with input files in other formats at
 | 
|---|
| 399 |      all.
 | 
|---|
| 400 | 
 | 
|---|
| 401 |      This option does the same thing as `-i'.
 | 
|---|
| 402 | 
 | 
|---|
| 403 | `-R FILENAME'
 | 
|---|
| 404 | `--just-symbols=FILENAME'
 | 
|---|
| 405 |      Read symbol names and their addresses from FILENAME, but do not
 | 
|---|
| 406 |      relocate it or include it in the output.  This allows your output
 | 
|---|
| 407 |      file to refer symbolically to absolute locations of memory defined
 | 
|---|
| 408 |      in other programs.  You may use this option more than once.
 | 
|---|
| 409 | 
 | 
|---|
| 410 |      For compatibility with other ELF linkers, if the `-R' option is
 | 
|---|
| 411 |      followed by a directory name, rather than a file name, it is
 | 
|---|
| 412 |      treated as the `-rpath' option.
 | 
|---|
| 413 | 
 | 
|---|
| 414 | `-s'
 | 
|---|
| 415 | `--strip-all'
 | 
|---|
| 416 |      Omit all symbol information from the output file.
 | 
|---|
| 417 | 
 | 
|---|
| 418 | `-S'
 | 
|---|
| 419 | `--strip-debug'
 | 
|---|
| 420 |      Omit debugger symbol information (but not all symbols) from the
 | 
|---|
| 421 |      output file.
 | 
|---|
| 422 | 
 | 
|---|
| 423 | `-t'
 | 
|---|
| 424 | `--trace'
 | 
|---|
| 425 |      Print the names of the input files as `ld' processes them.
 | 
|---|
| 426 | 
 | 
|---|
| 427 | `-T SCRIPTFILE'
 | 
|---|
| 428 | `--script=SCRIPTFILE'
 | 
|---|
| 429 |      Use SCRIPTFILE as the linker script.  This script replaces `ld''s
 | 
|---|
| 430 |      default linker script (rather than adding to it), so COMMANDFILE
 | 
|---|
| 431 |      must specify everything necessary to describe the output file.
 | 
|---|
| 432 |      *Note Scripts::.  If SCRIPTFILE does not exist in the current
 | 
|---|
| 433 |      directory, `ld' looks for it in the directories specified by any
 | 
|---|
| 434 |      preceding `-L' options.  Multiple `-T' options accumulate.
 | 
|---|
| 435 | 
 | 
|---|
| 436 | `-u SYMBOL'
 | 
|---|
| 437 | `--undefined=SYMBOL'
 | 
|---|
| 438 |      Force SYMBOL to be entered in the output file as an undefined
 | 
|---|
| 439 |      symbol.  Doing this may, for example, trigger linking of additional
 | 
|---|
| 440 |      modules from standard libraries.  `-u' may be repeated with
 | 
|---|
| 441 |      different option arguments to enter additional undefined symbols.
 | 
|---|
| 442 |      This option is equivalent to the `EXTERN' linker script command.
 | 
|---|
| 443 | 
 | 
|---|
| 444 | `-Ur'
 | 
|---|
| 445 |      For anything other than C++ programs, this option is equivalent to
 | 
|---|
| 446 |      `-r': it generates relocatable output--i.e., an output file that
 | 
|---|
| 447 |      can in turn serve as input to `ld'.  When linking C++ programs,
 | 
|---|
| 448 |      `-Ur' _does_ resolve references to constructors, unlike `-r'.  It
 | 
|---|
| 449 |      does not work to use `-Ur' on files that were themselves linked
 | 
|---|
| 450 |      with `-Ur'; once the constructor table has been built, it cannot
 | 
|---|
| 451 |      be added to.  Use `-Ur' only for the last partial link, and `-r'
 | 
|---|
| 452 |      for the others.
 | 
|---|
| 453 | 
 | 
|---|
| 454 | `--unique[=SECTION]'
 | 
|---|
| 455 |      Creates a separate output section for every input section matching
 | 
|---|
| 456 |      SECTION, or if the optional wildcard SECTION argument is missing,
 | 
|---|
| 457 |      for every orphan input section.  An orphan section is one not
 | 
|---|
| 458 |      specifically mentioned in a linker script.  You may use this option
 | 
|---|
| 459 |      multiple times on the command line;  It prevents the normal
 | 
|---|
| 460 |      merging of input sections with the same name, overriding output
 | 
|---|
| 461 |      section assignments in a linker script.
 | 
|---|
| 462 | 
 | 
|---|
| 463 | `-v'
 | 
|---|
| 464 | `--version'
 | 
|---|
| 465 | `-V'
 | 
|---|
| 466 |      Display the version number for `ld'.  The `-V' option also lists
 | 
|---|
| 467 |      the supported emulations.
 | 
|---|
| 468 | 
 | 
|---|
| 469 | `-x'
 | 
|---|
| 470 | `--discard-all'
 | 
|---|
| 471 |      Delete all local symbols.
 | 
|---|
| 472 | 
 | 
|---|
| 473 | `-X'
 | 
|---|
| 474 | `--discard-locals'
 | 
|---|
| 475 |      Delete all temporary local symbols.  For most targets, this is all
 | 
|---|
| 476 |      local symbols whose names begin with `L'.
 | 
|---|
| 477 | 
 | 
|---|
| 478 | `-y SYMBOL'
 | 
|---|
| 479 | `--trace-symbol=SYMBOL'
 | 
|---|
| 480 |      Print the name of each linked file in which SYMBOL appears.  This
 | 
|---|
| 481 |      option may be given any number of times.  On many systems it is
 | 
|---|
| 482 |      necessary to prepend an underscore.
 | 
|---|
| 483 | 
 | 
|---|
| 484 |      This option is useful when you have an undefined symbol in your
 | 
|---|
| 485 |      link but don't know where the reference is coming from.
 | 
|---|
| 486 | 
 | 
|---|
| 487 | `-Y PATH'
 | 
|---|
| 488 |      Add PATH to the default library search path.  This option exists
 | 
|---|
| 489 |      for Solaris compatibility.
 | 
|---|
| 490 | 
 | 
|---|
| 491 | `-z KEYWORD'
 | 
|---|
| 492 |      The recognized keywords are `initfirst', `interpose', `loadfltr',
 | 
|---|
| 493 |      `nodefaultlib', `nodelete', `nodlopen', `nodump', `now', `origin',
 | 
|---|
| 494 |      `combreloc', `nocombreloc' and `nocopyreloc'.  The other keywords
 | 
|---|
| 495 |      are ignored for Solaris compatibility. `initfirst' marks the object
 | 
|---|
| 496 |      to be initialized first at runtime before any other objects.
 | 
|---|
| 497 |      `interpose' marks the object that its symbol table interposes
 | 
|---|
| 498 |      before all symbols but the primary executable. `loadfltr' marks
 | 
|---|
| 499 |      the object that its filtees be processed immediately at runtime.
 | 
|---|
| 500 |      `nodefaultlib' marks the object that the search for dependencies
 | 
|---|
| 501 |      of this object will ignore any default library search paths.
 | 
|---|
| 502 |      `nodelete' marks the object shouldn't be unloaded at runtime.
 | 
|---|
| 503 |      `nodlopen' marks the object not available to `dlopen'.  `nodump'
 | 
|---|
| 504 |      marks the object can not be dumped by `dldump'.  `now' marks the
 | 
|---|
| 505 |      object with the non-lazy runtime binding.  `origin' marks the
 | 
|---|
| 506 |      object may contain $ORIGIN.  `defs' disallows undefined symbols.
 | 
|---|
| 507 |      `muldefs' allows multiple definitions.  `combreloc' combines
 | 
|---|
| 508 |      multiple reloc sections and sorts them to make dynamic symbol
 | 
|---|
| 509 |      lookup caching possible.  `nocombreloc' disables multiple reloc
 | 
|---|
| 510 |      sections combining.  `nocopyreloc' disables production of copy
 | 
|---|
| 511 |      relocs.
 | 
|---|
| 512 | 
 | 
|---|
| 513 | `-( ARCHIVES -)'
 | 
|---|
| 514 | `--start-group ARCHIVES --end-group'
 | 
|---|
| 515 |      The ARCHIVES should be a list of archive files.  They may be
 | 
|---|
| 516 |      either explicit file names, or `-l' options.
 | 
|---|
| 517 | 
 | 
|---|
| 518 |      The specified archives are searched repeatedly until no new
 | 
|---|
| 519 |      undefined references are created.  Normally, an archive is
 | 
|---|
| 520 |      searched only once in the order that it is specified on the
 | 
|---|
| 521 |      command line.  If a symbol in that archive is needed to resolve an
 | 
|---|
| 522 |      undefined symbol referred to by an object in an archive that
 | 
|---|
| 523 |      appears later on the command line, the linker would not be able to
 | 
|---|
| 524 |      resolve that reference.  By grouping the archives, they all be
 | 
|---|
| 525 |      searched repeatedly until all possible references are resolved.
 | 
|---|
| 526 | 
 | 
|---|
| 527 |      Using this option has a significant performance cost.  It is best
 | 
|---|
| 528 |      to use it only when there are unavoidable circular references
 | 
|---|
| 529 |      between two or more archives.
 | 
|---|
| 530 | 
 | 
|---|
| 531 | `--accept-unknown-input-arch'
 | 
|---|
| 532 | `--no-accept-unknown-input-arch'
 | 
|---|
| 533 |      Tells the linker to accept input files whose architecture cannot be
 | 
|---|
| 534 |      recognised.  The assumption is that the user knows what they are
 | 
|---|
| 535 |      doing and deliberately wants to link in these unknown input files.
 | 
|---|
| 536 |      This was the default behaviour of the linker, before release
 | 
|---|
| 537 |      2.14.  The default behaviour from release 2.14 onwards is to
 | 
|---|
| 538 |      reject such input files, and so the `--accept-unknown-input-arch'
 | 
|---|
| 539 |      option has been added to restore the old behaviour.
 | 
|---|
| 540 | 
 | 
|---|
| 541 | `-assert KEYWORD'
 | 
|---|
| 542 |      This option is ignored for SunOS compatibility.
 | 
|---|
| 543 | 
 | 
|---|
| 544 | `-Bdynamic'
 | 
|---|
| 545 | `-dy'
 | 
|---|
| 546 | `-call_shared'
 | 
|---|
| 547 |      Link against dynamic libraries.  This is only meaningful on
 | 
|---|
| 548 |      platforms for which shared libraries are supported.  This option
 | 
|---|
| 549 |      is normally the default on such platforms.  The different variants
 | 
|---|
| 550 |      of this option are for compatibility with various systems.  You
 | 
|---|
| 551 |      may use this option multiple times on the command line: it affects
 | 
|---|
| 552 |      library searching for `-l' options which follow it.
 | 
|---|
| 553 | 
 | 
|---|
| 554 | `-Bgroup'
 | 
|---|
| 555 |      Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic
 | 
|---|
| 556 |      section.  This causes the runtime linker to handle lookups in this
 | 
|---|
| 557 |      object and its dependencies to be performed only inside the group.
 | 
|---|
| 558 |      `--no-undefined' is implied.  This option is only meaningful on ELF
 | 
|---|
| 559 |      platforms which support shared libraries.
 | 
|---|
| 560 | 
 | 
|---|
| 561 | `-Bstatic'
 | 
|---|
| 562 | `-dn'
 | 
|---|
| 563 | `-non_shared'
 | 
|---|
| 564 | `-static'
 | 
|---|
| 565 |      Do not link against shared libraries.  This is only meaningful on
 | 
|---|
| 566 |      platforms for which shared libraries are supported.  The different
 | 
|---|
| 567 |      variants of this option are for compatibility with various
 | 
|---|
| 568 |      systems.  You may use this option multiple times on the command
 | 
|---|
| 569 |      line: it affects library searching for `-l' options which follow
 | 
|---|
| 570 |      it.
 | 
|---|
| 571 | 
 | 
|---|
| 572 | `-Bsymbolic'
 | 
|---|
| 573 |      When creating a shared library, bind references to global symbols
 | 
|---|
| 574 |      to the definition within the shared library, if any.  Normally, it
 | 
|---|
| 575 |      is possible for a program linked against a shared library to
 | 
|---|
| 576 |      override the definition within the shared library.  This option is
 | 
|---|
| 577 |      only meaningful on ELF platforms which support shared libraries.
 | 
|---|
| 578 | 
 | 
|---|
| 579 | `--check-sections'
 | 
|---|
| 580 | `--no-check-sections'
 | 
|---|
| 581 |      Asks the linker _not_ to check section addresses after they have
 | 
|---|
| 582 |      been assigned to see if there any overlaps.  Normally the linker
 | 
|---|
| 583 |      will perform this check, and if it finds any overlaps it will
 | 
|---|
| 584 |      produce suitable error messages.  The linker does know about, and
 | 
|---|
| 585 |      does make allowances for sections in overlays.  The default
 | 
|---|
| 586 |      behaviour can be restored by using the command line switch
 | 
|---|
| 587 |      `--check-sections'.
 | 
|---|
| 588 | 
 | 
|---|
| 589 | `--cref'
 | 
|---|
| 590 |      Output a cross reference table.  If a linker map file is being
 | 
|---|
| 591 |      generated, the cross reference table is printed to the map file.
 | 
|---|
| 592 |      Otherwise, it is printed on the standard output.
 | 
|---|
| 593 | 
 | 
|---|
| 594 |      The format of the table is intentionally simple, so that it may be
 | 
|---|
| 595 |      easily processed by a script if necessary.  The symbols are
 | 
|---|
| 596 |      printed out, sorted by name.  For each symbol, a list of file
 | 
|---|
| 597 |      names is given.  If the symbol is defined, the first file listed
 | 
|---|
| 598 |      is the location of the definition.  The remaining files contain
 | 
|---|
| 599 |      references to the symbol.
 | 
|---|
| 600 | 
 | 
|---|
| 601 | `--no-define-common'
 | 
|---|
| 602 |      This option inhibits the assignment of addresses to common symbols.
 | 
|---|
| 603 |      The script command `INHIBIT_COMMON_ALLOCATION' has the same effect.
 | 
|---|
| 604 |      *Note Miscellaneous Commands::.
 | 
|---|
| 605 | 
 | 
|---|
| 606 |      The `--no-define-common' option allows decoupling the decision to
 | 
|---|
| 607 |      assign addresses to Common symbols from the choice of the output
 | 
|---|
| 608 |      file type; otherwise a non-Relocatable output type forces
 | 
|---|
| 609 |      assigning addresses to Common symbols.  Using `--no-define-common'
 | 
|---|
| 610 |      allows Common symbols that are referenced from a shared library to
 | 
|---|
| 611 |      be assigned addresses only in the main program.  This eliminates
 | 
|---|
| 612 |      the unused duplicate space in the shared library, and also
 | 
|---|
| 613 |      prevents any possible confusion over resolving to the wrong
 | 
|---|
| 614 |      duplicate when there are many dynamic modules with specialized
 | 
|---|
| 615 |      search paths for runtime symbol resolution.
 | 
|---|
| 616 | 
 | 
|---|
| 617 | `--defsym SYMBOL=EXPRESSION'
 | 
|---|
| 618 |      Create a global symbol in the output file, containing the absolute
 | 
|---|
| 619 |      address given by EXPRESSION.  You may use this option as many
 | 
|---|
| 620 |      times as necessary to define multiple symbols in the command line.
 | 
|---|
| 621 |      A limited form of arithmetic is supported for the EXPRESSION in
 | 
|---|
| 622 |      this context: you may give a hexadecimal constant or the name of
 | 
|---|
| 623 |      an existing symbol, or use `+' and `-' to add or subtract
 | 
|---|
| 624 |      hexadecimal constants or symbols.  If you need more elaborate
 | 
|---|
| 625 |      expressions, consider using the linker command language from a
 | 
|---|
| 626 |      script (*note Assignment: Symbol Definitions: Assignments.).
 | 
|---|
| 627 |      _Note:_ there should be no white space between SYMBOL, the equals
 | 
|---|
| 628 |      sign ("<=>"), and EXPRESSION.
 | 
|---|
| 629 | 
 | 
|---|
| 630 | `--demangle[=STYLE]'
 | 
|---|
| 631 | `--no-demangle'
 | 
|---|
| 632 |      These options control whether to demangle symbol names in error
 | 
|---|
| 633 |      messages and other output.  When the linker is told to demangle,
 | 
|---|
| 634 |      it tries to present symbol names in a readable fashion: it strips
 | 
|---|
| 635 |      leading underscores if they are used by the object file format,
 | 
|---|
| 636 |      and converts C++ mangled symbol names into user readable names.
 | 
|---|
| 637 |      Different compilers have different mangling styles.  The optional
 | 
|---|
| 638 |      demangling style argument can be used to choose an appropriate
 | 
|---|
| 639 |      demangling style for your compiler.  The linker will demangle by
 | 
|---|
| 640 |      default unless the environment variable `COLLECT_NO_DEMANGLE' is
 | 
|---|
| 641 |      set.  These options may be used to override the default.
 | 
|---|
| 642 | 
 | 
|---|
| 643 | `--dynamic-linker FILE'
 | 
|---|
| 644 |      Set the name of the dynamic linker.  This is only meaningful when
 | 
|---|
| 645 |      generating dynamically linked ELF executables.  The default dynamic
 | 
|---|
| 646 |      linker is normally correct; don't use this unless you know what
 | 
|---|
| 647 |      you are doing.
 | 
|---|
| 648 | 
 | 
|---|
| 649 | `--embedded-relocs'
 | 
|---|
| 650 |      This option is only meaningful when linking MIPS embedded PIC code,
 | 
|---|
| 651 |      generated by the -membedded-pic option to the GNU compiler and
 | 
|---|
| 652 |      assembler.  It causes the linker to create a table which may be
 | 
|---|
| 653 |      used at runtime to relocate any data which was statically
 | 
|---|
| 654 |      initialized to pointer values.  See the code in testsuite/ld-empic
 | 
|---|
| 655 |      for details.
 | 
|---|
| 656 | 
 | 
|---|
| 657 | `--fatal-warnings'
 | 
|---|
| 658 |      Treat all warnings as errors.
 | 
|---|
| 659 | 
 | 
|---|
| 660 | `--force-exe-suffix'
 | 
|---|
| 661 |      Make sure that an output file has a .exe suffix.
 | 
|---|
| 662 | 
 | 
|---|
| 663 |      If a successfully built fully linked output file does not have a
 | 
|---|
| 664 |      `.exe' or `.dll' suffix, this option forces the linker to copy the
 | 
|---|
| 665 |      output file to one of the same name with a `.exe' suffix. This
 | 
|---|
| 666 |      option is useful when using unmodified Unix makefiles on a
 | 
|---|
| 667 |      Microsoft Windows host, since some versions of Windows won't run
 | 
|---|
| 668 |      an image unless it ends in a `.exe' suffix.
 | 
|---|
| 669 | 
 | 
|---|
| 670 | `--no-gc-sections'
 | 
|---|
| 671 | `--gc-sections'
 | 
|---|
| 672 |      Enable garbage collection of unused input sections.  It is ignored
 | 
|---|
| 673 |      on targets that do not support this option.  This option is not
 | 
|---|
| 674 |      compatible with `-r', nor should it be used with dynamic linking.
 | 
|---|
| 675 |      The default behaviour (of not performing this garbage collection)
 | 
|---|
| 676 |      can be restored by specifying `--no-gc-sections' on the command
 | 
|---|
| 677 |      line.
 | 
|---|
| 678 | 
 | 
|---|
| 679 | `--help'
 | 
|---|
| 680 |      Print a summary of the command-line options on the standard output
 | 
|---|
| 681 |      and exit.
 | 
|---|
| 682 | 
 | 
|---|
| 683 | `--target-help'
 | 
|---|
| 684 |      Print a summary of all target specific options on the standard
 | 
|---|
| 685 |      output and exit.
 | 
|---|
| 686 | 
 | 
|---|
| 687 | `-Map MAPFILE'
 | 
|---|
| 688 |      Print a link map to the file MAPFILE.  See the description of the
 | 
|---|
| 689 |      `-M' option, above.
 | 
|---|
| 690 | 
 | 
|---|
| 691 | `--no-keep-memory'
 | 
|---|
| 692 |      `ld' normally optimizes for speed over memory usage by caching the
 | 
|---|
| 693 |      symbol tables of input files in memory.  This option tells `ld' to
 | 
|---|
| 694 |      instead optimize for memory usage, by rereading the symbol tables
 | 
|---|
| 695 |      as necessary.  This may be required if `ld' runs out of memory
 | 
|---|
| 696 |      space while linking a large executable.
 | 
|---|
| 697 | 
 | 
|---|
| 698 | `--no-undefined'
 | 
|---|
| 699 | `-z defs'
 | 
|---|
| 700 |      Normally when creating a non-symbolic shared library, undefined
 | 
|---|
| 701 |      symbols are allowed and left to be resolved by the runtime loader.
 | 
|---|
| 702 |      This option disallows such undefined symbols if they come from
 | 
|---|
| 703 |      regular object files.  The switch `--no-allow-shlib-undefined'
 | 
|---|
| 704 |      controls the behaviour for shared objects being linked into the
 | 
|---|
| 705 |      shared library.
 | 
|---|
| 706 | 
 | 
|---|
| 707 | `--allow-multiple-definition'
 | 
|---|
| 708 | `-z muldefs'
 | 
|---|
| 709 |      Normally when a symbol is defined multiple times, the linker will
 | 
|---|
| 710 |      report a fatal error. These options allow multiple definitions and
 | 
|---|
| 711 |      the first definition will be used.
 | 
|---|
| 712 | 
 | 
|---|
| 713 | `--allow-shlib-undefined'
 | 
|---|
| 714 | `--no-allow-shlib-undefined'
 | 
|---|
| 715 |      Allow (the default) or disallow undefined symbols in shared
 | 
|---|
| 716 |      objects.  The setting of this switch overrides `--no-undefined'
 | 
|---|
| 717 |      where shared objects are concerned.  Thus if `--no-undefined' is
 | 
|---|
| 718 |      set but `--no-allow-shlib-undefined' is not, the net result will be
 | 
|---|
| 719 |      that undefined symbols in regular object files will trigger an
 | 
|---|
| 720 |      error, but undefined symbols in shared objects will be ignored.
 | 
|---|
| 721 | 
 | 
|---|
| 722 |      The reason that `--allow-shlib-undefined' is the default is that
 | 
|---|
| 723 |      the shared object being specified at link time may not be the same
 | 
|---|
| 724 |      one that is available at load time, so the symbols might actually
 | 
|---|
| 725 |      be resolvable at load time.  Plus there are some systems, (eg
 | 
|---|
| 726 |      BeOS) where undefined symbols in shared libraries is normal since
 | 
|---|
| 727 |      the kernel patches them at load time to select which function is
 | 
|---|
| 728 |      most appropriate for the current architecture. eg. to dynamically
 | 
|---|
| 729 |      select an appropriate memset function.  Apparently it is also
 | 
|---|
| 730 |      normal for HPPA shared libraries to have undefined symbols.
 | 
|---|
| 731 | 
 | 
|---|
| 732 | `--no-undefined-version'
 | 
|---|
| 733 |      Normally when a symbol has an undefined version, the linker will
 | 
|---|
| 734 |      ignore it. This option disallows symbols with undefined version
 | 
|---|
| 735 |      and a fatal error will be issued instead.
 | 
|---|
| 736 | 
 | 
|---|
| 737 | `--no-warn-mismatch'
 | 
|---|
| 738 |      Normally `ld' will give an error if you try to link together input
 | 
|---|
| 739 |      files that are mismatched for some reason, perhaps because they
 | 
|---|
| 740 |      have been compiled for different processors or for different
 | 
|---|
| 741 |      endiannesses.  This option tells `ld' that it should silently
 | 
|---|
| 742 |      permit such possible errors.  This option should only be used with
 | 
|---|
| 743 |      care, in cases when you have taken some special action that
 | 
|---|
| 744 |      ensures that the linker errors are inappropriate.
 | 
|---|
| 745 | 
 | 
|---|
| 746 | `--no-whole-archive'
 | 
|---|
| 747 |      Turn off the effect of the `--whole-archive' option for subsequent
 | 
|---|
| 748 |      archive files.
 | 
|---|
| 749 | 
 | 
|---|
| 750 | `--noinhibit-exec'
 | 
|---|
| 751 |      Retain the executable output file whenever it is still usable.
 | 
|---|
| 752 |      Normally, the linker will not produce an output file if it
 | 
|---|
| 753 |      encounters errors during the link process; it exits without
 | 
|---|
| 754 |      writing an output file when it issues any error whatsoever.
 | 
|---|
| 755 | 
 | 
|---|
| 756 | `-nostdlib'
 | 
|---|
| 757 |      Only search library directories explicitly specified on the
 | 
|---|
| 758 |      command line.  Library directories specified in linker scripts
 | 
|---|
| 759 |      (including linker scripts specified on the command line) are
 | 
|---|
| 760 |      ignored.
 | 
|---|
| 761 | 
 | 
|---|
| 762 | `--oformat OUTPUT-FORMAT'
 | 
|---|
| 763 |      `ld' may be configured to support more than one kind of object
 | 
|---|
| 764 |      file.  If your `ld' is configured this way, you can use the
 | 
|---|
| 765 |      `--oformat' option to specify the binary format for the output
 | 
|---|
| 766 |      object file.  Even when `ld' is configured to support alternative
 | 
|---|
| 767 |      object formats, you don't usually need to specify this, as `ld'
 | 
|---|
| 768 |      should be configured to produce as a default output format the most
 | 
|---|
| 769 |      usual format on each machine.  OUTPUT-FORMAT is a text string, the
 | 
|---|
| 770 |      name of a particular format supported by the BFD libraries.  (You
 | 
|---|
| 771 |      can list the available binary formats with `objdump -i'.)  The
 | 
|---|
| 772 |      script command `OUTPUT_FORMAT' can also specify the output format,
 | 
|---|
| 773 |      but this option overrides it.  *Note BFD::.
 | 
|---|
| 774 | 
 | 
|---|
| 775 | `-qmagic'
 | 
|---|
| 776 |      This option is ignored for Linux compatibility.
 | 
|---|
| 777 | 
 | 
|---|
| 778 | `-Qy'
 | 
|---|
| 779 |      This option is ignored for SVR4 compatibility.
 | 
|---|
| 780 | 
 | 
|---|
| 781 | `--relax'
 | 
|---|
| 782 |      An option with machine dependent effects.  This option is only
 | 
|---|
| 783 |      supported on a few targets.  *Note `ld' and the H8/300: H8/300.
 | 
|---|
| 784 |      *Note `ld' and the Intel 960 family: i960.  *Note `ld' and Xtensa
 | 
|---|
| 785 |      Processors: Xtensa.
 | 
|---|
| 786 | 
 | 
|---|
| 787 |      On some platforms, the `--relax' option performs global
 | 
|---|
| 788 |      optimizations that become possible when the linker resolves
 | 
|---|
| 789 |      addressing in the program, such as relaxing address modes and
 | 
|---|
| 790 |      synthesizing new instructions in the output object file.
 | 
|---|
| 791 | 
 | 
|---|
| 792 |      On some platforms these link time global optimizations may make
 | 
|---|
| 793 |      symbolic debugging of the resulting executable impossible.  This
 | 
|---|
| 794 |      is known to be the case for the Matsushita MN10200 and MN10300
 | 
|---|
| 795 |      family of processors.
 | 
|---|
| 796 | 
 | 
|---|
| 797 |      On platforms where this is not supported, `--relax' is accepted,
 | 
|---|
| 798 |      but ignored.
 | 
|---|
| 799 | 
 | 
|---|
| 800 | `--retain-symbols-file FILENAME'
 | 
|---|
| 801 |      Retain _only_ the symbols listed in the file FILENAME, discarding
 | 
|---|
| 802 |      all others.  FILENAME is simply a flat file, with one symbol name
 | 
|---|
| 803 |      per line.  This option is especially useful in environments (such
 | 
|---|
| 804 |      as VxWorks) where a large global symbol table is accumulated
 | 
|---|
| 805 |      gradually, to conserve run-time memory.
 | 
|---|
| 806 | 
 | 
|---|
| 807 |      `--retain-symbols-file' does _not_ discard undefined symbols, or
 | 
|---|
| 808 |      symbols needed for relocations.
 | 
|---|
| 809 | 
 | 
|---|
| 810 |      You may only specify `--retain-symbols-file' once in the command
 | 
|---|
| 811 |      line.  It overrides `-s' and `-S'.
 | 
|---|
| 812 | 
 | 
|---|
| 813 | `-rpath DIR'
 | 
|---|
| 814 |      Add a directory to the runtime library search path.  This is used
 | 
|---|
| 815 |      when linking an ELF executable with shared objects.  All `-rpath'
 | 
|---|
| 816 |      arguments are concatenated and passed to the runtime linker, which
 | 
|---|
| 817 |      uses them to locate shared objects at runtime.  The `-rpath'
 | 
|---|
| 818 |      option is also used when locating shared objects which are needed
 | 
|---|
| 819 |      by shared objects explicitly included in the link; see the
 | 
|---|
| 820 |      description of the `-rpath-link' option.  If `-rpath' is not used
 | 
|---|
| 821 |      when linking an ELF executable, the contents of the environment
 | 
|---|
| 822 |      variable `LD_RUN_PATH' will be used if it is defined.
 | 
|---|
| 823 | 
 | 
|---|
| 824 |      The `-rpath' option may also be used on SunOS.  By default, on
 | 
|---|
| 825 |      SunOS, the linker will form a runtime search patch out of all the
 | 
|---|
| 826 |      `-L' options it is given.  If a `-rpath' option is used, the
 | 
|---|
| 827 |      runtime search path will be formed exclusively using the `-rpath'
 | 
|---|
| 828 |      options, ignoring the `-L' options.  This can be useful when using
 | 
|---|
| 829 |      gcc, which adds many `-L' options which may be on NFS mounted
 | 
|---|
| 830 |      filesystems.
 | 
|---|
| 831 | 
 | 
|---|
| 832 |      For compatibility with other ELF linkers, if the `-R' option is
 | 
|---|
| 833 |      followed by a directory name, rather than a file name, it is
 | 
|---|
| 834 |      treated as the `-rpath' option.
 | 
|---|
| 835 | 
 | 
|---|
| 836 | `-rpath-link DIR'
 | 
|---|
| 837 |      When using ELF or SunOS, one shared library may require another.
 | 
|---|
| 838 |      This happens when an `ld -shared' link includes a shared library
 | 
|---|
| 839 |      as one of the input files.
 | 
|---|
| 840 | 
 | 
|---|
| 841 |      When the linker encounters such a dependency when doing a
 | 
|---|
| 842 |      non-shared, non-relocatable link, it will automatically try to
 | 
|---|
| 843 |      locate the required shared library and include it in the link, if
 | 
|---|
| 844 |      it is not included explicitly.  In such a case, the `-rpath-link'
 | 
|---|
| 845 |      option specifies the first set of directories to search.  The
 | 
|---|
| 846 |      `-rpath-link' option may specify a sequence of directory names
 | 
|---|
| 847 |      either by specifying a list of names separated by colons, or by
 | 
|---|
| 848 |      appearing multiple times.
 | 
|---|
| 849 | 
 | 
|---|
| 850 |      This option should be used with caution as it overrides the search
 | 
|---|
| 851 |      path that may have been hard compiled into a shared library. In
 | 
|---|
| 852 |      such a case it is possible to use unintentionally a different
 | 
|---|
| 853 |      search path than the runtime linker would do.
 | 
|---|
| 854 | 
 | 
|---|
| 855 |      The linker uses the following search paths to locate required
 | 
|---|
| 856 |      shared libraries.
 | 
|---|
| 857 |        1. Any directories specified by `-rpath-link' options.
 | 
|---|
| 858 | 
 | 
|---|
| 859 |        2. Any directories specified by `-rpath' options.  The difference
 | 
|---|
| 860 |           between `-rpath' and `-rpath-link' is that directories
 | 
|---|
| 861 |           specified by `-rpath' options are included in the executable
 | 
|---|
| 862 |           and used at runtime, whereas the `-rpath-link' option is only
 | 
|---|
| 863 |           effective at link time. It is for the native linker only.
 | 
|---|
| 864 | 
 | 
|---|
| 865 |        3. On an ELF system, if the `-rpath' and `rpath-link' options
 | 
|---|
| 866 |           were not used, search the contents of the environment variable
 | 
|---|
| 867 |           `LD_RUN_PATH'. It is for the native linker only.
 | 
|---|
| 868 | 
 | 
|---|
| 869 |        4. On SunOS, if the `-rpath' option was not used, search any
 | 
|---|
| 870 |           directories specified using `-L' options.
 | 
|---|
| 871 | 
 | 
|---|
| 872 |        5. For a native linker, the contents of the environment variable
 | 
|---|
| 873 |           `LD_LIBRARY_PATH'.
 | 
|---|
| 874 | 
 | 
|---|
| 875 |        6. For a native ELF linker, the directories in `DT_RUNPATH' or
 | 
|---|
| 876 |           `DT_RPATH' of a shared library are searched for shared
 | 
|---|
| 877 |           libraries needed by it. The `DT_RPATH' entries are ignored if
 | 
|---|
| 878 |           `DT_RUNPATH' entries exist.
 | 
|---|
| 879 | 
 | 
|---|
| 880 |        7. The default directories, normally `/lib' and `/usr/lib'.
 | 
|---|
| 881 | 
 | 
|---|
| 882 |        8. For a native linker on an ELF system, if the file
 | 
|---|
| 883 |           `/etc/ld.so.conf' exists, the list of directories found in
 | 
|---|
| 884 |           that file.
 | 
|---|
| 885 | 
 | 
|---|
| 886 |      If the required shared library is not found, the linker will issue
 | 
|---|
| 887 |      a warning and continue with the link.
 | 
|---|
| 888 | 
 | 
|---|
| 889 | `-shared'
 | 
|---|
| 890 | `-Bshareable'
 | 
|---|
| 891 |      Create a shared library.  This is currently only supported on ELF,
 | 
|---|
| 892 |      XCOFF and SunOS platforms.  On SunOS, the linker will
 | 
|---|
| 893 |      automatically create a shared library if the `-e' option is not
 | 
|---|
| 894 |      used and there are undefined symbols in the link.
 | 
|---|
| 895 | 
 | 
|---|
| 896 | `--sort-common'
 | 
|---|
| 897 |      This option tells `ld' to sort the common symbols by size when it
 | 
|---|
| 898 |      places them in the appropriate output sections.  First come all
 | 
|---|
| 899 |      the one byte symbols, then all the two byte, then all the four
 | 
|---|
| 900 |      byte, and then everything else.  This is to prevent gaps between
 | 
|---|
| 901 |      symbols due to alignment constraints.
 | 
|---|
| 902 | 
 | 
|---|
| 903 | `--split-by-file [SIZE]'
 | 
|---|
| 904 |      Similar to `--split-by-reloc' but creates a new output section for
 | 
|---|
| 905 |      each input file when SIZE is reached.  SIZE defaults to a size of
 | 
|---|
| 906 |      1 if not given.
 | 
|---|
| 907 | 
 | 
|---|
| 908 | `--split-by-reloc [COUNT]'
 | 
|---|
| 909 |      Tries to creates extra sections in the output file so that no
 | 
|---|
| 910 |      single output section in the file contains more than COUNT
 | 
|---|
| 911 |      relocations.  This is useful when generating huge relocatable
 | 
|---|
| 912 |      files for downloading into certain real time kernels with the COFF
 | 
|---|
| 913 |      object file format; since COFF cannot represent more than 65535
 | 
|---|
| 914 |      relocations in a single section.  Note that this will fail to work
 | 
|---|
| 915 |      with object file formats which do not support arbitrary sections.
 | 
|---|
| 916 |      The linker will not split up individual input sections for
 | 
|---|
| 917 |      redistribution, so if a single input section contains more than
 | 
|---|
| 918 |      COUNT relocations one output section will contain that many
 | 
|---|
| 919 |      relocations.  COUNT defaults to a value of 32768.
 | 
|---|
| 920 | 
 | 
|---|
| 921 | `--stats'
 | 
|---|
| 922 |      Compute and display statistics about the operation of the linker,
 | 
|---|
| 923 |      such as execution time and memory usage.
 | 
|---|
| 924 | 
 | 
|---|
| 925 | `--traditional-format'
 | 
|---|
| 926 |      For some targets, the output of `ld' is different in some ways from
 | 
|---|
| 927 |      the output of some existing linker.  This switch requests `ld' to
 | 
|---|
| 928 |      use the traditional format instead.
 | 
|---|
| 929 | 
 | 
|---|
| 930 |      For example, on SunOS, `ld' combines duplicate entries in the
 | 
|---|
| 931 |      symbol string table.  This can reduce the size of an output file
 | 
|---|
| 932 |      with full debugging information by over 30 percent.
 | 
|---|
| 933 |      Unfortunately, the SunOS `dbx' program can not read the resulting
 | 
|---|
| 934 |      program (`gdb' has no trouble).  The `--traditional-format' switch
 | 
|---|
| 935 |      tells `ld' to not combine duplicate entries.
 | 
|---|
| 936 | 
 | 
|---|
| 937 | `--section-start SECTIONNAME=ORG'
 | 
|---|
| 938 |      Locate a section in the output file at the absolute address given
 | 
|---|
| 939 |      by ORG.  You may use this option as many times as necessary to
 | 
|---|
| 940 |      locate multiple sections in the command line.  ORG must be a
 | 
|---|
| 941 |      single hexadecimal integer; for compatibility with other linkers,
 | 
|---|
| 942 |      you may omit the leading `0x' usually associated with hexadecimal
 | 
|---|
| 943 |      values.  _Note:_ there should be no white space between
 | 
|---|
| 944 |      SECTIONNAME, the equals sign ("<=>"), and ORG.
 | 
|---|
| 945 | 
 | 
|---|
| 946 | `-Tbss ORG'
 | 
|---|
| 947 | `-Tdata ORG'
 | 
|---|
| 948 | `-Ttext ORG'
 | 
|---|
| 949 |      Same as -section-start, with `.bss', `.data' or `.text' as the
 | 
|---|
| 950 |      SECTIONNAME.
 | 
|---|
| 951 | 
 | 
|---|
| 952 | `--dll-verbose'
 | 
|---|
| 953 | `--verbose'
 | 
|---|
| 954 |      Display the version number for `ld' and list the linker emulations
 | 
|---|
| 955 |      supported.  Display which input files can and cannot be opened.
 | 
|---|
| 956 |      Display the linker script being used by the linker.
 | 
|---|
| 957 | 
 | 
|---|
| 958 | `--version-script=VERSION-SCRIPTFILE'
 | 
|---|
| 959 |      Specify the name of a version script to the linker.  This is
 | 
|---|
| 960 |      typically used when creating shared libraries to specify
 | 
|---|
| 961 |      additional information about the version hierarchy for the library
 | 
|---|
| 962 |      being created.  This option is only meaningful on ELF platforms
 | 
|---|
| 963 |      which support shared libraries.  *Note VERSION::.
 | 
|---|
| 964 | 
 | 
|---|
| 965 | `--warn-common'
 | 
|---|
| 966 |      Warn when a common symbol is combined with another common symbol
 | 
|---|
| 967 |      or with a symbol definition.  Unix linkers allow this somewhat
 | 
|---|
| 968 |      sloppy practice, but linkers on some other operating systems do
 | 
|---|
| 969 |      not.  This option allows you to find potential problems from
 | 
|---|
| 970 |      combining global symbols.  Unfortunately, some C libraries use
 | 
|---|
| 971 |      this practice, so you may get some warnings about symbols in the
 | 
|---|
| 972 |      libraries as well as in your programs.
 | 
|---|
| 973 | 
 | 
|---|
| 974 |      There are three kinds of global symbols, illustrated here by C
 | 
|---|
| 975 |      examples:
 | 
|---|
| 976 | 
 | 
|---|
| 977 |     `int i = 1;'
 | 
|---|
| 978 |           A definition, which goes in the initialized data section of
 | 
|---|
| 979 |           the output file.
 | 
|---|
| 980 | 
 | 
|---|
| 981 |     `extern int i;'
 | 
|---|
| 982 |           An undefined reference, which does not allocate space.  There
 | 
|---|
| 983 |           must be either a definition or a common symbol for the
 | 
|---|
| 984 |           variable somewhere.
 | 
|---|
| 985 | 
 | 
|---|
| 986 |     `int i;'
 | 
|---|
| 987 |           A common symbol.  If there are only (one or more) common
 | 
|---|
| 988 |           symbols for a variable, it goes in the uninitialized data
 | 
|---|
| 989 |           area of the output file.  The linker merges multiple common
 | 
|---|
| 990 |           symbols for the same variable into a single symbol.  If they
 | 
|---|
| 991 |           are of different sizes, it picks the largest size.  The
 | 
|---|
| 992 |           linker turns a common symbol into a declaration, if there is
 | 
|---|
| 993 |           a definition of the same variable.
 | 
|---|
| 994 | 
 | 
|---|
| 995 |      The `--warn-common' option can produce five kinds of warnings.
 | 
|---|
| 996 |      Each warning consists of a pair of lines: the first describes the
 | 
|---|
| 997 |      symbol just encountered, and the second describes the previous
 | 
|---|
| 998 |      symbol encountered with the same name.  One or both of the two
 | 
|---|
| 999 |      symbols will be a common symbol.
 | 
|---|
| 1000 | 
 | 
|---|
| 1001 |        1. Turning a common symbol into a reference, because there is
 | 
|---|
| 1002 |           already a definition for the symbol.
 | 
|---|
| 1003 |                FILE(SECTION): warning: common of `SYMBOL'
 | 
|---|
| 1004 |                   overridden by definition
 | 
|---|
| 1005 |                FILE(SECTION): warning: defined here
 | 
|---|
| 1006 | 
 | 
|---|
| 1007 |        2. Turning a common symbol into a reference, because a later
 | 
|---|
| 1008 |           definition for the symbol is encountered.  This is the same
 | 
|---|
| 1009 |           as the previous case, except that the symbols are encountered
 | 
|---|
| 1010 |           in a different order.
 | 
|---|
| 1011 |                FILE(SECTION): warning: definition of `SYMBOL'
 | 
|---|
| 1012 |                   overriding common
 | 
|---|
| 1013 |                FILE(SECTION): warning: common is here
 | 
|---|
| 1014 | 
 | 
|---|
| 1015 |        3. Merging a common symbol with a previous same-sized common
 | 
|---|
| 1016 |           symbol.
 | 
|---|
| 1017 |                FILE(SECTION): warning: multiple common
 | 
|---|
| 1018 |                   of `SYMBOL'
 | 
|---|
| 1019 |                FILE(SECTION): warning: previous common is here
 | 
|---|
| 1020 | 
 | 
|---|
| 1021 |        4. Merging a common symbol with a previous larger common symbol.
 | 
|---|
| 1022 |                FILE(SECTION): warning: common of `SYMBOL'
 | 
|---|
| 1023 |                   overridden by larger common
 | 
|---|
| 1024 |                FILE(SECTION): warning: larger common is here
 | 
|---|
| 1025 | 
 | 
|---|
| 1026 |        5. Merging a common symbol with a previous smaller common
 | 
|---|
| 1027 |           symbol.  This is the same as the previous case, except that
 | 
|---|
| 1028 |           the symbols are encountered in a different order.
 | 
|---|
| 1029 |                FILE(SECTION): warning: common of `SYMBOL'
 | 
|---|
| 1030 |                   overriding smaller common
 | 
|---|
| 1031 |                FILE(SECTION): warning: smaller common is here
 | 
|---|
| 1032 | 
 | 
|---|
| 1033 | `--warn-constructors'
 | 
|---|
| 1034 |      Warn if any global constructors are used.  This is only useful for
 | 
|---|
| 1035 |      a few object file formats.  For formats like COFF or ELF, the
 | 
|---|
| 1036 |      linker can not detect the use of global constructors.
 | 
|---|
| 1037 | 
 | 
|---|
| 1038 | `--warn-multiple-gp'
 | 
|---|
| 1039 |      Warn if multiple global pointer values are required in the output
 | 
|---|
| 1040 |      file.  This is only meaningful for certain processors, such as the
 | 
|---|
| 1041 |      Alpha.  Specifically, some processors put large-valued constants
 | 
|---|
| 1042 |      in a special section.  A special register (the global pointer)
 | 
|---|
| 1043 |      points into the middle of this section, so that constants can be
 | 
|---|
| 1044 |      loaded efficiently via a base-register relative addressing mode.
 | 
|---|
| 1045 |      Since the offset in base-register relative mode is fixed and
 | 
|---|
| 1046 |      relatively small (e.g., 16 bits), this limits the maximum size of
 | 
|---|
| 1047 |      the constant pool.  Thus, in large programs, it is often necessary
 | 
|---|
| 1048 |      to use multiple global pointer values in order to be able to
 | 
|---|
| 1049 |      address all possible constants.  This option causes a warning to
 | 
|---|
| 1050 |      be issued whenever this case occurs.
 | 
|---|
| 1051 | 
 | 
|---|
| 1052 | `--warn-once'
 | 
|---|
| 1053 |      Only warn once for each undefined symbol, rather than once per
 | 
|---|
| 1054 |      module which refers to it.
 | 
|---|
| 1055 | 
 | 
|---|
| 1056 | `--warn-section-align'
 | 
|---|
| 1057 |      Warn if the address of an output section is changed because of
 | 
|---|
| 1058 |      alignment.  Typically, the alignment will be set by an input
 | 
|---|
| 1059 |      section.  The address will only be changed if it not explicitly
 | 
|---|
| 1060 |      specified; that is, if the `SECTIONS' command does not specify a
 | 
|---|
| 1061 |      start address for the section (*note SECTIONS::).
 | 
|---|
| 1062 | 
 | 
|---|
| 1063 | `--whole-archive'
 | 
|---|
| 1064 |      For each archive mentioned on the command line after the
 | 
|---|
| 1065 |      `--whole-archive' option, include every object file in the archive
 | 
|---|
| 1066 |      in the link, rather than searching the archive for the required
 | 
|---|
| 1067 |      object files.  This is normally used to turn an archive file into
 | 
|---|
| 1068 |      a shared library, forcing every object to be included in the
 | 
|---|
| 1069 |      resulting shared library.  This option may be used more than once.
 | 
|---|
| 1070 | 
 | 
|---|
| 1071 |      Two notes when using this option from gcc: First, gcc doesn't know
 | 
|---|
| 1072 |      about this option, so you have to use `-Wl,-whole-archive'.
 | 
|---|
| 1073 |      Second, don't forget to use `-Wl,-no-whole-archive' after your
 | 
|---|
| 1074 |      list of archives, because gcc will add its own list of archives to
 | 
|---|
| 1075 |      your link and you may not want this flag to affect those as well.
 | 
|---|
| 1076 | 
 | 
|---|
| 1077 | `--wrap SYMBOL'
 | 
|---|
| 1078 |      Use a wrapper function for SYMBOL.  Any undefined reference to
 | 
|---|
| 1079 |      SYMBOL will be resolved to `__wrap_SYMBOL'.  Any undefined
 | 
|---|
| 1080 |      reference to `__real_SYMBOL' will be resolved to SYMBOL.
 | 
|---|
| 1081 | 
 | 
|---|
| 1082 |      This can be used to provide a wrapper for a system function.  The
 | 
|---|
| 1083 |      wrapper function should be called `__wrap_SYMBOL'.  If it wishes
 | 
|---|
| 1084 |      to call the system function, it should call `__real_SYMBOL'.
 | 
|---|
| 1085 | 
 | 
|---|
| 1086 |      Here is a trivial example:
 | 
|---|
| 1087 | 
 | 
|---|
| 1088 |           void *
 | 
|---|
| 1089 |           __wrap_malloc (int c)
 | 
|---|
| 1090 |           {
 | 
|---|
| 1091 |             printf ("malloc called with %ld\n", c);
 | 
|---|
| 1092 |             return __real_malloc (c);
 | 
|---|
| 1093 |           }
 | 
|---|
| 1094 | 
 | 
|---|
| 1095 |      If you link other code with this file using `--wrap malloc', then
 | 
|---|
| 1096 |      all calls to `malloc' will call the function `__wrap_malloc'
 | 
|---|
| 1097 |      instead.  The call to `__real_malloc' in `__wrap_malloc' will call
 | 
|---|
| 1098 |      the real `malloc' function.
 | 
|---|
| 1099 | 
 | 
|---|
| 1100 |      You may wish to provide a `__real_malloc' function as well, so that
 | 
|---|
| 1101 |      links without the `--wrap' option will succeed.  If you do this,
 | 
|---|
| 1102 |      you should not put the definition of `__real_malloc' in the same
 | 
|---|
| 1103 |      file as `__wrap_malloc'; if you do, the assembler may resolve the
 | 
|---|
| 1104 |      call before the linker has a chance to wrap it to `malloc'.
 | 
|---|
| 1105 | 
 | 
|---|
| 1106 | `--enable-new-dtags'
 | 
|---|
| 1107 | `--disable-new-dtags'
 | 
|---|
| 1108 |      This linker can create the new dynamic tags in ELF. But the older
 | 
|---|
| 1109 |      ELF systems may not understand them. If you specify
 | 
|---|
| 1110 |      `--enable-new-dtags', the dynamic tags will be created as needed.
 | 
|---|
| 1111 |      If you specify `--disable-new-dtags', no new dynamic tags will be
 | 
|---|
| 1112 |      created. By default, the new dynamic tags are not created. Note
 | 
|---|
| 1113 |      that those options are only available for ELF systems.
 | 
|---|
| 1114 | 
 | 
|---|
| 1115 | Options Specific to i386 PE Targets
 | 
|---|
| 1116 | -----------------------------------
 | 
|---|
| 1117 | 
 | 
|---|
| 1118 |    The i386 PE linker supports the `-shared' option, which causes the
 | 
|---|
| 1119 | output to be a dynamically linked library (DLL) instead of a normal
 | 
|---|
| 1120 | executable.  You should name the output `*.dll' when you use this
 | 
|---|
| 1121 | option.  In addition, the linker fully supports the standard `*.def'
 | 
|---|
| 1122 | files, which may be specified on the linker command line like an object
 | 
|---|
| 1123 | file (in fact, it should precede archives it exports symbols from, to
 | 
|---|
| 1124 | ensure that they get linked in, just like a normal object file).
 | 
|---|
| 1125 | 
 | 
|---|
| 1126 |    In addition to the options common to all targets, the i386 PE linker
 | 
|---|
| 1127 | support additional command line options that are specific to the i386
 | 
|---|
| 1128 | PE target.  Options that take values may be separated from their values
 | 
|---|
| 1129 | by either a space or an equals sign.
 | 
|---|
| 1130 | 
 | 
|---|
| 1131 | `--add-stdcall-alias'
 | 
|---|
| 1132 |      If given, symbols with a stdcall suffix (@NN) will be exported
 | 
|---|
| 1133 |      as-is and also with the suffix stripped.  [This option is specific
 | 
|---|
| 1134 |      to the i386 PE targeted port of the linker]
 | 
|---|
| 1135 | 
 | 
|---|
| 1136 | `--base-file FILE'
 | 
|---|
| 1137 |      Use FILE as the name of a file in which to save the base addresses
 | 
|---|
| 1138 |      of all the relocations needed for generating DLLs with `dlltool'.
 | 
|---|
| 1139 |      [This is an i386 PE specific option]
 | 
|---|
| 1140 | 
 | 
|---|
| 1141 | `--dll'
 | 
|---|
| 1142 |      Create a DLL instead of a regular executable.  You may also use
 | 
|---|
| 1143 |      `-shared' or specify a `LIBRARY' in a given `.def' file.  [This
 | 
|---|
| 1144 |      option is specific to the i386 PE targeted port of the linker]
 | 
|---|
| 1145 | 
 | 
|---|
| 1146 | `--enable-stdcall-fixup'
 | 
|---|
| 1147 | `--disable-stdcall-fixup'
 | 
|---|
| 1148 |      If the link finds a symbol that it cannot resolve, it will attempt
 | 
|---|
| 1149 |      to do "fuzzy linking" by looking for another defined symbol that
 | 
|---|
| 1150 |      differs only in the format of the symbol name (cdecl vs stdcall)
 | 
|---|
| 1151 |      and will resolve that symbol by linking to the match.  For
 | 
|---|
| 1152 |      example, the undefined symbol `_foo' might be linked to the
 | 
|---|
| 1153 |      function `_foo@12', or the undefined symbol `_bar@16' might be
 | 
|---|
| 1154 |      linked to the function `_bar'.  When the linker does this, it
 | 
|---|
| 1155 |      prints a warning, since it normally should have failed to link,
 | 
|---|
| 1156 |      but sometimes import libraries generated from third-party dlls may
 | 
|---|
| 1157 |      need this feature to be usable.  If you specify
 | 
|---|
| 1158 |      `--enable-stdcall-fixup', this feature is fully enabled and
 | 
|---|
| 1159 |      warnings are not printed.  If you specify
 | 
|---|
| 1160 |      `--disable-stdcall-fixup', this feature is disabled and such
 | 
|---|
| 1161 |      mismatches are considered to be errors.  [This option is specific
 | 
|---|
| 1162 |      to the i386 PE targeted port of the linker]
 | 
|---|
| 1163 | 
 | 
|---|
| 1164 | `--export-all-symbols'
 | 
|---|
| 1165 |      If given, all global symbols in the objects used to build a DLL
 | 
|---|
| 1166 |      will be exported by the DLL.  Note that this is the default if
 | 
|---|
| 1167 |      there otherwise wouldn't be any exported symbols.  When symbols are
 | 
|---|
| 1168 |      explicitly exported via DEF files or implicitly exported via
 | 
|---|
| 1169 |      function attributes, the default is to not export anything else
 | 
|---|
| 1170 |      unless this option is given.  Note that the symbols `DllMain@12',
 | 
|---|
| 1171 |      `DllEntryPoint@0', `DllMainCRTStartup@12', and `impure_ptr' will
 | 
|---|
| 1172 |      not be automatically exported.  Also, symbols imported from other
 | 
|---|
| 1173 |      DLLs will not be re-exported, nor will symbols specifying the
 | 
|---|
| 1174 |      DLL's internal layout such as those beginning with `_head_' or
 | 
|---|
| 1175 |      ending with `_iname'.  In addition, no symbols from `libgcc',
 | 
|---|
| 1176 |      `libstd++', `libmingw32', or `crtX.o' will be exported.  Symbols
 | 
|---|
| 1177 |      whose names begin with `__rtti_' or `__builtin_' will not be
 | 
|---|
| 1178 |      exported, to help with C++ DLLs.  Finally, there is an extensive
 | 
|---|
| 1179 |      list of cygwin-private symbols that are not exported (obviously,
 | 
|---|
| 1180 |      this applies on when building DLLs for cygwin targets).  These
 | 
|---|
| 1181 |      cygwin-excludes are: `_cygwin_dll_entry@12',
 | 
|---|
| 1182 |      `_cygwin_crt0_common@8', `_cygwin_noncygwin_dll_entry@12',
 | 
|---|
| 1183 |      `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0',
 | 
|---|
| 1184 |      `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and
 | 
|---|
| 1185 |      `environ'.  [This option is specific to the i386 PE targeted port
 | 
|---|
| 1186 |      of the linker]
 | 
|---|
| 1187 | 
 | 
|---|
| 1188 | `--exclude-symbols SYMBOL,SYMBOL,...'
 | 
|---|
| 1189 |      Specifies a list of symbols which should not be automatically
 | 
|---|
| 1190 |      exported.  The symbol names may be delimited by commas or colons.
 | 
|---|
| 1191 |      [This option is specific to the i386 PE targeted port of the
 | 
|---|
| 1192 |      linker]
 | 
|---|
| 1193 | 
 | 
|---|
| 1194 | `--exclude-libs LIB,LIB,...'
 | 
|---|
| 1195 |      Specifies a list of archive libraries from which symbols should
 | 
|---|
| 1196 |      not be automatically exported. The library names may be delimited
 | 
|---|
| 1197 |      by commas or colons.  Specifying `--exclude-libs ALL' excludes
 | 
|---|
| 1198 |      symbols in all archive libraries from automatic export. Symbols
 | 
|---|
| 1199 |      explicitly listed in a .def file are still exported, regardless of
 | 
|---|
| 1200 |      this option.  [This option is specific to the i386 PE targeted
 | 
|---|
| 1201 |      port of the linker]
 | 
|---|
| 1202 | 
 | 
|---|
| 1203 | `--file-alignment'
 | 
|---|
| 1204 |      Specify the file alignment.  Sections in the file will always
 | 
|---|
| 1205 |      begin at file offsets which are multiples of this number.  This
 | 
|---|
| 1206 |      defaults to 512.  [This option is specific to the i386 PE targeted
 | 
|---|
| 1207 |      port of the linker]
 | 
|---|
| 1208 | 
 | 
|---|
| 1209 | `--heap RESERVE'
 | 
|---|
| 1210 | `--heap RESERVE,COMMIT'
 | 
|---|
| 1211 |      Specify the amount of memory to reserve (and optionally commit) to
 | 
|---|
| 1212 |      be used as heap for this program.  The default is 1Mb reserved, 4K
 | 
|---|
| 1213 |      committed.  [This option is specific to the i386 PE targeted port
 | 
|---|
| 1214 |      of the linker]
 | 
|---|
| 1215 | 
 | 
|---|
| 1216 | `--image-base VALUE'
 | 
|---|
| 1217 |      Use VALUE as the base address of your program or dll.  This is the
 | 
|---|
| 1218 |      lowest memory location that will be used when your program or dll
 | 
|---|
| 1219 |      is loaded.  To reduce the need to relocate and improve performance
 | 
|---|
| 1220 |      of your dlls, each should have a unique base address and not
 | 
|---|
| 1221 |      overlap any other dlls.  The default is 0x400000 for executables,
 | 
|---|
| 1222 |      and 0x10000000 for dlls.  [This option is specific to the i386 PE
 | 
|---|
| 1223 |      targeted port of the linker]
 | 
|---|
| 1224 | 
 | 
|---|
| 1225 | `--kill-at'
 | 
|---|
| 1226 |      If given, the stdcall suffixes (@NN) will be stripped from symbols
 | 
|---|
| 1227 |      before they are exported.  [This option is specific to the i386 PE
 | 
|---|
| 1228 |      targeted port of the linker]
 | 
|---|
| 1229 | 
 | 
|---|
| 1230 | `--major-image-version VALUE'
 | 
|---|
| 1231 |      Sets the major number of the "image version".  Defaults to 1.
 | 
|---|
| 1232 |      [This option is specific to the i386 PE targeted port of the
 | 
|---|
| 1233 |      linker]
 | 
|---|
| 1234 | 
 | 
|---|
| 1235 | `--major-os-version VALUE'
 | 
|---|
| 1236 |      Sets the major number of the "os version".  Defaults to 4.  [This
 | 
|---|
| 1237 |      option is specific to the i386 PE targeted port of the linker]
 | 
|---|
| 1238 | 
 | 
|---|
| 1239 | `--major-subsystem-version VALUE'
 | 
|---|
| 1240 |      Sets the major number of the "subsystem version".  Defaults to 4.
 | 
|---|
| 1241 |      [This option is specific to the i386 PE targeted port of the
 | 
|---|
| 1242 |      linker]
 | 
|---|
| 1243 | 
 | 
|---|
| 1244 | `--minor-image-version VALUE'
 | 
|---|
| 1245 |      Sets the minor number of the "image version".  Defaults to 0.
 | 
|---|
| 1246 |      [This option is specific to the i386 PE targeted port of the
 | 
|---|
| 1247 |      linker]
 | 
|---|
| 1248 | 
 | 
|---|
| 1249 | `--minor-os-version VALUE'
 | 
|---|
| 1250 |      Sets the minor number of the "os version".  Defaults to 0.  [This
 | 
|---|
| 1251 |      option is specific to the i386 PE targeted port of the linker]
 | 
|---|
| 1252 | 
 | 
|---|
| 1253 | `--minor-subsystem-version VALUE'
 | 
|---|
| 1254 |      Sets the minor number of the "subsystem version".  Defaults to 0.
 | 
|---|
| 1255 |      [This option is specific to the i386 PE targeted port of the
 | 
|---|
| 1256 |      linker]
 | 
|---|
| 1257 | 
 | 
|---|
| 1258 | `--output-def FILE'
 | 
|---|
| 1259 |      The linker will create the file FILE which will contain a DEF file
 | 
|---|
| 1260 |      corresponding to the DLL the linker is generating.  This DEF file
 | 
|---|
| 1261 |      (which should be called `*.def') may be used to create an import
 | 
|---|
| 1262 |      library with `dlltool' or may be used as a reference to
 | 
|---|
| 1263 |      automatically or implicitly exported symbols.  [This option is
 | 
|---|
| 1264 |      specific to the i386 PE targeted port of the linker]
 | 
|---|
| 1265 | 
 | 
|---|
| 1266 | `--out-implib FILE'
 | 
|---|
| 1267 |      The linker will create the file FILE which will contain an import
 | 
|---|
| 1268 |      lib corresponding to the DLL the linker is generating. This import
 | 
|---|
| 1269 |      lib (which should be called `*.dll.a' or `*.a' may be used to link
 | 
|---|
| 1270 |      clients against the generated DLL; this behavior makes it possible
 | 
|---|
| 1271 |      to skip a separate `dlltool' import library creation step.  [This
 | 
|---|
| 1272 |      option is specific to the i386 PE targeted port of the linker]
 | 
|---|
| 1273 | 
 | 
|---|
| 1274 | `--enable-auto-image-base'
 | 
|---|
| 1275 |      Automatically choose the image base for DLLs, unless one is
 | 
|---|
| 1276 |      specified using the `--image-base' argument.  By using a hash
 | 
|---|
| 1277 |      generated from the dllname to create unique image bases for each
 | 
|---|
| 1278 |      DLL, in-memory collisions and relocations which can delay program
 | 
|---|
| 1279 |      execution are avoided.  [This option is specific to the i386 PE
 | 
|---|
| 1280 |      targeted port of the linker]
 | 
|---|
| 1281 | 
 | 
|---|
| 1282 | `--disable-auto-image-base'
 | 
|---|
| 1283 |      Do not automatically generate a unique image base.  If there is no
 | 
|---|
| 1284 |      user-specified image base (`--image-base') then use the platform
 | 
|---|
| 1285 |      default.  [This option is specific to the i386 PE targeted port of
 | 
|---|
| 1286 |      the linker]
 | 
|---|
| 1287 | 
 | 
|---|
| 1288 | `--dll-search-prefix STRING'
 | 
|---|
| 1289 |      When linking dynamically to a dll without an import library,
 | 
|---|
| 1290 |      search for `<string><basename>.dll' in preference to
 | 
|---|
| 1291 |      `lib<basename>.dll'. This behavior allows easy distinction between
 | 
|---|
| 1292 |      DLLs built for the various "subplatforms": native, cygwin, uwin,
 | 
|---|
| 1293 |      pw, etc.  For instance, cygwin DLLs typically use
 | 
|---|
| 1294 |      `--dll-search-prefix=cyg'.  [This option is specific to the i386
 | 
|---|
| 1295 |      PE targeted port of the linker]
 | 
|---|
| 1296 | 
 | 
|---|
| 1297 | `--enable-auto-import'
 | 
|---|
| 1298 |      Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA
 | 
|---|
| 1299 |      imports from DLLs, and create the necessary thunking symbols when
 | 
|---|
| 1300 |      building the import libraries with those DATA exports.  This
 | 
|---|
| 1301 |      generally will 'just work' - but sometimes you may see this
 | 
|---|
| 1302 |      message:
 | 
|---|
| 1303 | 
 | 
|---|
| 1304 |      "variable '<var>' can't be auto-imported. Please read the
 | 
|---|
| 1305 |      documentation for ld's `--enable-auto-import' for details."
 | 
|---|
| 1306 | 
 | 
|---|
| 1307 |      This message occurs when some (sub)expression accesses an address
 | 
|---|
| 1308 |      ultimately given by the sum of two constants (Win32 import tables
 | 
|---|
| 1309 |      only allow one).  Instances where this may occur include accesses
 | 
|---|
| 1310 |      to member fields of struct variables imported from a DLL, as well
 | 
|---|
| 1311 |      as using a constant index into an array variable imported from a
 | 
|---|
| 1312 |      DLL.  Any multiword variable (arrays, structs, long long, etc) may
 | 
|---|
| 1313 |      trigger this error condition.  However, regardless of the exact
 | 
|---|
| 1314 |      data type of the offending exported variable, ld will always
 | 
|---|
| 1315 |      detect it, issue the warning, and exit.
 | 
|---|
| 1316 | 
 | 
|---|
| 1317 |      There are several ways to address this difficulty, regardless of
 | 
|---|
| 1318 |      the data type of the exported variable:
 | 
|---|
| 1319 | 
 | 
|---|
| 1320 |      One way is to use -enable-runtime-pseudo-reloc switch. This leaves
 | 
|---|
| 1321 |      the task of adjusting references in your client code for runtime
 | 
|---|
| 1322 |      environment, so this method works only when runtime environtment
 | 
|---|
| 1323 |      supports this feature.
 | 
|---|
| 1324 | 
 | 
|---|
| 1325 |      A second solution is to force one of the 'constants' to be a
 | 
|---|
| 1326 |      variable - that is, unknown and un-optimizable at compile time.
 | 
|---|
| 1327 |      For arrays, there are two possibilities: a) make the indexee (the
 | 
|---|
| 1328 |      array's address) a variable, or b) make the 'constant' index a
 | 
|---|
| 1329 |      variable.  Thus:
 | 
|---|
| 1330 | 
 | 
|---|
| 1331 |           extern type extern_array[];
 | 
|---|
| 1332 |           extern_array[1] -->
 | 
|---|
| 1333 |              { volatile type *t=extern_array; t[1] }
 | 
|---|
| 1334 | 
 | 
|---|
| 1335 |      or
 | 
|---|
| 1336 | 
 | 
|---|
| 1337 |           extern type extern_array[];
 | 
|---|
| 1338 |           extern_array[1] -->
 | 
|---|
| 1339 |              { volatile int t=1; extern_array[t] }
 | 
|---|
| 1340 | 
 | 
|---|
| 1341 |      For structs (and most other multiword data types) the only option
 | 
|---|
| 1342 |      is to make the struct itself (or the long long, or the ...)
 | 
|---|
| 1343 |      variable:
 | 
|---|
| 1344 | 
 | 
|---|
| 1345 |           extern struct s extern_struct;
 | 
|---|
| 1346 |           extern_struct.field -->
 | 
|---|
| 1347 |              { volatile struct s *t=&extern_struct; t->field }
 | 
|---|
| 1348 | 
 | 
|---|
| 1349 |      or
 | 
|---|
| 1350 | 
 | 
|---|
| 1351 |           extern long long extern_ll;
 | 
|---|
| 1352 |           extern_ll -->
 | 
|---|
| 1353 |             { volatile long long * local_ll=&extern_ll; *local_ll }
 | 
|---|
| 1354 | 
 | 
|---|
| 1355 |      A third method of dealing with this difficulty is to abandon
 | 
|---|
| 1356 |      'auto-import' for the offending symbol and mark it with
 | 
|---|
| 1357 |      `__declspec(dllimport)'.  However, in practice that requires using
 | 
|---|
| 1358 |      compile-time #defines to indicate whether you are building a DLL,
 | 
|---|
| 1359 |      building client code that will link to the DLL, or merely
 | 
|---|
| 1360 |      building/linking to a static library.   In making the choice
 | 
|---|
| 1361 |      between the various methods of resolving the 'direct address with
 | 
|---|
| 1362 |      constant offset' problem, you should consider typical real-world
 | 
|---|
| 1363 |      usage:
 | 
|---|
| 1364 | 
 | 
|---|
| 1365 |      Original:
 | 
|---|
| 1366 |           --foo.h
 | 
|---|
| 1367 |           extern int arr[];
 | 
|---|
| 1368 |           --foo.c
 | 
|---|
| 1369 |           #include "foo.h"
 | 
|---|
| 1370 |           void main(int argc, char **argv){
 | 
|---|
| 1371 |             printf("%d\n",arr[1]);
 | 
|---|
| 1372 |           }
 | 
|---|
| 1373 | 
 | 
|---|
| 1374 |      Solution 1:
 | 
|---|
| 1375 |           --foo.h
 | 
|---|
| 1376 |           extern int arr[];
 | 
|---|
| 1377 |           --foo.c
 | 
|---|
| 1378 |           #include "foo.h"
 | 
|---|
| 1379 |           void main(int argc, char **argv){
 | 
|---|
| 1380 |             /* This workaround is for win32 and cygwin; do not "optimize" */
 | 
|---|
| 1381 |             volatile int *parr = arr;
 | 
|---|
| 1382 |             printf("%d\n",parr[1]);
 | 
|---|
| 1383 |           }
 | 
|---|
| 1384 | 
 | 
|---|
| 1385 |      Solution 2:
 | 
|---|
| 1386 |           --foo.h
 | 
|---|
| 1387 |           /* Note: auto-export is assumed (no __declspec(dllexport)) */
 | 
|---|
| 1388 |           #if (defined(_WIN32) || defined(__CYGWIN__)) && \
 | 
|---|
| 1389 |             !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
 | 
|---|
| 1390 |           #define FOO_IMPORT __declspec(dllimport)
 | 
|---|
| 1391 |           #else
 | 
|---|
| 1392 |           #define FOO_IMPORT
 | 
|---|
| 1393 |           #endif
 | 
|---|
| 1394 |           extern FOO_IMPORT int arr[];
 | 
|---|
| 1395 |           --foo.c
 | 
|---|
| 1396 |           #include "foo.h"
 | 
|---|
| 1397 |           void main(int argc, char **argv){
 | 
|---|
| 1398 |             printf("%d\n",arr[1]);
 | 
|---|
| 1399 |           }
 | 
|---|
| 1400 | 
 | 
|---|
| 1401 |      A fourth way to avoid this problem is to re-code your library to
 | 
|---|
| 1402 |      use a functional interface rather than a data interface for the
 | 
|---|
| 1403 |      offending variables (e.g. set_foo() and get_foo() accessor
 | 
|---|
| 1404 |      functions).  [This option is specific to the i386 PE targeted port
 | 
|---|
| 1405 |      of the linker]
 | 
|---|
| 1406 | 
 | 
|---|
| 1407 | `--disable-auto-import'
 | 
|---|
| 1408 |      Do not attempt to do sophisticalted linking of `_symbol' to
 | 
|---|
| 1409 |      `__imp__symbol' for DATA imports from DLLs.  [This option is
 | 
|---|
| 1410 |      specific to the i386 PE targeted port of the linker]
 | 
|---|
| 1411 | 
 | 
|---|
| 1412 | `--enable-runtime-pseudo-reloc'
 | 
|---|
| 1413 |      If your code contains expressions described in -enable-auto-import
 | 
|---|
| 1414 |      section, that is, DATA imports from DLL with non-zero offset, this
 | 
|---|
| 1415 |      switch will create a vector of 'runtime pseudo relocations' which
 | 
|---|
| 1416 |      can be used by runtime environment to adjust references to such
 | 
|---|
| 1417 |      data in your client code.  [This option is specific to the i386 PE
 | 
|---|
| 1418 |      targeted port of the linker]
 | 
|---|
| 1419 | 
 | 
|---|
| 1420 | `--disable-runtime-pseudo-reloc'
 | 
|---|
| 1421 |      Do not create pseudo relocations for non-zero offset DATA imports
 | 
|---|
| 1422 |      from DLLs.  This is the default.  [This option is specific to the
 | 
|---|
| 1423 |      i386 PE targeted port of the linker]
 | 
|---|
| 1424 | 
 | 
|---|
| 1425 | `--enable-extra-pe-debug'
 | 
|---|
| 1426 |      Show additional debug info related to auto-import symbol thunking.
 | 
|---|
| 1427 |      [This option is specific to the i386 PE targeted port of the
 | 
|---|
| 1428 |      linker]
 | 
|---|
| 1429 | 
 | 
|---|
| 1430 | `--section-alignment'
 | 
|---|
| 1431 |      Sets the section alignment.  Sections in memory will always begin
 | 
|---|
| 1432 |      at addresses which are a multiple of this number.  Defaults to
 | 
|---|
| 1433 |      0x1000.  [This option is specific to the i386 PE targeted port of
 | 
|---|
| 1434 |      the linker]
 | 
|---|
| 1435 | 
 | 
|---|
| 1436 | `--stack RESERVE'
 | 
|---|
| 1437 | `--stack RESERVE,COMMIT'
 | 
|---|
| 1438 |      Specify the amount of memory to reserve (and optionally commit) to
 | 
|---|
| 1439 |      be used as stack for this program.  The default is 2Mb reserved, 4K
 | 
|---|
| 1440 |      committed.  [This option is specific to the i386 PE targeted port
 | 
|---|
| 1441 |      of the linker]
 | 
|---|
| 1442 | 
 | 
|---|
| 1443 | `--subsystem WHICH'
 | 
|---|
| 1444 | `--subsystem WHICH:MAJOR'
 | 
|---|
| 1445 | `--subsystem WHICH:MAJOR.MINOR'
 | 
|---|
| 1446 |      Specifies the subsystem under which your program will execute.  The
 | 
|---|
| 1447 |      legal values for WHICH are `native', `windows', `console', and
 | 
|---|
| 1448 |      `posix'.  You may optionally set the subsystem version also.
 | 
|---|
| 1449 |      [This option is specific to the i386 PE targeted port of the
 | 
|---|
| 1450 |      linker]
 | 
|---|
| 1451 | 
 | 
|---|