* config/vx-gdb.exp (gdb_start): Use \030, not \CX. tcl doesn't
[deliverable/binutils-gdb.git] / ld / ld.1
CommitLineData
0e166a63
RP
1.\" Copyright (c) 1991, 1992 Free Software Foundation
2.\" See section COPYING for conditions for redistribution
3.TH ld 1 "17 August 1992" "cygnus support" "GNU Development Tools"
4.de BP
5.sp
6.ti \-.2i
7\(**
8..
9
10.SH NAME
11ld \- the GNU linker
12
13.SH SYNOPSIS
14.hy 0
15.na
16.TP
17.B ld
18.RB "[\|" \-o "
19.I output\c
20\&\|] \c
8ddef552 21.I objfile\c
0e166a63
RP
22\&.\|.\|.
23.br
24.RB "[\|" \-A\c
25.I architecture\c
26\&\|]
27.RB "[\|" "\-b\ "\c
28.I input-format\c
29\&\|]
30.RB "[\|" \-Bstatic "\|]"
31.RB "[\|" "\-c\ "\c
32.I commandfile\c
33\&\|]
34.RB "[\|" \-d | \-dc | \-dp\c
35\|]
36.br
37.RB "[\|" "\-defsym\ "\c
38.I symbol\c
39\& = \c
40.I expression\c
41\&\|]
42.RB "[\|" "\-e\ "\c
43.I entry\c
44\&\|]
39a6e282 45.RB "[\|" \-embedded\-relocs "\|]"
0e166a63
RP
46.RB "[\|" \-F "\|]"
47.RB "[\|" "\-F\ "\c
48.I format\c
49\&\|]
50.RB "[\|" "\-format\ "\c
51.I input-format\c
52\&\|]
53.RB "[\|" \-g "\|]"
8ddef552
DM
54.RB "[\|" \-G\c
55.I size\c
56\&\|]
bf065bfd 57.RB "[\|" \-\-help "\|]"
0e166a63
RP
58.RB "[\|" \-i "\|]"
59.RB "[\|" \-l\c
60.I ar\c
61\&\|]
62.RB "[\|" \-L\c
63.I searchdir\c
64\&\|]
8ddef552 65.RB "[\|" \-M "\|]"
d18a4527
DM
66.RB "[\|" \-Map\c
67.I mapfile\c
68\&\|]
8ddef552
DM
69.RB "[\|" \-m\c
70.I emulation\c
71\&\|]
0e166a63
RP
72.RB "[\|" \-n | \-N "\|]"
73.RB "[\|" \-noinhibit-exec "\|]"
346535cc
DM
74.RB "[\|" "\-oformat\ "\c
75.I output-format\c
76\&\|]
0e166a63
RP
77.RB "[\|" "\-R\ "\c
78.I filename\c
79\&\|]
80.RB "[\|" \-relax "\|]"
81.RB "[\|" \-r | \-Ur "\|]"
82.RB "[\|" \-S "\|]"
83.RB "[\|" \-s "\|]"
2a28d8b0 84.RB "[\|" \-sort\-common "\|]"
0e166a63
RP
85.RB "[\|" "\-T\ "\c
86.I commandfile\c
87\&\|]
88.RB "[\|" "\-Ttext\ "\c
89.I textorg\c
90\&\|]
91.RB "[\|" "\-Tdata\ "\c
92.I dataorg\c
93\&\|]
94.RB "[\|" "\-Tbss\ "\c
95.I bssorg\c
96\&\|]
97.RB "[\|" \-t "\|]"
98.RB "[\|" "\-u\ "\c
99.I sym\c
100\&]
8ddef552 101.RB "[\|" \-V "\|]"
0e166a63 102.RB "[\|" \-v "\|]"
a82ae15d 103.RB "[\|" \-\-verbose "\|]"
bf065bfd 104.RB "[\|" \-\-version "\|]"
2a28d8b0 105.RB "[\|" \-warn\-common "\|]"
809ee7e0 106.RB "[\|" \-warn\-once "\|]"
0e166a63
RP
107.RB "[\|" \-X "\|]"
108.RB "[\|" \-x "\|]"
0e166a63
RP
109.ad b
110.hy 1
111.SH DESCRIPTION
112\c
113.B ld\c
114\& combines a number of object and archive files, relocates
115their data and ties up symbol references. Often the last step in
116building a new compiled program to run is a call to \c
117.B ld\c
118\&.
119
120\c
121.B ld\c
122\& accepts Linker Command Language files
123to provide explicit and total control over the linking process.
124This man page does not describe the command language; see the `\|\c
125.B ld\c
126\|' entry in `\|\c
127.B info\c
128\|', or the manual
129.I
130ld: the GNU linker
131\&, for full details on the command language and on other aspects of
132the GNU linker.
133
134This version of \c
135.B ld\c
136\& uses the general purpose BFD libraries
137to operate on object files. This allows \c
138.B ld\c
139\& to read, combine, and
140write object files in many different formats\(em\&for example, COFF or
141\c
142.B a.out\c
143\&. Different formats may be linked together to produce any
144available kind of object file. You can use `\|\c
145.B objdump \-i\c
146\|' to get a list of formats supported on various architectures; see
147.BR objdump ( 1 ).
148
149Aside from its flexibility, the GNU linker is more helpful than other
150linkers in providing diagnostic information. Many linkers abandon
151execution immediately upon encountering an error; whenever possible,
152\c
153.B ld\c
154\& continues executing, allowing you to identify other errors
155(or, in some cases, to get an output file in spite of the error).
156
157The GNU linker \c
158.B ld\c
159\& is meant to cover a broad range of situations,
160and to be as compatible as possible with other linkers. As a result,
161you have many choices to control its behavior through the command line,
162and through environment variables.
163
164.SH OPTIONS
165The plethora of command-line options may seem intimidating, but in
166actual practice few of them are used in any particular context.
167For instance, a frequent use of \c
168.B ld\c
169\& is to link standard Unix
170object files on a standard, supported Unix system. On such a system, to
171link a file \c
172.B hello.o\c
173\&:
174.sp
175.br
176$\ ld\ \-o\ output\ /lib/crt0.o\ hello.o\ \-lc
177.br
178.sp
179This tells \c
180.B ld\c
181\& to produce a file called \c
182.B output\c
183\& as the
184result of linking the file \c
185.B /lib/crt0.o\c
186\& with \c
187.B hello.o\c
188\& and
189the library \c
190.B libc.a\c
191\& which will come from the standard search
192directories.
193
194The command-line options to \c
195.B ld\c
196\& may be specified in any order, and
197may be repeated at will. For the most part, repeating an option with a
198different argument will either have no further effect, or override prior
199occurrences (those further to the left on the command line) of an
200option.
201
202The exceptions\(em\&which may meaningfully be used more than once\(em\&are
203\c
204.B \-A\c
205\&, \c
206.B \-b\c
207\& (or its synonym \c
208.B \-format\c
209\&), \c
210.B \-defsym\c
211\&,
212\c
213.B \-L\c
214\&, \c
215.B \-l\c
216\&, \c
217.B \-R\c
218\&, and \c
219.B \-u\c
220\&.
221
222The list of object files to be linked together, shown as \c
8ddef552 223.I objfile\c
0e166a63
RP
224\&,
225may follow, precede, or be mixed in with command-line options; save that
226an \c
8ddef552 227.I objfile\c
0e166a63
RP
228\& argument may not be placed between an option flag and
229its argument.
230
231Usually the linker is invoked with at least one object file, but other
232forms of binary input files can also be specified with \c
233.B \-l\c
234\&,
235\c
236.B \-R\c
237\&, and the script command language. If \c
238.I no\c
239\& binary input
240files at all are specified, the linker does not produce any output, and
241issues the message `\|\c
242.B No input files\c
243\|'.
244
245Option arguments must either follow the option letter without intervening
246whitespace, or be given as separate arguments immediately following the
247option that requires them.
248
0e166a63
RP
249.TP
250.BI "-A" "architecture"\c
251\&
252In the current release of \c
253.B ld\c
254\&, this option is useful only for the
255Intel 960 family of architectures. In that \c
256.B ld\c
257\& configuration, the
258\c
259.I architecture\c
260\& argument is one of the two-letter names identifying
261members of the 960 family; the option specifies the desired output
262target, and warns of any incompatible instructions in the input files.
263It also modifies the linker's search strategy for archive libraries, to
264support the use of libraries specific to each particular
265architecture, by including in the search loop names suffixed with the
266string identifying the architecture.
267
268For example, if your \c
269.B ld\c
270\& command line included `\|\c
271.B \-ACA\c
272\|' as
273well as `\|\c
274.B \-ltry\c
275\|', the linker would look (in its built-in search
276paths, and in any paths you specify with \c
277.B \-L\c
278\&) for a library with
279the names
280.sp
281.br
282try
283.br
284libtry.a
285.br
286tryca
287.br
288libtryca.a
289.br
290.sp
291
292The first two possibilities would be considered in any event; the last
293two are due to the use of `\|\c
294.B \-ACA\c
295\|'.
296
297Future releases of \c
298.B ld\c
299\& may support similar functionality for
300other architecture families.
301
302You can meaningfully use \c
303.B \-A\c
304\& more than once on a command line, if
305an architecture family allows combination of target architectures; each
306use will add another pair of name variants to search for when \c
307.B \-l\c
308\&
309specifies a library.
310
311.TP
2a28d8b0 312.BI "\-b " "input-format"\c
0e166a63
RP
313\&
314Specify the binary format for input object files that follow this option
315on the command line. You don't usually need to specify this, as
316\c
317.B ld\c
318\& is configured to expect as a default input format the most
319usual format on each machine. \c
320.I input-format\c
321\& is a text string, the
322name of a particular format supported by the BFD libraries.
323\c
324.B \-format \c
325.I input-format\c
326\&\c
346535cc
DM
327\& has the same effect, as does the script command
328.BR TARGET .
0e166a63
RP
329
330You may want to use this option if you are linking files with an unusual
331binary format. You can also use \c
332.B \-b\c
333\& to switch formats explicitly (when
334linking object files of different formats), by including
335\c
336.B \-b \c
337.I input-format\c
338\&\c
339\& before each group of object files in a
340particular format.
341
342The default format is taken from the environment variable
343.B GNUTARGET\c
344\&. You can also define the input
345format from a script, using the command \c
346.B TARGET\c
347\&.
348
349.TP
350.B \-Bstatic
351This flag is accepted for command-line compatibility with the SunOS linker,
352but has no effect on \c
353.B ld\c
354\&.
355
356.TP
2a28d8b0 357.BI "\-c " "commandfile"\c
0e166a63
RP
358\&
359Directs \c
360.B ld\c
361\& to read link commands from the file
362\c
363.I commandfile\c
364\&. These commands will completely override \c
365.B ld\c
366\&'s
367default link format (rather than adding to it); \c
368.I commandfile\c
369\& must
370specify everything necessary to describe the target format.
371
372
373You may also include a script of link commands directly in the command
374line by bracketing it between `\|\c
375.B {\c
376\|' and `\|\c
377.B }\c
378\|' characters.
379
380.TP
381.B \-d
382.TP
383.B \-dc
384.TP
385.B \-dp
386These three options are equivalent; multiple forms are supported for
387compatibility with other linkers. Use any of them to make \c
388.B ld\c
389\&
390assign space to common symbols even if a relocatable output file is
391specified (\c
392.B \-r\c
393\&). The script command
394\c
395.B FORCE_COMMON_ALLOCATION\c
396\& has the same effect.
397
398.TP
399.BI "-defsym " "symbol"\c
400\& = \c
401.I expression\c
402\&
403Create a global symbol in the output file, containing the absolute
404address given by \c
405.I expression\c
406\&. You may use this option as many
407times as necessary to define multiple symbols in the command line. A
408limited form of arithmetic is supported for the \c
409.I expression\c
410\& in this
411context: you may give a hexadecimal constant or the name of an existing
412symbol, or use \c
413.B +\c
414\& and \c
415.B \-\c
416\& to add or subtract hexadecimal
417constants or symbols. If you need more elaborate expressions, consider
418using the linker command language from a script.
419
420.TP
421.BI "-e " "entry"\c
422\&
423Use \c
424.I entry\c
425\& as the explicit symbol for beginning execution of your
426program, rather than the default entry point. for a
427discussion of defaults and other ways of specifying the
428entry point.
429
39a6e282
ILT
430.TP
431.B \-embedded\-relocs
432This option is only meaningful when linking MIPS embedded PIC code,
433generated by the
434.B \-membedded\-pic
435option to the GNU compiler and assembler. It causes the linker to
436create a table which may be used at runtime to relocate any data which
437was statically initialized to pointer values. See the code in
438testsuite/ld-empic for details.
439
0e166a63
RP
440.TP
441.B \-F
442.TP
443.BI "-F" "format"\c
444\&
445Some older linkers used this option throughout a compilation toolchain
446for specifying object-file format for both input and output object
447files. \c
448.B ld\c
449\&'s mechanisms (the \c
450.B \-b\c
451\& or \c
452.B \-format\c
453\& options
454for input files, the \c
455.B TARGET\c
456\& command in linker scripts for output
457files, the \c
458.B GNUTARGET\c
459\& environment variable) are more flexible, but
460but it accepts (and ignores) the \c
461.B \-F\c
462\& option flag for compatibility
463with scripts written to call the old linker.
464
465.TP
2a28d8b0 466.BI "\-format " "input\-format"\c
0e166a63
RP
467\&
468Synonym for \c
469.B \-b\c
470\& \c
2a28d8b0 471.I input\-format\c
0e166a63
RP
472\&.
473
474.TP
475.B \-g
476Accepted, but ignored; provided for compatibility with other tools.
477
8ddef552
DM
478.TP
479.BI "\-G " "size"\c
480Set the maximum size of objects to be optimized using the GP register
481to
482.I size
483under MIPS ECOFF. Ignored for other object file formats.
484
bf065bfd
DM
485.TP
486.B \-\-help
487Print a summary of the command-line options on the standard output and exit.
488This option and
489.B \-\-version
490begin with two dashes instead of one
491for compatibility with other GNU programs. The other options start with
492only one dash for compatibility with other linkers.
493
0e166a63
RP
494.TP
495.B \-i
496Perform an incremental link (same as option \c
497.B \-r\c
498\&).
499
500.TP
2a28d8b0 501.BI "\-l" "ar"\c
0e166a63
RP
502\&
503Add an archive file \c
504.I ar\c
505\& to the list of files to link. This
506option may be used any number of times. \c
507.B ld\c
508\& will search its
509path-list for occurrences of \c
510.B lib\c
511.I ar\c
512\&.a\c
513\& for every \c
514.I ar\c
515\&
516specified.
517
518.TP
2a28d8b0 519.BI "\-L" "searchdir"\c
0e166a63
RP
520\&
521This command adds path \c
522.I searchdir\c
523\& to the list of paths that
524\c
525.B ld\c
526\& will search for archive libraries. You may use this option
527any number of times.
528
529The default set of paths searched (without being specified with
530\c
531.B \-L\c
532\&) depends on what emulation mode \c
533.B ld\c
534\& is using, and in
535some cases also on how it was configured. The
536paths can also be specified in a link script with the \c
537.B SEARCH_DIR\c
538\&
539command.
540
541.TP
542.B \-M
0e166a63
RP
543Print (to the standard output file) a link map\(em\&diagnostic information
544about where symbols are mapped by \c
545.B ld\c
546\&, and information on global
547common storage allocation.
548
d18a4527
DM
549.TP
550.BI "\-Map " "mapfile"\c
551Print to the file
552.I mapfile
553a link map\(em\&diagnostic information
554about where symbols are mapped by \c
555.B ld\c
556\&, and information on global
557common storage allocation.
558
8ddef552
DM
559.TP
560.BI "\-m " "emulation"\c
561Emulate the
562.I emulation
563linker. You can list the available emulations with the
a82ae15d 564.I \-\-verbose
1f59c7a7
ILT
565or
566.I \-V
567options. This option overrides the compiled-in default, which is the
8ddef552
DM
568system for which you configured
569.BR ld .
570
0e166a63
RP
571.TP
572.B \-N
573specifies readable and writable \c
574.B text\c
575\& and \c
576.B data\c
577\& sections. If
578the output format supports Unix style magic numbers, the output is
579marked as \c
580.B OMAGIC\c
581\&.
582
583When you use the `\|\c
584.B \-N\c
585\&\|' option, the linker does not page-align the
586data segment.
587
588.TP
589.B \-n
590sets the text segment to be read only, and \c
591.B NMAGIC\c
592\& is written
593if possible.
594
595.TP
2a28d8b0 596.B \-noinhibit\-exec
0e166a63
RP
597Normally, the linker will not produce an output file if it encounters
598errors during the link process. With this flag, you can specify that
599you wish the output file retained even after non-fatal errors.
600
601.TP
2a28d8b0 602.BI "\-o " "output"\c
0e166a63
RP
603\&
604.I output\c
605\&
606\c
607.I output\c
608\& is a name for the program produced by \c
609.B ld\c
610\&; if this
611option is not specified, the name `\|\c
612.B a.out\c
613\|' is used by default. The
614script command \c
615.B OUTPUT\c
616\& can also specify the output file name.
617
346535cc 618.TP
2a28d8b0 619.BI "\-oformat " "output\-format"\c
346535cc
DM
620\&
621Specify the binary format for the output object file.
622You don't usually need to specify this, as
623\c
624.B ld\c
625\& is configured to produce as a default output format the most
626usual format on each machine. \c
627.I output-format\c
628\& is a text string, the
629name of a particular format supported by the BFD libraries.
630The script command
631.B OUTPUT_FORMAT
632can also specify the output format, but this option overrides it.
633
0e166a63 634.TP
2a28d8b0 635.BI "\-R " "filename"\c
0e166a63
RP
636\&
637.I file\c
638\&
639Read symbol names and their addresses from \c
640.I filename\c
641\&, but do not
642relocate it or include it in the output. This allows your output file
643to refer symbolically to absolute locations of memory defined in other
644programs.
645
646.TP
647.B \-relax
648An option with machine dependent effects. Currently this option is only
649supported on the H8/300.
650
651On some platforms, use this option to perform global optimizations that
652become possible when the linker resolves addressing in your program, such
653as relaxing address modes and synthesizing new instructions in the
654output object file.
655
656On platforms where this is not supported, `\|\c
657.B \-relax\c
658\&\|' is accepted, but has no effect.
659
660.TP
661.B \-r
662Generates relocatable output\(em\&i.e., generate an output file that can in
663turn serve as input to \c
664.B ld\c
665\&. This is often called \c
666.I partial
667linking\c
668\&. As a side effect, in environments that support standard Unix
669magic numbers, this option also sets the output file's magic number to
670\c
671.B OMAGIC\c
672\&.
673If this option is not specified, an absolute file is produced. When
674linking C++ programs, this option \c
675.I will not\c
676\& resolve references to
677constructors; \c
678.B \-Ur\c
679\& is an alternative.
680
681This option does the same as \c
682.B \-i\c
683\&.
684
685.TP
686.B \-S
687Omits debugger symbol information (but not all symbols) from the output file.
688
689.TP
690.B \-s
691Omits all symbol information from the output file.
692
0e166a63 693.TP
2a28d8b0
DM
694.B \-sort\-common
695Normally, when
696.B ld
697places the global common symbols in the appropriate output sections,
698it sorts them by size. First come all the one byte symbols, then all
699the two bytes, then all the four bytes, and then everything else.
da08e9b9
DM
700This is to prevent gaps between symbols due to
701alignment constraints. This option disables that sorting.
2a28d8b0
DM
702
703.TP
704.BI "\-Tbss " "org"\c
0e166a63 705.TP
2a28d8b0 706.BI "\-Tdata " "org"\c
0e166a63 707.TP
2a28d8b0 708.BI "\-Ttext " "org"\c
0e166a63
RP
709Use \c
710.I org\c
711\& as the starting address for\(em\&respectively\(em\&the
712\c
713.B bss\c
714\&, \c
715.B data\c
716\&, or the \c
717.B text\c
718\& segment of the output file.
719\c
720.I textorg\c
721\& must be a hexadecimal integer.
722
723.TP
2a28d8b0 724.BI "\-T " "commandfile"\c
0e166a63
RP
725\&
726.TP
2a28d8b0 727.BI "\-T" "commandfile"\c
0e166a63
RP
728Equivalent to \c
729.B \-c \c
730.I commandfile\c
731\&\c
732\&; supported for compatibility with
733other tools.
734
735.TP
736.B \-t
737Prints names of input files as \c
738.B ld\c
739\& processes them.
740
741.TP
2a28d8b0 742.BI "\-u " "sym"
0e166a63
RP
743Forces \c
744.I sym\c
745\& to be entered in the output file as an undefined symbol.
746This may, for example, trigger linking of additional modules from
747standard libraries. \c
748.B \-u\c
749\& may be repeated with different option
750arguments to enter additional undefined symbols.
751
752.TP
753.B \-Ur
754For anything other than C++ programs, this option is equivalent to
755\c
756.B \-r\c
757\&: it generates relocatable output\(em\&i.e., an output file that can in
758turn serve as input to \c
759.B ld\c
760\&. When linking C++ programs, \c
761.B \-Ur\c
762\&
763\c
764.I will\c
765\& resolve references to constructors, unlike \c
766.B \-r\c
767\&.
768
8ddef552 769.TP
a82ae15d 770.B \-\-verbose
8ddef552
DM
771Display the version number for \c
772.B ld
773and list the supported emulations.
de87cdb4 774Display which input files can and can not be opened.
8ddef552 775
0e166a63 776.TP
a82ae15d 777.B \-v, \-V
0e166a63
RP
778Display the version number for \c
779.B ld\c
780\&.
1f59c7a7
ILT
781The
782.B \-V
783option also lists the supported emulations.
0e166a63 784
bf065bfd
DM
785.TP
786.B \-\-version
787Display the version number for \c
788.B ld
789and exit.
790
2a28d8b0
DM
791.TP
792.B \-warn\-common
793Warn when a common symbol is combined with another common symbol or with
794a symbol definition. Unix linkers allow this somewhat sloppy practice,
795but linkers on some other operating systems do not. This option allows
796you to find potential problems from combining global symbols.
797
809ee7e0
ILT
798.TP
799.B \-warn\-once
800Only warn once for each undefined symbol, rather than once per module
801which refers to it.
802
0e166a63
RP
803.TP
804.B \-X
805If \c
806.B \-s\c
807\& or \c
808.B \-S\c
809\& is also specified, delete only local symbols
810beginning with `\|\c
811.B L\c
812\|'.
813
814.TP
815.B \-x
816If \c
817.B \-s\c
818\& or \c
819.B \-S\c
820\& is also specified, delete all local symbols,
821not just those beginning with `\|\c
822.B L\c
823\|'.
824
825.PP
826
827.SH ENVIRONMENT
828\c
8ddef552 829You can change the behavior of
0e166a63 830.B ld\c
8ddef552 831\& with the environment variable \c
0e166a63 832.B GNUTARGET\c
8ddef552 833\&.
0e166a63
RP
834
835\c
836.B GNUTARGET\c
837\& determines the input-file object format if you don't
838use \c
839.B \-b\c
840\& (or its synonym \c
841.B \-format\c
842\&). Its value should be one
843of the BFD names for an input format. If there is no
844\c
845.B GNUTARGET\c
846\& in the environment, \c
847.B ld\c
848\& uses the natural format
849of the host. If \c
850.B GNUTARGET\c
851\& is set to \c
852.B default\c
853\& then BFD attempts to discover the
854input format by examining binary input files; this method often
855succeeds, but there are potential ambiguities, since there is no method
856of ensuring that the magic number used to flag object-file formats is
857unique. However, the configuration procedure for BFD on each system
858places the conventional format for that system first in the search-list,
859so ambiguities are resolved in favor of convention.
860
0e166a63
RP
861.PP
862
863.SH "SEE ALSO"
864
865.BR objdump ( 1 )
866.br
867.br
868.RB "`\|" ld "\|' and `\|" binutils "\|'"
869entries in
870.B info\c
871.br
872.I
873ld: the GNU linker\c
874, Steve Chamberlain and Roland Pesch;
875.I
876The GNU Binary Utilities\c
877, Roland H. Pesch.
878
879.SH COPYING
880Copyright (c) 1991, 1992 Free Software Foundation, Inc.
881.PP
882Permission is granted to make and distribute verbatim copies of
883this manual provided the copyright notice and this permission notice
884are preserved on all copies.
885.PP
886Permission is granted to copy and distribute modified versions of this
887manual under the conditions for verbatim copying, provided that the
888entire resulting derived work is distributed under the terms of a
889permission notice identical to this one.
890.PP
891Permission is granted to copy and distribute translations of this
892manual into another language, under the above conditions for modified
893versions, except that this permission notice may be included in
894translations approved by the Free Software Foundation instead of in
895the original English.
This page took 0.210726 seconds and 4 git commands to generate.