source: trunk/src/binutils/ld/ld.info-2@ 1036

Last change on this file since 1036 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 64.7 KB
Line 
1This is ld.info, produced by makeinfo version 4.3 from ./ld.texinfo.
2
3START-INFO-DIR-ENTRY
4* Ld: (ld). The GNU linker.
5END-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,
102002, 2003 Free Software Foundation, Inc.
11
12
13File: ld.info, Node: Options, Next: Environment, Up: Invocation
14
15Command Line Options
16====================
17
18 The linker supports a plethora of command-line options, but in actual
19practice few of them are used in any particular context. For instance,
20a frequent use of `ld' is to link standard Unix object files on a
21standard, 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
27linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a',
28which will come from the standard search directories. (See the
29discussion of the `-l' option below.)
30
31 Some of the command-line options to `ld' may be specified at any
32point in the command line. However, options which refer to files, such
33as `-l' or `-T', cause the file to be read at the point at which the
34option appears in the command line, relative to the object files and
35other file options. Repeating non-file options with a different
36argument will either have no further effect, or override prior
37occurrences (those further to the left on the command line) of that
38option. Options which may be meaningfully specified more than once are
39noted in the descriptions below.
40
41 Non-option arguments are object files or archives which are to be
42linked together. They may follow, precede, or be mixed in with
43command-line options, except that an object file argument may not be
44placed between an option and its argument.
45
46 Usually the linker is invoked with at least one object file, but you
47can specify other forms of binary input files using `-l', `-R', and the
48script command language. If _no_ binary input files at all are
49specified, the linker does not produce any output, and issues the
50message `No input files'.
51
52 If the linker cannot recognize the format of an object file, it will
53assume that it is a linker script. A script specified in this way
54augments the main linker script used for the link (either the default
55linker script or the one specified by using `-T'). This feature
56permits the linker to link against a file which appears to be an object
57or an archive, but actually merely defines some symbol values, or uses
58`INPUT' or `GROUP' to load other objects. Note that specifying a
59script in this way merely augments the main linker script; use the `-T'
60option to replace the default linker script entirely. *Note Scripts::.
61
62 For options whose names are a single letter, option arguments must
63either follow the option letter without intervening whitespace, or be
64given as separate arguments immediately following the option that
65requires them.
66
67 For options whose names are multiple letters, either one dash or two
68can precede the option name; for example, `-trace-symbol' and
69`--trace-symbol' are equivalent. Note--there is one exception to this
70rule. Multiple letter options that start with a lower case 'o' can
71only 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
76the option name by an equals sign, or be given as separate arguments
77immediately following the option that requires them. For example,
78`--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique
79abbreviations of the names of multiple-letter options are accepted.
80
81 Note--if the linker is being invoked indirectly, via a compiler
82driver (e.g. `gcc') then all the linker command line options should be
83prefixed by `-Wl,' (or whatever is appropriate for the particular
84compiler 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
89silently drop the linker options, resulting in a bad link.
90
91 Here is a table of the generic command line switches accepted by the
92GNU 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
1115Options Specific to i386 PE Targets
1116-----------------------------------
1117
1118 The i386 PE linker supports the `-shared' option, which causes the
1119output to be a dynamically linked library (DLL) instead of a normal
1120executable. You should name the output `*.dll' when you use this
1121option. In addition, the linker fully supports the standard `*.def'
1122files, which may be specified on the linker command line like an object
1123file (in fact, it should precede archives it exports symbols from, to
1124ensure 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
1127support additional command line options that are specific to the i386
1128PE target. Options that take values may be separated from their values
1129by 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
Note: See TracBrowser for help on using the repository browser.