1\input texinfo 2@setfilename ld.info 3@c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 4@c 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 5@syncodeindex ky cp 6@c man begin INCLUDE 7@include configdoc.texi 8@c (configdoc.texi is generated by the Makefile) 9@include ldver.texi 10@c man end 11 12@c @smallbook 13 14@macro gcctabopt{body} 15@code{\body\} 16@end macro 17 18@c man begin NAME 19@ifset man 20@c Configure for the generation of man pages 21@set UsesEnvVars 22@set GENERIC 23@set ARC 24@set ARM 25@set D10V 26@set D30V 27@set H8/300 28@set H8/500 29@set HPPA 30@set I370 31@set I80386 32@set I860 33@set I960 34@set M32R 35@set M68HC11 36@set M680X0 37@set MCORE 38@set MIPS 39@set MMIX 40@set MSP430 41@set PDP11 42@set PJ 43@set POWERPC 44@set POWERPC64 45@set SH 46@set SPARC 47@set TIC54X 48@set V850 49@set VAX 50@set WIN32 51@set XTENSA 52@end ifset 53@c man end 54 55@ifinfo 56@format 57START-INFO-DIR-ENTRY 58* Ld: (ld). The GNU linker. 59END-INFO-DIR-ENTRY 60@end format 61@end ifinfo 62 63@ifinfo 64This file documents the @sc{gnu} linker LD version @value{VERSION}. 65 66Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 672001, 2002, 2003, 2004 Free Software Foundation, Inc. 68 69@ignore 70 71Permission is granted to copy, distribute and/or modify this document 72under the terms of the GNU Free Documentation License, Version 1.1 73or any later version published by the Free Software Foundation; 74with no Invariant Sections, with no Front-Cover Texts, and with no 75Back-Cover Texts. A copy of the license is included in the 76section entitled ``GNU Free Documentation License''. 77 78Permission is granted to process this file through Tex and print the 79results, provided the printed document carries copying permission 80notice identical to this one except for the removal of this paragraph 81(this paragraph not being relevant to the printed manual). 82 83@end ignore 84@end ifinfo 85@iftex 86@finalout 87@setchapternewpage odd 88@settitle Using LD, the GNU linker 89@titlepage 90@title Using ld 91@subtitle The GNU linker 92@sp 1 93@subtitle @code{ld} version 2 94@subtitle Version @value{VERSION} 95@author Steve Chamberlain 96@author Ian Lance Taylor 97@page 98 99@tex 100{\parskip=0pt 101\hfill Red Hat Inc\par 102\hfill nickc\@credhat.com, doc\@redhat.com\par 103\hfill {\it Using LD, the GNU linker}\par 104\hfill Edited by Jeffrey Osier (jeffrey\@cygnus.com)\par 105} 106\global\parindent=0pt % Steve likes it this way. 107@end tex 108 109@vskip 0pt plus 1filll 110@c man begin COPYRIGHT 111Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 1122002, 2003, 2004 Free Software Foundation, Inc. 113 114Permission is granted to copy, distribute and/or modify this document 115under the terms of the GNU Free Documentation License, Version 1.1 116or any later version published by the Free Software Foundation; 117with no Invariant Sections, with no Front-Cover Texts, and with no 118Back-Cover Texts. A copy of the license is included in the 119section entitled ``GNU Free Documentation License''. 120@c man end 121 122@end titlepage 123@end iftex 124@c FIXME: Talk about importance of *order* of args, cmds to linker! 125 126@ifnottex 127@node Top 128@top Using ld 129This file documents the @sc{gnu} linker ld version @value{VERSION}. 130 131This document is distributed under the terms of the GNU Free 132Documentation License. A copy of the license is included in the 133section entitled ``GNU Free Documentation License''. 134 135@menu 136* Overview:: Overview 137* Invocation:: Invocation 138* Scripts:: Linker Scripts 139@ifset GENERIC 140* Machine Dependent:: Machine Dependent Features 141@end ifset 142@ifclear GENERIC 143@ifset H8300 144* H8/300:: ld and the H8/300 145@end ifset 146@ifset Renesas 147* Renesas:: ld and other Renesas micros 148@end ifset 149@ifset I960 150* i960:: ld and the Intel 960 family 151@end ifset 152@ifset ARM 153* ARM:: ld and the ARM family 154@end ifset 155@ifset HPPA 156* HPPA ELF32:: ld and HPPA 32-bit ELF 157@end ifset 158@ifset M68HC11 159* M68HC11/68HC12:: ld and the Motorola 68HC11 and 68HC12 families 160@end ifset 161@ifset POWERPC 162* PowerPC ELF32:: ld and PowerPC 32-bit ELF Support 163@end ifset 164@ifset POWERPC64 165* PowerPC64 ELF64:: ld and PowerPC64 64-bit ELF Support 166@end ifset 167@ifset TICOFF 168* TI COFF:: ld and the TI COFF 169@end ifset 170@ifset WIN32 171* Win32:: ld and WIN32 (cygwin/mingw) 172@end ifset 173@ifset XTENSA 174* Xtensa:: ld and Xtensa Processors 175@end ifset 176@end ifclear 177@ifclear SingleFormat 178* BFD:: BFD 179@end ifclear 180@c Following blank line required for remaining bug in makeinfo conds/menus 181 182* Reporting Bugs:: Reporting Bugs 183* MRI:: MRI Compatible Script Files 184* GNU Free Documentation License:: GNU Free Documentation License 185* Index:: Index 186@end menu 187@end ifnottex 188 189@node Overview 190@chapter Overview 191 192@cindex @sc{gnu} linker 193@cindex what is this? 194 195@ifset man 196@c man begin SYNOPSIS 197ld [@b{options}] @var{objfile} @dots{} 198@c man end 199 200@c man begin SEEALSO 201ar(1), nm(1), objcopy(1), objdump(1), readelf(1) and 202the Info entries for @file{binutils} and 203@file{ld}. 204@c man end 205@end ifset 206 207@c man begin DESCRIPTION 208 209@command{ld} combines a number of object and archive files, relocates 210their data and ties up symbol references. Usually the last step in 211compiling a program is to run @command{ld}. 212 213@command{ld} accepts Linker Command Language files written in 214a superset of AT&T's Link Editor Command Language syntax, 215to provide explicit and total control over the linking process. 216 217@ifset man 218@c For the man only 219This man page does not describe the command language; see the 220@command{ld} entry in @code{info}, or the manual 221ld: the GNU linker, for full details on the command language and 222on other aspects of the GNU linker. 223@end ifset 224 225@ifclear SingleFormat 226This version of @command{ld} uses the general purpose BFD libraries 227to operate on object files. This allows @command{ld} to read, combine, and 228write object files in many different formats---for example, COFF or 229@code{a.out}. Different formats may be linked together to produce any 230available kind of object file. @xref{BFD}, for more information. 231@end ifclear 232 233Aside from its flexibility, the @sc{gnu} linker is more helpful than other 234linkers in providing diagnostic information. Many linkers abandon 235execution immediately upon encountering an error; whenever possible, 236@command{ld} continues executing, allowing you to identify other errors 237(or, in some cases, to get an output file in spite of the error). 238 239@c man end 240 241@node Invocation 242@chapter Invocation 243 244@c man begin DESCRIPTION 245 246The @sc{gnu} linker @command{ld} is meant to cover a broad range of situations, 247and to be as compatible as possible with other linkers. As a result, 248you have many choices to control its behavior. 249 250@c man end 251 252@ifset UsesEnvVars 253@menu 254* Options:: Command Line Options 255* Environment:: Environment Variables 256@end menu 257 258@node Options 259@section Command Line Options 260@end ifset 261 262@cindex command line 263@cindex options 264 265@c man begin OPTIONS 266 267The linker supports a plethora of command-line options, but in actual 268practice few of them are used in any particular context. 269@cindex standard Unix system 270For instance, a frequent use of @command{ld} is to link standard Unix 271object files on a standard, supported Unix system. On such a system, to 272link a file @code{hello.o}: 273 274@smallexample 275ld -o @var{output} /lib/crt0.o hello.o -lc 276@end smallexample 277 278This tells @command{ld} to produce a file called @var{output} as the 279result of linking the file @code{/lib/crt0.o} with @code{hello.o} and 280the library @code{libc.a}, which will come from the standard search 281directories. (See the discussion of the @samp{-l} option below.) 282 283Some of the command-line options to @command{ld} may be specified at any 284point in the command line. However, options which refer to files, such 285as @samp{-l} or @samp{-T}, cause the file to be read at the point at 286which the option appears in the command line, relative to the object 287files and other file options. Repeating non-file options with a 288different argument will either have no further effect, or override prior 289occurrences (those further to the left on the command line) of that 290option. Options which may be meaningfully specified more than once are 291noted in the descriptions below. 292 293@cindex object files 294Non-option arguments are object files or archives which are to be linked 295together. They may follow, precede, or be mixed in with command-line 296options, except that an object file argument may not be placed between 297an option and its argument. 298 299Usually the linker is invoked with at least one object file, but you can 300specify other forms of binary input files using @samp{-l}, @samp{-R}, 301and the script command language. If @emph{no} binary input files at all 302are specified, the linker does not produce any output, and issues the 303message @samp{No input files}. 304 305If the linker cannot recognize the format of an object file, it will 306assume that it is a linker script. A script specified in this way 307augments the main linker script used for the link (either the default 308linker script or the one specified by using @samp{-T}). This feature 309permits the linker to link against a file which appears to be an object 310or an archive, but actually merely defines some symbol values, or uses 311@code{INPUT} or @code{GROUP} to load other objects. Note that 312specifying a script in this way merely augments the main linker script; 313use the @samp{-T} option to replace the default linker script entirely. 314@xref{Scripts}. 315 316For options whose names are a single letter, 317option arguments must either follow the option letter without intervening 318whitespace, or be given as separate arguments immediately following the 319option that requires them. 320 321For options whose names are multiple letters, either one dash or two can 322precede the option name; for example, @samp{-trace-symbol} and 323@samp{--trace-symbol} are equivalent. Note---there is one exception to 324this rule. Multiple letter options that start with a lower case 'o' can 325only be preceeded by two dashes. This is to reduce confusion with the 326@samp{-o} option. So for example @samp{-omagic} sets the output file 327name to @samp{magic} whereas @samp{--omagic} sets the NMAGIC flag on the 328output. 329 330Arguments to multiple-letter options must either be separated from the 331option name by an equals sign, or be given as separate arguments 332immediately following the option that requires them. For example, 333@samp{--trace-symbol foo} and @samp{--trace-symbol=foo} are equivalent. 334Unique abbreviations of the names of multiple-letter options are 335accepted. 336 337Note---if the linker is being invoked indirectly, via a compiler driver 338(e.g. @samp{gcc}) then all the linker command line options should be 339prefixed by @samp{-Wl,} (or whatever is appropriate for the particular 340compiler driver) like this: 341 342@smallexample 343 gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup 344@end smallexample 345 346This is important, because otherwise the compiler driver program may 347silently drop the linker options, resulting in a bad link. 348 349Here is a table of the generic command line switches accepted by the GNU 350linker: 351 352@table @gcctabopt 353@include at-file.texi 354 355@kindex -a@var{keyword} 356@item -a@var{keyword} 357This option is supported for HP/UX compatibility. The @var{keyword} 358argument must be one of the strings @samp{archive}, @samp{shared}, or 359@samp{default}. @samp{-aarchive} is functionally equivalent to 360@samp{-Bstatic}, and the other two keywords are functionally equivalent 361to @samp{-Bdynamic}. This option may be used any number of times. 362 363@ifset I960 364@cindex architectures 365@kindex -A@var{arch} 366@item -A@var{architecture} 367@kindex --architecture=@var{arch} 368@itemx --architecture=@var{architecture} 369In the current release of @command{ld}, this option is useful only for the 370Intel 960 family of architectures. In that @command{ld} configuration, the 371@var{architecture} argument identifies the particular architecture in 372the 960 family, enabling some safeguards and modifying the 373archive-library search path. @xref{i960,,@command{ld} and the Intel 960 374family}, for details. 375 376Future releases of @command{ld} may support similar functionality for 377other architecture families. 378@end ifset 379 380@ifclear SingleFormat 381@cindex binary input format 382@kindex -b @var{format} 383@kindex --format=@var{format} 384@cindex input format 385@cindex input format 386@item -b @var{input-format} 387@itemx --format=@var{input-format} 388@command{ld} may be configured to support more than one kind of object 389file. If your @command{ld} is configured this way, you can use the 390@samp{-b} option to specify the binary format for input object files 391that follow this option on the command line. Even when @command{ld} is 392configured to support alternative object formats, you don't usually need 393to specify this, as @command{ld} should be configured to expect as a 394default input format the most usual format on each machine. 395@var{input-format} is a text string, the name of a particular format 396supported by the BFD libraries. (You can list the available binary 397formats with @samp{objdump -i}.) 398@xref{BFD}. 399 400You may want to use this option if you are linking files with an unusual 401binary format. You can also use @samp{-b} to switch formats explicitly (when 402linking object files of different formats), by including 403@samp{-b @var{input-format}} before each group of object files in a 404particular format. 405 406The default format is taken from the environment variable 407@code{GNUTARGET}. 408@ifset UsesEnvVars 409@xref{Environment}. 410@end ifset 411You can also define the input format from a script, using the command 412@code{TARGET}; 413@ifclear man 414see @ref{Format Commands}. 415@end ifclear 416@end ifclear 417 418@kindex -c @var{MRI-cmdfile} 419@kindex --mri-script=@var{MRI-cmdfile} 420@cindex compatibility, MRI 421@item -c @var{MRI-commandfile} 422@itemx --mri-script=@var{MRI-commandfile} 423For compatibility with linkers produced by MRI, @command{ld} accepts script 424files written in an alternate, restricted command language, described in 425@ifclear man 426@ref{MRI,,MRI Compatible Script Files}. 427@end ifclear 428@ifset man 429the MRI Compatible Script Files section of GNU ld documentation. 430@end ifset 431Introduce MRI script files with 432the option @samp{-c}; use the @samp{-T} option to run linker 433scripts written in the general-purpose @command{ld} scripting language. 434If @var{MRI-cmdfile} does not exist, @command{ld} looks for it in the directories 435specified by any @samp{-L} options. 436 437@cindex common allocation 438@kindex -d 439@kindex -dc 440@kindex -dp 441@item -d 442@itemx -dc 443@itemx -dp 444These three options are equivalent; multiple forms are supported for 445compatibility with other linkers. They assign space to common symbols 446even if a relocatable output file is specified (with @samp{-r}). The 447script command @code{FORCE_COMMON_ALLOCATION} has the same effect. 448@xref{Miscellaneous Commands}. 449 450@cindex entry point, from command line 451@kindex -e @var{entry} 452@kindex --entry=@var{entry} 453@item -e @var{entry} 454@itemx --entry=@var{entry} 455Use @var{entry} as the explicit symbol for beginning execution of your 456program, rather than the default entry point. If there is no symbol 457named @var{entry}, the linker will try to parse @var{entry} as a number, 458and use that as the entry address (the number will be interpreted in 459base 10; you may use a leading @samp{0x} for base 16, or a leading 460@samp{0} for base 8). @xref{Entry Point}, for a discussion of defaults 461and other ways of specifying the entry point. 462 463@kindex --exclude-libs 464@item --exclude-libs @var{lib},@var{lib},... 465Specifies a list of archive libraries from which symbols should not be automatically 466exported. The library names may be delimited by commas or colons. Specifying 467@code{--exclude-libs ALL} excludes symbols in all archive libraries from 468automatic export. This option is available only for the i386 PE targeted 469port of the linker and for ELF targeted ports. For i386 PE, symbols 470explicitly listed in a .def file are still exported, regardless of this 471option. For ELF targeted ports, symbols affected by this option will 472be treated as hidden. 473 474@cindex dynamic symbol table 475@kindex -E 476@kindex --export-dynamic 477@item -E 478@itemx --export-dynamic 479When creating a dynamically linked executable, add all symbols to the 480dynamic symbol table. The dynamic symbol table is the set of symbols 481which are visible from dynamic objects at run time. 482 483If you do not use this option, the dynamic symbol table will normally 484contain only those symbols which are referenced by some dynamic object 485mentioned in the link. 486 487If you use @code{dlopen} to load a dynamic object which needs to refer 488back to the symbols defined by the program, rather than some other 489dynamic object, then you will probably need to use this option when 490linking the program itself. 491 492You can also use the version script to control what symbols should 493be added to the dynamic symbol table if the output format supports it. 494See the description of @samp{--version-script} in @ref{VERSION}. 495 496@ifclear SingleFormat 497@cindex big-endian objects 498@cindex endianness 499@kindex -EB 500@item -EB 501Link big-endian objects. This affects the default output format. 502 503@cindex little-endian objects 504@kindex -EL 505@item -EL 506Link little-endian objects. This affects the default output format. 507@end ifclear 508 509@kindex -f 510@kindex --auxiliary 511@item -f 512@itemx --auxiliary @var{name} 513When creating an ELF shared object, set the internal DT_AUXILIARY field 514to the specified name. This tells the dynamic linker that the symbol 515table of the shared object should be used as an auxiliary filter on the 516symbol table of the shared object @var{name}. 517 518If you later link a program against this filter object, then, when you 519run the program, the dynamic linker will see the DT_AUXILIARY field. If 520the dynamic linker resolves any symbols from the filter object, it will 521first check whether there is a definition in the shared object 522@var{name}. If there is one, it will be used instead of the definition 523in the filter object. The shared object @var{name} need not exist. 524Thus the shared object @var{name} may be used to provide an alternative 525implementation of certain functions, perhaps for debugging or for 526machine specific performance. 527 528This option may be specified more than once. The DT_AUXILIARY entries 529will be created in the order in which they appear on the command line. 530 531@kindex -F 532@kindex --filter 533@item -F @var{name} 534@itemx --filter @var{name} 535When creating an ELF shared object, set the internal DT_FILTER field to 536the specified name. This tells the dynamic linker that the symbol table 537of the shared object which is being created should be used as a filter 538on the symbol table of the shared object @var{name}. 539 540If you later link a program against this filter object, then, when you 541run the program, the dynamic linker will see the DT_FILTER field. The 542dynamic linker will resolve symbols according to the symbol table of the 543filter object as usual, but it will actually link to the definitions 544found in the shared object @var{name}. Thus the filter object can be 545used to select a subset of the symbols provided by the object 546@var{name}. 547 548Some older linkers used the @option{-F} option throughout a compilation 549toolchain for specifying object-file format for both input and output 550object files. 551@ifclear SingleFormat 552The @sc{gnu} linker uses other mechanisms for this purpose: the 553@option{-b}, @option{--format}, @option{--oformat} options, the 554@code{TARGET} command in linker scripts, and the @code{GNUTARGET} 555environment variable. 556@end ifclear 557The @sc{gnu} linker will ignore the @option{-F} option when not 558creating an ELF shared object. 559 560@cindex finalization function 561@kindex -fini 562@item -fini @var{name} 563When creating an ELF executable or shared object, call NAME when the 564executable or shared object is unloaded, by setting DT_FINI to the 565address of the function. By default, the linker uses @code{_fini} as 566the function to call. 567 568@kindex -g 569@item -g 570Ignored. Provided for compatibility with other tools. 571 572@kindex -G 573@kindex --gpsize 574@cindex object size 575@item -G@var{value} 576@itemx --gpsize=@var{value} 577Set the maximum size of objects to be optimized using the GP register to 578@var{size}. This is only meaningful for object file formats such as 579MIPS ECOFF which supports putting large and small objects into different 580sections. This is ignored for other object file formats. 581 582@cindex runtime library name 583@kindex -h@var{name} 584@kindex -soname=@var{name} 585@item -h@var{name} 586@itemx -soname=@var{name} 587When creating an ELF shared object, set the internal DT_SONAME field to 588the specified name. When an executable is linked with a shared object 589which has a DT_SONAME field, then when the executable is run the dynamic 590linker will attempt to load the shared object specified by the DT_SONAME 591field rather than the using the file name given to the linker. 592 593@kindex -i 594@cindex incremental link 595@item -i 596Perform an incremental link (same as option @samp{-r}). 597 598@cindex initialization function 599@kindex -init 600@item -init @var{name} 601When creating an ELF executable or shared object, call NAME when the 602executable or shared object is loaded, by setting DT_INIT to the address 603of the function. By default, the linker uses @code{_init} as the 604function to call. 605 606@cindex archive files, from cmd line 607@kindex -l@var{archive} 608@kindex --library=@var{archive} 609@item -l@var{archive} 610@itemx --library=@var{archive} 611Add archive file @var{archive} to the list of files to link. This 612option may be used any number of times. @command{ld} will search its 613path-list for occurrences of @code{lib@var{archive}.a} for every 614@var{archive} specified. 615 616On systems which support shared libraries, @command{ld} may also search for 617libraries with extensions other than @code{.a}. Specifically, on ELF 618and SunOS systems, @command{ld} will search a directory for a library with 619an extension of @code{.so} before searching for one with an extension of 620@code{.a}. By convention, a @code{.so} extension indicates a shared 621library. 622 623The linker will search an archive only once, at the location where it is 624specified on the command line. If the archive defines a symbol which 625was undefined in some object which appeared before the archive on the 626command line, the linker will include the appropriate file(s) from the 627archive. However, an undefined symbol in an object appearing later on 628the command line will not cause the linker to search the archive again. 629 630See the @option{-(} option for a way to force the linker to search 631archives multiple times. 632 633You may list the same archive multiple times on the command line. 634 635@ifset GENERIC 636This type of archive searching is standard for Unix linkers. However, 637if you are using @command{ld} on AIX, note that it is different from the 638behaviour of the AIX linker. 639@end ifset 640 641@cindex search directory, from cmd line 642@kindex -L@var{dir} 643@kindex --library-path=@var{dir} 644@item -L@var{searchdir} 645@itemx --library-path=@var{searchdir} 646Add path @var{searchdir} to the list of paths that @command{ld} will search 647for archive libraries and @command{ld} control scripts. You may use this 648option any number of times. The directories are searched in the order 649in which they are specified on the command line. Directories specified 650on the command line are searched before the default directories. All 651@option{-L} options apply to all @option{-l} options, regardless of the 652order in which the options appear. 653 654If @var{searchdir} begins with @code{=}, then the @code{=} will be replaced 655by the @dfn{sysroot prefix}, a path specified when the linker is configured. 656 657@ifset UsesEnvVars 658The default set of paths searched (without being specified with 659@samp{-L}) depends on which emulation mode @command{ld} is using, and in 660some cases also on how it was configured. @xref{Environment}. 661@end ifset 662 663The paths can also be specified in a link script with the 664@code{SEARCH_DIR} command. Directories specified this way are searched 665at the point in which the linker script appears in the command line. 666 667@cindex emulation 668@kindex -m @var{emulation} 669@item -m@var{emulation} 670Emulate the @var{emulation} linker. You can list the available 671emulations with the @samp{--verbose} or @samp{-V} options. 672 673If the @samp{-m} option is not used, the emulation is taken from the 674@code{LDEMULATION} environment variable, if that is defined. 675 676Otherwise, the default emulation depends upon how the linker was 677configured. 678 679@cindex link map 680@kindex -M 681@kindex --print-map 682@item -M 683@itemx --print-map 684Print a link map to the standard output. A link map provides 685information about the link, including the following: 686 687@itemize @bullet 688@item 689Where object files are mapped into memory. 690@item 691How common symbols are allocated. 692@item 693All archive members included in the link, with a mention of the symbol 694which caused the archive member to be brought in. 695@item 696The values assigned to symbols. 697 698Note - symbols whose values are computed by an expression which 699involves a reference to a previous value of the same symbol may not 700have correct result displayed in the link map. This is because the 701linker discards intermediate results and only retains the final value 702of an expression. Under such circumstances the linker will display 703the final value enclosed by square brackets. Thus for example a 704linker script containing: 705 706@smallexample 707 foo = 1 708 foo = foo * 4 709 foo = foo + 8 710@end smallexample 711 712will produce the following output in the link map if the @option{-M} 713option is used: 714 715@smallexample 716 0x00000001 foo = 0x1 717 [0x0000000c] foo = (foo * 0x4) 718 [0x0000000c] foo = (foo + 0x8) 719@end smallexample 720 721See @ref{Expressions} for more information about expressions in linker 722scripts. 723@end itemize 724 725@kindex -n 726@cindex read-only text 727@cindex NMAGIC 728@kindex --nmagic 729@item -n 730@itemx --nmagic 731Turn off page alignment of sections, and mark the output as 732@code{NMAGIC} if possible. 733 734@kindex -N 735@kindex --omagic 736@cindex read/write from cmd line 737@cindex OMAGIC 738@item -N 739@itemx --omagic 740Set the text and data sections to be readable and writable. Also, do 741not page-align the data segment, and disable linking against shared 742libraries. If the output format supports Unix style magic numbers, 743mark the output as @code{OMAGIC}. Note: Although a writable text section 744is allowed for PE-COFF targets, it does not conform to the format 745specification published by Microsoft. 746 747@kindex --no-omagic 748@cindex OMAGIC 749@item --no-omagic 750This option negates most of the effects of the @option{-N} option. It 751sets the text section to be read-only, and forces the data segment to 752be page-aligned. Note - this option does not enable linking against 753shared libraries. Use @option{-Bdynamic} for this. 754 755@kindex -o @var{output} 756@kindex --output=@var{output} 757@cindex naming the output file 758@item -o @var{output} 759@itemx --output=@var{output} 760Use @var{output} as the name for the program produced by @command{ld}; if this 761option is not specified, the name @file{a.out} is used by default. The 762script command @code{OUTPUT} can also specify the output file name. 763 764@kindex -O @var{level} 765@cindex generating optimized output 766@item -O @var{level} 767If @var{level} is a numeric values greater than zero @command{ld} optimizes 768the output. This might take significantly longer and therefore probably 769should only be enabled for the final binary. 770 771@kindex -q 772@kindex --emit-relocs 773@cindex retain relocations in final executable 774@item -q 775@itemx --emit-relocs 776Leave relocation sections and contents in fully linked exececutables. 777Post link analysis and optimization tools may need this information in 778order to perform correct modifications of executables. This results 779in larger executables. 780 781This option is currently only supported on ELF platforms. 782 783@kindex --force-dynamic 784@cindex forcing the creation of dynamic sections 785@item --force-dynamic 786Force the output file to have dynamic sections. This option is specific 787to VxWorks targets. 788 789@cindex partial link 790@cindex relocatable output 791@kindex -r 792@kindex --relocatable 793@item -r 794@itemx --relocatable 795Generate relocatable output---i.e., generate an output file that can in 796turn serve as input to @command{ld}. This is often called @dfn{partial 797linking}. As a side effect, in environments that support standard Unix 798magic numbers, this option also sets the output file's magic number to 799@code{OMAGIC}. 800@c ; see @option{-N}. 801If this option is not specified, an absolute file is produced. When 802linking C++ programs, this option @emph{will not} resolve references to 803constructors; to do that, use @samp{-Ur}. 804 805When an input file does not have the same format as the output file, 806partial linking is only supported if that input file does not contain any 807relocations. Different output formats can have further restrictions; for 808example some @code{a.out}-based formats do not support partial linking 809with input files in other formats at all. 810 811This option does the same thing as @samp{-i}. 812 813@kindex -R @var{file} 814@kindex --just-symbols=@var{file} 815@cindex symbol-only input 816@item -R @var{filename} 817@itemx --just-symbols=@var{filename} 818Read symbol names and their addresses from @var{filename}, but do not 819relocate it or include it in the output. This allows your output file 820to refer symbolically to absolute locations of memory defined in other 821programs. You may use this option more than once. 822 823For compatibility with other ELF linkers, if the @option{-R} option is 824followed by a directory name, rather than a file name, it is treated as 825the @option{-rpath} option. 826 827@kindex -s 828@kindex --strip-all 829@cindex strip all symbols 830@item -s 831@itemx --strip-all 832Omit all symbol information from the output file. 833 834@kindex -S 835@kindex --strip-debug 836@cindex strip debugger symbols 837@item -S 838@itemx --strip-debug 839Omit debugger symbol information (but not all symbols) from the output file. 840 841@kindex -t 842@kindex --trace 843@cindex input files, displaying 844@item -t 845@itemx --trace 846Print the names of the input files as @command{ld} processes them. 847 848@kindex -T @var{script} 849@kindex --script=@var{script} 850@cindex script files 851@item -T @var{scriptfile} 852@itemx --script=@var{scriptfile} 853Use @var{scriptfile} as the linker script. This script replaces 854@command{ld}'s default linker script (rather than adding to it), so 855@var{commandfile} must specify everything necessary to describe the 856output file. @xref{Scripts}. If @var{scriptfile} does not exist in 857the current directory, @code{ld} looks for it in the directories 858specified by any preceding @samp{-L} options. Multiple @samp{-T} 859options accumulate. 860 861@kindex -u @var{symbol} 862@kindex --undefined=@var{symbol} 863@cindex undefined symbol 864@item -u @var{symbol} 865@itemx --undefined=@var{symbol} 866Force @var{symbol} to be entered in the output file as an undefined 867symbol. Doing this may, for example, trigger linking of additional 868modules from standard libraries. @samp{-u} may be repeated with 869different option arguments to enter additional undefined symbols. This 870option is equivalent to the @code{EXTERN} linker script command. 871 872@kindex -Ur 873@cindex constructors 874@item -Ur 875For anything other than C++ programs, this option is equivalent to 876@samp{-r}: it generates relocatable output---i.e., an output file that can in 877turn serve as input to @command{ld}. When linking C++ programs, @samp{-Ur} 878@emph{does} resolve references to constructors, unlike @samp{-r}. 879It does not work to use @samp{-Ur} on files that were themselves linked 880with @samp{-Ur}; once the constructor table has been built, it cannot 881be added to. Use @samp{-Ur} only for the last partial link, and 882@samp{-r} for the others. 883 884@kindex --unique[=@var{SECTION}] 885@item --unique[=@var{SECTION}] 886Creates a separate output section for every input section matching 887@var{SECTION}, or if the optional wildcard @var{SECTION} argument is 888missing, for every orphan input section. An orphan section is one not 889specifically mentioned in a linker script. You may use this option 890multiple times on the command line; It prevents the normal merging of 891input sections with the same name, overriding output section assignments 892in a linker script. 893 894@kindex -v 895@kindex -V 896@kindex --version 897@cindex version 898@item -v 899@itemx --version 900@itemx -V 901Display the version number for @command{ld}. The @option{-V} option also 902lists the supported emulations. 903 904@kindex -x 905@kindex --discard-all 906@cindex deleting local symbols 907@item -x 908@itemx --discard-all 909Delete all local symbols. 910 911@kindex -X 912@kindex --discard-locals 913@cindex local symbols, deleting 914@cindex L, deleting symbols beginning 915@item -X 916@itemx --discard-locals 917Delete all temporary local symbols. For most targets, this is all local 918symbols whose names begin with @samp{L}. 919 920@kindex -y @var{symbol} 921@kindex --trace-symbol=@var{symbol} 922@cindex symbol tracing 923@item -y @var{symbol} 924@itemx --trace-symbol=@var{symbol} 925Print the name of each linked file in which @var{symbol} appears. This 926option may be given any number of times. On many systems it is necessary 927to prepend an underscore. 928 929This option is useful when you have an undefined symbol in your link but 930don't know where the reference is coming from. 931 932@kindex -Y @var{path} 933@item -Y @var{path} 934Add @var{path} to the default library search path. This option exists 935for Solaris compatibility. 936 937@kindex -z @var{keyword} 938@item -z @var{keyword} 939The recognized keywords are: 940@table @samp 941 942@item combreloc 943Combines multiple reloc sections and sorts them to make dynamic symbol 944lookup caching possible. 945 946@item defs 947Disallows undefined symbols in object files. Undefined symbols in 948shared libraries are still allowed. 949 950@item execstack 951Marks the object as requiring executable stack. 952 953@item initfirst 954This option is only meaningful when building a shared object. 955It marks the object so that its runtime initialization will occur 956before the runtime initialization of any other objects brought into 957the process at the same time. Similarly the runtime finalization of 958the object will occur after the runtime finalization of any other 959objects. 960 961@item interpose 962Marks the object that its symbol table interposes before all symbols 963but the primary executable. 964 965@item loadfltr 966Marks the object that its filters be processed immediately at 967runtime. 968 969@item muldefs 970Allows multiple definitions. 971 972@item nocombreloc 973Disables multiple reloc sections combining. 974 975@item nocopyreloc 976Disables production of copy relocs. 977 978@item nodefaultlib 979Marks the object that the search for dependencies of this object will 980ignore any default library search paths. 981 982@item nodelete 983Marks the object shouldn't be unloaded at runtime. 984 985@item nodlopen 986Marks the object not available to @code{dlopen}. 987 988@item nodump 989Marks the object can not be dumped by @code{dldump}. 990 991@item noexecstack 992Marks the object as not requiring executable stack. 993 994@item norelro 995Don't create an ELF @code{PT_GNU_RELRO} segment header in the object. 996 997@item now 998When generating an executable or shared library, mark it to tell the 999dynamic linker to resolve all symbols when the program is started, or 1000when the shared library is linked to using dlopen, instead of 1001deferring function call resolution to the point when the function is 1002first called. 1003 1004@item origin 1005Marks the object may contain $ORIGIN. 1006 1007@item relro 1008Create an ELF @code{PT_GNU_RELRO} segment header in the object. 1009 1010@end table 1011 1012Other keywords are ignored for Solaris compatibility. 1013 1014@kindex -Z 1015@item -Z 1016Produce 'Standard' executables, disables Writable XOR Executable features 1017in resulting binaries. 1018 1019@kindex -( 1020@cindex groups of archives 1021@item -( @var{archives} -) 1022@itemx --start-group @var{archives} --end-group 1023The @var{archives} should be a list of archive files. They may be 1024either explicit file names, or @samp{-l} options. 1025 1026The specified archives are searched repeatedly until no new undefined 1027references are created. Normally, an archive is searched only once in 1028the order that it is specified on the command line. If a symbol in that 1029archive is needed to resolve an undefined symbol referred to by an 1030object in an archive that appears later on the command line, the linker 1031would not be able to resolve that reference. By grouping the archives, 1032they all be searched repeatedly until all possible references are 1033resolved. 1034 1035Using this option has a significant performance cost. It is best to use 1036it only when there are unavoidable circular references between two or 1037more archives. 1038 1039@kindex --accept-unknown-input-arch 1040@kindex --no-accept-unknown-input-arch 1041@item --accept-unknown-input-arch 1042@itemx --no-accept-unknown-input-arch 1043Tells the linker to accept input files whose architecture cannot be 1044recognised. The assumption is that the user knows what they are doing 1045and deliberately wants to link in these unknown input files. This was 1046the default behaviour of the linker, before release 2.14. The default 1047behaviour from release 2.14 onwards is to reject such input files, and 1048so the @samp{--accept-unknown-input-arch} option has been added to 1049restore the old behaviour. 1050 1051@kindex --as-needed 1052@kindex --no-as-needed 1053@item --as-needed 1054@itemx --no-as-needed 1055This option affects ELF DT_NEEDED tags for dynamic libraries mentioned 1056on the command line after the @option{--as-needed} option. Normally, 1057the linker will add a DT_NEEDED tag for each dynamic library mentioned 1058on the command line, regardless of whether the library is actually 1059needed. @option{--as-needed} causes DT_NEEDED tags to only be emitted 1060for libraries that satisfy some symbol reference from regular objects 1061which is undefined at the point that the library was linked. 1062@option{--no-as-needed} restores the default behaviour. 1063 1064@kindex --add-needed 1065@kindex --no-add-needed 1066@item --add-needed 1067@itemx --no-add-needed 1068This option affects the treatment of dynamic libraries from ELF 1069DT_NEEDED tags in dynamic libraries mentioned on the command line after 1070the @option{--no-add-needed} option. Normally, the linker will add 1071a DT_NEEDED tag for each dynamic library from DT_NEEDED tags. 1072@option{--no-add-needed} causes DT_NEEDED tags will never be emitted 1073for those libraries from DT_NEEDED tags. @option{--add-needed} restores 1074the default behaviour. 1075 1076@kindex -assert @var{keyword} 1077@item -assert @var{keyword} 1078This option is ignored for SunOS compatibility. 1079 1080@kindex -Bdynamic 1081@kindex -dy 1082@kindex -call_shared 1083@item -Bdynamic 1084@itemx -dy 1085@itemx -call_shared 1086Link against dynamic libraries. This is only meaningful on platforms 1087for which shared libraries are supported. This option is normally the 1088default on such platforms. The different variants of this option are 1089for compatibility with various systems. You may use this option 1090multiple times on the command line: it affects library searching for 1091@option{-l} options which follow it. 1092 1093@kindex -Bgroup 1094@item -Bgroup 1095Set the @code{DF_1_GROUP} flag in the @code{DT_FLAGS_1} entry in the dynamic 1096section. This causes the runtime linker to handle lookups in this 1097object and its dependencies to be performed only inside the group. 1098@option{--unresolved-symbols=report-all} is implied. This option is 1099only meaningful on ELF platforms which support shared libraries. 1100 1101@kindex -Bstatic 1102@kindex -dn 1103@kindex -non_shared 1104@kindex -static 1105@item -Bstatic 1106@itemx -dn 1107@itemx -non_shared 1108@itemx -static 1109Do not link against shared libraries. This is only meaningful on 1110platforms for which shared libraries are supported. The different 1111variants of this option are for compatibility with various systems. You 1112may use this option multiple times on the command line: it affects 1113library searching for @option{-l} options which follow it. This 1114option also implies @option{--unresolved-symbols=report-all}. This 1115option can be used with @option{-shared}. Doing so means that a 1116shared library is being created but that all of the library's external 1117references must be resolved by pulling in entries from static 1118libraries. 1119 1120@kindex -Bsymbolic 1121@item -Bsymbolic 1122When creating a shared library, bind references to global symbols to the 1123definition within the shared library, if any. Normally, it is possible 1124for a program linked against a shared library to override the definition 1125within the shared library. This option is only meaningful on ELF 1126platforms which support shared libraries. 1127 1128@kindex --check-sections 1129@kindex --no-check-sections 1130@item --check-sections 1131@itemx --no-check-sections 1132Asks the linker @emph{not} to check section addresses after they have 1133been assigned to see if there are any overlaps. Normally the linker will 1134perform this check, and if it finds any overlaps it will produce 1135suitable error messages. The linker does know about, and does make 1136allowances for sections in overlays. The default behaviour can be 1137restored by using the command line switch @option{--check-sections}. 1138 1139@cindex cross reference table 1140@kindex --cref 1141@item --cref 1142Output a cross reference table. If a linker map file is being 1143generated, the cross reference table is printed to the map file. 1144Otherwise, it is printed on the standard output. 1145 1146The format of the table is intentionally simple, so that it may be 1147easily processed by a script if necessary. The symbols are printed out, 1148sorted by name. For each symbol, a list of file names is given. If the 1149symbol is defined, the first file listed is the location of the 1150definition. The remaining files contain references to the symbol. 1151 1152@cindex common allocation 1153@kindex --no-define-common 1154@item --no-define-common 1155This option inhibits the assignment of addresses to common symbols. 1156The script command @code{INHIBIT_COMMON_ALLOCATION} has the same effect. 1157@xref{Miscellaneous Commands}. 1158 1159The @samp{--no-define-common} option allows decoupling 1160the decision to assign addresses to Common symbols from the choice 1161of the output file type; otherwise a non-Relocatable output type 1162forces assigning addresses to Common symbols. 1163Using @samp{--no-define-common} allows Common symbols that are referenced 1164from a shared library to be assigned addresses only in the main program. 1165This eliminates the unused duplicate space in the shared library, 1166and also prevents any possible confusion over resolving to the wrong 1167duplicate when there are many dynamic modules with specialized search 1168paths for runtime symbol resolution. 1169 1170@cindex symbols, from command line 1171@kindex --defsym @var{symbol}=@var{exp} 1172@item --defsym @var{symbol}=@var{expression} 1173Create a global symbol in the output file, containing the absolute 1174address given by @var{expression}. You may use this option as many 1175times as necessary to define multiple symbols in the command line. A 1176limited form of arithmetic is supported for the @var{expression} in this 1177context: you may give a hexadecimal constant or the name of an existing 1178symbol, or use @code{+} and @code{-} to add or subtract hexadecimal 1179constants or symbols. If you need more elaborate expressions, consider 1180using the linker command language from a script (@pxref{Assignments,, 1181Assignment: Symbol Definitions}). @emph{Note:} there should be no white 1182space between @var{symbol}, the equals sign (``@key{=}''), and 1183@var{expression}. 1184 1185@cindex demangling, from command line 1186@kindex --demangle[=@var{style}] 1187@kindex --no-demangle 1188@item --demangle[=@var{style}] 1189@itemx --no-demangle 1190These options control whether to demangle symbol names in error messages 1191and other output. When the linker is told to demangle, it tries to 1192present symbol names in a readable fashion: it strips leading 1193underscores if they are used by the object file format, and converts C++ 1194mangled symbol names into user readable names. Different compilers have 1195different mangling styles. The optional demangling style argument can be used 1196to choose an appropriate demangling style for your compiler. The linker will 1197demangle by default unless the environment variable @samp{COLLECT_NO_DEMANGLE} 1198is set. These options may be used to override the default. 1199 1200@cindex dynamic linker, from command line 1201@kindex -I@var{file} 1202@kindex --dynamic-linker @var{file} 1203@item --dynamic-linker @var{file} 1204Set the name of the dynamic linker. This is only meaningful when 1205generating dynamically linked ELF executables. The default dynamic 1206linker is normally correct; don't use this unless you know what you are 1207doing. 1208 1209 1210@kindex --fatal-warnings 1211@item --fatal-warnings 1212Treat all warnings as errors. 1213 1214@kindex --force-exe-suffix 1215@item --force-exe-suffix 1216Make sure that an output file has a .exe suffix. 1217 1218If a successfully built fully linked output file does not have a 1219@code{.exe} or @code{.dll} suffix, this option forces the linker to copy 1220the output file to one of the same name with a @code{.exe} suffix. This 1221option is useful when using unmodified Unix makefiles on a Microsoft 1222Windows host, since some versions of Windows won't run an image unless 1223it ends in a @code{.exe} suffix. 1224 1225@kindex --gc-sections 1226@kindex --no-gc-sections 1227@cindex garbage collection 1228@item --no-gc-sections 1229@itemx --gc-sections 1230Enable garbage collection of unused input sections. It is ignored on 1231targets that do not support this option. This option is not compatible 1232with @samp{-r}. The default behaviour (of not performing this garbage 1233collection) can be restored by specifying @samp{--no-gc-sections} on 1234the command line. 1235 1236@cindex help 1237@cindex usage 1238@kindex --help 1239@item --help 1240Print a summary of the command-line options on the standard output and exit. 1241 1242@kindex --target-help 1243@item --target-help 1244Print a summary of all target specific options on the standard output and exit. 1245 1246@kindex -Map 1247@item -Map @var{mapfile} 1248Print a link map to the file @var{mapfile}. See the description of the 1249@option{-M} option, above. 1250 1251@cindex memory usage 1252@kindex --no-keep-memory 1253@item --no-keep-memory 1254@command{ld} normally optimizes for speed over memory usage by caching the 1255symbol tables of input files in memory. This option tells @command{ld} to 1256instead optimize for memory usage, by rereading the symbol tables as 1257necessary. This may be required if @command{ld} runs out of memory space 1258while linking a large executable. 1259 1260@kindex --no-undefined 1261@kindex -z defs 1262@item --no-undefined 1263@itemx -z defs 1264Report unresolved symbol references from regular object files. This 1265is done even if the linker is creating a non-symbolic shared library. 1266The switch @option{--[no-]allow-shlib-undefined} controls the 1267behaviour for reporting unresolved references found in shared 1268libraries being linked in. 1269 1270@kindex --allow-multiple-definition 1271@kindex -z muldefs 1272@item --allow-multiple-definition 1273@itemx -z muldefs 1274Normally when a symbol is defined multiple times, the linker will 1275report a fatal error. These options allow multiple definitions and the 1276first definition will be used. 1277 1278@kindex --allow-shlib-undefined 1279@kindex --no-allow-shlib-undefined 1280@item --allow-shlib-undefined 1281@itemx --no-allow-shlib-undefined 1282Allows (the default) or disallows undefined symbols in shared libraries. 1283This switch is similar to @option{--no-undefined} except that it 1284determines the behaviour when the undefined symbols are in a 1285shared library rather than a regular object file. It does not affect 1286how undefined symbols in regular object files are handled. 1287 1288The reason that @option{--allow-shlib-undefined} is the default is that 1289the shared library being specified at link time may not be the same as 1290the one that is available at load time, so the symbols might actually be 1291resolvable at load time. Plus there are some systems, (eg BeOS) where 1292undefined symbols in shared libraries is normal. (The kernel patches 1293them at load time to select which function is most appropriate 1294for the current architecture. This is used for example to dynamically 1295select an appropriate memset function). Apparently it is also normal 1296for HPPA shared libraries to have undefined symbols. 1297 1298@kindex --no-undefined-version 1299@item --no-undefined-version 1300Normally when a symbol has an undefined version, the linker will ignore 1301it. This option disallows symbols with undefined version and a fatal error 1302will be issued instead. 1303 1304@kindex --default-symver 1305@item --default-symver 1306Create and use a default symbol version (the soname) for unversioned 1307exported symbols. 1308 1309@kindex --default-imported-symver 1310@item --default-imported-symver 1311Create and use a default symbol version (the soname) for unversioned 1312imported symbols. 1313 1314@kindex --no-warn-mismatch 1315@item --no-warn-mismatch 1316Normally @command{ld} will give an error if you try to link together input 1317files that are mismatched for some reason, perhaps because they have 1318been compiled for different processors or for different endiannesses. 1319This option tells @command{ld} that it should silently permit such possible 1320errors. This option should only be used with care, in cases when you 1321have taken some special action that ensures that the linker errors are 1322inappropriate. 1323 1324@kindex --no-whole-archive 1325@item --no-whole-archive 1326Turn off the effect of the @option{--whole-archive} option for subsequent 1327archive files. 1328 1329@cindex output file after errors 1330@kindex --noinhibit-exec 1331@item --noinhibit-exec 1332Retain the executable output file whenever it is still usable. 1333Normally, the linker will not produce an output file if it encounters 1334errors during the link process; it exits without writing an output file 1335when it issues any error whatsoever. 1336 1337@kindex -nostdlib 1338@item -nostdlib 1339Only search library directories explicitly specified on the 1340command line. Library directories specified in linker scripts 1341(including linker scripts specified on the command line) are ignored. 1342 1343@ifclear SingleFormat 1344@kindex --oformat 1345@item --oformat @var{output-format} 1346@command{ld} may be configured to support more than one kind of object 1347file. If your @command{ld} is configured this way, you can use the 1348@samp{--oformat} option to specify the binary format for the output 1349object file. Even when @command{ld} is configured to support alternative 1350object formats, you don't usually need to specify this, as @command{ld} 1351should be configured to produce as a default output format the most 1352usual format on each machine. @var{output-format} is a text string, the 1353name of a particular format supported by the BFD libraries. (You can 1354list the available binary formats with @samp{objdump -i}.) The script 1355command @code{OUTPUT_FORMAT} can also specify the output format, but 1356this option overrides it. @xref{BFD}. 1357@end ifclear 1358 1359@kindex -pie 1360@kindex --pic-executable 1361@item -pie 1362@itemx --pic-executable 1363@cindex position independent executables 1364Create a position independent executable. This is currently only supported on 1365ELF platforms. Position independent executables are similar to shared 1366libraries in that they are relocated by the dynamic linker to the virtual 1367address the OS chooses for them (which can vary between invocations). Like 1368normal dynamically linked executables they can be executed and symbols 1369defined in the executable cannot be overridden by shared libraries. 1370 1371@kindex -qmagic 1372@item -qmagic 1373This option is ignored for Linux compatibility. 1374 1375@kindex -Qy 1376@item -Qy 1377This option is ignored for SVR4 compatibility. 1378 1379@kindex --relax 1380@cindex synthesizing linker 1381@cindex relaxing addressing modes 1382@item --relax 1383An option with machine dependent effects. 1384@ifset GENERIC 1385This option is only supported on a few targets. 1386@end ifset 1387@ifset H8300 1388@xref{H8/300,,@command{ld} and the H8/300}. 1389@end ifset 1390@ifset I960 1391@xref{i960,, @command{ld} and the Intel 960 family}. 1392@end ifset 1393@ifset XTENSA 1394@xref{Xtensa,, @command{ld} and Xtensa Processors}. 1395@end ifset 1396@ifset M68HC11 1397@xref{M68HC11/68HC12,,@command{ld} and the 68HC11 and 68HC12}. 1398@end ifset 1399@ifset POWERPC 1400@xref{PowerPC ELF32,,@command{ld} and PowerPC 32-bit ELF Support}. 1401@end ifset 1402 1403On some platforms, the @samp{--relax} option performs global 1404optimizations that become possible when the linker resolves addressing 1405in the program, such as relaxing address modes and synthesizing new 1406instructions in the output object file. 1407 1408On some platforms these link time global optimizations may make symbolic 1409debugging of the resulting executable impossible. 1410@ifset GENERIC 1411This is known to be 1412the case for the Matsushita MN10200 and MN10300 family of processors. 1413@end ifset 1414 1415@ifset GENERIC 1416On platforms where this is not supported, @samp{--relax} is accepted, 1417but ignored. 1418@end ifset 1419 1420@cindex retaining specified symbols 1421@cindex stripping all but some symbols 1422@cindex symbols, retaining selectively 1423@item --retain-symbols-file @var{filename} 1424Retain @emph{only} the symbols listed in the file @var{filename}, 1425discarding all others. @var{filename} is simply a flat file, with one 1426symbol name per line. This option is especially useful in environments 1427@ifset GENERIC 1428(such as VxWorks) 1429@end ifset 1430where a large global symbol table is accumulated gradually, to conserve 1431run-time memory. 1432 1433@samp{--retain-symbols-file} does @emph{not} discard undefined symbols, 1434or symbols needed for relocations. 1435 1436You may only specify @samp{--retain-symbols-file} once in the command 1437line. It overrides @samp{-s} and @samp{-S}. 1438 1439@ifset GENERIC 1440@item -rpath @var{dir} 1441@cindex runtime library search path 1442@kindex -rpath 1443Add a directory to the runtime library search path. This is used when 1444linking an ELF executable with shared objects. All @option{-rpath} 1445arguments are concatenated and passed to the runtime linker, which uses 1446them to locate shared objects at runtime. The @option{-rpath} option is 1447also used when locating shared objects which are needed by shared 1448objects explicitly included in the link; see the description of the 1449@option{-rpath-link} option. If @option{-rpath} is not used when linking an 1450ELF executable, the contents of the environment variable 1451@code{LD_RUN_PATH} will be used if it is defined. 1452 1453The @option{-rpath} option may also be used on SunOS. By default, on 1454SunOS, the linker will form a runtime search patch out of all the 1455@option{-L} options it is given. If a @option{-rpath} option is used, the 1456runtime search path will be formed exclusively using the @option{-rpath} 1457options, ignoring the @option{-L} options. This can be useful when using 1458gcc, which adds many @option{-L} options which may be on NFS mounted 1459filesystems. 1460 1461For compatibility with other ELF linkers, if the @option{-R} option is 1462followed by a directory name, rather than a file name, it is treated as 1463the @option{-rpath} option. 1464@end ifset 1465 1466@ifset GENERIC 1467@cindex link-time runtime library search path 1468@kindex -rpath-link 1469@item -rpath-link @var{DIR} 1470When using ELF or SunOS, one shared library may require another. This 1471happens when an @code{ld -shared} link includes a shared library as one 1472of the input files. 1473 1474When the linker encounters such a dependency when doing a non-shared, 1475non-relocatable link, it will automatically try to locate the required 1476shared library and include it in the link, if it is not included 1477explicitly. In such a case, the @option{-rpath-link} option 1478specifies the first set of directories to search. The 1479@option{-rpath-link} option may specify a sequence of directory names 1480either by specifying a list of names separated by colons, or by 1481appearing multiple times. 1482 1483This option should be used with caution as it overrides the search path 1484that may have been hard compiled into a shared library. In such a case it 1485is possible to use unintentionally a different search path than the 1486runtime linker would do. 1487 1488The linker uses the following search paths to locate required shared 1489libraries. 1490@enumerate 1491@item 1492Any directories specified by @option{-rpath-link} options. 1493@item 1494Any directories specified by @option{-rpath} options. The difference 1495between @option{-rpath} and @option{-rpath-link} is that directories 1496specified by @option{-rpath} options are included in the executable and 1497used at runtime, whereas the @option{-rpath-link} option is only effective 1498at link time. It is for the native linker only. 1499@item 1500On an ELF system, if the @option{-rpath} and @code{rpath-link} options 1501were not used, search the contents of the environment variable 1502@code{LD_RUN_PATH}. It is for the native linker only. 1503@item 1504On SunOS, if the @option{-rpath} option was not used, search any 1505directories specified using @option{-L} options. 1506@item 1507For a native linker, the contents of the environment variable 1508@code{LD_LIBRARY_PATH}. 1509@item 1510For a native ELF linker, the directories in @code{DT_RUNPATH} or 1511@code{DT_RPATH} of a shared library are searched for shared 1512libraries needed by it. The @code{DT_RPATH} entries are ignored if 1513@code{DT_RUNPATH} entries exist. 1514@item 1515The default directories, normally @file{/lib} and @file{/usr/lib}. 1516@item 1517For a native linker on an ELF system, if the file @file{/etc/ld.so.conf} 1518exists, the list of directories found in that file. 1519@end enumerate 1520 1521If the required shared library is not found, the linker will issue a 1522warning and continue with the link. 1523@end ifset 1524 1525@kindex -shared 1526@kindex -Bshareable 1527@item -shared 1528@itemx -Bshareable 1529@cindex shared libraries 1530Create a shared library. This is currently only supported on ELF, XCOFF 1531and SunOS platforms. On SunOS, the linker will automatically create a 1532shared library if the @option{-e} option is not used and there are 1533undefined symbols in the link. 1534 1535@item --sort-common 1536@kindex --sort-common 1537This option tells @command{ld} to sort the common symbols by size when it 1538places them in the appropriate output sections. First come all the one 1539byte symbols, then all the two byte, then all the four byte, and then 1540everything else. This is to prevent gaps between symbols due to 1541alignment constraints. 1542 1543@kindex --sort-section name 1544@item --sort-section name 1545This option will apply @code{SORT_BY_NAME} to all wildcard section 1546patterns in the linker script. 1547 1548@kindex --sort-section alignment 1549@item --sort-section alignment 1550This option will apply @code{SORT_BY_ALIGNMENT} to all wildcard section 1551patterns in the linker script. 1552 1553@kindex --split-by-file 1554@item --split-by-file [@var{size}] 1555Similar to @option{--split-by-reloc} but creates a new output section for 1556each input file when @var{size} is reached. @var{size} defaults to a 1557size of 1 if not given. 1558 1559@kindex --split-by-reloc 1560@item --split-by-reloc [@var{count}] 1561Tries to creates extra sections in the output file so that no single 1562output section in the file contains more than @var{count} relocations. 1563This is useful when generating huge relocatable files for downloading into 1564certain real time kernels with the COFF object file format; since COFF 1565cannot represent more than 65535 relocations in a single section. Note 1566that this will fail to work with object file formats which do not 1567support arbitrary sections. The linker will not split up individual 1568input sections for redistribution, so if a single input section contains 1569more than @var{count} relocations one output section will contain that 1570many relocations. @var{count} defaults to a value of 32768. 1571 1572@kindex --stats 1573@item --stats 1574Compute and display statistics about the operation of the linker, such 1575as execution time and memory usage. 1576 1577@kindex --sysroot 1578@item --sysroot=@var{directory} 1579Use @var{directory} as the location of the sysroot, overriding the 1580configure-time default. This option is only supported by linkers 1581that were configured using @option{--with-sysroot}. 1582 1583@kindex --traditional-format 1584@cindex traditional format 1585@item --traditional-format 1586For some targets, the output of @command{ld} is different in some ways from 1587the output of some existing linker. This switch requests @command{ld} to 1588use the traditional format instead. 1589 1590@cindex dbx 1591For example, on SunOS, @command{ld} combines duplicate entries in the 1592symbol string table. This can reduce the size of an output file with 1593full debugging information by over 30 percent. Unfortunately, the SunOS 1594@code{dbx} program can not read the resulting program (@code{gdb} has no 1595trouble). The @samp{--traditional-format} switch tells @command{ld} to not 1596combine duplicate entries. 1597 1598@kindex --section-start @var{sectionname}=@var{org} 1599@item --section-start @var{sectionname}=@var{org} 1600Locate a section in the output file at the absolute 1601address given by @var{org}. You may use this option as many 1602times as necessary to locate multiple sections in the command 1603line. 1604@var{org} must be a single hexadecimal integer; 1605for compatibility with other linkers, you may omit the leading 1606@samp{0x} usually associated with hexadecimal values. @emph{Note:} there 1607should be no white space between @var{sectionname}, the equals 1608sign (``@key{=}''), and @var{org}. 1609 1610@kindex -Tbss @var{org} 1611@kindex -Tdata @var{org} 1612@kindex -Ttext @var{org} 1613@cindex segment origins, cmd line 1614@item -Tbss @var{org} 1615@itemx -Tdata @var{org} 1616@itemx -Ttext @var{org} 1617Same as --section-start, with @code{.bss}, @code{.data} or 1618@code{.text} as the @var{sectionname}. 1619 1620@kindex --unresolved-symbols 1621@item --unresolved-symbols=@var{method} 1622Determine how to handle unresolved symbols. There are four possible 1623values for @samp{method}: 1624 1625@table @samp 1626@item ignore-all 1627Do not report any unresolved symbols. 1628 1629@item report-all 1630Report all unresolved symbols. This is the default. 1631 1632@item ignore-in-object-files 1633Report unresolved symbols that are contained in shared libraries, but 1634ignore them if they come from regular object files. 1635 1636@item ignore-in-shared-libs 1637Report unresolved symbols that come from regular object files, but 1638ignore them if they come from shared libraries. This can be useful 1639when creating a dynamic binary and it is known that all the shared 1640libraries that it should be referencing are included on the linker's 1641command line. 1642@end table 1643 1644The behaviour for shared libraries on their own can also be controlled 1645by the @option{--[no-]allow-shlib-undefined} option. 1646 1647Normally the linker will generate an error message for each reported 1648unresolved symbol but the option @option{--warn-unresolved-symbols} 1649can change this to a warning. 1650 1651@kindex --verbose 1652@cindex verbose 1653@item --dll-verbose 1654@itemx --verbose 1655Display the version number for @command{ld} and list the linker emulations 1656supported. Display which input files can and cannot be opened. Display 1657the linker script being used by the linker. 1658 1659@kindex --version-script=@var{version-scriptfile} 1660@cindex version script, symbol versions 1661@itemx --version-script=@var{version-scriptfile} 1662Specify the name of a version script to the linker. This is typically 1663used when creating shared libraries to specify additional information 1664about the version hierarchy for the library being created. This option 1665is only meaningful on ELF platforms which support shared libraries. 1666@xref{VERSION}. 1667 1668@kindex --warn-common 1669@cindex warnings, on combining symbols 1670@cindex combining symbols, warnings on 1671@item --warn-common 1672Warn when a common symbol is combined with another common symbol or with 1673a symbol definition. Unix linkers allow this somewhat sloppy practise, 1674but linkers on some other operating systems do not. This option allows 1675you to find potential problems from combining global symbols. 1676Unfortunately, some C libraries use this practise, so you may get some 1677warnings about symbols in the libraries as well as in your programs. 1678 1679There are three kinds of global symbols, illustrated here by C examples: 1680 1681@table @samp 1682@item int i = 1; 1683A definition, which goes in the initialized data section of the output 1684file. 1685 1686@item extern int i; 1687An undefined reference, which does not allocate space. 1688There must be either a definition or a common symbol for the 1689variable somewhere. 1690 1691@item int i; 1692A common symbol. If there are only (one or more) common symbols for a 1693variable, it goes in the uninitialized data area of the output file. 1694The linker merges multiple common symbols for the same variable into a 1695single symbol. If they are of different sizes, it picks the largest 1696size. The linker turns a common symbol into a declaration, if there is 1697a definition of the same variable. 1698@end table 1699 1700The @samp{--warn-common} option can produce five kinds of warnings. 1701Each warning consists of a pair of lines: the first describes the symbol 1702just encountered, and the second describes the previous symbol 1703encountered with the same name. One or both of the two symbols will be 1704a common symbol. 1705 1706@enumerate 1707@item 1708Turning a common symbol into a reference, because there is already a 1709definition for the symbol. 1710@smallexample 1711@var{file}(@var{section}): warning: common of `@var{symbol}' 1712 overridden by definition 1713@var{file}(@var{section}): warning: defined here 1714@end smallexample 1715 1716@item 1717Turning a common symbol into a reference, because a later definition for 1718the symbol is encountered. This is the same as the previous case, 1719except that the symbols are encountered in a different order. 1720@smallexample 1721@var{file}(@var{section}): warning: definition of `@var{symbol}' 1722 overriding common 1723@var{file}(@var{section}): warning: common is here 1724@end smallexample 1725 1726@item 1727Merging a common symbol with a previous same-sized common symbol. 1728@smallexample 1729@var{file}(@var{section}): warning: multiple common 1730 of `@var{symbol}' 1731@var{file}(@var{section}): warning: previous common is here 1732@end smallexample 1733 1734@item 1735Merging a common symbol with a previous larger common symbol. 1736@smallexample 1737@var{file}(@var{section}): warning: common of `@var{symbol}' 1738 overridden by larger common 1739@var{file}(@var{section}): warning: larger common is here 1740@end smallexample 1741 1742@item 1743Merging a common symbol with a previous smaller common symbol. This is 1744the same as the previous case, except that the symbols are 1745encountered in a different order. 1746@smallexample 1747@var{file}(@var{section}): warning: common of `@var{symbol}' 1748 overriding smaller common 1749@var{file}(@var{section}): warning: smaller common is here 1750@end smallexample 1751@end enumerate 1752 1753@kindex --warn-constructors 1754@item --warn-constructors 1755Warn if any global constructors are used. This is only useful for a few 1756object file formats. For formats like COFF or ELF, the linker can not 1757detect the use of global constructors. 1758 1759@kindex --warn-multiple-gp 1760@item --warn-multiple-gp 1761Warn if multiple global pointer values are required in the output file. 1762This is only meaningful for certain processors, such as the Alpha. 1763Specifically, some processors put large-valued constants in a special 1764section. A special register (the global pointer) points into the middle 1765of this section, so that constants can be loaded efficiently via a 1766base-register relative addressing mode. Since the offset in 1767base-register relative mode is fixed and relatively small (e.g., 16 1768bits), this limits the maximum size of the constant pool. Thus, in 1769large programs, it is often necessary to use multiple global pointer 1770values in order to be able to address all possible constants. This 1771option causes a warning to be issued whenever this case occurs. 1772 1773@kindex --warn-once 1774@cindex warnings, on undefined symbols 1775@cindex undefined symbols, warnings on 1776@item --warn-once 1777Only warn once for each undefined symbol, rather than once per module 1778which refers to it. 1779 1780@kindex --warn-section-align 1781@cindex warnings, on section alignment 1782@cindex section alignment, warnings on 1783@item --warn-section-align 1784Warn if the address of an output section is changed because of 1785alignment. Typically, the alignment will be set by an input section. 1786The address will only be changed if it not explicitly specified; that 1787is, if the @code{SECTIONS} command does not specify a start address for 1788the section (@pxref{SECTIONS}). 1789 1790@kindex --warn-shared-textrel 1791@item --warn-shared-textrel 1792Warn if the linker adds a DT_TEXTREL to a shared object. 1793 1794@kindex --warn-unresolved-symbols 1795@item --warn-unresolved-symbols 1796If the linker is going to report an unresolved symbol (see the option 1797@option{--unresolved-symbols}) it will normally generate an error. 1798This option makes it generate a warning instead. 1799 1800@kindex --error-unresolved-symbols 1801@item --error-unresolved-symbols 1802This restores the linker's default behaviour of generating errors when 1803it is reporting unresolved symbols. 1804 1805@kindex --whole-archive 1806@cindex including an entire archive 1807@item --whole-archive 1808For each archive mentioned on the command line after the 1809@option{--whole-archive} option, include every object file in the archive 1810in the link, rather than searching the archive for the required object 1811files. This is normally used to turn an archive file into a shared 1812library, forcing every object to be included in the resulting shared 1813library. This option may be used more than once. 1814 1815Two notes when using this option from gcc: First, gcc doesn't know 1816about this option, so you have to use @option{-Wl,-whole-archive}. 1817Second, don't forget to use @option{-Wl,-no-whole-archive} after your 1818list of archives, because gcc will add its own list of archives to 1819your link and you may not want this flag to affect those as well. 1820 1821@kindex --wrap 1822@item --wrap @var{symbol} 1823Use a wrapper function for @var{symbol}. Any undefined reference to 1824@var{symbol} will be resolved to @code{__wrap_@var{symbol}}. Any 1825undefined reference to @code{__real_@var{symbol}} will be resolved to 1826@var{symbol}. 1827 1828This can be used to provide a wrapper for a system function. The 1829wrapper function should be called @code{__wrap_@var{symbol}}. If it 1830wishes to call the system function, it should call 1831@code{__real_@var{symbol}}. 1832 1833Here is a trivial example: 1834 1835@smallexample 1836void * 1837__wrap_malloc (size_t c) 1838@{ 1839 printf ("malloc called with %zu\n", c); 1840 return __real_malloc (c); 1841@} 1842@end smallexample 1843 1844If you link other code with this file using @option{--wrap malloc}, then 1845all calls to @code{malloc} will call the function @code{__wrap_malloc} 1846instead. The call to @code{__real_malloc} in @code{__wrap_malloc} will 1847call the real @code{malloc} function. 1848 1849You may wish to provide a @code{__real_malloc} function as well, so that 1850links without the @option{--wrap} option will succeed. If you do this, 1851you should not put the definition of @code{__real_malloc} in the same 1852file as @code{__wrap_malloc}; if you do, the assembler may resolve the 1853call before the linker has a chance to wrap it to @code{malloc}. 1854 1855@kindex --eh-frame-hdr 1856@item --eh-frame-hdr 1857Request creation of @code{.eh_frame_hdr} section and ELF 1858@code{PT_GNU_EH_FRAME} segment header. 1859 1860@kindex --enable-new-dtags 1861@kindex --disable-new-dtags 1862@item --enable-new-dtags 1863@itemx --disable-new-dtags 1864This linker can create the new dynamic tags in ELF. But the older ELF 1865systems may not understand them. If you specify 1866@option{--enable-new-dtags}, the dynamic tags will be created as needed. 1867If you specify @option{--disable-new-dtags}, no new dynamic tags will be 1868created. By default, the new dynamic tags are not created. Note that 1869those options are only available for ELF systems. 1870 1871@kindex --hash-size=@var{number} 1872@item --hash-size=@var{number} 1873Set the default size of the linker's hash tables to a prime number 1874close to @var{number}. Increasing this value can reduce the length of 1875time it takes the linker to perform its tasks, at the expense of 1876increasing the linker's memory requirements. Similarly reducing this 1877value can reduce the memory requirements at the expense of speed. 1878 1879@kindex --reduce-memory-overheads 1880@item --reduce-memory-overheads 1881This option reduces memory requirements at ld runtime, at the expense of 1882linking speed. This was introduced to select the old O(n^2) algorithm 1883for link map file generation, rather than the new O(n) algorithm which uses 1884about 40% more memory for symbol storage. 1885 1886Another effect of the switch is to set the default hash table size to 18871021, which again saves memory at the cost of lengthening the linker's 1888run time. This is not done however if the @option{--hash-size} switch 1889has been used. 1890 1891The @option{--reduce-memory-overheads} switch may be also be used to 1892enable other tradeoffs in future versions of the linker. 1893 1894@end table 1895 1896@c man end 1897 1898@subsection Options Specific to i386 PE Targets 1899 1900@c man begin OPTIONS 1901 1902The i386 PE linker supports the @option{-shared} option, which causes 1903the output to be a dynamically linked library (DLL) instead of a 1904normal executable. You should name the output @code{*.dll} when you 1905use this option. In addition, the linker fully supports the standard 1906@code{*.def} files, which may be specified on the linker command line 1907like an object file (in fact, it should precede archives it exports 1908symbols from, to ensure that they get linked in, just like a normal 1909object file). 1910 1911In addition to the options common to all targets, the i386 PE linker 1912support additional command line options that are specific to the i386 1913PE target. Options that take values may be separated from their 1914values by either a space or an equals sign. 1915 1916@table @gcctabopt 1917 1918@kindex --add-stdcall-alias 1919@item --add-stdcall-alias 1920If given, symbols with a stdcall suffix (@@@var{nn}) will be exported 1921as-is and also with the suffix stripped. 1922[This option is specific to the i386 PE targeted port of the linker] 1923 1924@kindex --base-file 1925@item --base-file @var{file} 1926Use @var{file} as the name of a file in which to save the base 1927addresses of all the relocations needed for generating DLLs with 1928@file{dlltool}. 1929[This is an i386 PE specific option] 1930 1931@kindex --dll 1932@item --dll 1933Create a DLL instead of a regular executable. You may also use 1934@option{-shared} or specify a @code{LIBRARY} in a given @code{.def} 1935file. 1936[This option is specific to the i386 PE targeted port of the linker] 1937 1938@kindex --enable-stdcall-fixup 1939@kindex --disable-stdcall-fixup 1940@item --enable-stdcall-fixup 1941@itemx --disable-stdcall-fixup 1942If the link finds a symbol that it cannot resolve, it will attempt to 1943do ``fuzzy linking'' by looking for another defined symbol that differs 1944only in the format of the symbol name (cdecl vs stdcall) and will 1945resolve that symbol by linking to the match. For example, the 1946undefined symbol @code{_foo} might be linked to the function 1947@code{_foo@@12}, or the undefined symbol @code{_bar@@16} might be linked 1948to the function @code{_bar}. When the linker does this, it prints a 1949warning, since it normally should have failed to link, but sometimes 1950import libraries generated from third-party dlls may need this feature 1951to be usable. If you specify @option{--enable-stdcall-fixup}, this 1952feature is fully enabled and warnings are not printed. If you specify 1953@option{--disable-stdcall-fixup}, this feature is disabled and such 1954mismatches are considered to be errors. 1955[This option is specific to the i386 PE targeted port of the linker] 1956 1957@cindex DLLs, creating 1958@kindex --export-all-symbols 1959@item --export-all-symbols 1960If given, all global symbols in the objects used to build a DLL will 1961be exported by the DLL. Note that this is the default if there 1962otherwise wouldn't be any exported symbols. When symbols are 1963explicitly exported via DEF files or implicitly exported via function 1964attributes, the default is to not export anything else unless this 1965option is given. Note that the symbols @code{DllMain@@12}, 1966@code{DllEntryPoint@@0}, @code{DllMainCRTStartup@@12}, and 1967@code{impure_ptr} will not be automatically 1968exported. Also, symbols imported from other DLLs will not be 1969re-exported, nor will symbols specifying the DLL's internal layout 1970such as those beginning with @code{_head_} or ending with 1971@code{_iname}. In addition, no symbols from @code{libgcc}, 1972@code{libstd++}, @code{libmingw32}, or @code{crtX.o} will be exported. 1973Symbols whose names begin with @code{__rtti_} or @code{__builtin_} will 1974not be exported, to help with C++ DLLs. Finally, there is an 1975extensive list of cygwin-private symbols that are not exported 1976(obviously, this applies on when building DLLs for cygwin targets). 1977These cygwin-excludes are: @code{_cygwin_dll_entry@@12}, 1978@code{_cygwin_crt0_common@@8}, @code{_cygwin_noncygwin_dll_entry@@12}, 1979@code{_fmode}, @code{_impure_ptr}, @code{cygwin_attach_dll}, 1980@code{cygwin_premain0}, @code{cygwin_premain1}, @code{cygwin_premain2}, 1981@code{cygwin_premain3}, and @code{environ}. 1982[This option is specific to the i386 PE targeted port of the linker] 1983 1984@kindex --exclude-symbols 1985@item --exclude-symbols @var{symbol},@var{symbol},... 1986Specifies a list of symbols which should not be automatically 1987exported. The symbol names may be delimited by commas or colons. 1988[This option is specific to the i386 PE targeted port of the linker] 1989 1990@kindex --file-alignment 1991@item --file-alignment 1992Specify the file alignment. Sections in the file will always begin at 1993file offsets which are multiples of this number. This defaults to 1994512. 1995[This option is specific to the i386 PE targeted port of the linker] 1996 1997@cindex heap size 1998@kindex --heap 1999@item --heap @var{reserve} 2000@itemx --heap @var{reserve},@var{commit} 2001Specify the amount of memory to reserve (and optionally commit) to be 2002used as heap for this program. The default is 1Mb reserved, 4K 2003committed. 2004[This option is specific to the i386 PE targeted port of the linker] 2005 2006@cindex image base 2007@kindex --image-base 2008@item --image-base @var{value} 2009Use @var{value} as the base address of your program or dll. This is 2010the lowest memory location that will be used when your program or dll 2011is loaded. To reduce the need to relocate and improve performance of 2012your dlls, each should have a unique base address and not overlap any 2013other dlls. The default is 0x400000 for executables, and 0x10000000 2014for dlls. 2015[This option is specific to the i386 PE targeted port of the linker] 2016 2017@kindex --kill-at 2018@item --kill-at 2019If given, the stdcall suffixes (@@@var{nn}) will be stripped from 2020symbols before they are exported. 2021[This option is specific to the i386 PE targeted port of the linker] 2022 2023@kindex --large-address-aware 2024@item --large-address-aware 2025If given, the appropriate bit in the ``Charateristics'' field of the COFF 2026header is set to indicate that this executable supports virtual addresses 2027greater than 2 gigabytes. This should be used in conjuction with the /3GB 2028or /USERVA=@var{value} megabytes switch in the ``[operating systems]'' 2029section of the BOOT.INI. Otherwise, this bit has no effect. 2030[This option is specific to PE targeted ports of the linker] 2031 2032@kindex --major-image-version 2033@item --major-image-version @var{value} 2034Sets the major number of the ``image version''. Defaults to 1. 2035[This option is specific to the i386 PE targeted port of the linker] 2036 2037@kindex --major-os-version 2038@item --major-os-version @var{value} 2039Sets the major number of the ``os version''. Defaults to 4. 2040[This option is specific to the i386 PE targeted port of the linker] 2041 2042@kindex --major-subsystem-version 2043@item --major-subsystem-version @var{value} 2044Sets the major number of the ``subsystem version''. Defaults to 4. 2045[This option is specific to the i386 PE targeted port of the linker] 2046 2047@kindex --minor-image-version 2048@item --minor-image-version @var{value} 2049Sets the minor number of the ``image version''. Defaults to 0. 2050[This option is specific to the i386 PE targeted port of the linker] 2051 2052@kindex --minor-os-version 2053@item --minor-os-version @var{value} 2054Sets the minor number of the ``os version''. Defaults to 0. 2055[This option is specific to the i386 PE targeted port of the linker] 2056 2057@kindex --minor-subsystem-version 2058@item --minor-subsystem-version @var{value} 2059Sets the minor number of the ``subsystem version''. Defaults to 0. 2060[This option is specific to the i386 PE targeted port of the linker] 2061 2062@cindex DEF files, creating 2063@cindex DLLs, creating 2064@kindex --output-def 2065@item --output-def @var{file} 2066The linker will create the file @var{file} which will contain a DEF 2067file corresponding to the DLL the linker is generating. This DEF file 2068(which should be called @code{*.def}) may be used to create an import 2069library with @code{dlltool} or may be used as a reference to 2070automatically or implicitly exported symbols. 2071[This option is specific to the i386 PE targeted port of the linker] 2072 2073@cindex DLLs, creating 2074@kindex --out-implib 2075@item --out-implib @var{file} 2076The linker will create the file @var{file} which will contain an 2077import lib corresponding to the DLL the linker is generating. This 2078import lib (which should be called @code{*.dll.a} or @code{*.a} 2079may be used to link clients against the generated DLL; this behaviour 2080makes it possible to skip a separate @code{dlltool} import library 2081creation step. 2082[This option is specific to the i386 PE targeted port of the linker] 2083 2084@kindex --enable-auto-image-base 2085@item --enable-auto-image-base 2086Automatically choose the image base for DLLs, unless one is specified 2087using the @code{--image-base} argument. By using a hash generated 2088from the dllname to create unique image bases for each DLL, in-memory 2089collisions and relocations which can delay program execution are 2090avoided. 2091[This option is specific to the i386 PE targeted port of the linker] 2092 2093@kindex --disable-auto-image-base 2094@item --disable-auto-image-base 2095Do not automatically generate a unique image base. If there is no 2096user-specified image base (@code{--image-base}) then use the platform 2097default. 2098[This option is specific to the i386 PE targeted port of the linker] 2099 2100@cindex DLLs, linking to 2101@kindex --dll-search-prefix 2102@item --dll-search-prefix @var{string} 2103When linking dynamically to a dll without an import library, 2104search for @code{<string><basename>.dll} in preference to 2105@code{lib<basename>.dll}. This behaviour allows easy distinction 2106between DLLs built for the various "subplatforms": native, cygwin, 2107uwin, pw, etc. For instance, cygwin DLLs typically use 2108@code{--dll-search-prefix=cyg}. 2109[This option is specific to the i386 PE targeted port of the linker] 2110 2111@kindex --enable-auto-import 2112@item --enable-auto-import 2113Do sophisticated linking of @code{_symbol} to @code{__imp__symbol} for 2114DATA imports from DLLs, and create the necessary thunking symbols when 2115building the import libraries with those DATA exports. Note: Use of the 2116'auto-import' extension will cause the text section of the image file 2117to be made writable. This does not conform to the PE-COFF format 2118specification published by Microsoft. 2119 2120Using 'auto-import' generally will 'just work' -- but sometimes you may 2121see this message: 2122 2123"variable '<var>' can't be auto-imported. Please read the 2124documentation for ld's @code{--enable-auto-import} for details." 2125 2126This message occurs when some (sub)expression accesses an address 2127ultimately given by the sum of two constants (Win32 import tables only 2128allow one). Instances where this may occur include accesses to member 2129fields of struct variables imported from a DLL, as well as using a 2130constant index into an array variable imported from a DLL. Any 2131multiword variable (arrays, structs, long long, etc) may trigger 2132this error condition. However, regardless of the exact data type 2133of the offending exported variable, ld will always detect it, issue 2134the warning, and exit. 2135 2136There are several ways to address this difficulty, regardless of the 2137data type of the exported variable: 2138 2139One way is to use --enable-runtime-pseudo-reloc switch. This leaves the task 2140of adjusting references in your client code for runtime environment, so 2141this method works only when runtime environment supports this feature. 2142 2143A second solution is to force one of the 'constants' to be a variable -- 2144that is, unknown and un-optimizable at compile time. For arrays, 2145there are two possibilities: a) make the indexee (the array's address) 2146a variable, or b) make the 'constant' index a variable. Thus: 2147 2148@example 2149extern type extern_array[]; 2150extern_array[1] --> 2151 @{ volatile type *t=extern_array; t[1] @} 2152@end example 2153 2154or 2155 2156@example 2157extern type extern_array[]; 2158extern_array[1] --> 2159 @{ volatile int t=1; extern_array[t] @} 2160@end example 2161 2162For structs (and most other multiword data types) the only option 2163is to make the struct itself (or the long long, or the ...) variable: 2164 2165@example 2166extern struct s extern_struct; 2167extern_struct.field --> 2168 @{ volatile struct s *t=&extern_struct; t->field @} 2169@end example 2170 2171or 2172 2173@example 2174extern long long extern_ll; 2175extern_ll --> 2176 @{ volatile long long * local_ll=&extern_ll; *local_ll @} 2177@end example 2178 2179A third method of dealing with this difficulty is to abandon 2180'auto-import' for the offending symbol and mark it with 2181@code{__declspec(dllimport)}. However, in practise that 2182requires using compile-time #defines to indicate whether you are 2183building a DLL, building client code that will link to the DLL, or 2184merely building/linking to a static library. In making the choice 2185between the various methods of resolving the 'direct address with 2186constant offset' problem, you should consider typical real-world usage: 2187 2188Original: 2189@example 2190--foo.h 2191extern int arr[]; 2192--foo.c 2193#include "foo.h" 2194void main(int argc, char **argv)@{ 2195 printf("%d\n",arr[1]); 2196@} 2197@end example 2198 2199Solution 1: 2200@example 2201--foo.h 2202extern int arr[]; 2203--foo.c 2204#include "foo.h" 2205void main(int argc, char **argv)@{ 2206 /* This workaround is for win32 and cygwin; do not "optimize" */ 2207 volatile int *parr = arr; 2208 printf("%d\n",parr[1]); 2209@} 2210@end example 2211 2212Solution 2: 2213@example 2214--foo.h 2215/* Note: auto-export is assumed (no __declspec(dllexport)) */ 2216#if (defined(_WIN32) || defined(__CYGWIN__)) && \ 2217 !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) 2218#define FOO_IMPORT __declspec(dllimport) 2219#else 2220#define FOO_IMPORT 2221#endif 2222extern FOO_IMPORT int arr[]; 2223--foo.c 2224#include "foo.h" 2225void main(int argc, char **argv)@{ 2226 printf("%d\n",arr[1]); 2227@} 2228@end example 2229 2230A fourth way to avoid this problem is to re-code your 2231library to use a functional interface rather than a data interface 2232for the offending variables (e.g. set_foo() and get_foo() accessor 2233functions). 2234[This option is specific to the i386 PE targeted port of the linker] 2235 2236@kindex --disable-auto-import 2237@item --disable-auto-import 2238Do not attempt to do sophisticated linking of @code{_symbol} to 2239@code{__imp__symbol} for DATA imports from DLLs. 2240[This option is specific to the i386 PE targeted port of the linker] 2241 2242@kindex --enable-runtime-pseudo-reloc 2243@item --enable-runtime-pseudo-reloc 2244If your code contains expressions described in --enable-auto-import section, 2245that is, DATA imports from DLL with non-zero offset, this switch will create 2246a vector of 'runtime pseudo relocations' which can be used by runtime 2247environment to adjust references to such data in your client code. 2248[This option is specific to the i386 PE targeted port of the linker] 2249 2250@kindex --disable-runtime-pseudo-reloc 2251@item --disable-runtime-pseudo-reloc 2252Do not create pseudo relocations for non-zero offset DATA imports from 2253DLLs. This is the default. 2254[This option is specific to the i386 PE targeted port of the linker] 2255 2256@kindex --enable-extra-pe-debug 2257@item --enable-extra-pe-debug 2258Show additional debug info related to auto-import symbol thunking. 2259[This option is specific to the i386 PE targeted port of the linker] 2260 2261@kindex --section-alignment 2262@item --section-alignment 2263Sets the section alignment. Sections in memory will always begin at 2264addresses which are a multiple of this number. Defaults to 0x1000. 2265[This option is specific to the i386 PE targeted port of the linker] 2266 2267@cindex stack size 2268@kindex --stack 2269@item --stack @var{reserve} 2270@itemx --stack @var{reserve},@var{commit} 2271Specify the amount of memory to reserve (and optionally commit) to be 2272used as stack for this program. The default is 2Mb reserved, 4K 2273committed. 2274[This option is specific to the i386 PE targeted port of the linker] 2275 2276@kindex --subsystem 2277@item --subsystem @var{which} 2278@itemx --subsystem @var{which}:@var{major} 2279@itemx --subsystem @var{which}:@var{major}.@var{minor} 2280Specifies the subsystem under which your program will execute. The 2281legal values for @var{which} are @code{native}, @code{windows}, 2282@code{console}, @code{posix}, and @code{xbox}. You may optionally set 2283the subsystem version also. Numeric values are also accepted for 2284@var{which}. 2285[This option is specific to the i386 PE targeted port of the linker] 2286 2287@end table 2288 2289@c man end 2290 2291@ifset M68HC11 2292@subsection Options specific to Motorola 68HC11 and 68HC12 targets 2293 2294@c man begin OPTIONS 2295 2296The 68HC11 and 68HC12 linkers support specific options to control the 2297memory bank switching mapping and trampoline code generation. 2298 2299@table @gcctabopt 2300 2301@kindex --no-trampoline 2302@item --no-trampoline 2303This option disables the generation of trampoline. By default a trampoline 2304is generated for each far function which is called using a @code{jsr} 2305instruction (this happens when a pointer to a far function is taken). 2306 2307@kindex --bank-window 2308@item --bank-window @var{name} 2309This option indicates to the linker the name of the memory region in 2310the @samp{MEMORY} specification that describes the memory bank window. 2311The definition of such region is then used by the linker to compute 2312paging and addresses within the memory window. 2313 2314@end table 2315 2316@c man end 2317@end ifset 2318 2319@ifset UsesEnvVars 2320@node Environment 2321@section Environment Variables 2322 2323@c man begin ENVIRONMENT 2324 2325You can change the behaviour of @command{ld} with the environment variables 2326@ifclear SingleFormat 2327@code{GNUTARGET}, 2328@end ifclear 2329@code{LDEMULATION} and @code{COLLECT_NO_DEMANGLE}. 2330 2331@ifclear SingleFormat 2332@kindex GNUTARGET 2333@cindex default input format 2334@code{GNUTARGET} determines the input-file object format if you don't 2335use @samp{-b} (or its synonym @samp{--format}). Its value should be one 2336of the BFD names for an input format (@pxref{BFD}). If there is no 2337@code{GNUTARGET} in the environment, @command{ld} uses the natural format 2338of the target. If @code{GNUTARGET} is set to @code{default} then BFD 2339attempts to discover the input format by examining binary input files; 2340this method often succeeds, but there are potential ambiguities, since 2341there is no method of ensuring that the magic number used to specify 2342object-file formats is unique. However, the configuration procedure for 2343BFD on each system places the conventional format for that system first 2344in the search-list, so ambiguities are resolved in favor of convention. 2345@end ifclear 2346 2347@kindex LDEMULATION 2348@cindex default emulation 2349@cindex emulation, default 2350@code{LDEMULATION} determines the default emulation if you don't use the 2351@samp{-m} option. The emulation can affect various aspects of linker 2352behaviour, particularly the default linker script. You can list the 2353available emulations with the @samp{--verbose} or @samp{-V} options. If 2354the @samp{-m} option is not used, and the @code{LDEMULATION} environment 2355variable is not defined, the default emulation depends upon how the 2356linker was configured. 2357 2358@kindex COLLECT_NO_DEMANGLE 2359@cindex demangling, default 2360Normally, the linker will default to demangling symbols. However, if 2361@code{COLLECT_NO_DEMANGLE} is set in the environment, then it will 2362default to not demangling symbols. This environment variable is used in 2363a similar fashion by the @code{gcc} linker wrapper program. The default 2364may be overridden by the @samp{--demangle} and @samp{--no-demangle} 2365options. 2366 2367@c man end 2368@end ifset 2369 2370@node Scripts 2371@chapter Linker Scripts 2372 2373@cindex scripts 2374@cindex linker scripts 2375@cindex command files 2376Every link is controlled by a @dfn{linker script}. This script is 2377written in the linker command language. 2378 2379The main purpose of the linker script is to describe how the sections in 2380the input files should be mapped into the output file, and to control 2381the memory layout of the output file. Most linker scripts do nothing 2382more than this. However, when necessary, the linker script can also 2383direct the linker to perform many other operations, using the commands 2384described below. 2385 2386The linker always uses a linker script. If you do not supply one 2387yourself, the linker will use a default script that is compiled into the 2388linker executable. You can use the @samp{--verbose} command line option 2389to display the default linker script. Certain command line options, 2390such as @samp{-r} or @samp{-N}, will affect the default linker script. 2391 2392You may supply your own linker script by using the @samp{-T} command 2393line option. When you do this, your linker script will replace the 2394default linker script. 2395 2396You may also use linker scripts implicitly by naming them as input files 2397to the linker, as though they were files to be linked. @xref{Implicit 2398Linker Scripts}. 2399 2400@menu 2401* Basic Script Concepts:: Basic Linker Script Concepts 2402* Script Format:: Linker Script Format 2403* Simple Example:: Simple Linker Script Example 2404* Simple Commands:: Simple Linker Script Commands 2405* Assignments:: Assigning Values to Symbols 2406* SECTIONS:: SECTIONS Command 2407* MEMORY:: MEMORY Command 2408* PHDRS:: PHDRS Command 2409* VERSION:: VERSION Command 2410* Expressions:: Expressions in Linker Scripts 2411* Implicit Linker Scripts:: Implicit Linker Scripts 2412@end menu 2413 2414@node Basic Script Concepts 2415@section Basic Linker Script Concepts 2416@cindex linker script concepts 2417We need to define some basic concepts and vocabulary in order to 2418describe the linker script language. 2419 2420The linker combines input files into a single output file. The output 2421file and each input file are in a special data format known as an 2422@dfn{object file format}. Each file is called an @dfn{object file}. 2423The output file is often called an @dfn{executable}, but for our 2424purposes we will also call it an object file. Each object file has, 2425among other things, a list of @dfn{sections}. We sometimes refer to a 2426section in an input file as an @dfn{input section}; similarly, a section 2427in the output file is an @dfn{output section}. 2428 2429Each section in an object file has a name and a size. Most sections 2430also have an associated block of data, known as the @dfn{section 2431contents}. A section may be marked as @dfn{loadable}, which mean that 2432the contents should be loaded into memory when the output file is run. 2433A section with no contents may be @dfn{allocatable}, which means that an 2434area in memory should be set aside, but nothing in particular should be 2435loaded there (in some cases this memory must be zeroed out). A section 2436which is neither loadable nor allocatable typically contains some sort 2437of debugging information. 2438 2439Every loadable or allocatable output section has two addresses. The 2440first is the @dfn{VMA}, or virtual memory address. This is the address 2441the section will have when the output file is run. The second is the 2442@dfn{LMA}, or load memory address. This is the address at which the 2443section will be loaded. In most cases the two addresses will be the 2444same. An example of when they might be different is when a data section 2445is loaded into ROM, and then copied into RAM when the program starts up 2446(this technique is often used to initialize global variables in a ROM 2447based system). In this case the ROM address would be the LMA, and the 2448RAM address would be the VMA. 2449 2450You can see the sections in an object file by using the @code{objdump} 2451program with the @samp{-h} option. 2452 2453Every object file also has a list of @dfn{symbols}, known as the 2454@dfn{symbol table}. A symbol may be defined or undefined. Each symbol 2455has a name, and each defined symbol has an address, among other 2456information. If you compile a C or C++ program into an object file, you 2457will get a defined symbol for every defined function and global or 2458static variable. Every undefined function or global variable which is 2459referenced in the input file will become an undefined symbol. 2460 2461You can see the symbols in an object file by using the @code{nm} 2462program, or by using the @code{objdump} program with the @samp{-t} 2463option. 2464 2465@node Script Format 2466@section Linker Script Format 2467@cindex linker script format 2468Linker scripts are text files. 2469 2470You write a linker script as a series of commands. Each command is 2471either a keyword, possibly followed by arguments, or an assignment to a 2472symbol. You may separate commands using semicolons. Whitespace is 2473generally ignored. 2474 2475Strings such as file or format names can normally be entered directly. 2476If the file name contains a character such as a comma which would 2477otherwise serve to separate file names, you may put the file name in 2478double quotes. There is no way to use a double quote character in a 2479file name. 2480 2481You may include comments in linker scripts just as in C, delimited by 2482@samp{/*} and @samp{*/}. As in C, comments are syntactically equivalent 2483to whitespace. 2484 2485@node Simple Example 2486@section Simple Linker Script Example 2487@cindex linker script example 2488@cindex example of linker script 2489Many linker scripts are fairly simple. 2490 2491The simplest possible linker script has just one command: 2492@samp{SECTIONS}. You use the @samp{SECTIONS} command to describe the 2493memory layout of the output file. 2494 2495The @samp{SECTIONS} command is a powerful command. Here we will 2496describe a simple use of it. Let's assume your program consists only of 2497code, initialized data, and uninitialized data. These will be in the 2498@samp{.text}, @samp{.data}, and @samp{.bss} sections, respectively. 2499Let's assume further that these are the only sections which appear in 2500your input files. 2501 2502For this example, let's say that the code should be loaded at address 25030x10000, and that the data should start at address 0x8000000. Here is a 2504linker script which will do that: 2505@smallexample 2506SECTIONS 2507@{ 2508 . = 0x10000; 2509 .text : @{ *(.text) @} 2510 . = 0x8000000; 2511 .data : @{ *(.data) @} 2512 .bss : @{ *(.bss) @} 2513@} 2514@end smallexample 2515 2516You write the @samp{SECTIONS} command as the keyword @samp{SECTIONS}, 2517followed by a series of symbol assignments and output section 2518descriptions enclosed in curly braces. 2519 2520The first line inside the @samp{SECTIONS} command of the above example 2521sets the value of the special symbol @samp{.}, which is the location 2522counter. If you do not specify the address of an output section in some 2523other way (other ways are described later), the address is set from the 2524current value of the location counter. The location counter is then 2525incremented by the size of the output section. At the start of the 2526@samp{SECTIONS} command, the location counter has the value @samp{0}. 2527 2528The second line defines an output section, @samp{.text}. The colon is 2529required syntax which may be ignored for now. Within the curly braces 2530after the output section name, you list the names of the input sections 2531which should be placed into this output section. The @samp{*} is a 2532wildcard which matches any file name. The expression @samp{*(.text)} 2533means all @samp{.text} input sections in all input files. 2534 2535Since the location counter is @samp{0x10000} when the output section 2536@samp{.text} is defined, the linker will set the address of the 2537@samp{.text} section in the output file to be @samp{0x10000}. 2538 2539The remaining lines define the @samp{.data} and @samp{.bss} sections in 2540the output file. The linker will place the @samp{.data} output section 2541at address @samp{0x8000000}. After the linker places the @samp{.data} 2542output section, the value of the location counter will be 2543@samp{0x8000000} plus the size of the @samp{.data} output section. The 2544effect is that the linker will place the @samp{.bss} output section 2545immediately after the @samp{.data} output section in memory. 2546 2547The linker will ensure that each output section has the required 2548alignment, by increasing the location counter if necessary. In this 2549example, the specified addresses for the @samp{.text} and @samp{.data} 2550sections will probably satisfy any alignment constraints, but the linker 2551may have to create a small gap between the @samp{.data} and @samp{.bss} 2552sections. 2553 2554That's it! That's a simple and complete linker script. 2555 2556@node Simple Commands 2557@section Simple Linker Script Commands 2558@cindex linker script simple commands 2559In this section we describe the simple linker script commands. 2560 2561@menu 2562* Entry Point:: Setting the entry point 2563* File Commands:: Commands dealing with files 2564@ifclear SingleFormat 2565* Format Commands:: Commands dealing with object file formats 2566@end ifclear 2567 2568* Miscellaneous Commands:: Other linker script commands 2569@end menu 2570 2571@node Entry Point 2572@subsection Setting the Entry Point 2573@kindex ENTRY(@var{symbol}) 2574@cindex start of execution 2575@cindex first instruction 2576@cindex entry point 2577The first instruction to execute in a program is called the @dfn{entry 2578point}. You can use the @code{ENTRY} linker script command to set the 2579entry point. The argument is a symbol name: 2580@smallexample 2581ENTRY(@var{symbol}) 2582@end smallexample 2583 2584There are several ways to set the entry point. The linker will set the 2585entry point by trying each of the following methods in order, and 2586stopping when one of them succeeds: 2587@itemize @bullet 2588@item 2589the @samp{-e} @var{entry} command-line option; 2590@item 2591the @code{ENTRY(@var{symbol})} command in a linker script; 2592@item 2593the value of the symbol @code{start}, if defined; 2594@item 2595the address of the first byte of the @samp{.text} section, if present; 2596@item 2597The address @code{0}. 2598@end itemize 2599 2600@node File Commands 2601@subsection Commands Dealing with Files 2602@cindex linker script file commands 2603Several linker script commands deal with files. 2604 2605@table @code 2606@item INCLUDE @var{filename} 2607@kindex INCLUDE @var{filename} 2608@cindex including a linker script 2609Include the linker script @var{filename} at this point. The file will 2610be searched for in the current directory, and in any directory specified 2611with the @option{-L} option. You can nest calls to @code{INCLUDE} up to 261210 levels deep. 2613 2614@item INPUT(@var{file}, @var{file}, @dots{}) 2615@itemx INPUT(@var{file} @var{file} @dots{}) 2616@kindex INPUT(@var{files}) 2617@cindex input files in linker scripts 2618@cindex input object files in linker scripts 2619@cindex linker script input object files 2620The @code{INPUT} command directs the linker to include the named files 2621in the link, as though they were named on the command line. 2622 2623For example, if you always want to include @file{subr.o} any time you do 2624a link, but you can't be bothered to put it on every link command line, 2625then you can put @samp{INPUT (subr.o)} in your linker script. 2626 2627In fact, if you like, you can list all of your input files in the linker 2628script, and then invoke the linker with nothing but a @samp{-T} option. 2629 2630In case a @dfn{sysroot prefix} is configured, and the filename starts 2631with the @samp{/} character, and the script being processed was 2632located inside the @dfn{sysroot prefix}, the filename will be looked 2633for in the @dfn{sysroot prefix}. Otherwise, the linker will try to 2634open the file in the current directory. If it is not found, the 2635linker will search through the archive library search path. See the 2636description of @samp{-L} in @ref{Options,,Command Line Options}. 2637 2638If you use @samp{INPUT (-l@var{file})}, @command{ld} will transform the 2639name to @code{lib@var{file}.a}, as with the command line argument 2640@samp{-l}. 2641 2642When you use the @code{INPUT} command in an implicit linker script, the 2643files will be included in the link at the point at which the linker 2644script file is included. This can affect archive searching. 2645 2646@item GROUP(@var{file}, @var{file}, @dots{}) 2647@itemx GROUP(@var{file} @var{file} @dots{}) 2648@kindex GROUP(@var{files}) 2649@cindex grouping input files 2650The @code{GROUP} command is like @code{INPUT}, except that the named 2651files should all be archives, and they are searched repeatedly until no 2652new undefined references are created. See the description of @samp{-(} 2653in @ref{Options,,Command Line Options}. 2654 2655@item AS_NEEDED(@var{file}, @var{file}, @dots{}) 2656@itemx AS_NEEDED(@var{file} @var{file} @dots{}) 2657@kindex AS_NEEDED(@var{files}) 2658This construct can appear only inside of the @code{INPUT} or @code{GROUP} 2659commands, among other filenames. The files listed will be handled 2660as if they appear directly in the @code{INPUT} or @code{GROUP} commands, 2661with the exception of ELF shared libraries, that will be added only 2662when they are actually needed. This construct essentially enables 2663@option{--as-needed} option for all the files listed inside of it 2664and restores previous @option{--as-needed} resp. @option{--no-as-needed} 2665setting afterwards. 2666 2667@item OUTPUT(@var{filename}) 2668@kindex OUTPUT(@var{filename}) 2669@cindex output file name in linker scripot 2670The @code{OUTPUT} command names the output file. Using 2671@code{OUTPUT(@var{filename})} in the linker script is exactly like using 2672@samp{-o @var{filename}} on the command line (@pxref{Options,,Command 2673Line Options}). If both are used, the command line option takes 2674precedence. 2675 2676You can use the @code{OUTPUT} command to define a default name for the 2677output file other than the usual default of @file{a.out}. 2678 2679@item SEARCH_DIR(@var{path}) 2680@kindex SEARCH_DIR(@var{path}) 2681@cindex library search path in linker script 2682@cindex archive search path in linker script 2683@cindex search path in linker script 2684The @code{SEARCH_DIR} command adds @var{path} to the list of paths where 2685@command{ld} looks for archive libraries. Using 2686@code{SEARCH_DIR(@var{path})} is exactly like using @samp{-L @var{path}} 2687on the command line (@pxref{Options,,Command Line Options}). If both 2688are used, then the linker will search both paths. Paths specified using 2689the command line option are searched first. 2690 2691@item STARTUP(@var{filename}) 2692@kindex STARTUP(@var{filename}) 2693@cindex first input file 2694The @code{STARTUP} command is just like the @code{INPUT} command, except 2695that @var{filename} will become the first input file to be linked, as 2696though it were specified first on the command line. This may be useful 2697when using a system in which the entry point is always the start of the 2698first file. 2699@end table 2700 2701@ifclear SingleFormat 2702@node Format Commands 2703@subsection Commands Dealing with Object File Formats 2704A couple of linker script commands deal with object file formats. 2705 2706@table @code 2707@item OUTPUT_FORMAT(@var{bfdname}) 2708@itemx OUTPUT_FORMAT(@var{default}, @var{big}, @var{little}) 2709@kindex OUTPUT_FORMAT(@var{bfdname}) 2710@cindex output file format in linker script 2711The @code{OUTPUT_FORMAT} command names the BFD format to use for the 2712output file (@pxref{BFD}). Using @code{OUTPUT_FORMAT(@var{bfdname})} is 2713exactly like using @samp{--oformat @var{bfdname}} on the command line 2714(@pxref{Options,,Command Line Options}). If both are used, the command 2715line option takes precedence. 2716 2717You can use @code{OUTPUT_FORMAT} with three arguments to use different 2718formats based on the @samp{-EB} and @samp{-EL} command line options. 2719This permits the linker script to set the output format based on the 2720desired endianness. 2721 2722If neither @samp{-EB} nor @samp{-EL} are used, then the output format 2723will be the first argument, @var{default}. If @samp{-EB} is used, the 2724output format will be the second argument, @var{big}. If @samp{-EL} is 2725used, the output format will be the third argument, @var{little}. 2726 2727For example, the default linker script for the MIPS ELF target uses this 2728command: 2729@smallexample 2730OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips) 2731@end smallexample 2732This says that the default format for the output file is 2733@samp{elf32-bigmips}, but if the user uses the @samp{-EL} command line 2734option, the output file will be created in the @samp{elf32-littlemips} 2735format. 2736 2737@item TARGET(@var{bfdname}) 2738@kindex TARGET(@var{bfdname}) 2739@cindex input file format in linker script 2740The @code{TARGET} command names the BFD format to use when reading input 2741files. It affects subsequent @code{INPUT} and @code{GROUP} commands. 2742This command is like using @samp{-b @var{bfdname}} on the command line 2743(@pxref{Options,,Command Line Options}). If the @code{TARGET} command 2744is used but @code{OUTPUT_FORMAT} is not, then the last @code{TARGET} 2745command is also used to set the format for the output file. @xref{BFD}. 2746@end table 2747@end ifclear 2748 2749@node Miscellaneous Commands 2750@subsection Other Linker Script Commands 2751There are a few other linker scripts commands. 2752 2753@table @code 2754@item ASSERT(@var{exp}, @var{message}) 2755@kindex ASSERT 2756@cindex assertion in linker script 2757Ensure that @var{exp} is non-zero. If it is zero, then exit the linker 2758with an error code, and print @var{message}. 2759 2760@item EXTERN(@var{symbol} @var{symbol} @dots{}) 2761@kindex EXTERN 2762@cindex undefined symbol in linker script 2763Force @var{symbol} to be entered in the output file as an undefined 2764symbol. Doing this may, for example, trigger linking of additional 2765modules from standard libraries. You may list several @var{symbol}s for 2766each @code{EXTERN}, and you may use @code{EXTERN} multiple times. This 2767command has the same effect as the @samp{-u} command-line option. 2768 2769@item FORCE_COMMON_ALLOCATION 2770@kindex FORCE_COMMON_ALLOCATION 2771@cindex common allocation in linker script 2772This command has the same effect as the @samp{-d} command-line option: 2773to make @command{ld} assign space to common symbols even if a relocatable 2774output file is specified (@samp{-r}). 2775 2776@item INHIBIT_COMMON_ALLOCATION 2777@kindex INHIBIT_COMMON_ALLOCATION 2778@cindex common allocation in linker script 2779This command has the same effect as the @samp{--no-define-common} 2780command-line option: to make @code{ld} omit the assignment of addresses 2781to common symbols even for a non-relocatable output file. 2782 2783@item NOCROSSREFS(@var{section} @var{section} @dots{}) 2784@kindex NOCROSSREFS(@var{sections}) 2785@cindex cross references 2786This command may be used to tell @command{ld} to issue an error about any 2787references among certain output sections. 2788 2789In certain types of programs, particularly on embedded systems when 2790using overlays, when one section is loaded into memory, another section 2791will not be. Any direct references between the two sections would be 2792errors. For example, it would be an error if code in one section called 2793a function defined in the other section. 2794 2795The @code{NOCROSSREFS} command takes a list of output section names. If 2796@command{ld} detects any cross references between the sections, it reports 2797an error and returns a non-zero exit status. Note that the 2798@code{NOCROSSREFS} command uses output section names, not input section 2799names. 2800 2801@ifclear SingleFormat 2802@item OUTPUT_ARCH(@var{bfdarch}) 2803@kindex OUTPUT_ARCH(@var{bfdarch}) 2804@cindex machine architecture 2805@cindex architecture 2806Specify a particular output machine architecture. The argument is one 2807of the names used by the BFD library (@pxref{BFD}). You can see the 2808architecture of an object file by using the @code{objdump} program with 2809the @samp{-f} option. 2810@end ifclear 2811@end table 2812 2813@node Assignments 2814@section Assigning Values to Symbols 2815@cindex assignment in scripts 2816@cindex symbol definition, scripts 2817@cindex variables, defining 2818You may assign a value to a symbol in a linker script. This will define 2819the symbol and place it into the symbol table with a global scope. 2820 2821@menu 2822* Simple Assignments:: Simple Assignments 2823* PROVIDE:: PROVIDE 2824* PROVIDE_HIDDEN:: PROVIDE_HIDDEN 2825* Source Code Reference:: How to use a linker script defined symbol in source code 2826@end menu 2827 2828@node Simple Assignments 2829@subsection Simple Assignments 2830 2831You may assign to a symbol using any of the C assignment operators: 2832 2833@table @code 2834@item @var{symbol} = @var{expression} ; 2835@itemx @var{symbol} += @var{expression} ; 2836@itemx @var{symbol} -= @var{expression} ; 2837@itemx @var{symbol} *= @var{expression} ; 2838@itemx @var{symbol} /= @var{expression} ; 2839@itemx @var{symbol} <<= @var{expression} ; 2840@itemx @var{symbol} >>= @var{expression} ; 2841@itemx @var{symbol} &= @var{expression} ; 2842@itemx @var{symbol} |= @var{expression} ; 2843@end table 2844 2845The first case will define @var{symbol} to the value of 2846@var{expression}. In the other cases, @var{symbol} must already be 2847defined, and the value will be adjusted accordingly. 2848 2849The special symbol name @samp{.} indicates the location counter. You 2850may only use this within a @code{SECTIONS} command. @xref{Location Counter}. 2851 2852The semicolon after @var{expression} is required. 2853 2854Expressions are defined below; see @ref{Expressions}. 2855 2856You may write symbol assignments as commands in their own right, or as 2857statements within a @code{SECTIONS} command, or as part of an output 2858section description in a @code{SECTIONS} command. 2859 2860The section of the symbol will be set from the section of the 2861expression; for more information, see @ref{Expression Section}. 2862 2863Here is an example showing the three different places that symbol 2864assignments may be used: 2865 2866@smallexample 2867floating_point = 0; 2868SECTIONS 2869@{ 2870 .text : 2871 @{ 2872 *(.text) 2873 _etext = .; 2874 @} 2875 _bdata = (. + 3) & ~ 3; 2876 .data : @{ *(.data) @} 2877@} 2878@end smallexample 2879@noindent 2880In this example, the symbol @samp{floating_point} will be defined as 2881zero. The symbol @samp{_etext} will be defined as the address following 2882the last @samp{.text} input section. The symbol @samp{_bdata} will be 2883defined as the address following the @samp{.text} output section aligned 2884upward to a 4 byte boundary. 2885 2886@node PROVIDE 2887@subsection PROVIDE 2888@cindex PROVIDE 2889In some cases, it is desirable for a linker script to define a symbol 2890only if it is referenced and is not defined by any object included in 2891the link. For example, traditional linkers defined the symbol 2892@samp{etext}. However, ANSI C requires that the user be able to use 2893@samp{etext} as a function name without encountering an error. The 2894@code{PROVIDE} keyword may be used to define a symbol, such as 2895@samp{etext}, only if it is referenced but not defined. The syntax is 2896@code{PROVIDE(@var{symbol} = @var{expression})}. 2897 2898Here is an example of using @code{PROVIDE} to define @samp{etext}: 2899@smallexample 2900SECTIONS 2901@{ 2902 .text : 2903 @{ 2904 *(.text) 2905 _etext = .; 2906 PROVIDE(etext = .); 2907 @} 2908@} 2909@end smallexample 2910 2911In this example, if the program defines @samp{_etext} (with a leading 2912underscore), the linker will give a multiple definition error. If, on 2913the other hand, the program defines @samp{etext} (with no leading 2914underscore), the linker will silently use the definition in the program. 2915If the program references @samp{etext} but does not define it, the 2916linker will use the definition in the linker script. 2917 2918@node PROVIDE_HIDDEN 2919@subsection PROVIDE_HIDDEN 2920@cindex PROVIDE_HIDDEN 2921Similar to @code{PROVIDE}. For ELF targeted ports, the symbol will be 2922hidden and won't be exported. 2923 2924@node Source Code Reference 2925@subsection Source Code Reference 2926 2927Accessing a linker script defined variable from source code is not 2928intuitive. In particular a linker script symbol is not equivalent to 2929a variable declaration in a high level language, it is instead a 2930symbol that does not have a value. 2931 2932Before going further, it is important to note that compilers often 2933transform names in the source code into different names when they are 2934stored in the symbol table. For example, Fortran compilers commonly 2935prepend or append an underscore, and C++ performs extensive @samp{name 2936mangling}. Therefore there might be a discrepancy between the name 2937of a variable as it is used in source code and the name of the same 2938variable as it is defined in a linker script. For example in C a 2939linker script variable might be referred to as: 2940 2941@smallexample 2942 extern int foo; 2943@end smallexample 2944 2945But in the linker script it might be defined as: 2946 2947@smallexample 2948 _foo = 1000; 2949@end smallexample 2950 2951In the remaining examples however it is assumed that no name 2952transformation has taken place. 2953 2954When a symbol is declared in a high level language such as C, two 2955things happen. The first is that the compiler reserves enough space 2956in the program's memory to hold the @emph{value} of the symbol. The 2957second is that the compiler creates an entry in the program's symbol 2958table which holds the symbol's @emph{address}. ie the symbol table 2959contains the address of the block of memory holding the symbol's 2960value. So for example the following C declaration, at file scope: 2961 2962@smallexample 2963 int foo = 1000; 2964@end smallexample 2965 2966creates a entry called @samp{foo} in the symbol table. This entry 2967holds the address of an @samp{int} sized block of memory where the 2968number 1000 is initially stored. 2969 2970When a program references a symbol the compiler generates code that 2971first accesses the symbol table to find the address of the symbol's 2972memory block and then code to read the value from that memory block. 2973So: 2974 2975@smallexample 2976 foo = 1; 2977@end smallexample 2978 2979looks up the symbol @samp{foo} in the symbol table, gets the address 2980associated with this symbol and then writes the value 1 into that 2981address. Whereas: 2982 2983@smallexample 2984 int * a = & foo; 2985@end smallexample 2986 2987looks up the symbol @samp{foo} in the symbol table, gets it address 2988and then copies this address into the block of memory associated with 2989the variable @samp{a}. 2990 2991Linker scripts symbol declarations, by contrast, create an entry in 2992the symbol table but do not assign any memory to them. Thus they are 2993an address without a value. So for example the linker script definition: 2994 2995@smallexample 2996 foo = 1000; 2997@end smallexample 2998 2999creates an entry in the symbol table called @samp{foo} which holds 3000the address of memory location 1000, but nothing special is stored at 3001address 1000. This means that you cannot access the @emph{value} of a 3002linker script defined symbol - it has no value - all you can do is 3003access the @emph{address} of a linker script defined symbol. 3004 3005Hence when you are using a linker script defined symbol in source code 3006you should always take the address of the symbol, and never attempt to 3007use its value. For example suppose you want to copy the contents of a 3008section of memory called .ROM into a section called .FLASH and the 3009linker script contains these declarations: 3010 3011@smallexample 3012@group 3013 start_of_ROM = .ROM; 3014 end_of_ROM = .ROM + sizeof (.ROM) - 1; 3015 start_of_FLASH = .FLASH; 3016@end group 3017@end smallexample 3018 3019Then the C source code to perform the copy would be: 3020 3021@smallexample 3022@group 3023 extern char start_of_ROM, end_of_ROM, start_of_FLASH; 3024 3025 memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM); 3026@end group 3027@end smallexample 3028 3029Note the use of the @samp{&} operators. These are correct. 3030 3031@node SECTIONS 3032@section SECTIONS Command 3033@kindex SECTIONS 3034The @code{SECTIONS} command tells the linker how to map input sections 3035into output sections, and how to place the output sections in memory. 3036 3037The format of the @code{SECTIONS} command is: 3038@smallexample 3039SECTIONS 3040@{ 3041 @var{sections-command} 3042 @var{sections-command} 3043 @dots{} 3044@} 3045@end smallexample 3046 3047Each @var{sections-command} may of be one of the following: 3048 3049@itemize @bullet 3050@item 3051an @code{ENTRY} command (@pxref{Entry Point,,Entry command}) 3052@item 3053a symbol assignment (@pxref{Assignments}) 3054@item 3055an output section description 3056@item 3057an overlay description 3058@end itemize 3059 3060The @code{ENTRY} command and symbol assignments are permitted inside the 3061@code{SECTIONS} command for convenience in using the location counter in 3062those commands. This can also make the linker script easier to 3063understand because you can use those commands at meaningful points in 3064the layout of the output file. 3065 3066Output section descriptions and overlay descriptions are described 3067below. 3068 3069If you do not use a @code{SECTIONS} command in your linker script, the 3070linker will place each input section into an identically named output 3071section in the order that the sections are first encountered in the 3072input files. If all input sections are present in the first file, for 3073example, the order of sections in the output file will match the order 3074in the first input file. The first section will be at address zero. 3075 3076@menu 3077* Output Section Description:: Output section description 3078* Output Section Name:: Output section name 3079* Output Section Address:: Output section address 3080* Input Section:: Input section description 3081* Output Section Data:: Output section data 3082* Output Section Keywords:: Output section keywords 3083* Output Section Discarding:: Output section discarding 3084* Output Section Attributes:: Output section attributes 3085* Overlay Description:: Overlay description 3086@end menu 3087 3088@node Output Section Description 3089@subsection Output Section Description 3090The full description of an output section looks like this: 3091@smallexample 3092@group 3093@var{section} [@var{address}] [(@var{type})] : 3094 [AT(@var{lma})] [ALIGN(@var{section_align})] [SUBALIGN(@var{subsection_align})] 3095 @{ 3096 @var{output-section-command} 3097 @var{output-section-command} 3098 @dots{} 3099 @} [>@var{region}] [AT>@var{lma_region}] [:@var{phdr} :@var{phdr} @dots{}] [=@var{fillexp}] 3100@end group 3101@end smallexample 3102 3103Most output sections do not use most of the optional section attributes. 3104 3105The whitespace around @var{section} is required, so that the section 3106name is unambiguous. The colon and the curly braces are also required. 3107The line breaks and other white space are optional. 3108 3109Each @var{output-section-command} may be one of the following: 3110 3111@itemize @bullet 3112@item 3113a symbol assignment (@pxref{Assignments}) 3114@item 3115an input section description (@pxref{Input Section}) 3116@item 3117data values to include directly (@pxref{Output Section Data}) 3118@item 3119a special output section keyword (@pxref{Output Section Keywords}) 3120@end itemize 3121 3122@node Output Section Name 3123@subsection Output Section Name 3124@cindex name, section 3125@cindex section name 3126The name of the output section is @var{section}. @var{section} must 3127meet the constraints of your output format. In formats which only 3128support a limited number of sections, such as @code{a.out}, the name 3129must be one of the names supported by the format (@code{a.out}, for 3130example, allows only @samp{.text}, @samp{.data} or @samp{.bss}). If the 3131output format supports any number of sections, but with numbers and not 3132names (as is the case for Oasys), the name should be supplied as a 3133quoted numeric string. A section name may consist of any sequence of 3134characters, but a name which contains any unusual characters such as 3135commas must be quoted. 3136 3137The output section name @samp{/DISCARD/} is special; @ref{Output Section 3138Discarding}. 3139 3140@node Output Section Address 3141@subsection Output Section Address 3142@cindex address, section 3143@cindex section address 3144The @var{address} is an expression for the VMA (the virtual memory 3145address) of the output section. If you do not provide @var{address}, 3146the linker will set it based on @var{region} if present, or otherwise 3147based on the current value of the location counter. 3148 3149If you provide @var{address}, the address of the output section will be 3150set to precisely that. If you provide neither @var{address} nor 3151@var{region}, then the address of the output section will be set to the 3152current value of the location counter aligned to the alignment 3153requirements of the output section. The alignment requirement of the 3154output section is the strictest alignment of any input section contained 3155within the output section. 3156 3157For example, 3158@smallexample 3159.text . : @{ *(.text) @} 3160@end smallexample 3161@noindent 3162and 3163@smallexample 3164.text : @{ *(.text) @} 3165@end smallexample 3166@noindent 3167are subtly different. The first will set the address of the 3168@samp{.text} output section to the current value of the location 3169counter. The second will set it to the current value of the location 3170counter aligned to the strictest alignment of a @samp{.text} input 3171section. 3172 3173The @var{address} may be an arbitrary expression; @ref{Expressions}. 3174For example, if you want to align the section on a 0x10 byte boundary, 3175so that the lowest four bits of the section address are zero, you could 3176do something like this: 3177@smallexample 3178.text ALIGN(0x10) : @{ *(.text) @} 3179@end smallexample 3180@noindent 3181This works because @code{ALIGN} returns the current location counter 3182aligned upward to the specified value. 3183 3184Specifying @var{address} for a section will change the value of the 3185location counter. 3186 3187@node Input Section 3188@subsection Input Section Description 3189@cindex input sections 3190@cindex mapping input sections to output sections 3191The most common output section command is an input section description. 3192 3193The input section description is the most basic linker script operation. 3194You use output sections to tell the linker how to lay out your program 3195in memory. You use input section descriptions to tell the linker how to 3196map the input files into your memory layout. 3197 3198@menu 3199* Input Section Basics:: Input section basics 3200* Input Section Wildcards:: Input section wildcard patterns 3201* Input Section Common:: Input section for common symbols 3202* Input Section Keep:: Input section and garbage collection 3203* Input Section Example:: Input section example 3204@end menu 3205 3206@node Input Section Basics 3207@subsubsection Input Section Basics 3208@cindex input section basics 3209An input section description consists of a file name optionally followed 3210by a list of section names in parentheses. 3211 3212The file name and the section name may be wildcard patterns, which we 3213describe further below (@pxref{Input Section Wildcards}). 3214 3215The most common input section description is to include all input 3216sections with a particular name in the output section. For example, to 3217include all input @samp{.text} sections, you would write: 3218@smallexample 3219*(.text) 3220@end smallexample 3221@noindent 3222Here the @samp{*} is a wildcard which matches any file name. To exclude a list 3223of files from matching the file name wildcard, EXCLUDE_FILE may be used to 3224match all files except the ones specified in the EXCLUDE_FILE list. For 3225example: 3226@smallexample 3227(*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)) 3228@end smallexample 3229will cause all .ctors sections from all files except @file{crtend.o} and 3230@file{otherfile.o} to be included. 3231 3232There are two ways to include more than one section: 3233@smallexample 3234*(.text .rdata) 3235*(.text) *(.rdata) 3236@end smallexample 3237@noindent 3238The difference between these is the order in which the @samp{.text} and 3239@samp{.rdata} input sections will appear in the output section. In the 3240first example, they will be intermingled, appearing in the same order as 3241they are found in the linker input. In the second example, all 3242@samp{.text} input sections will appear first, followed by all 3243@samp{.rdata} input sections. 3244 3245You can specify a file name to include sections from a particular file. 3246You would do this if one or more of your files contain special data that 3247needs to be at a particular location in memory. For example: 3248@smallexample 3249data.o(.data) 3250@end smallexample 3251 3252If you use a file name without a list of sections, then all sections in 3253the input file will be included in the output section. This is not 3254commonly done, but it may by useful on occasion. For example: 3255@smallexample 3256data.o 3257@end smallexample 3258 3259When you use a file name which does not contain any wild card 3260characters, the linker will first see if you also specified the file 3261name on the linker command line or in an @code{INPUT} command. If you 3262did not, the linker will attempt to open the file as an input file, as 3263though it appeared on the command line. Note that this differs from an 3264@code{INPUT} command, because the linker will not search for the file in 3265the archive search path. 3266 3267@node Input Section Wildcards 3268@subsubsection Input Section Wildcard Patterns 3269@cindex input section wildcards 3270@cindex wildcard file name patterns 3271@cindex file name wildcard patterns 3272@cindex section name wildcard patterns 3273In an input section description, either the file name or the section 3274name or both may be wildcard patterns. 3275 3276The file name of @samp{*} seen in many examples is a simple wildcard 3277pattern for the file name. 3278 3279The wildcard patterns are like those used by the Unix shell. 3280 3281@table @samp 3282@item * 3283matches any number of characters 3284@item ? 3285matches any single character 3286@item [@var{chars}] 3287matches a single instance of any of the @var{chars}; the @samp{-} 3288character may be used to specify a range of characters, as in 3289@samp{[a-z]} to match any lower case letter 3290@item \ 3291quotes the following character 3292@end table 3293 3294When a file name is matched with a wildcard, the wildcard characters 3295will not match a @samp{/} character (used to separate directory names on 3296Unix). A pattern consisting of a single @samp{*} character is an 3297exception; it will always match any file name, whether it contains a 3298@samp{/} or not. In a section name, the wildcard characters will match 3299a @samp{/} character. 3300 3301File name wildcard patterns only match files which are explicitly 3302specified on the command line or in an @code{INPUT} command. The linker 3303does not search directories to expand wildcards. 3304 3305If a file name matches more than one wildcard pattern, or if a file name 3306appears explicitly and is also matched by a wildcard pattern, the linker 3307will use the first match in the linker script. For example, this 3308sequence of input section descriptions is probably in error, because the 3309@file{data.o} rule will not be used: 3310@smallexample 3311.data : @{ *(.data) @} 3312.data1 : @{ data.o(.data) @} 3313@end smallexample 3314 3315@cindex SORT_BY_NAME 3316Normally, the linker will place files and sections matched by wildcards 3317in the order in which they are seen during the link. You can change 3318this by using the @code{SORT_BY_NAME} keyword, which appears before a wildcard 3319pattern in parentheses (e.g., @code{SORT_BY_NAME(.text*)}). When the 3320@code{SORT_BY_NAME} keyword is used, the linker will sort the files or sections 3321into ascending order by name before placing them in the output file. 3322 3323@cindex SORT_BY_ALIGNMENT 3324@code{SORT_BY_ALIGNMENT} is very similar to @code{SORT_BY_NAME}. The 3325difference is @code{SORT_BY_ALIGNMENT} will sort sections into 3326ascending order by alignment before placing them in the output file. 3327 3328@cindex SORT 3329@code{SORT} is an alias for @code{SORT_BY_NAME}. 3330 3331When there are nested section sorting commands in linker script, there 3332can be at most 1 level of nesting for section sorting commands. 3333 3334@enumerate 3335@item 3336@code{SORT_BY_NAME} (@code{SORT_BY_ALIGNMENT} (wildcard section pattern)). 3337It will sort the input sections by name first, then by alignment if 2 3338sections have the same name. 3339@item 3340@code{SORT_BY_ALIGNMENT} (@code{SORT_BY_NAME} (wildcard section pattern)). 3341It will sort the input sections by alignment first, then by name if 2 3342sections have the same alignment. 3343@item 3344@code{SORT_BY_NAME} (@code{SORT_BY_NAME} (wildcard section pattern)) is 3345treated the same as @code{SORT_BY_NAME} (wildcard section pattern). 3346@item 3347@code{SORT_BY_ALIGNMENT} (@code{SORT_BY_ALIGNMENT} (wildcard section pattern)) 3348is treated the same as @code{SORT_BY_ALIGNMENT} (wildcard section pattern). 3349@item 3350All other nested section sorting commands are invalid. 3351@end enumerate 3352 3353When both command line section sorting option and linker script 3354section sorting command are used, section sorting command always 3355takes precedence over the command line option. 3356 3357If the section sorting command in linker script isn't nested, the 3358command line option will make the section sorting command to be 3359treated as nested sorting command. 3360 3361@enumerate 3362@item 3363@code{SORT_BY_NAME} (wildcard section pattern ) with 3364@option{--sort-sections alignment} is equivalent to 3365@code{SORT_BY_NAME} (@code{SORT_BY_ALIGNMENT} (wildcard section pattern)). 3366@item 3367@code{SORT_BY_ALIGNMENT} (wildcard section pattern) with 3368@option{--sort-section name} is equivalent to 3369@code{SORT_BY_ALIGNMENT} (@code{SORT_BY_NAME} (wildcard section pattern)). 3370@end enumerate 3371 3372If the section sorting command in linker script is nested, the 3373command line option will be ignored. 3374 3375If you ever get confused about where input sections are going, use the 3376@samp{-M} linker option to generate a map file. The map file shows 3377precisely how input sections are mapped to output sections. 3378 3379This example shows how wildcard patterns might be used to partition 3380files. This linker script directs the linker to place all @samp{.text} 3381sections in @samp{.text} and all @samp{.bss} sections in @samp{.bss}. 3382The linker will place the @samp{.data} section from all files beginning 3383with an upper case character in @samp{.DATA}; for all other files, the 3384linker will place the @samp{.data} section in @samp{.data}. 3385@smallexample 3386@group 3387SECTIONS @{ 3388 .text : @{ *(.text) @} 3389 .DATA : @{ [A-Z]*(.data) @} 3390 .data : @{ *(.data) @} 3391 .bss : @{ *(.bss) @} 3392@} 3393@end group 3394@end smallexample 3395 3396@node Input Section Common 3397@subsubsection Input Section for Common Symbols 3398@cindex common symbol placement 3399@cindex uninitialized data placement 3400A special notation is needed for common symbols, because in many object 3401file formats common symbols do not have a particular input section. The 3402linker treats common symbols as though they are in an input section 3403named @samp{COMMON}. 3404 3405You may use file names with the @samp{COMMON} section just as with any 3406other input sections. You can use this to place common symbols from a 3407particular input file in one section while common symbols from other 3408input files are placed in another section. 3409 3410In most cases, common symbols in input files will be placed in the 3411@samp{.bss} section in the output file. For example: 3412@smallexample 3413.bss @{ *(.bss) *(COMMON) @} 3414@end smallexample 3415 3416@cindex scommon section 3417@cindex small common symbols 3418Some object file formats have more than one type of common symbol. For 3419example, the MIPS ELF object file format distinguishes standard common 3420symbols and small common symbols. In this case, the linker will use a 3421different special section name for other types of common symbols. In 3422the case of MIPS ELF, the linker uses @samp{COMMON} for standard common 3423symbols and @samp{.scommon} for small common symbols. This permits you 3424to map the different types of common symbols into memory at different 3425locations. 3426 3427@cindex [COMMON] 3428You will sometimes see @samp{[COMMON]} in old linker scripts. This 3429notation is now considered obsolete. It is equivalent to 3430@samp{*(COMMON)}. 3431 3432@node Input Section Keep 3433@subsubsection Input Section and Garbage Collection 3434@cindex KEEP 3435@cindex garbage collection 3436When link-time garbage collection is in use (@samp{--gc-sections}), 3437it is often useful to mark sections that should not be eliminated. 3438This is accomplished by surrounding an input section's wildcard entry 3439with @code{KEEP()}, as in @code{KEEP(*(.init))} or 3440@code{KEEP(SORT_BY_NAME(*)(.ctors))}. 3441 3442@node Input Section Example 3443@subsubsection Input Section Example 3444The following example is a complete linker script. It tells the linker 3445to read all of the sections from file @file{all.o} and place them at the 3446start of output section @samp{outputa} which starts at location 3447@samp{0x10000}. All of section @samp{.input1} from file @file{foo.o} 3448follows immediately, in the same output section. All of section 3449@samp{.input2} from @file{foo.o} goes into output section 3450@samp{outputb}, followed by section @samp{.input1} from @file{foo1.o}. 3451All of the remaining @samp{.input1} and @samp{.input2} sections from any 3452files are written to output section @samp{outputc}. 3453 3454@smallexample 3455@group 3456SECTIONS @{ 3457 outputa 0x10000 : 3458 @{ 3459 all.o 3460 foo.o (.input1) 3461 @} 3462@end group 3463@group 3464 outputb : 3465 @{ 3466 foo.o (.input2) 3467 foo1.o (.input1) 3468 @} 3469@end group 3470@group 3471 outputc : 3472 @{ 3473 *(.input1) 3474 *(.input2) 3475 @} 3476@} 3477@end group 3478@end smallexample 3479 3480@node Output Section Data 3481@subsection Output Section Data 3482@cindex data 3483@cindex section data 3484@cindex output section data 3485@kindex BYTE(@var{expression}) 3486@kindex SHORT(@var{expression}) 3487@kindex LONG(@var{expression}) 3488@kindex QUAD(@var{expression}) 3489@kindex SQUAD(@var{expression}) 3490You can include explicit bytes of data in an output section by using 3491@code{BYTE}, @code{SHORT}, @code{LONG}, @code{QUAD}, or @code{SQUAD} as 3492an output section command. Each keyword is followed by an expression in 3493parentheses providing the value to store (@pxref{Expressions}). The 3494value of the expression is stored at the current value of the location 3495counter. 3496 3497The @code{BYTE}, @code{SHORT}, @code{LONG}, and @code{QUAD} commands 3498store one, two, four, and eight bytes (respectively). After storing the 3499bytes, the location counter is incremented by the number of bytes 3500stored. 3501 3502For example, this will store the byte 1 followed by the four byte value 3503of the symbol @samp{addr}: 3504@smallexample 3505BYTE(1) 3506LONG(addr) 3507@end smallexample 3508 3509When using a 64 bit host or target, @code{QUAD} and @code{SQUAD} are the 3510same; they both store an 8 byte, or 64 bit, value. When both host and 3511target are 32 bits, an expression is computed as 32 bits. In this case 3512@code{QUAD} stores a 32 bit value zero extended to 64 bits, and 3513@code{SQUAD} stores a 32 bit value sign extended to 64 bits. 3514 3515If the object file format of the output file has an explicit endianness, 3516which is the normal case, the value will be stored in that endianness. 3517When the object file format does not have an explicit endianness, as is 3518true of, for example, S-records, the value will be stored in the 3519endianness of the first input object file. 3520 3521Note---these commands only work inside a section description and not 3522between them, so the following will produce an error from the linker: 3523@smallexample 3524SECTIONS @{@ .text : @{@ *(.text) @}@ LONG(1) .data : @{@ *(.data) @}@ @}@ 3525@end smallexample 3526whereas this will work: 3527@smallexample 3528SECTIONS @{@ .text : @{@ *(.text) ; LONG(1) @}@ .data : @{@ *(.data) @}@ @}@ 3529@end smallexample 3530 3531@kindex FILL(@var{expression}) 3532@cindex holes, filling 3533@cindex unspecified memory 3534You may use the @code{FILL} command to set the fill pattern for the 3535current section. It is followed by an expression in parentheses. Any 3536otherwise unspecified regions of memory within the section (for example, 3537gaps left due to the required alignment of input sections) are filled 3538with the value of the expression, repeated as 3539necessary. A @code{FILL} statement covers memory locations after the 3540point at which it occurs in the section definition; by including more 3541than one @code{FILL} statement, you can have different fill patterns in 3542different parts of an output section. 3543 3544This example shows how to fill unspecified regions of memory with the 3545value @samp{0x90}: 3546@smallexample 3547FILL(0x90909090) 3548@end smallexample 3549 3550The @code{FILL} command is similar to the @samp{=@var{fillexp}} output 3551section attribute, but it only affects the 3552part of the section following the @code{FILL} command, rather than the 3553entire section. If both are used, the @code{FILL} command takes 3554precedence. @xref{Output Section Fill}, for details on the fill 3555expression. 3556 3557@node Output Section Keywords 3558@subsection Output Section Keywords 3559There are a couple of keywords which can appear as output section 3560commands. 3561 3562@table @code 3563@kindex CREATE_OBJECT_SYMBOLS 3564@cindex input filename symbols 3565@cindex filename symbols 3566@item CREATE_OBJECT_SYMBOLS 3567The command tells the linker to create a symbol for each input file. 3568The name of each symbol will be the name of the corresponding input 3569file. The section of each symbol will be the output section in which 3570the @code{CREATE_OBJECT_SYMBOLS} command appears. 3571 3572This is conventional for the a.out object file format. It is not 3573normally used for any other object file format. 3574 3575@kindex CONSTRUCTORS 3576@cindex C++ constructors, arranging in link 3577@cindex constructors, arranging in link 3578@item CONSTRUCTORS 3579When linking using the a.out object file format, the linker uses an 3580unusual set construct to support C++ global constructors and 3581destructors. When linking object file formats which do not support 3582arbitrary sections, such as ECOFF and XCOFF, the linker will 3583automatically recognize C++ global constructors and destructors by name. 3584For these object file formats, the @code{CONSTRUCTORS} command tells the 3585linker to place constructor information in the output section where the 3586@code{CONSTRUCTORS} command appears. The @code{CONSTRUCTORS} command is 3587ignored for other object file formats. 3588 3589The symbol @w{@code{__CTOR_LIST__}} marks the start of the global 3590constructors, and the symbol @w{@code{__CTOR_END__}} marks the end. 3591Similarly, @w{@code{__DTOR_LIST__}} and @w{@code{__DTOR_END__}} mark 3592the start and end of the global destructors. The 3593first word in the list is the number of entries, followed by the address 3594of each constructor or destructor, followed by a zero word. The 3595compiler must arrange to actually run the code. For these object file 3596formats @sc{gnu} C++ normally calls constructors from a subroutine 3597@code{__main}; a call to @code{__main} is automatically inserted into 3598the startup code for @code{main}. @sc{gnu} C++ normally runs 3599destructors either by using @code{atexit}, or directly from the function 3600@code{exit}. 3601 3602For object file formats such as @code{COFF} or @code{ELF} which support 3603arbitrary section names, @sc{gnu} C++ will normally arrange to put the 3604addresses of global constructors and destructors into the @code{.ctors} 3605and @code{.dtors} sections. Placing the following sequence into your 3606linker script will build the sort of table which the @sc{gnu} C++ 3607runtime code expects to see. 3608 3609@smallexample 3610 __CTOR_LIST__ = .; 3611 LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) 3612 *(.ctors) 3613 LONG(0) 3614 __CTOR_END__ = .; 3615 __DTOR_LIST__ = .; 3616 LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) 3617 *(.dtors) 3618 LONG(0) 3619 __DTOR_END__ = .; 3620@end smallexample 3621 3622If you are using the @sc{gnu} C++ support for initialization priority, 3623which provides some control over the order in which global constructors 3624are run, you must sort the constructors at link time to ensure that they 3625are executed in the correct order. When using the @code{CONSTRUCTORS} 3626command, use @samp{SORT_BY_NAME(CONSTRUCTORS)} instead. When using the 3627@code{.ctors} and @code{.dtors} sections, use @samp{*(SORT_BY_NAME(.ctors))} and 3628@samp{*(SORT_BY_NAME(.dtors))} instead of just @samp{*(.ctors)} and 3629@samp{*(.dtors)}. 3630 3631Normally the compiler and linker will handle these issues automatically, 3632and you will not need to concern yourself with them. However, you may 3633need to consider this if you are using C++ and writing your own linker 3634scripts. 3635 3636@end table 3637 3638@node Output Section Discarding 3639@subsection Output Section Discarding 3640@cindex discarding sections 3641@cindex sections, discarding 3642@cindex removing sections 3643The linker will not create output section which do not have any 3644contents. This is for convenience when referring to input sections that 3645may or may not be present in any of the input files. For example: 3646@smallexample 3647.foo @{ *(.foo) @} 3648@end smallexample 3649@noindent 3650will only create a @samp{.foo} section in the output file if there is a 3651@samp{.foo} section in at least one input file. 3652 3653If you use anything other than an input section description as an output 3654section command, such as a symbol assignment, then the output section 3655will always be created, even if there are no matching input sections. 3656 3657@cindex /DISCARD/ 3658The special output section name @samp{/DISCARD/} may be used to discard 3659input sections. Any input sections which are assigned to an output 3660section named @samp{/DISCARD/} are not included in the output file. 3661 3662@node Output Section Attributes 3663@subsection Output Section Attributes 3664@cindex output section attributes 3665We showed above that the full description of an output section looked 3666like this: 3667@smallexample 3668@group 3669@var{section} [@var{address}] [(@var{type})] : 3670 [AT(@var{lma})] [ALIGN(@var{section_align})] [SUBALIGN(@var{subsection_align})] 3671 @{ 3672 @var{output-section-command} 3673 @var{output-section-command} 3674 @dots{} 3675 @} [>@var{region}] [AT>@var{lma_region}] [:@var{phdr} :@var{phdr} @dots{}] [=@var{fillexp}] 3676@end group 3677@end smallexample 3678We've already described @var{section}, @var{address}, and 3679@var{output-section-command}. In this section we will describe the 3680remaining section attributes. 3681 3682@menu 3683* Output Section Type:: Output section type 3684* Output Section LMA:: Output section LMA 3685* Forced Output Alignment:: Forced Output Alignment 3686* Forced Input Alignment:: Forced Input Alignment 3687* Output Section Region:: Output section region 3688* Output Section Phdr:: Output section phdr 3689* Output Section Fill:: Output section fill 3690@end menu 3691 3692@node Output Section Type 3693@subsubsection Output Section Type 3694Each output section may have a type. The type is a keyword in 3695parentheses. The following types are defined: 3696 3697@table @code 3698@item NOLOAD 3699The section should be marked as not loadable, so that it will not be 3700loaded into memory when the program is run. 3701@item DSECT 3702@itemx COPY 3703@itemx INFO 3704@itemx OVERLAY 3705These type names are supported for backward compatibility, and are 3706rarely used. They all have the same effect: the section should be 3707marked as not allocatable, so that no memory is allocated for the 3708section when the program is run. 3709@end table 3710 3711@kindex NOLOAD 3712@cindex prevent unnecessary loading 3713@cindex loading, preventing 3714The linker normally sets the attributes of an output section based on 3715the input sections which map into it. You can override this by using 3716the section type. For example, in the script sample below, the 3717@samp{ROM} section is addressed at memory location @samp{0} and does not 3718need to be loaded when the program is run. The contents of the 3719@samp{ROM} section will appear in the linker output file as usual. 3720@smallexample 3721@group 3722SECTIONS @{ 3723 ROM 0 (NOLOAD) : @{ @dots{} @} 3724 @dots{} 3725@} 3726@end group 3727@end smallexample 3728 3729@node Output Section LMA 3730@subsubsection Output Section LMA 3731@kindex AT>@var{lma_region} 3732@kindex AT(@var{lma}) 3733@cindex load address 3734@cindex section load address 3735Every section has a virtual address (VMA) and a load address (LMA); see 3736@ref{Basic Script Concepts}. The address expression which may appear in 3737an output section description sets the VMA (@pxref{Output Section 3738Address}). 3739 3740The linker will normally set the LMA equal to the VMA. You can change 3741that by using the @code{AT} keyword. The expression @var{lma} that 3742follows the @code{AT} keyword specifies the load address of the 3743section. 3744 3745Alternatively, with @samp{AT>@var{lma_region}} expression, you may 3746specify a memory region for the section's load address. @xref{MEMORY}. 3747Note that if the section has not had a VMA assigned to it then the 3748linker will use the @var{lma_region} as the VMA region as well. 3749@xref{Output Section Region}. 3750 3751@cindex ROM initialized data 3752@cindex initialized data in ROM 3753This feature is designed to make it easy to build a ROM image. For 3754example, the following linker script creates three output sections: one 3755called @samp{.text}, which starts at @code{0x1000}, one called 3756@samp{.mdata}, which is loaded at the end of the @samp{.text} section 3757even though its VMA is @code{0x2000}, and one called @samp{.bss} to hold 3758uninitialized data at address @code{0x3000}. The symbol @code{_data} is 3759defined with the value @code{0x2000}, which shows that the location 3760counter holds the VMA value, not the LMA value. 3761 3762@smallexample 3763@group 3764SECTIONS 3765 @{ 3766 .text 0x1000 : @{ *(.text) _etext = . ; @} 3767 .mdata 0x2000 : 3768 AT ( ADDR (.text) + SIZEOF (.text) ) 3769 @{ _data = . ; *(.data); _edata = . ; @} 3770 .bss 0x3000 : 3771 @{ _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;@} 3772@} 3773@end group 3774@end smallexample 3775 3776The run-time initialization code for use with a program generated with 3777this linker script would include something like the following, to copy 3778the initialized data from the ROM image to its runtime address. Notice 3779how this code takes advantage of the symbols defined by the linker 3780script. 3781 3782@smallexample 3783@group 3784extern char _etext, _data, _edata, _bstart, _bend; 3785char *src = &_etext; 3786char *dst = &_data; 3787 3788/* ROM has data at end of text; copy it. */ 3789while (dst < &_edata) @{ 3790 *dst++ = *src++; 3791@} 3792 3793/* Zero bss */ 3794for (dst = &_bstart; dst< &_bend; dst++) 3795 *dst = 0; 3796@end group 3797@end smallexample 3798 3799@node Forced Output Alignment 3800@subsubsection Forced Output Alignment 3801@kindex ALIGN(@var{section_align}) 3802@cindex forcing output section alignment 3803@cindex output section alignment 3804You can increase an output section's alignment by using ALIGN. 3805 3806@node Forced Input Alignment 3807@subsubsection Forced Input Alignment 3808@kindex SUBALIGN(@var{subsection_align}) 3809@cindex forcing input section alignment 3810@cindex input section alignment 3811You can force input section alignment within an output section by using 3812SUBALIGN. The value specified overrides any alignment given by input 3813sections, whether larger or smaller. 3814 3815@node Output Section Region 3816@subsubsection Output Section Region 3817@kindex >@var{region} 3818@cindex section, assigning to memory region 3819@cindex memory regions and sections 3820You can assign a section to a previously defined region of memory by 3821using @samp{>@var{region}}. @xref{MEMORY}. 3822 3823Here is a simple example: 3824@smallexample 3825@group 3826MEMORY @{ rom : ORIGIN = 0x1000, LENGTH = 0x1000 @} 3827SECTIONS @{ ROM : @{ *(.text) @} >rom @} 3828@end group 3829@end smallexample 3830 3831@node Output Section Phdr 3832@subsubsection Output Section Phdr 3833@kindex :@var{phdr} 3834@cindex section, assigning to program header 3835@cindex program headers and sections 3836You can assign a section to a previously defined program segment by 3837using @samp{:@var{phdr}}. @xref{PHDRS}. If a section is assigned to 3838one or more segments, then all subsequent allocated sections will be 3839assigned to those segments as well, unless they use an explicitly 3840@code{:@var{phdr}} modifier. You can use @code{:NONE} to tell the 3841linker to not put the section in any segment at all. 3842 3843Here is a simple example: 3844@smallexample 3845@group 3846PHDRS @{ text PT_LOAD ; @} 3847SECTIONS @{ .text : @{ *(.text) @} :text @} 3848@end group 3849@end smallexample 3850 3851@node Output Section Fill 3852@subsubsection Output Section Fill 3853@kindex =@var{fillexp} 3854@cindex section fill pattern 3855@cindex fill pattern, entire section 3856You can set the fill pattern for an entire section by using 3857@samp{=@var{fillexp}}. @var{fillexp} is an expression 3858(@pxref{Expressions}). Any otherwise unspecified regions of memory 3859within the output section (for example, gaps left due to the required 3860alignment of input sections) will be filled with the value, repeated as 3861necessary. If the fill expression is a simple hex number, ie. a string 3862of hex digit starting with @samp{0x} and without a trailing @samp{k} or @samp{M}, then 3863an arbitrarily long sequence of hex digits can be used to specify the 3864fill pattern; Leading zeros become part of the pattern too. For all 3865other cases, including extra parentheses or a unary @code{+}, the fill 3866pattern is the four least significant bytes of the value of the 3867expression. In all cases, the number is big-endian. 3868 3869You can also change the fill value with a @code{FILL} command in the 3870output section commands; (@pxref{Output Section Data}). 3871 3872Here is a simple example: 3873@smallexample 3874@group 3875SECTIONS @{ .text : @{ *(.text) @} =0x90909090 @} 3876@end group 3877@end smallexample 3878 3879@node Overlay Description 3880@subsection Overlay Description 3881@kindex OVERLAY 3882@cindex overlays 3883An overlay description provides an easy way to describe sections which 3884are to be loaded as part of a single memory image but are to be run at 3885the same memory address. At run time, some sort of overlay manager will 3886copy the overlaid sections in and out of the runtime memory address as 3887required, perhaps by simply manipulating addressing bits. This approach 3888can be useful, for example, when a certain region of memory is faster 3889than another. 3890 3891Overlays are described using the @code{OVERLAY} command. The 3892@code{OVERLAY} command is used within a @code{SECTIONS} command, like an 3893output section description. The full syntax of the @code{OVERLAY} 3894command is as follows: 3895@smallexample 3896@group 3897OVERLAY [@var{start}] : [NOCROSSREFS] [AT ( @var{ldaddr} )] 3898 @{ 3899 @var{secname1} 3900 @{ 3901 @var{output-section-command} 3902 @var{output-section-command} 3903 @dots{} 3904 @} [:@var{phdr}@dots{}] [=@var{fill}] 3905 @var{secname2} 3906 @{ 3907 @var{output-section-command} 3908 @var{output-section-command} 3909 @dots{} 3910 @} [:@var{phdr}@dots{}] [=@var{fill}] 3911 @dots{} 3912 @} [>@var{region}] [:@var{phdr}@dots{}] [=@var{fill}] 3913@end group 3914@end smallexample 3915 3916Everything is optional except @code{OVERLAY} (a keyword), and each 3917section must have a name (@var{secname1} and @var{secname2} above). The 3918section definitions within the @code{OVERLAY} construct are identical to 3919those within the general @code{SECTIONS} contruct (@pxref{SECTIONS}), 3920except that no addresses and no memory regions may be defined for 3921sections within an @code{OVERLAY}. 3922 3923The sections are all defined with the same starting address. The load 3924addresses of the sections are arranged such that they are consecutive in 3925memory starting at the load address used for the @code{OVERLAY} as a 3926whole (as with normal section definitions, the load address is optional, 3927and defaults to the start address; the start address is also optional, 3928and defaults to the current value of the location counter). 3929 3930If the @code{NOCROSSREFS} keyword is used, and there any references 3931among the sections, the linker will report an error. Since the sections 3932all run at the same address, it normally does not make sense for one 3933section to refer directly to another. @xref{Miscellaneous Commands, 3934NOCROSSREFS}. 3935 3936For each section within the @code{OVERLAY}, the linker automatically 3937defines two symbols. The symbol @code{__load_start_@var{secname}} is 3938defined as the starting load address of the section. The symbol 3939@code{__load_stop_@var{secname}} is defined as the final load address of 3940the section. Any characters within @var{secname} which are not legal 3941within C identifiers are removed. C (or assembler) code may use these 3942symbols to move the overlaid sections around as necessary. 3943 3944At the end of the overlay, the value of the location counter is set to 3945the start address of the overlay plus the size of the largest section. 3946 3947Here is an example. Remember that this would appear inside a 3948@code{SECTIONS} construct. 3949@smallexample 3950@group 3951 OVERLAY 0x1000 : AT (0x4000) 3952 @{ 3953 .text0 @{ o1/*.o(.text) @} 3954 .text1 @{ o2/*.o(.text) @} 3955 @} 3956@end group 3957@end smallexample 3958@noindent 3959This will define both @samp{.text0} and @samp{.text1} to start at 3960address 0x1000. @samp{.text0} will be loaded at address 0x4000, and 3961@samp{.text1} will be loaded immediately after @samp{.text0}. The 3962following symbols will be defined: @code{__load_start_text0}, 3963@code{__load_stop_text0}, @code{__load_start_text1}, 3964@code{__load_stop_text1}. 3965 3966C code to copy overlay @code{.text1} into the overlay area might look 3967like the following. 3968 3969@smallexample 3970@group 3971 extern char __load_start_text1, __load_stop_text1; 3972 memcpy ((char *) 0x1000, &__load_start_text1, 3973 &__load_stop_text1 - &__load_start_text1); 3974@end group 3975@end smallexample 3976 3977Note that the @code{OVERLAY} command is just syntactic sugar, since 3978everything it does can be done using the more basic commands. The above 3979example could have been written identically as follows. 3980 3981@smallexample 3982@group 3983 .text0 0x1000 : AT (0x4000) @{ o1/*.o(.text) @} 3984 __load_start_text0 = LOADADDR (.text0); 3985 __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0); 3986 .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) @{ o2/*.o(.text) @} 3987 __load_start_text1 = LOADADDR (.text1); 3988 __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1); 3989 . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1)); 3990@end group 3991@end smallexample 3992 3993@node MEMORY 3994@section MEMORY Command 3995@kindex MEMORY 3996@cindex memory regions 3997@cindex regions of memory 3998@cindex allocating memory 3999@cindex discontinuous memory 4000The linker's default configuration permits allocation of all available 4001memory. You can override this by using the @code{MEMORY} command. 4002 4003The @code{MEMORY} command describes the location and size of blocks of 4004memory in the target. You can use it to describe which memory regions 4005may be used by the linker, and which memory regions it must avoid. You 4006can then assign sections to particular memory regions. The linker will 4007set section addresses based on the memory regions, and will warn about 4008regions that become too full. The linker will not shuffle sections 4009around to fit into the available regions. 4010 4011A linker script may contain at most one use of the @code{MEMORY} 4012command. However, you can define as many blocks of memory within it as 4013you wish. The syntax is: 4014@smallexample 4015@group 4016MEMORY 4017 @{ 4018 @var{name} [(@var{attr})] : ORIGIN = @var{origin}, LENGTH = @var{len} 4019 @dots{} 4020 @} 4021@end group 4022@end smallexample 4023 4024The @var{name} is a name used in the linker script to refer to the 4025region. The region name has no meaning outside of the linker script. 4026Region names are stored in a separate name space, and will not conflict 4027with symbol names, file names, or section names. Each memory region 4028must have a distinct name. 4029 4030@cindex memory region attributes 4031The @var{attr} string is an optional list of attributes that specify 4032whether to use a particular memory region for an input section which is 4033not explicitly mapped in the linker script. As described in 4034@ref{SECTIONS}, if you do not specify an output section for some input 4035section, the linker will create an output section with the same name as 4036the input section. If you define region attributes, the linker will use 4037them to select the memory region for the output section that it creates. 4038 4039The @var{attr} string must consist only of the following characters: 4040@table @samp 4041@item R 4042Read-only section 4043@item W 4044Read/write section 4045@item X 4046Executable section 4047@item A 4048Allocatable section 4049@item I 4050Initialized section 4051@item L 4052Same as @samp{I} 4053@item ! 4054Invert the sense of any of the preceding attributes 4055@end table 4056 4057If a unmapped section matches any of the listed attributes other than 4058@samp{!}, it will be placed in the memory region. The @samp{!} 4059attribute reverses this test, so that an unmapped section will be placed 4060in the memory region only if it does not match any of the listed 4061attributes. 4062 4063@kindex ORIGIN = 4064@kindex o = 4065@kindex org = 4066The @var{origin} is an numerical expression for the start address of 4067the memory region. The expression must evaluate to a constant and it 4068cannot involve any symbols. The keyword @code{ORIGIN} may be 4069abbreviated to @code{org} or @code{o} (but not, for example, 4070@code{ORG}). 4071 4072@kindex LENGTH = 4073@kindex len = 4074@kindex l = 4075The @var{len} is an expression for the size in bytes of the memory 4076region. As with the @var{origin} expression, the expression must 4077be numerical only and must evaluate to a constant. The keyword 4078@code{LENGTH} may be abbreviated to @code{len} or @code{l}. 4079 4080In the following example, we specify that there are two memory regions 4081available for allocation: one starting at @samp{0} for 256 kilobytes, 4082and the other starting at @samp{0x40000000} for four megabytes. The 4083linker will place into the @samp{rom} memory region every section which 4084is not explicitly mapped into a memory region, and is either read-only 4085or executable. The linker will place other sections which are not 4086explicitly mapped into a memory region into the @samp{ram} memory 4087region. 4088 4089@smallexample 4090@group 4091MEMORY 4092 @{ 4093 rom (rx) : ORIGIN = 0, LENGTH = 256K 4094 ram (!rx) : org = 0x40000000, l = 4M 4095 @} 4096@end group 4097@end smallexample 4098 4099Once you define a memory region, you can direct the linker to place 4100specific output sections into that memory region by using the 4101@samp{>@var{region}} output section attribute. For example, if you have 4102a memory region named @samp{mem}, you would use @samp{>mem} in the 4103output section definition. @xref{Output Section Region}. If no address 4104was specified for the output section, the linker will set the address to 4105the next available address within the memory region. If the combined 4106output sections directed to a memory region are too large for the 4107region, the linker will issue an error message. 4108 4109It is possible to access the origin and length of a memory in an 4110expression via the @code{ORIGIN(@var{memory})} and 4111@code{LENGTH(@var{memory})} functions: 4112 4113@smallexample 4114@group 4115 _fstack = ORIGIN(ram) + LENGTH(ram) - 4; 4116@end group 4117@end smallexample 4118 4119@node PHDRS 4120@section PHDRS Command 4121@kindex PHDRS 4122@cindex program headers 4123@cindex ELF program headers 4124@cindex program segments 4125@cindex segments, ELF 4126The ELF object file format uses @dfn{program headers}, also knows as 4127@dfn{segments}. The program headers describe how the program should be 4128loaded into memory. You can print them out by using the @code{objdump} 4129program with the @samp{-p} option. 4130 4131When you run an ELF program on a native ELF system, the system loader 4132reads the program headers in order to figure out how to load the 4133program. This will only work if the program headers are set correctly. 4134This manual does not describe the details of how the system loader 4135interprets program headers; for more information, see the ELF ABI. 4136 4137The linker will create reasonable program headers by default. However, 4138in some cases, you may need to specify the program headers more 4139precisely. You may use the @code{PHDRS} command for this purpose. When 4140the linker sees the @code{PHDRS} command in the linker script, it will 4141not create any program headers other than the ones specified. 4142 4143The linker only pays attention to the @code{PHDRS} command when 4144generating an ELF output file. In other cases, the linker will simply 4145ignore @code{PHDRS}. 4146 4147This is the syntax of the @code{PHDRS} command. The words @code{PHDRS}, 4148@code{FILEHDR}, @code{AT}, and @code{FLAGS} are keywords. 4149 4150@smallexample 4151@group 4152PHDRS 4153@{ 4154 @var{name} @var{type} [ FILEHDR ] [ PHDRS ] [ AT ( @var{address} ) ] 4155 [ FLAGS ( @var{flags} ) ] ; 4156@} 4157@end group 4158@end smallexample 4159 4160The @var{name} is used only for reference in the @code{SECTIONS} command 4161of the linker script. It is not put into the output file. Program 4162header names are stored in a separate name space, and will not conflict 4163with symbol names, file names, or section names. Each program header 4164must have a distinct name. 4165 4166Certain program header types describe segments of memory which the 4167system loader will load from the file. In the linker script, you 4168specify the contents of these segments by placing allocatable output 4169sections in the segments. You use the @samp{:@var{phdr}} output section 4170attribute to place a section in a particular segment. @xref{Output 4171Section Phdr}. 4172 4173It is normal to put certain sections in more than one segment. This 4174merely implies that one segment of memory contains another. You may 4175repeat @samp{:@var{phdr}}, using it once for each segment which should 4176contain the section. 4177 4178If you place a section in one or more segments using @samp{:@var{phdr}}, 4179then the linker will place all subsequent allocatable sections which do 4180not specify @samp{:@var{phdr}} in the same segments. This is for 4181convenience, since generally a whole set of contiguous sections will be 4182placed in a single segment. You can use @code{:NONE} to override the 4183default segment and tell the linker to not put the section in any 4184segment at all. 4185 4186@kindex FILEHDR 4187@kindex PHDRS 4188You may use the @code{FILEHDR} and @code{PHDRS} keywords appear after 4189the program header type to further describe the contents of the segment. 4190The @code{FILEHDR} keyword means that the segment should include the ELF 4191file header. The @code{PHDRS} keyword means that the segment should 4192include the ELF program headers themselves. 4193 4194The @var{type} may be one of the following. The numbers indicate the 4195value of the keyword. 4196 4197@table @asis 4198@item @code{PT_NULL} (0) 4199Indicates an unused program header. 4200 4201@item @code{PT_LOAD} (1) 4202Indicates that this program header describes a segment to be loaded from 4203the file. 4204 4205@item @code{PT_DYNAMIC} (2) 4206Indicates a segment where dynamic linking information can be found. 4207 4208@item @code{PT_INTERP} (3) 4209Indicates a segment where the name of the program interpreter may be 4210found. 4211 4212@item @code{PT_NOTE} (4) 4213Indicates a segment holding note information. 4214 4215@item @code{PT_SHLIB} (5) 4216A reserved program header type, defined but not specified by the ELF 4217ABI. 4218 4219@item @code{PT_PHDR} (6) 4220Indicates a segment where the program headers may be found. 4221 4222@item @var{expression} 4223An expression giving the numeric type of the program header. This may 4224be used for types not defined above. 4225@end table 4226 4227You can specify that a segment should be loaded at a particular address 4228in memory by using an @code{AT} expression. This is identical to the 4229@code{AT} command used as an output section attribute (@pxref{Output 4230Section LMA}). The @code{AT} command for a program header overrides the 4231output section attribute. 4232 4233The linker will normally set the segment flags based on the sections 4234which comprise the segment. You may use the @code{FLAGS} keyword to 4235explicitly specify the segment flags. The value of @var{flags} must be 4236an integer. It is used to set the @code{p_flags} field of the program 4237header. 4238 4239Here is an example of @code{PHDRS}. This shows a typical set of program 4240headers used on a native ELF system. 4241 4242@example 4243@group 4244PHDRS 4245@{ 4246 headers PT_PHDR PHDRS ; 4247 interp PT_INTERP ; 4248 text PT_LOAD FILEHDR PHDRS ; 4249 data PT_LOAD ; 4250 dynamic PT_DYNAMIC ; 4251@} 4252 4253SECTIONS 4254@{ 4255 . = SIZEOF_HEADERS; 4256 .interp : @{ *(.interp) @} :text :interp 4257 .text : @{ *(.text) @} :text 4258 .rodata : @{ *(.rodata) @} /* defaults to :text */ 4259 @dots{} 4260 . = . + 0x1000; /* move to a new page in memory */ 4261 .data : @{ *(.data) @} :data 4262 .dynamic : @{ *(.dynamic) @} :data :dynamic 4263 @dots{} 4264@} 4265@end group 4266@end example 4267 4268@node VERSION 4269@section VERSION Command 4270@kindex VERSION @{script text@} 4271@cindex symbol versions 4272@cindex version script 4273@cindex versions of symbols 4274The linker supports symbol versions when using ELF. Symbol versions are 4275only useful when using shared libraries. The dynamic linker can use 4276symbol versions to select a specific version of a function when it runs 4277a program that may have been linked against an earlier version of the 4278shared library. 4279 4280You can include a version script directly in the main linker script, or 4281you can supply the version script as an implicit linker script. You can 4282also use the @samp{--version-script} linker option. 4283 4284The syntax of the @code{VERSION} command is simply 4285@smallexample 4286VERSION @{ version-script-commands @} 4287@end smallexample 4288 4289The format of the version script commands is identical to that used by 4290Sun's linker in Solaris 2.5. The version script defines a tree of 4291version nodes. You specify the node names and interdependencies in the 4292version script. You can specify which symbols are bound to which 4293version nodes, and you can reduce a specified set of symbols to local 4294scope so that they are not globally visible outside of the shared 4295library. 4296 4297The easiest way to demonstrate the version script language is with a few 4298examples. 4299 4300@smallexample 4301VERS_1.1 @{ 4302 global: 4303 foo1; 4304 local: 4305 old*; 4306 original*; 4307 new*; 4308@}; 4309 4310VERS_1.2 @{ 4311 foo2; 4312@} VERS_1.1; 4313 4314VERS_2.0 @{ 4315 bar1; bar2; 4316 extern "C++" @{ 4317 ns::*; 4318 "int f(int, double)"; 4319 @} 4320@} VERS_1.2; 4321@end smallexample 4322 4323This example version script defines three version nodes. The first 4324version node defined is @samp{VERS_1.1}; it has no other dependencies. 4325The script binds the symbol @samp{foo1} to @samp{VERS_1.1}. It reduces 4326a number of symbols to local scope so that they are not visible outside 4327of the shared library; this is done using wildcard patterns, so that any 4328symbol whose name begins with @samp{old}, @samp{original}, or @samp{new} 4329is matched. The wildcard patterns available are the same as those used 4330in the shell when matching filenames (also known as ``globbing''). 4331However, if you specify the symbol name inside double quotes, then the 4332name is treated as literal, rather than as a glob pattern. 4333 4334Next, the version script defines node @samp{VERS_1.2}. This node 4335depends upon @samp{VERS_1.1}. The script binds the symbol @samp{foo2} 4336to the version node @samp{VERS_1.2}. 4337 4338Finally, the version script defines node @samp{VERS_2.0}. This node 4339depends upon @samp{VERS_1.2}. The scripts binds the symbols @samp{bar1} 4340and @samp{bar2} are bound to the version node @samp{VERS_2.0}. 4341 4342When the linker finds a symbol defined in a library which is not 4343specifically bound to a version node, it will effectively bind it to an 4344unspecified base version of the library. You can bind all otherwise 4345unspecified symbols to a given version node by using @samp{global: *;} 4346somewhere in the version script. 4347 4348The names of the version nodes have no specific meaning other than what 4349they might suggest to the person reading them. The @samp{2.0} version 4350could just as well have appeared in between @samp{1.1} and @samp{1.2}. 4351However, this would be a confusing way to write a version script. 4352 4353Node name can be omited, provided it is the only version node 4354in the version script. Such version script doesn't assign any versions to 4355symbols, only selects which symbols will be globally visible out and which 4356won't. 4357 4358@smallexample 4359@{ global: foo; bar; local: *; @}; 4360@end smallexample 4361 4362When you link an application against a shared library that has versioned 4363symbols, the application itself knows which version of each symbol it 4364requires, and it also knows which version nodes it needs from each 4365shared library it is linked against. Thus at runtime, the dynamic 4366loader can make a quick check to make sure that the libraries you have 4367linked against do in fact supply all of the version nodes that the 4368application will need to resolve all of the dynamic symbols. In this 4369way it is possible for the dynamic linker to know with certainty that 4370all external symbols that it needs will be resolvable without having to 4371search for each symbol reference. 4372 4373The symbol versioning is in effect a much more sophisticated way of 4374doing minor version checking that SunOS does. The fundamental problem 4375that is being addressed here is that typically references to external 4376functions are bound on an as-needed basis, and are not all bound when 4377the application starts up. If a shared library is out of date, a 4378required interface may be missing; when the application tries to use 4379that interface, it may suddenly and unexpectedly fail. With symbol 4380versioning, the user will get a warning when they start their program if 4381the libraries being used with the application are too old. 4382 4383There are several GNU extensions to Sun's versioning approach. The 4384first of these is the ability to bind a symbol to a version node in the 4385source file where the symbol is defined instead of in the versioning 4386script. This was done mainly to reduce the burden on the library 4387maintainer. You can do this by putting something like: 4388@smallexample 4389__asm__(".symver original_foo,foo@@VERS_1.1"); 4390@end smallexample 4391@noindent 4392in the C source file. This renames the function @samp{original_foo} to 4393be an alias for @samp{foo} bound to the version node @samp{VERS_1.1}. 4394The @samp{local:} directive can be used to prevent the symbol 4395@samp{original_foo} from being exported. A @samp{.symver} directive 4396takes precedence over a version script. 4397 4398The second GNU extension is to allow multiple versions of the same 4399function to appear in a given shared library. In this way you can make 4400an incompatible change to an interface without increasing the major 4401version number of the shared library, while still allowing applications 4402linked against the old interface to continue to function. 4403 4404To do this, you must use multiple @samp{.symver} directives in the 4405source file. Here is an example: 4406 4407@smallexample 4408__asm__(".symver original_foo,foo@@"); 4409__asm__(".symver old_foo,foo@@VERS_1.1"); 4410__asm__(".symver old_foo1,foo@@VERS_1.2"); 4411__asm__(".symver new_foo,foo@@@@VERS_2.0"); 4412@end smallexample 4413 4414In this example, @samp{foo@@} represents the symbol @samp{foo} bound to the 4415unspecified base version of the symbol. The source file that contains this 4416example would define 4 C functions: @samp{original_foo}, @samp{old_foo}, 4417@samp{old_foo1}, and @samp{new_foo}. 4418 4419When you have multiple definitions of a given symbol, there needs to be 4420some way to specify a default version to which external references to 4421this symbol will be bound. You can do this with the 4422@samp{foo@@@@VERS_2.0} type of @samp{.symver} directive. You can only 4423declare one version of a symbol as the default in this manner; otherwise 4424you would effectively have multiple definitions of the same symbol. 4425 4426If you wish to bind a reference to a specific version of the symbol 4427within the shared library, you can use the aliases of convenience 4428(i.e., @samp{old_foo}), or you can use the @samp{.symver} directive to 4429specifically bind to an external version of the function in question. 4430 4431You can also specify the language in the version script: 4432 4433@smallexample 4434VERSION extern "lang" @{ version-script-commands @} 4435@end smallexample 4436 4437The supported @samp{lang}s are @samp{C}, @samp{C++}, and @samp{Java}. 4438The linker will iterate over the list of symbols at the link time and 4439demangle them according to @samp{lang} before matching them to the 4440patterns specified in @samp{version-script-commands}. 4441 4442Demangled names may contains spaces and other special characters. As 4443described above, you can use a glob pattern to match demangled names, 4444or you can use a double-quoted string to match the string exactly. In 4445the latter case, be aware that minor differences (such as differing 4446whitespace) between the version script and the demangler output will 4447cause a mismatch. As the exact string generated by the demangler 4448might change in the future, even if the mangled name does not, you 4449should check that all of your version directives are behaving as you 4450expect when you upgrade. 4451 4452@node Expressions 4453@section Expressions in Linker Scripts 4454@cindex expressions 4455@cindex arithmetic 4456The syntax for expressions in the linker script language is identical to 4457that of C expressions. All expressions are evaluated as integers. All 4458expressions are evaluated in the same size, which is 32 bits if both the 4459host and target are 32 bits, and is otherwise 64 bits. 4460 4461You can use and set symbol values in expressions. 4462 4463The linker defines several special purpose builtin functions for use in 4464expressions. 4465 4466@menu 4467* Constants:: Constants 4468* Symbols:: Symbol Names 4469* Orphan Sections:: Orphan Sections 4470* Location Counter:: The Location Counter 4471* Operators:: Operators 4472* Evaluation:: Evaluation 4473* Expression Section:: The Section of an Expression 4474* Builtin Functions:: Builtin Functions 4475@end menu 4476 4477@node Constants 4478@subsection Constants 4479@cindex integer notation 4480@cindex constants in linker scripts 4481All constants are integers. 4482 4483As in C, the linker considers an integer beginning with @samp{0} to be 4484octal, and an integer beginning with @samp{0x} or @samp{0X} to be 4485hexadecimal. The linker considers other integers to be decimal. 4486 4487@cindex scaled integers 4488@cindex K and M integer suffixes 4489@cindex M and K integer suffixes 4490@cindex suffixes for integers 4491@cindex integer suffixes 4492In addition, you can use the suffixes @code{K} and @code{M} to scale a 4493constant by 4494@c TEXI2ROFF-KILL 4495@ifnottex 4496@c END TEXI2ROFF-KILL 4497@code{1024} or @code{1024*1024} 4498@c TEXI2ROFF-KILL 4499@end ifnottex 4500@tex 4501${\rm 1024}$ or ${\rm 1024}^2$ 4502@end tex 4503@c END TEXI2ROFF-KILL 4504respectively. For example, the following all refer to the same quantity: 4505@smallexample 4506_fourk_1 = 4K; 4507_fourk_2 = 4096; 4508_fourk_3 = 0x1000; 4509@end smallexample 4510 4511@node Symbols 4512@subsection Symbol Names 4513@cindex symbol names 4514@cindex names 4515@cindex quoted symbol names 4516@kindex " 4517Unless quoted, symbol names start with a letter, underscore, or period 4518and may include letters, digits, underscores, periods, and hyphens. 4519Unquoted symbol names must not conflict with any keywords. You can 4520specify a symbol which contains odd characters or has the same name as a 4521keyword by surrounding the symbol name in double quotes: 4522@smallexample 4523"SECTION" = 9; 4524"with a space" = "also with a space" + 10; 4525@end smallexample 4526 4527Since symbols can contain many non-alphabetic characters, it is safest 4528to delimit symbols with spaces. For example, @samp{A-B} is one symbol, 4529whereas @samp{A - B} is an expression involving subtraction. 4530 4531@node Orphan Sections 4532@subsection Orphan Sections 4533@cindex orphan 4534Orphan sections are sections present in the input files which 4535are not explicitly placed into the output file by the linker 4536script. The linker will still copy these sections into the 4537output file, but it has to guess as to where they should be 4538placed. The linker uses a simple heuristic to do this. It 4539attempts to place orphan sections after non-orphan sections of the 4540same attribute, such as code vs data, loadable vs non-loadable, etc. 4541If there is not enough room to do this then it places 4542at the end of the file. 4543 4544For ELF targets, the attribute of the section includes section type as 4545well as section flag. 4546 4547@node Location Counter 4548@subsection The Location Counter 4549@kindex . 4550@cindex dot 4551@cindex location counter 4552@cindex current output location 4553The special linker variable @dfn{dot} @samp{.} always contains the 4554current output location counter. Since the @code{.} always refers to a 4555location in an output section, it may only appear in an expression 4556within a @code{SECTIONS} command. The @code{.} symbol may appear 4557anywhere that an ordinary symbol is allowed in an expression. 4558 4559@cindex holes 4560Assigning a value to @code{.} will cause the location counter to be 4561moved. This may be used to create holes in the output section. The 4562location counter may never be moved backwards. 4563 4564@smallexample 4565SECTIONS 4566@{ 4567 output : 4568 @{ 4569 file1(.text) 4570 . = . + 1000; 4571 file2(.text) 4572 . += 1000; 4573 file3(.text) 4574 @} = 0x12345678; 4575@} 4576@end smallexample 4577@noindent 4578In the previous example, the @samp{.text} section from @file{file1} is 4579located at the beginning of the output section @samp{output}. It is 4580followed by a 1000 byte gap. Then the @samp{.text} section from 4581@file{file2} appears, also with a 1000 byte gap following before the 4582@samp{.text} section from @file{file3}. The notation @samp{= 0x12345678} 4583specifies what data to write in the gaps (@pxref{Output Section Fill}). 4584 4585@cindex dot inside sections 4586Note: @code{.} actually refers to the byte offset from the start of the 4587current containing object. Normally this is the @code{SECTIONS} 4588statement, whose start address is 0, hence @code{.} can be used as an 4589absolute address. If @code{.} is used inside a section description 4590however, it refers to the byte offset from the start of that section, 4591not an absolute address. Thus in a script like this: 4592 4593@smallexample 4594SECTIONS 4595@{ 4596 . = 0x100 4597 .text: @{ 4598 *(.text) 4599 . = 0x200 4600 @} 4601 . = 0x500 4602 .data: @{ 4603 *(.data) 4604 . += 0x600 4605 @} 4606@} 4607@end smallexample 4608 4609The @samp{.text} section will be assigned a starting address of 0x100 4610and a size of exactly 0x200 bytes, even if there is not enough data in 4611the @samp{.text} input sections to fill this area. (If there is too 4612much data, an error will be produced because this would be an attempt to 4613move @code{.} backwards). The @samp{.data} section will start at 0x500 4614and it will have an extra 0x600 bytes worth of space after the end of 4615the values from the @samp{.data} input sections and before the end of 4616the @samp{.data} output section itself. 4617 4618@cindex dot outside sections 4619Setting symbols to the value of the location counter outside of an 4620output section statement can result in unexpected values if the linker 4621needs to place orphan sections. For example, given the following: 4622 4623@smallexample 4624SECTIONS 4625@{ 4626 start_of_text = . ; 4627 .text: @{ *(.text) @} 4628 end_of_text = . ; 4629 4630 start_of_data = . ; 4631 .data: @{ *(.data) @} 4632 end_of_data = . ; 4633@} 4634@end smallexample 4635 4636If the linker needs to place some input section, e.g. @code{.rodata}, 4637not mentioned in the script, it might choose to place that section 4638between @code{.text} and @code{.data}. You might think the linker 4639should place @code{.rodata} on the blank line in the above script, but 4640blank lines are of no particular significance to the linker. As well, 4641the linker doesn't associate the above symbol names with their 4642sections. Instead, it assumes that all assignments or other 4643statements belong to the previous output section, except for the 4644special case of an assignment to @code{.}. I.e., the linker will 4645place the orphan @code{.rodata} section as if the script was written 4646as follows: 4647 4648@smallexample 4649SECTIONS 4650@{ 4651 start_of_text = . ; 4652 .text: @{ *(.text) @} 4653 end_of_text = . ; 4654 4655 start_of_data = . ; 4656 .rodata: @{ *(.rodata) @} 4657 .data: @{ *(.data) @} 4658 end_of_data = . ; 4659@} 4660@end smallexample 4661 4662This may or may not be the script author's intention for the value of 4663@code{start_of_data}. One way to influence the orphan section 4664placement is to assign the location counter to itself, as the linker 4665assumes that an assignment to @code{.} is setting the start address of 4666a following output section and thus should be grouped with that 4667section. So you could write: 4668 4669@smallexample 4670SECTIONS 4671@{ 4672 start_of_text = . ; 4673 .text: @{ *(.text) @} 4674 end_of_text = . ; 4675 4676 . = . ; 4677 start_of_data = . ; 4678 .data: @{ *(.data) @} 4679 end_of_data = . ; 4680@} 4681@end smallexample 4682 4683Now, the orphan @code{.rodata} section will be placed between 4684@code{end_of_text} and @code{start_of_data}. 4685 4686@need 2000 4687@node Operators 4688@subsection Operators 4689@cindex operators for arithmetic 4690@cindex arithmetic operators 4691@cindex precedence in expressions 4692The linker recognizes the standard C set of arithmetic operators, with 4693the standard bindings and precedence levels: 4694@c TEXI2ROFF-KILL 4695@ifnottex 4696@c END TEXI2ROFF-KILL 4697@smallexample 4698precedence associativity Operators Notes 4699(highest) 47001 left ! - ~ (1) 47012 left * / % 47023 left + - 47034 left >> << 47045 left == != > < <= >= 47056 left & 47067 left | 47078 left && 47089 left || 470910 right ? : 471011 right &= += -= *= /= (2) 4711(lowest) 4712@end smallexample 4713Notes: 4714(1) Prefix operators 4715(2) @xref{Assignments}. 4716@c TEXI2ROFF-KILL 4717@end ifnottex 4718@tex 4719\vskip \baselineskip 4720%"lispnarrowing" is the extra indent used generally for smallexample 4721\hskip\lispnarrowing\vbox{\offinterlineskip 4722\hrule 4723\halign 4724{\vrule#&\strut\hfil\ #\ \hfil&\vrule#&\strut\hfil\ #\ \hfil&\vrule#&\strut\hfil\ {\tt #}\ \hfil&\vrule#\cr 4725height2pt&\omit&&\omit&&\omit&\cr 4726&Precedence&& Associativity &&{\rm Operators}&\cr 4727height2pt&\omit&&\omit&&\omit&\cr 4728\noalign{\hrule} 4729height2pt&\omit&&\omit&&\omit&\cr 4730&highest&&&&&\cr 4731% '176 is tilde, '~' in tt font 4732&1&&left&&\qquad- \char'176\ !\qquad\dag&\cr 4733&2&&left&&* / \%&\cr 4734&3&&left&&+ -&\cr 4735&4&&left&&>> <<&\cr 4736&5&&left&&== != > < <= >=&\cr 4737&6&&left&&\&&\cr 4738&7&&left&&|&\cr 4739&8&&left&&{\&\&}&\cr 4740&9&&left&&||&\cr 4741&10&&right&&? :&\cr 4742&11&&right&&\qquad\&= += -= *= /=\qquad\ddag&\cr 4743&lowest&&&&&\cr 4744height2pt&\omit&&\omit&&\omit&\cr} 4745\hrule} 4746@end tex 4747@iftex 4748{ 4749@obeylines@parskip=0pt@parindent=0pt 4750@dag@quad Prefix operators. 4751@ddag@quad @xref{Assignments}. 4752} 4753@end iftex 4754@c END TEXI2ROFF-KILL 4755 4756@node Evaluation 4757@subsection Evaluation 4758@cindex lazy evaluation 4759@cindex expression evaluation order 4760The linker evaluates expressions lazily. It only computes the value of 4761an expression when absolutely necessary. 4762 4763The linker needs some information, such as the value of the start 4764address of the first section, and the origins and lengths of memory 4765regions, in order to do any linking at all. These values are computed 4766as soon as possible when the linker reads in the linker script. 4767 4768However, other values (such as symbol values) are not known or needed 4769until after storage allocation. Such values are evaluated later, when 4770other information (such as the sizes of output sections) is available 4771for use in the symbol assignment expression. 4772 4773The sizes of sections cannot be known until after allocation, so 4774assignments dependent upon these are not performed until after 4775allocation. 4776 4777Some expressions, such as those depending upon the location counter 4778@samp{.}, must be evaluated during section allocation. 4779 4780If the result of an expression is required, but the value is not 4781available, then an error results. For example, a script like the 4782following 4783@smallexample 4784@group 4785SECTIONS 4786 @{ 4787 .text 9+this_isnt_constant : 4788 @{ *(.text) @} 4789 @} 4790@end group 4791@end smallexample 4792@noindent 4793will cause the error message @samp{non constant expression for initial 4794address}. 4795 4796@node Expression Section 4797@subsection The Section of an Expression 4798@cindex expression sections 4799@cindex absolute expressions 4800@cindex relative expressions 4801@cindex absolute and relocatable symbols 4802@cindex relocatable and absolute symbols 4803@cindex symbols, relocatable and absolute 4804When the linker evaluates an expression, the result is either absolute 4805or relative to some section. A relative expression is expressed as a 4806fixed offset from the base of a section. 4807 4808The position of the expression within the linker script determines 4809whether it is absolute or relative. An expression which appears within 4810an output section definition is relative to the base of the output 4811section. An expression which appears elsewhere will be absolute. 4812 4813A symbol set to a relative expression will be relocatable if you request 4814relocatable output using the @samp{-r} option. That means that a 4815further link operation may change the value of the symbol. The symbol's 4816section will be the section of the relative expression. 4817 4818A symbol set to an absolute expression will retain the same value 4819through any further link operation. The symbol will be absolute, and 4820will not have any particular associated section. 4821 4822You can use the builtin function @code{ABSOLUTE} to force an expression 4823to be absolute when it would otherwise be relative. For example, to 4824create an absolute symbol set to the address of the end of the output 4825section @samp{.data}: 4826@smallexample 4827SECTIONS 4828 @{ 4829 .data : @{ *(.data) _edata = ABSOLUTE(.); @} 4830 @} 4831@end smallexample 4832@noindent 4833If @samp{ABSOLUTE} were not used, @samp{_edata} would be relative to the 4834@samp{.data} section. 4835 4836@node Builtin Functions 4837@subsection Builtin Functions 4838@cindex functions in expressions 4839The linker script language includes a number of builtin functions for 4840use in linker script expressions. 4841 4842@table @code 4843@item ABSOLUTE(@var{exp}) 4844@kindex ABSOLUTE(@var{exp}) 4845@cindex expression, absolute 4846Return the absolute (non-relocatable, as opposed to non-negative) value 4847of the expression @var{exp}. Primarily useful to assign an absolute 4848value to a symbol within a section definition, where symbol values are 4849normally section relative. @xref{Expression Section}. 4850 4851@item ADDR(@var{section}) 4852@kindex ADDR(@var{section}) 4853@cindex section address in expression 4854Return the absolute address (the VMA) of the named @var{section}. Your 4855script must previously have defined the location of that section. In 4856the following example, @code{symbol_1} and @code{symbol_2} are assigned 4857identical values: 4858@smallexample 4859@group 4860SECTIONS @{ @dots{} 4861 .output1 : 4862 @{ 4863 start_of_output_1 = ABSOLUTE(.); 4864 @dots{} 4865 @} 4866 .output : 4867 @{ 4868 symbol_1 = ADDR(.output1); 4869 symbol_2 = start_of_output_1; 4870 @} 4871@dots{} @} 4872@end group 4873@end smallexample 4874 4875@item ALIGN(@var{align}) 4876@itemx ALIGN(@var{exp},@var{align}) 4877@kindex ALIGN(@var{align}) 4878@kindex ALIGN(@var{exp},@var{align}) 4879@cindex round up location counter 4880@cindex align location counter 4881@cindex round up expression 4882@cindex align expression 4883Return the location counter (@code{.}) or arbitrary expression aligned 4884to the next @var{align} boundary. The single operand @code{ALIGN} 4885doesn't change the value of the location counter---it just does 4886arithmetic on it. The two operand @code{ALIGN} allows an arbitrary 4887expression to be aligned upwards (@code{ALIGN(@var{align})} is 4888equivalent to @code{ALIGN(., @var{align})}). 4889 4890Here is an example which aligns the output @code{.data} section to the 4891next @code{0x2000} byte boundary after the preceding section and sets a 4892variable within the section to the next @code{0x8000} boundary after the 4893input sections: 4894@smallexample 4895@group 4896SECTIONS @{ @dots{} 4897 .data ALIGN(0x2000): @{ 4898 *(.data) 4899 variable = ALIGN(0x8000); 4900 @} 4901@dots{} @} 4902@end group 4903@end smallexample 4904@noindent 4905The first use of @code{ALIGN} in this example specifies the location of 4906a section because it is used as the optional @var{address} attribute of 4907a section definition (@pxref{Output Section Address}). The second use 4908of @code{ALIGN} is used to defines the value of a symbol. 4909 4910The builtin function @code{NEXT} is closely related to @code{ALIGN}. 4911 4912@item BLOCK(@var{exp}) 4913@kindex BLOCK(@var{exp}) 4914This is a synonym for @code{ALIGN}, for compatibility with older linker 4915scripts. It is most often seen when setting the address of an output 4916section. 4917 4918@item DATA_SEGMENT_ALIGN(@var{maxpagesize}, @var{commonpagesize}) 4919@kindex DATA_SEGMENT_ALIGN(@var{maxpagesize}, @var{commonpagesize}) 4920This is equivalent to either 4921@smallexample 4922(ALIGN(@var{maxpagesize}) + (. & (@var{maxpagesize} - 1))) 4923@end smallexample 4924or 4925@smallexample 4926(ALIGN(@var{maxpagesize}) + (. & (@var{maxpagesize} - @var{commonpagesize}))) 4927@end smallexample 4928@noindent 4929depending on whether the latter uses fewer @var{commonpagesize} sized pages 4930for the data segment (area between the result of this expression and 4931@code{DATA_SEGMENT_END}) than the former or not. 4932If the latter form is used, it means @var{commonpagesize} bytes of runtime 4933memory will be saved at the expense of up to @var{commonpagesize} wasted 4934bytes in the on-disk file. 4935 4936This expression can only be used directly in @code{SECTIONS} commands, not in 4937any output section descriptions and only once in the linker script. 4938@var{commonpagesize} should be less or equal to @var{maxpagesize} and should 4939be the system page size the object wants to be optimized for (while still 4940working on system page sizes up to @var{maxpagesize}). 4941 4942@noindent 4943Example: 4944@smallexample 4945 . = DATA_SEGMENT_ALIGN(0x10000, 0x2000); 4946@end smallexample 4947 4948@item DATA_SEGMENT_END(@var{exp}) 4949@kindex DATA_SEGMENT_END(@var{exp}) 4950This defines the end of data segment for @code{DATA_SEGMENT_ALIGN} 4951evaluation purposes. 4952 4953@smallexample 4954 . = DATA_SEGMENT_END(.); 4955@end smallexample 4956 4957@item DATA_SEGMENT_RELRO_END(@var{offset}, @var{exp}) 4958@kindex DATA_SEGMENT_RELRO_END(@var{offset}, @var{exp}) 4959This defines the end of the @code{PT_GNU_RELRO} segment when 4960@samp{-z relro} option is used. Second argument is returned. 4961When @samp{-z relro} option is not present, @code{DATA_SEGMENT_RELRO_END} 4962does nothing, otherwise @code{DATA_SEGMENT_ALIGN} is padded so that 4963@var{exp} + @var{offset} is aligned to the most commonly used page 4964boundary for particular target. If present in the linker script, 4965it must always come in between @code{DATA_SEGMENT_ALIGN} and 4966@code{DATA_SEGMENT_END}. 4967 4968@smallexample 4969 . = DATA_SEGMENT_RELRO_END(24, .); 4970@end smallexample 4971 4972@item DEFINED(@var{symbol}) 4973@kindex DEFINED(@var{symbol}) 4974@cindex symbol defaults 4975Return 1 if @var{symbol} is in the linker global symbol table and is 4976defined before the statement using DEFINED in the script, otherwise 4977return 0. You can use this function to provide 4978default values for symbols. For example, the following script fragment 4979shows how to set a global symbol @samp{begin} to the first location in 4980the @samp{.text} section---but if a symbol called @samp{begin} already 4981existed, its value is preserved: 4982 4983@smallexample 4984@group 4985SECTIONS @{ @dots{} 4986 .text : @{ 4987 begin = DEFINED(begin) ? begin : . ; 4988 @dots{} 4989 @} 4990 @dots{} 4991@} 4992@end group 4993@end smallexample 4994 4995@item LENGTH(@var{memory}) 4996@kindex LENGTH(@var{memory}) 4997Return the length of the memory region named @var{memory}. 4998 4999@item LOADADDR(@var{section}) 5000@kindex LOADADDR(@var{section}) 5001@cindex section load address in expression 5002Return the absolute LMA of the named @var{section}. This is normally 5003the same as @code{ADDR}, but it may be different if the @code{AT} 5004attribute is used in the output section definition (@pxref{Output 5005Section LMA}). 5006 5007@kindex MAX 5008@item MAX(@var{exp1}, @var{exp2}) 5009Returns the maximum of @var{exp1} and @var{exp2}. 5010 5011@kindex MIN 5012@item MIN(@var{exp1}, @var{exp2}) 5013Returns the minimum of @var{exp1} and @var{exp2}. 5014 5015@item NEXT(@var{exp}) 5016@kindex NEXT(@var{exp}) 5017@cindex unallocated address, next 5018Return the next unallocated address that is a multiple of @var{exp}. 5019This function is closely related to @code{ALIGN(@var{exp})}; unless you 5020use the @code{MEMORY} command to define discontinuous memory for the 5021output file, the two functions are equivalent. 5022 5023@item ORIGIN(@var{memory}) 5024@kindex ORIGIN(@var{memory}) 5025Return the origin of the memory region named @var{memory}. 5026 5027@item SEGMENT_START(@var{segment}, @var{default}) 5028@kindex SEGMENT_START(@var{segment}, @var{default}) 5029Return the base address of the named @var{segment}. If an explicit 5030value has been given for this segment (with a command-line @samp{-T} 5031option) that value will be returned; otherwise the value will be 5032@var{default}. At present, the @samp{-T} command-line option can only 5033be used to set the base address for the ``text'', ``data'', and 5034``bss'' sections, but you use @code{SEGMENT_START} with any segment 5035name. 5036 5037@item SIZEOF(@var{section}) 5038@kindex SIZEOF(@var{section}) 5039@cindex section size 5040Return the size in bytes of the named @var{section}, if that section has 5041been allocated. If the section has not been allocated when this is 5042evaluated, the linker will report an error. In the following example, 5043@code{symbol_1} and @code{symbol_2} are assigned identical values: 5044@smallexample 5045@group 5046SECTIONS@{ @dots{} 5047 .output @{ 5048 .start = . ; 5049 @dots{} 5050 .end = . ; 5051 @} 5052 symbol_1 = .end - .start ; 5053 symbol_2 = SIZEOF(.output); 5054@dots{} @} 5055@end group 5056@end smallexample 5057 5058@item SIZEOF_HEADERS 5059@itemx sizeof_headers 5060@kindex SIZEOF_HEADERS 5061@cindex header size 5062Return the size in bytes of the output file's headers. This is 5063information which appears at the start of the output file. You can use 5064this number when setting the start address of the first section, if you 5065choose, to facilitate paging. 5066 5067@cindex not enough room for program headers 5068@cindex program headers, not enough room 5069When producing an ELF output file, if the linker script uses the 5070@code{SIZEOF_HEADERS} builtin function, the linker must compute the 5071number of program headers before it has determined all the section 5072addresses and sizes. If the linker later discovers that it needs 5073additional program headers, it will report an error @samp{not enough 5074room for program headers}. To avoid this error, you must avoid using 5075the @code{SIZEOF_HEADERS} function, or you must rework your linker 5076script to avoid forcing the linker to use additional program headers, or 5077you must define the program headers yourself using the @code{PHDRS} 5078command (@pxref{PHDRS}). 5079@end table 5080 5081@node Implicit Linker Scripts 5082@section Implicit Linker Scripts 5083@cindex implicit linker scripts 5084If you specify a linker input file which the linker can not recognize as 5085an object file or an archive file, it will try to read the file as a 5086linker script. If the file can not be parsed as a linker script, the 5087linker will report an error. 5088 5089An implicit linker script will not replace the default linker script. 5090 5091Typically an implicit linker script would contain only symbol 5092assignments, or the @code{INPUT}, @code{GROUP}, or @code{VERSION} 5093commands. 5094 5095Any input files read because of an implicit linker script will be read 5096at the position in the command line where the implicit linker script was 5097read. This can affect archive searching. 5098 5099@ifset GENERIC 5100@node Machine Dependent 5101@chapter Machine Dependent Features 5102 5103@cindex machine dependencies 5104@command{ld} has additional features on some platforms; the following 5105sections describe them. Machines where @command{ld} has no additional 5106functionality are not listed. 5107 5108@menu 5109@ifset H8300 5110* H8/300:: @command{ld} and the H8/300 5111@end ifset 5112@ifset I960 5113* i960:: @command{ld} and the Intel 960 family 5114@end ifset 5115@ifset ARM 5116* ARM:: @command{ld} and the ARM family 5117@end ifset 5118@ifset HPPA 5119* HPPA ELF32:: @command{ld} and HPPA 32-bit ELF 5120@end ifset 5121@ifset MMIX 5122* MMIX:: @command{ld} and MMIX 5123@end ifset 5124@ifset MSP430 5125* MSP430:: @command{ld} and MSP430 5126@end ifset 5127@ifset M68HC11 5128* M68HC11/68HC12:: @code{ld} and the Motorola 68HC11 and 68HC12 families 5129@end ifset 5130@ifset POWERPC 5131* PowerPC ELF32:: @command{ld} and PowerPC 32-bit ELF Support 5132@end ifset 5133@ifset POWERPC64 5134* PowerPC64 ELF64:: @command{ld} and PowerPC64 64-bit ELF Support 5135@end ifset 5136@ifset TICOFF 5137* TI COFF:: @command{ld} and TI COFF 5138@end ifset 5139@ifset WIN32 5140* WIN32:: @command{ld} and WIN32 (cygwin/mingw) 5141@end ifset 5142@ifset XTENSA 5143* Xtensa:: @command{ld} and Xtensa Processors 5144@end ifset 5145@end menu 5146@end ifset 5147 5148@ifset H8300 5149@ifclear GENERIC 5150@raisesections 5151@end ifclear 5152 5153@node H8/300 5154@section @command{ld} and the H8/300 5155 5156@cindex H8/300 support 5157For the H8/300, @command{ld} can perform these global optimizations when 5158you specify the @samp{--relax} command-line option. 5159 5160@table @emph 5161@cindex relaxing on H8/300 5162@item relaxing address modes 5163@command{ld} finds all @code{jsr} and @code{jmp} instructions whose 5164targets are within eight bits, and turns them into eight-bit 5165program-counter relative @code{bsr} and @code{bra} instructions, 5166respectively. 5167 5168@cindex synthesizing on H8/300 5169@item synthesizing instructions 5170@c FIXME: specifically mov.b, or any mov instructions really? 5171@command{ld} finds all @code{mov.b} instructions which use the 5172sixteen-bit absolute address form, but refer to the top 5173page of memory, and changes them to use the eight-bit address form. 5174(That is: the linker turns @samp{mov.b @code{@@}@var{aa}:16} into 5175@samp{mov.b @code{@@}@var{aa}:8} whenever the address @var{aa} is in the 5176top page of memory). 5177 5178@item bit manipulation instructions 5179@command{ld} finds all bit manipulation instructions like @code{band, bclr, 5180biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, bxor} 5181which use 32 bit and 16 bit absolute address form, but refer to the top 5182page of memory, and changes them to use the 8 bit address form. 5183(That is: the linker turns @samp{bset #xx:3,@code{@@}@var{aa}:32} into 5184@samp{bset #xx:3,@code{@@}@var{aa}:8} whenever the address @var{aa} is in 5185the top page of memory). 5186 5187@item system control instructions 5188@command{ld} finds all @code{ldc.w, stc.w} instrcutions which use the 518932 bit absolute address form, but refer to the top page of memory, and 5190changes them to use 16 bit address form. 5191(That is: the linker turns @samp{ldc.w @code{@@}@var{aa}:32,ccr} into 5192@samp{ldc.w @code{@@}@var{aa}:16,ccr} whenever the address @var{aa} is in 5193the top page of memory). 5194@end table 5195 5196@ifclear GENERIC 5197@lowersections 5198@end ifclear 5199@end ifset 5200 5201@ifclear GENERIC 5202@ifset Renesas 5203@c This stuff is pointless to say unless you're especially concerned 5204@c with Renesas chips; don't enable it for generic case, please. 5205@node Renesas 5206@chapter @command{ld} and Other Renesas Chips 5207 5208@command{ld} also supports the Renesas (formerly Hitachi) H8/300H, 5209H8/500, and SH chips. No special features, commands, or command-line 5210options are required for these chips. 5211@end ifset 5212@end ifclear 5213 5214@ifset I960 5215@ifclear GENERIC 5216@raisesections 5217@end ifclear 5218 5219@node i960 5220@section @command{ld} and the Intel 960 Family 5221 5222@cindex i960 support 5223 5224You can use the @samp{-A@var{architecture}} command line option to 5225specify one of the two-letter names identifying members of the 960 5226family; the option specifies the desired output target, and warns of any 5227incompatible instructions in the input files. It also modifies the 5228linker's search strategy for archive libraries, to support the use of 5229libraries specific to each particular architecture, by including in the 5230search loop names suffixed with the string identifying the architecture. 5231 5232For example, if your @command{ld} command line included @w{@samp{-ACA}} as 5233well as @w{@samp{-ltry}}, the linker would look (in its built-in search 5234paths, and in any paths you specify with @samp{-L}) for a library with 5235the names 5236 5237@smallexample 5238@group 5239try 5240libtry.a 5241tryca 5242libtryca.a 5243@end group 5244@end smallexample 5245 5246@noindent 5247The first two possibilities would be considered in any event; the last 5248two are due to the use of @w{@samp{-ACA}}. 5249 5250You can meaningfully use @samp{-A} more than once on a command line, since 5251the 960 architecture family allows combination of target architectures; each 5252use will add another pair of name variants to search for when @w{@samp{-l}} 5253specifies a library. 5254 5255@cindex @option{--relax} on i960 5256@cindex relaxing on i960 5257@command{ld} supports the @samp{--relax} option for the i960 family. If 5258you specify @samp{--relax}, @command{ld} finds all @code{balx} and 5259@code{calx} instructions whose targets are within 24 bits, and turns 5260them into 24-bit program-counter relative @code{bal} and @code{cal} 5261instructions, respectively. @command{ld} also turns @code{cal} 5262instructions into @code{bal} instructions when it determines that the 5263target subroutine is a leaf routine (that is, the target subroutine does 5264not itself call any subroutines). 5265 5266@ifclear GENERIC 5267@lowersections 5268@end ifclear 5269@end ifset 5270 5271@ifset ARM 5272@ifclear GENERIC 5273@raisesections 5274@end ifclear 5275 5276@ifset M68HC11 5277@ifclear GENERIC 5278@raisesections 5279@end ifclear 5280 5281@node M68HC11/68HC12 5282@section @command{ld} and the Motorola 68HC11 and 68HC12 families 5283 5284@cindex M68HC11 and 68HC12 support 5285 5286@subsection Linker Relaxation 5287 5288For the Motorola 68HC11, @command{ld} can perform these global 5289optimizations when you specify the @samp{--relax} command-line option. 5290 5291@table @emph 5292@cindex relaxing on M68HC11 5293@item relaxing address modes 5294@command{ld} finds all @code{jsr} and @code{jmp} instructions whose 5295targets are within eight bits, and turns them into eight-bit 5296program-counter relative @code{bsr} and @code{bra} instructions, 5297respectively. 5298 5299@command{ld} also looks at all 16-bit extended addressing modes and 5300transforms them in a direct addressing mode when the address is in 5301page 0 (between 0 and 0x0ff). 5302 5303@item relaxing gcc instruction group 5304When @command{gcc} is called with @option{-mrelax}, it can emit group 5305of instructions that the linker can optimize to use a 68HC11 direct 5306addressing mode. These instructions consists of @code{bclr} or 5307@code{bset} instructions. 5308 5309@end table 5310 5311@subsection Trampoline Generation 5312 5313@cindex trampoline generation on M68HC11 5314@cindex trampoline generation on M68HC12 5315For 68HC11 and 68HC12, @command{ld} can generate trampoline code to 5316call a far function using a normal @code{jsr} instruction. The linker 5317will also change the relocation to some far function to use the 5318trampoline address instead of the function address. This is typically the 5319case when a pointer to a function is taken. The pointer will in fact 5320point to the function trampoline. 5321 5322@ifclear GENERIC 5323@lowersections 5324@end ifclear 5325@end ifset 5326 5327@node ARM 5328@section @command{ld} and the ARM family 5329 5330@cindex ARM interworking support 5331@kindex --support-old-code 5332For the ARM, @command{ld} will generate code stubs to allow functions calls 5333betweem ARM and Thumb code. These stubs only work with code that has 5334been compiled and assembled with the @samp{-mthumb-interwork} command 5335line option. If it is necessary to link with old ARM object files or 5336libraries, which have not been compiled with the -mthumb-interwork 5337option then the @samp{--support-old-code} command line switch should be 5338given to the linker. This will make it generate larger stub functions 5339which will work with non-interworking aware ARM code. Note, however, 5340the linker does not support generating stubs for function calls to 5341non-interworking aware Thumb code. 5342 5343@cindex thumb entry point 5344@cindex entry point, thumb 5345@kindex --thumb-entry=@var{entry} 5346The @samp{--thumb-entry} switch is a duplicate of the generic 5347@samp{--entry} switch, in that it sets the program's starting address. 5348But it also sets the bottom bit of the address, so that it can be 5349branched to using a BX instruction, and the program will start 5350executing in Thumb mode straight away. 5351 5352@cindex BE8 5353@kindex --be8 5354The @samp{--be8} switch instructs @command{ld} to generate BE8 format 5355executables. This option is only valid when linking big-endian objects. 5356The resulting image will contain big-endian data and little-endian code. 5357 5358@cindex TARGET1 5359@kindex --target1-rel 5360@kindex --target1-abs 5361The @samp{R_ARM_TARGET1} relocation is typically used for entries in the 5362@samp{.init_array} section. It is interpreted as either @samp{R_ARM_REL32} 5363or @samp{R_ARM_ABS32}, depending on the target. The @samp{--target1-rel} 5364and @samp{--target1-abs} switches override the default. 5365 5366@cindex TARGET2 5367@kindex --target2=@var{type} 5368The @samp{--target2=type} switch overrides the default definition of the 5369@samp{R_ARM_TARGET2} relocation. Valid values for @samp{type}, their 5370meanings, and target defaults are as follows: 5371@table @samp 5372@item rel 5373@samp{R_ARM_REL32} (arm*-*-elf, arm*-*-eabi) 5374@item abs 5375@samp{R_ARM_ABS32} (arm*-*-symbianelf) 5376@item got-rel 5377@samp{R_ARM_GOT_PREL} (arm*-*-linux, arm*-*-*bsd) 5378@end table 5379 5380@cindex FIX_V4BX 5381@kindex --fix-v4bx 5382The @samp{R_ARM_V4BX} relocation (defined by the ARM AAELF 5383specification) enables objects compiled for the ARMv4 architecture to be 5384interworking-safe when linked with other objects compiled for ARMv4t, but 5385also allows pure ARMv4 binaries to be built from the same ARMv4 objects. 5386 5387In the latter case, the switch @option{--fix-v4bx} must be passed to the 5388linker, which causes v4t @code{BX rM} instructions to be rewritten as 5389@code{MOV PC,rM}, since v4 processors do not have a @code{BX} instruction. 5390 5391In the former case, the switch should not be used, and @samp{R_ARM_V4BX} 5392relocations are ignored. 5393 5394@cindex USE_BLX 5395@kindex --use-blx 5396The @samp{--use-blx} switch enables the linker to use ARM/Thumb 5397BLX instructions (available on ARMv5t and above) in various 5398situations. Currently it is used to perform calls via the PLT from Thumb 5399code using BLX rather than using BX and a mode-switching stub before 5400each PLT entry. This should lead to such calls executing slightly faster. 5401 5402This option is enabled implicitly for SymbianOS, so there is no need to 5403specify it if you are using that target. 5404 5405@ifclear GENERIC 5406@lowersections 5407@end ifclear 5408@end ifset 5409 5410@ifset HPPA 5411@ifclear GENERIC 5412@raisesections 5413@end ifclear 5414 5415@node HPPA ELF32 5416@section @command{ld} and HPPA 32-bit ELF Support 5417@cindex HPPA multiple sub-space stubs 5418@kindex --multi-subspace 5419When generating a shared library, @command{ld} will by default generate 5420import stubs suitable for use with a single sub-space application. 5421The @samp{--multi-subspace} switch causes @command{ld} to generate export 5422stubs, and different (larger) import stubs suitable for use with 5423multiple sub-spaces. 5424 5425@cindex HPPA stub grouping 5426@kindex --stub-group-size=@var{N} 5427Long branch stubs and import/export stubs are placed by @command{ld} in 5428stub sections located between groups of input sections. 5429@samp{--stub-group-size} specifies the maximum size of a group of input 5430sections handled by one stub section. Since branch offsets are signed, 5431a stub section may serve two groups of input sections, one group before 5432the stub section, and one group after it. However, when using 5433conditional branches that require stubs, it may be better (for branch 5434prediction) that stub sections only serve one group of input sections. 5435A negative value for @samp{N} chooses this scheme, ensuring that 5436branches to stubs always use a negative offset. Two special values of 5437@samp{N} are recognized, @samp{1} and @samp{-1}. These both instruct 5438@command{ld} to automatically size input section groups for the branch types 5439detected, with the same behaviour regarding stub placement as other 5440positive or negative values of @samp{N} respectively. 5441 5442Note that @samp{--stub-group-size} does not split input sections. A 5443single input section larger than the group size specified will of course 5444create a larger group (of one section). If input sections are too 5445large, it may not be possible for a branch to reach its stub. 5446 5447@ifclear GENERIC 5448@lowersections 5449@end ifclear 5450@end ifset 5451 5452@ifset MMIX 5453@ifclear GENERIC 5454@raisesections 5455@end ifclear 5456 5457@node MMIX 5458@section @code{ld} and MMIX 5459For MMIX, there is a choice of generating @code{ELF} object files or 5460@code{mmo} object files when linking. The simulator @code{mmix} 5461understands the @code{mmo} format. The binutils @code{objcopy} utility 5462can translate between the two formats. 5463 5464There is one special section, the @samp{.MMIX.reg_contents} section. 5465Contents in this section is assumed to correspond to that of global 5466registers, and symbols referring to it are translated to special symbols, 5467equal to registers. In a final link, the start address of the 5468@samp{.MMIX.reg_contents} section corresponds to the first allocated 5469global register multiplied by 8. Register @code{$255} is not included in 5470this section; it is always set to the program entry, which is at the 5471symbol @code{Main} for @code{mmo} files. 5472 5473Symbols with the prefix @code{__.MMIX.start.}, for example 5474@code{__.MMIX.start..text} and @code{__.MMIX.start..data} are special; 5475there must be only one each, even if they are local. The default linker 5476script uses these to set the default start address of a section. 5477 5478Initial and trailing multiples of zero-valued 32-bit words in a section, 5479are left out from an mmo file. 5480 5481@ifclear GENERIC 5482@lowersections 5483@end ifclear 5484@end ifset 5485 5486@ifset MSP430 5487@ifclear GENERIC 5488@raisesections 5489@end ifclear 5490 5491@node MSP430 5492@section @code{ld} and MSP430 5493For the MSP430 it is possible to select the MPU architecture. The flag @samp{-m [mpu type]} 5494will select an appropriate linker script for selected MPU type. (To get a list of known MPUs 5495just pass @samp{-m help} option to the linker). 5496 5497@cindex MSP430 extra sections 5498The linker will recognize some extra sections which are MSP430 specific: 5499 5500@table @code 5501@item @samp{.vectors} 5502Defines a portion of ROM where interrupt vectors located. 5503 5504@item @samp{.bootloader} 5505Defines the bootloader portion of the ROM (if applicable). Any code 5506in this section will be uploaded to the MPU. 5507 5508@item @samp{.infomem} 5509Defines an information memory section (if applicable). Any code in 5510this section will be uploaded to the MPU. 5511 5512@item @samp{.infomemnobits} 5513This is the same as the @samp{.infomem} section except that any code 5514in this section will not be uploaded to the MPU. 5515 5516@item @samp{.noinit} 5517Denotes a portion of RAM located above @samp{.bss} section. 5518 5519The last two sections are used by gcc. 5520@end table 5521 5522@ifclear GENERIC 5523@lowersections 5524@end ifclear 5525@end ifset 5526 5527@ifset POWERPC 5528@ifclear GENERIC 5529@raisesections 5530@end ifclear 5531 5532@node PowerPC ELF32 5533@section @command{ld} and PowerPC 32-bit ELF Support 5534@cindex PowerPC long branches 5535@kindex --relax on PowerPC 5536Branches on PowerPC processors are limited to a signed 26-bit 5537displacement, which may result in @command{ld} giving 5538@samp{relocation truncated to fit} errors with very large programs. 5539@samp{--relax} enables the generation of trampolines that can access 5540the entire 32-bit address space. These trampolines are inserted at 5541section boundaries, so may not themselves be reachable if an input 5542section exceeds 33M in size. 5543 5544@cindex PowerPC ELF32 options 5545@table @option 5546@cindex PowerPC PLT 5547@kindex --bss-plt 5548@item --bss-plt 5549Current PowerPC GCC accepts a @samp{-msecure-plt} option that 5550generates code capable of using a newer PLT and GOT layout that has 5551the security advantage of no executable section ever needing to be 5552writable and no writable section ever being executable. PowerPC 5553@command{ld} will generate this layout, including stubs to access the 5554PLT, if all input files (including startup and static libraries) were 5555compiled with @samp{-msecure-plt}. @samp{--bss-plt} forces the old 5556BSS PLT (and GOT layout) which can give slightly better performance. 5557 5558@cindex PowerPC GOT 5559@kindex --sdata-got 5560@item --sdata-got 5561The new secure PLT and GOT are placed differently relative to other 5562sections compared to older BSS PLT and GOT placement. The location of 5563@code{.plt} must change because the new secure PLT is an initialized 5564section while the old PLT is uninitialized. The reason for the 5565@code{.got} change is more subtle: The new placement allows 5566@code{.got} to be read-only in applications linked with 5567@samp{-z relro -z now}. However, this placement means that 5568@code{.sdata} cannot always be used in shared libraries, because the 5569PowerPC ABI accesses @code{.sdata} in shared libraries from the GOT 5570pointer. @samp{--sdata-got} forces the old GOT placement. PowerPC 5571GCC doesn't use @code{.sdata} in shared libraries, so this option is 5572really only useful for other compilers that may do so. 5573 5574@cindex PowerPC stub symbols 5575@kindex --emit-stub-syms 5576@item --emit-stub-syms 5577This option causes @command{ld} to label linker stubs with a local 5578symbol that encodes the stub type and destination. 5579 5580@cindex PowerPC TLS optimization 5581@kindex --no-tls-optimize 5582@item --no-tls-optimize 5583PowerPC @command{ld} normally performs some optimization of code 5584sequences used to access Thread-Local Storage. Use this option to 5585disable the optimization. 5586@end table 5587 5588@ifclear GENERIC 5589@lowersections 5590@end ifclear 5591@end ifset 5592 5593@ifset POWERPC64 5594@ifclear GENERIC 5595@raisesections 5596@end ifclear 5597 5598@node PowerPC64 ELF64 5599@section @command{ld} and PowerPC64 64-bit ELF Support 5600 5601@cindex PowerPC64 ELF64 options 5602@table @option 5603@cindex PowerPC64 stub grouping 5604@kindex --stub-group-size 5605@item --stub-group-size 5606Long branch stubs, PLT call stubs and TOC adjusting stubs are placed 5607by @command{ld} in stub sections located between groups of input sections. 5608@samp{--stub-group-size} specifies the maximum size of a group of input 5609sections handled by one stub section. Since branch offsets are signed, 5610a stub section may serve two groups of input sections, one group before 5611the stub section, and one group after it. However, when using 5612conditional branches that require stubs, it may be better (for branch 5613prediction) that stub sections only serve one group of input sections. 5614A negative value for @samp{N} chooses this scheme, ensuring that 5615branches to stubs always use a negative offset. Two special values of 5616@samp{N} are recognized, @samp{1} and @samp{-1}. These both instruct 5617@command{ld} to automatically size input section groups for the branch types 5618detected, with the same behaviour regarding stub placement as other 5619positive or negative values of @samp{N} respectively. 5620 5621Note that @samp{--stub-group-size} does not split input sections. A 5622single input section larger than the group size specified will of course 5623create a larger group (of one section). If input sections are too 5624large, it may not be possible for a branch to reach its stub. 5625 5626@cindex PowerPC64 stub symbols 5627@kindex --emit-stub-syms 5628@item --emit-stub-syms 5629This option causes @command{ld} to label linker stubs with a local 5630symbol that encodes the stub type and destination. 5631 5632@cindex PowerPC64 dot symbols 5633@kindex --dotsyms 5634@kindex --no-dotsyms 5635@item --dotsyms, --no-dotsyms 5636These two options control how @command{ld} interprets version patterns 5637in a version script. Older PowerPC64 compilers emitted both a 5638function descriptor symbol with the same name as the function, and a 5639code entry symbol with the name prefixed by a dot (@samp{.}). To 5640properly version a function @samp{foo}, the version script thus needs 5641to control both @samp{foo} and @samp{.foo}. The option 5642@samp{--dotsyms}, on by default, automatically adds the required 5643dot-prefixed patterns. Use @samp{--no-dotsyms} to disable this 5644feature. 5645 5646@cindex PowerPC64 TLS optimization 5647@kindex --no-tls-optimize 5648@item --no-tls-optimize 5649PowerPC64 @command{ld} normally performs some optimization of code 5650sequences used to access Thread-Local Storage. Use this option to 5651disable the optimization. 5652 5653@cindex PowerPC64 OPD optimization 5654@kindex --no-opd-optimize 5655@item --no-opd-optimize 5656PowerPC64 @command{ld} normally removes @code{.opd} section entries 5657corresponding to deleted link-once functions, or functions removed by 5658the action of @samp{--gc-sections} or linker scrip @code{/DISCARD/}. 5659Use this option to disable @code{.opd} optimization. 5660 5661@cindex PowerPC64 OPD spacing 5662@kindex --non-overlapping-opd 5663@item --non-overlapping-opd 5664Some PowerPC64 compilers have an option to generate compressed 5665@code{.opd} entries spaced 16 bytes apart, overlapping the third word, 5666the static chain pointer (unused in C) with the first word of the next 5667entry. This option expands such entries to the full 24 bytes. 5668 5669@cindex PowerPC64 TOC optimization 5670@kindex --no-toc-optimize 5671@item --no-toc-optimize 5672PowerPC64 @command{ld} normally removes unused @code{.toc} section 5673entries. Such entries are detected by examining relocations that 5674reference the TOC in code sections. A reloc in a deleted code section 5675marks a TOC word as unneeded, while a reloc in a kept code section 5676marks a TOC word as needed. Since the TOC may reference itself, TOC 5677relocs are also examined. TOC words marked as both needed and 5678unneeded will of course be kept. TOC words without any referencing 5679reloc are assumed to be part of a multi-word entry, and are kept or 5680discarded as per the nearest marked preceding word. This works 5681reliably for compiler generated code, but may be incorrect if assembly 5682code is used to insert TOC entries. Use this option to disable the 5683optimization. 5684 5685@cindex PowerPC64 multi-TOC 5686@kindex --no-multi-toc 5687@item --no-multi-toc 5688By default, PowerPC64 GCC generates code for a TOC model where TOC 5689entries are accessed with a 16-bit offset from r2. This limits the 5690total TOC size to 64K. PowerPC64 @command{ld} extends this limit by 5691grouping code sections such that each group uses less than 64K for its 5692TOC entries, then inserts r2 adjusting stubs between inter-group 5693calls. @command{ld} does not split apart input sections, so cannot 5694help if a single input file has a @code{.toc} section that exceeds 569564K, most likely from linking multiple files with @command{ld -r}. 5696Use this option to turn off this feature. 5697@end table 5698 5699@ifclear GENERIC 5700@lowersections 5701@end ifclear 5702@end ifset 5703 5704@ifset TICOFF 5705@ifclear GENERIC 5706@raisesections 5707@end ifclear 5708 5709@node TI COFF 5710@section @command{ld}'s Support for Various TI COFF Versions 5711@cindex TI COFF versions 5712@kindex --format=@var{version} 5713The @samp{--format} switch allows selection of one of the various 5714TI COFF versions. The latest of this writing is 2; versions 0 and 1 are 5715also supported. The TI COFF versions also vary in header byte-order 5716format; @command{ld} will read any version or byte order, but the output 5717header format depends on the default specified by the specific target. 5718 5719@ifclear GENERIC 5720@lowersections 5721@end ifclear 5722@end ifset 5723 5724@ifset WIN32 5725@ifclear GENERIC 5726@raisesections 5727@end ifclear 5728 5729@node WIN32 5730@section @command{ld} and WIN32 (cygwin/mingw) 5731 5732This section describes some of the win32 specific @command{ld} issues. 5733See @ref{Options,,Command Line Options} for detailed decription of the 5734command line options mentioned here. 5735 5736@table @emph 5737@cindex import libraries 5738@item import libraries 5739The standard Windows linker creates and uses so-called import 5740libraries, which contains information for linking to dll's. They are 5741regular static archives and are handled as any other static 5742archive. The cygwin and mingw ports of @command{ld} have specific 5743support for creating such libraries provided with the 5744@samp{--out-implib} command line option. 5745 5746@item exporting DLL symbols 5747@cindex exporting DLL symbols 5748The cygwin/mingw @command{ld} has several ways to export symbols for dll's. 5749 5750@table @emph 5751@item using auto-export functionality 5752@cindex using auto-export functionality 5753By default @command{ld} exports symbols with the auto-export functionality, 5754which is controlled by the following command line options: 5755 5756@itemize 5757@item --export-all-symbols [This is the default] 5758@item --exclude-symbols 5759@item --exclude-libs 5760@end itemize 5761 5762If, however, @samp{--export-all-symbols} is not given explicitly on the 5763command line, then the default auto-export behavior will be @emph{disabled} 5764if either of the following are true: 5765 5766@itemize 5767@item A DEF file is used. 5768@item Any symbol in any object file was marked with the __declspec(dllexport) attribute. 5769@end itemize 5770 5771@item using a DEF file 5772@cindex using a DEF file 5773Another way of exporting symbols is using a DEF file. A DEF file is 5774an ASCII file containing definitions of symbols which should be 5775exported when a dll is created. Usually it is named @samp{<dll 5776name>.def} and is added as any other object file to the linker's 5777command line. The file's name must end in @samp{.def} or @samp{.DEF}. 5778 5779@example 5780gcc -o <output> <objectfiles> <dll name>.def 5781@end example 5782 5783Using a DEF file turns off the normal auto-export behavior, unless the 5784@samp{--export-all-symbols} option is also used. 5785 5786Here is an example of a DEF file for a shared library called @samp{xyz.dll}: 5787 5788@example 5789LIBRARY "xyz.dll" BASE=0x20000000 5790 5791EXPORTS 5792foo 5793bar 5794_bar = bar 5795another_foo = abc.dll.afoo 5796var1 DATA 5797@end example 5798 5799This example defines a DLL with a non-default base address and five 5800symbols in the export table. The third exported symbol @code{_bar} is an 5801alias for the second. The fourth symbol, @code{another_foo} is resolved 5802by "forwarding" to another module and treating it as an alias for 5803@code{afoo} exported from the DLL @samp{abc.dll}. The final symbol 5804@code{var1} is declared to be a data object. 5805 5806The optional @code{LIBRARY <name>} command indicates the @emph{internal} 5807name of the output DLL. If @samp{<name>} does not include a suffix, 5808the default library suffix, @samp{.DLL} is appended. 5809 5810When the .DEF file is used to build an application. rather than a 5811library, the @code{NAME <name>} command shoud be used instead of 5812@code{LIBRARY}. If @samp{<name>} does not include a suffix, the default 5813executable suffix, @samp{.EXE} is appended. 5814 5815With either @code{LIBRARY <name>} or @code{NAME <name>} the optional 5816specification @code{BASE = <number>} may be used to specify a 5817non-default base address for the image. 5818 5819If neither @code{LIBRARY <name>} nor @code{NAME <name>} is specified, 5820or they specify an empty string, the internal name is the same as the 5821filename specified on the command line. 5822 5823The complete specification of an export symbol is: 5824 5825@example 5826EXPORTS 5827 ( ( ( <name1> [ = <name2> ] ) 5828 | ( <name1> = <module-name> . <external-name>)) 5829 [ @@ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) * 5830@end example 5831 5832Declares @samp{<name1>} as an exported symbol from the DLL, or declares 5833@samp{<name1>} as an exported alias for @samp{<name2>}; or declares 5834@samp{<name1>} as a "forward" alias for the symbol 5835@samp{<external-name>} in the DLL @samp{<module-name>}. 5836Optionally, the symbol may be exported by the specified ordinal 5837@samp{<integer>} alias. 5838 5839The optional keywords that follow the declaration indicate: 5840 5841@code{NONAME}: Do not put the symbol name in the DLL's export table. It 5842will still be exported by its ordinal alias (either the value specified 5843by the .def specification or, otherwise, the value assigned by the 5844linker). The symbol name, however, does remain visible in the import 5845library (if any), unless @code{PRIVATE} is also specified. 5846 5847@code{DATA}: The symbol is a variable or object, rather than a function. 5848The import lib will export only an indirect reference to @code{foo} as 5849the symbol @code{_imp__foo} (ie, @code{foo} must be resolved as 5850@code{*_imp__foo}). 5851 5852@code{CONSTANT}: Like @code{DATA}, but put the undecorated @code{foo} as 5853well as @code{_imp__foo} into the import library. Both refer to the 5854read-only import address table's pointer to the variable, not to the 5855variable itself. This can be dangerous. If the user code fails to add 5856the @code{dllimport} attribute and also fails to explicitly add the 5857extra indirection that the use of the attribute enforces, the 5858application will behave unexpectedly. 5859 5860@code{PRIVATE}: Put the symbol in the DLL's export table, but do not put 5861it into the static import library used to resolve imports at link time. The 5862symbol can still be imported using the @code{LoadLibrary/GetProcAddress} 5863API at runtime or by by using the GNU ld extension of linking directly to 5864the DLL without an import library. 5865 5866See ld/deffilep.y in the binutils sources for the full specification of 5867other DEF file statements 5868 5869@cindex creating a DEF file 5870While linking a shared dll, @command{ld} is able to create a DEF file 5871with the @samp{--output-def <file>} command line option. 5872 5873@item Using decorations 5874@cindex Using decorations 5875Another way of marking symbols for export is to modify the source code 5876itself, so that when building the DLL each symbol to be exported is 5877declared as: 5878 5879@example 5880__declspec(dllexport) int a_variable 5881__declspec(dllexport) void a_function(int with_args) 5882@end example 5883 5884All such symbols will be exported from the DLL. If, however, 5885any of the object files in the DLL contain symbols decorated in 5886this way, then the normal auto-export behavior is disabled, unless 5887the @samp{--export-all-symbols} option is also used. 5888 5889Note that object files that wish to access these symbols must @emph{not} 5890decorate them with dllexport. Instead, they should use dllimport, 5891instead: 5892 5893@example 5894__declspec(dllimport) int a_variable 5895__declspec(dllimport) void a_function(int with_args) 5896@end example 5897 5898This complicates the structure of library header files, because 5899when included by the library itself the header must declare the 5900variables and functions as dllexport, but when included by client 5901code the header must declare them as dllimport. There are a number 5902of idioms that are typically used to do this; often client code can 5903omit the __declspec() declaration completely. See 5904@samp{--enable-auto-import} and @samp{automatic data imports} for more 5905imformation. 5906@end table 5907 5908@cindex automatic data imports 5909@item automatic data imports 5910The standard Windows dll format supports data imports from dlls only 5911by adding special decorations (dllimport/dllexport), which let the 5912compiler produce specific assembler instructions to deal with this 5913issue. This increases the effort necessary to port existing Un*x 5914code to these platforms, especially for large 5915c++ libraries and applications. The auto-import feature, which was 5916initially provided by Paul Sokolovsky, allows one to omit the 5917decorations to archieve a behavior that conforms to that on POSIX/Un*x 5918platforms. This feature is enabled with the @samp{--enable-auto-import} 5919command-line option, although it is enabled by default on cygwin/mingw. 5920The @samp{--enable-auto-import} option itself now serves mainly to 5921suppress any warnings that are ordinarily emitted when linked objects 5922trigger the feature's use. 5923 5924auto-import of variables does not always work flawlessly without 5925additional assistance. Sometimes, you will see this message 5926 5927"variable '<var>' can't be auto-imported. Please read the 5928documentation for ld's @code{--enable-auto-import} for details." 5929 5930The @samp{--enable-auto-import} documentation explains why this error 5931occurs, and several methods that can be used to overcome this difficulty. 5932One of these methods is the @emph{runtime pseudo-relocs} feature, described 5933below. 5934 5935@cindex runtime pseudo-relocation 5936For complex variables imported from DLLs (such as structs or classes), 5937object files typically contain a base address for the variable and an 5938offset (@emph{addend}) within the variable--to specify a particular 5939field or public member, for instance. Unfortunately, the runtime loader used 5940in win32 environments is incapable of fixing these references at runtime 5941without the additional information supplied by dllimport/dllexport decorations. 5942The standard auto-import feature described above is unable to resolve these 5943references. 5944 5945The @samp{--enable-runtime-pseudo-relocs} switch allows these references to 5946be resolved without error, while leaving the task of adjusting the references 5947themselves (with their non-zero addends) to specialized code provided by the 5948runtime environment. Recent versions of the cygwin and mingw environments and 5949compilers provide this runtime support; older versions do not. However, the 5950support is only necessary on the developer's platform; the compiled result will 5951run without error on an older system. 5952 5953@samp{--enable-runtime-pseudo-relocs} is not the default; it must be explicitly 5954enabled as needed. 5955 5956@cindex direct linking to a dll 5957@item direct linking to a dll 5958The cygwin/mingw ports of @command{ld} support the direct linking, 5959including data symbols, to a dll without the usage of any import 5960libraries. This is much faster and uses much less memory than does the 5961traditional import library method, expecially when linking large 5962libraries or applications. When @command{ld} creates an import lib, each 5963function or variable exported from the dll is stored in its own bfd, even 5964though a single bfd could contain many exports. The overhead involved in 5965storing, loading, and processing so many bfd's is quite large, and explains the 5966tremendous time, memory, and storage needed to link against particularly 5967large or complex libraries when using import libs. 5968 5969Linking directly to a dll uses no extra command-line switches other than 5970@samp{-L} and @samp{-l}, because @command{ld} already searches for a number 5971of names to match each library. All that is needed from the developer's 5972perspective is an understanding of this search, in order to force ld to 5973select the dll instead of an import library. 5974 5975 5976For instance, when ld is called with the argument @samp{-lxxx} it will attempt 5977to find, in the first directory of its search path, 5978 5979@example 5980libxxx.dll.a 5981xxx.dll.a 5982libxxx.a 5983cygxxx.dll (*) 5984libxxx.dll 5985xxx.dll 5986@end example 5987 5988before moving on to the next directory in the search path. 5989 5990(*) Actually, this is not @samp{cygxxx.dll} but in fact is @samp{<prefix>xxx.dll}, 5991where @samp{<prefix>} is set by the @command{ld} option 5992@samp{--dll-search-prefix=<prefix>}. In the case of cygwin, the standard gcc spec 5993file includes @samp{--dll-search-prefix=cyg}, so in effect we actually search for 5994@samp{cygxxx.dll}. 5995 5996Other win32-based unix environments, such as mingw or pw32, may use other 5997@samp{<prefix>}es, although at present only cygwin makes use of this feature. It 5998was originally intended to help avoid name conflicts among dll's built for the 5999various win32/un*x environments, so that (for example) two versions of a zlib dll 6000could coexist on the same machine. 6001 6002The generic cygwin/mingw path layout uses a @samp{bin} directory for 6003applications and dll's and a @samp{lib} directory for the import 6004libraries (using cygwin nomenclature): 6005 6006@example 6007bin/ 6008 cygxxx.dll 6009lib/ 6010 libxxx.dll.a (in case of dll's) 6011 libxxx.a (in case of static archive) 6012@end example 6013 6014Linking directly to a dll without using the import library can be 6015done two ways: 6016 60171. Use the dll directly by adding the @samp{bin} path to the link line 6018@example 6019gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx 6020@end example 6021 6022However, as the dll's often have version numbers appended to their names 6023(@samp{cygncurses-5.dll}) this will often fail, unless one specifies 6024@samp{-L../bin -lncurses-5} to include the version. Import libs are generally 6025not versioned, and do not have this difficulty. 6026 60272. Create a symbolic link from the dll to a file in the @samp{lib} 6028directory according to the above mentioned search pattern. This 6029should be used to avoid unwanted changes in the tools needed for 6030making the app/dll. 6031 6032@example 6033ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a] 6034@end example 6035 6036Then you can link without any make environment changes. 6037 6038@example 6039gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx 6040@end example 6041 6042This technique also avoids the version number problems, because the following is 6043perfectly legal 6044 6045@example 6046bin/ 6047 cygxxx-5.dll 6048lib/ 6049 libxxx.dll.a -> ../bin/cygxxx-5.dll 6050@end example 6051 6052Linking directly to a dll without using an import lib will work 6053even when auto-import features are exercised, and even when 6054@samp{--enable-runtime-pseudo-relocs} is used. 6055 6056Given the improvements in speed and memory usage, one might justifiably 6057wonder why import libraries are used at all. There are two reasons: 6058 60591. Until recently, the link-directly-to-dll functionality did @emph{not} 6060work with auto-imported data. 6061 60622. Sometimes it is necessary to include pure static objects within the 6063import library (which otherwise contains only bfd's for indirection 6064symbols that point to the exports of a dll). Again, the import lib 6065for the cygwin kernel makes use of this ability, and it is not 6066possible to do this without an import lib. 6067 6068So, import libs are not going away. But the ability to replace 6069true import libs with a simple symbolic link to (or a copy of) 6070a dll, in most cases, is a useful addition to the suite of tools 6071binutils makes available to the win32 developer. Given the 6072massive improvements in memory requirements during linking, storage 6073requirements, and linking speed, we expect that many developers 6074will soon begin to use this feature whenever possible. 6075 6076@item symbol aliasing 6077@table @emph 6078@item adding additional names 6079Sometimes, it is useful to export symbols with additional names. 6080A symbol @samp{foo} will be exported as @samp{foo}, but it can also be 6081exported as @samp{_foo} by using special directives in the DEF file 6082when creating the dll. This will affect also the optional created 6083import library. Consider the following DEF file: 6084 6085@example 6086LIBRARY "xyz.dll" BASE=0x61000000 6087 6088EXPORTS 6089foo 6090_foo = foo 6091@end example 6092 6093The line @samp{_foo = foo} maps the symbol @samp{foo} to @samp{_foo}. 6094 6095Another method for creating a symbol alias is to create it in the 6096source code using the "weak" attribute: 6097 6098@example 6099void foo () @{ /* Do something. */; @} 6100void _foo () __attribute__ ((weak, alias ("foo"))); 6101@end example 6102 6103See the gcc manual for more information about attributes and weak 6104symbols. 6105 6106@item renaming symbols 6107Sometimes it is useful to rename exports. For instance, the cygwin 6108kernel does this regularly. A symbol @samp{_foo} can be exported as 6109@samp{foo} but not as @samp{_foo} by using special directives in the 6110DEF file. (This will also affect the import library, if it is 6111created). In the following example: 6112 6113@example 6114LIBRARY "xyz.dll" BASE=0x61000000 6115 6116EXPORTS 6117_foo = foo 6118@end example 6119 6120The line @samp{_foo = foo} maps the exported symbol @samp{foo} to 6121@samp{_foo}. 6122@end table 6123 6124Note: using a DEF file disables the default auto-export behavior, 6125unless the @samp{--export-all-symbols} command line option is used. 6126If, however, you are trying to rename symbols, then you should list 6127@emph{all} desired exports in the DEF file, including the symbols 6128that are not being renamed, and do @emph{not} use the 6129@samp{--export-all-symbols} option. If you list only the 6130renamed symbols in the DEF file, and use @samp{--export-all-symbols} 6131to handle the other symbols, then the both the new names @emph{and} 6132the original names for the renamed symbols will be exported. 6133In effect, you'd be aliasing those symbols, not renaming them, 6134which is probably not what you wanted. 6135 6136@cindex weak externals 6137@item weak externals 6138The Windows object format, PE, specifies a form of weak symbols called 6139weak externals. When a weak symbol is linked and the symbol is not 6140defined, the weak symbol becomes an alias for some other symbol. There 6141are three variants of weak externals: 6142@itemize 6143@item Definition is searched for in objects and libraries, historically 6144called lazy externals. 6145@item Definition is searched for only in other objects, not in libraries. 6146This form is not presently implemented. 6147@item No search; the symbol is an alias. This form is not presently 6148implemented. 6149@end itemize 6150As a GNU extension, weak symbols that do not specify an alternate symbol 6151are supported. If the symbol is undefined when linking, the symbol 6152uses a default value. 6153@end table 6154 6155@ifclear GENERIC 6156@lowersections 6157@end ifclear 6158@end ifset 6159 6160@ifset XTENSA 6161@ifclear GENERIC 6162@raisesections 6163@end ifclear 6164 6165@node Xtensa 6166@section @code{ld} and Xtensa Processors 6167 6168@cindex Xtensa processors 6169The default @command{ld} behavior for Xtensa processors is to interpret 6170@code{SECTIONS} commands so that lists of explicitly named sections in a 6171specification with a wildcard file will be interleaved when necessary to 6172keep literal pools within the range of PC-relative load offsets. For 6173example, with the command: 6174 6175@smallexample 6176SECTIONS 6177@{ 6178 .text : @{ 6179 *(.literal .text) 6180 @} 6181@} 6182@end smallexample 6183 6184@noindent 6185@command{ld} may interleave some of the @code{.literal} 6186and @code{.text} sections from different object files to ensure that the 6187literal pools are within the range of PC-relative load offsets. A valid 6188interleaving might place the @code{.literal} sections from an initial 6189group of files followed by the @code{.text} sections of that group of 6190files. Then, the @code{.literal} sections from the rest of the files 6191and the @code{.text} sections from the rest of the files would follow. 6192 6193@cindex @option{--relax} on Xtensa 6194@cindex relaxing on Xtensa 6195Relaxation is enabled by default for the Xtensa version of @command{ld} and 6196provides two important link-time optimizations. The first optimization 6197is to combine identical literal values to reduce code size. A redundant 6198literal will be removed and all the @code{L32R} instructions that use it 6199will be changed to reference an identical literal, as long as the 6200location of the replacement literal is within the offset range of all 6201the @code{L32R} instructions. The second optimization is to remove 6202unnecessary overhead from assembler-generated ``longcall'' sequences of 6203@code{L32R}/@code{CALLX@var{n}} when the target functions are within 6204range of direct @code{CALL@var{n}} instructions. 6205 6206For each of these cases where an indirect call sequence can be optimized 6207to a direct call, the linker will change the @code{CALLX@var{n}} 6208instruction to a @code{CALL@var{n}} instruction, remove the @code{L32R} 6209instruction, and remove the literal referenced by the @code{L32R} 6210instruction if it is not used for anything else. Removing the 6211@code{L32R} instruction always reduces code size but can potentially 6212hurt performance by changing the alignment of subsequent branch targets. 6213By default, the linker will always preserve alignments, either by 6214switching some instructions between 24-bit encodings and the equivalent 6215density instructions or by inserting a no-op in place of the @code{L32R} 6216instruction that was removed. If code size is more important than 6217performance, the @option{--size-opt} option can be used to prevent the 6218linker from widening density instructions or inserting no-ops, except in 6219a few cases where no-ops are required for correctness. 6220 6221The following Xtensa-specific command-line options can be used to 6222control the linker: 6223 6224@cindex Xtensa options 6225@table @option 6226@kindex --no-relax 6227@item --no-relax 6228Since the Xtensa version of @code{ld} enables the @option{--relax} option 6229by default, the @option{--no-relax} option is provided to disable 6230relaxation. 6231 6232@item --size-opt 6233When optimizing indirect calls to direct calls, optimize for code size 6234more than performance. With this option, the linker will not insert 6235no-ops or widen density instructions to preserve branch target 6236alignment. There may still be some cases where no-ops are required to 6237preserve the correctness of the code. 6238@end table 6239 6240@ifclear GENERIC 6241@lowersections 6242@end ifclear 6243@end ifset 6244 6245@ifclear SingleFormat 6246@node BFD 6247@chapter BFD 6248 6249@cindex back end 6250@cindex object file management 6251@cindex object formats available 6252@kindex objdump -i 6253The linker accesses object and archive files using the BFD libraries. 6254These libraries allow the linker to use the same routines to operate on 6255object files whatever the object file format. A different object file 6256format can be supported simply by creating a new BFD back end and adding 6257it to the library. To conserve runtime memory, however, the linker and 6258associated tools are usually configured to support only a subset of the 6259object file formats available. You can use @code{objdump -i} 6260(@pxref{objdump,,objdump,binutils.info,The GNU Binary Utilities}) to 6261list all the formats available for your configuration. 6262 6263@cindex BFD requirements 6264@cindex requirements for BFD 6265As with most implementations, BFD is a compromise between 6266several conflicting requirements. The major factor influencing 6267BFD design was efficiency: any time used converting between 6268formats is time which would not have been spent had BFD not 6269been involved. This is partly offset by abstraction payback; since 6270BFD simplifies applications and back ends, more time and care 6271may be spent optimizing algorithms for a greater speed. 6272 6273One minor artifact of the BFD solution which you should bear in 6274mind is the potential for information loss. There are two places where 6275useful information can be lost using the BFD mechanism: during 6276conversion and during output. @xref{BFD information loss}. 6277 6278@menu 6279* BFD outline:: How it works: an outline of BFD 6280@end menu 6281 6282@node BFD outline 6283@section How It Works: An Outline of BFD 6284@cindex opening object files 6285@include bfdsumm.texi 6286@end ifclear 6287 6288@node Reporting Bugs 6289@chapter Reporting Bugs 6290@cindex bugs in @command{ld} 6291@cindex reporting bugs in @command{ld} 6292 6293Your bug reports play an essential role in making @command{ld} reliable. 6294 6295Reporting a bug may help you by bringing a solution to your problem, or 6296it may not. But in any case the principal function of a bug report is 6297to help the entire community by making the next version of @command{ld} 6298work better. Bug reports are your contribution to the maintenance of 6299@command{ld}. 6300 6301In order for a bug report to serve its purpose, you must include the 6302information that enables us to fix the bug. 6303 6304@menu 6305* Bug Criteria:: Have you found a bug? 6306* Bug Reporting:: How to report bugs 6307@end menu 6308 6309@node Bug Criteria 6310@section Have You Found a Bug? 6311@cindex bug criteria 6312 6313If you are not sure whether you have found a bug, here are some guidelines: 6314 6315@itemize @bullet 6316@cindex fatal signal 6317@cindex linker crash 6318@cindex crash of linker 6319@item 6320If the linker gets a fatal signal, for any input whatever, that is a 6321@command{ld} bug. Reliable linkers never crash. 6322 6323@cindex error on valid input 6324@item 6325If @command{ld} produces an error message for valid input, that is a bug. 6326 6327@cindex invalid input 6328@item 6329If @command{ld} does not produce an error message for invalid input, that 6330may be a bug. In the general case, the linker can not verify that 6331object files are correct. 6332 6333@item 6334If you are an experienced user of linkers, your suggestions for 6335improvement of @command{ld} are welcome in any case. 6336@end itemize 6337 6338@node Bug Reporting 6339@section How to Report Bugs 6340@cindex bug reports 6341@cindex @command{ld} bugs, reporting 6342 6343A number of companies and individuals offer support for @sc{gnu} 6344products. If you obtained @command{ld} from a support organization, we 6345recommend you contact that organization first. 6346 6347You can find contact information for many support companies and 6348individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs 6349distribution. 6350 6351Otherwise, send bug reports for @command{ld} to 6352@samp{bug-binutils@@gnu.org}. 6353 6354The fundamental principle of reporting bugs usefully is this: 6355@strong{report all the facts}. If you are not sure whether to state a 6356fact or leave it out, state it! 6357 6358Often people omit facts because they think they know what causes the 6359problem and assume that some details do not matter. Thus, you might 6360assume that the name of a symbol you use in an example does not 6361matter. Well, probably it does not, but one cannot be sure. Perhaps 6362the bug is a stray memory reference which happens to fetch from the 6363location where that name is stored in memory; perhaps, if the name 6364were different, the contents of that location would fool the linker 6365into doing the right thing despite the bug. Play it safe and give a 6366specific, complete example. That is the easiest thing for you to do, 6367and the most helpful. 6368 6369Keep in mind that the purpose of a bug report is to enable us to fix 6370the bug if it is new to us. Therefore, always write your bug reports 6371on the assumption that the bug has not been reported previously. 6372 6373Sometimes people give a few sketchy facts and ask, ``Does this ring a 6374bell?'' This cannot help us fix a bug, so it is basically useless. We 6375respond by asking for enough details to enable us to investigate. 6376You might as well expedite matters by sending them to begin with. 6377 6378To enable us to fix the bug, you should include all these things: 6379 6380@itemize @bullet 6381@item 6382The version of @command{ld}. @command{ld} announces it if you start it with 6383the @samp{--version} argument. 6384 6385Without this, we will not know whether there is any point in looking for 6386the bug in the current version of @command{ld}. 6387 6388@item 6389Any patches you may have applied to the @command{ld} source, including any 6390patches made to the @code{BFD} library. 6391 6392@item 6393The type of machine you are using, and the operating system name and 6394version number. 6395 6396@item 6397What compiler (and its version) was used to compile @command{ld}---e.g. 6398``@code{gcc-2.7}''. 6399 6400@item 6401The command arguments you gave the linker to link your example and 6402observe the bug. To guarantee you will not omit something important, 6403list them all. A copy of the Makefile (or the output from make) is 6404sufficient. 6405 6406If we were to try to guess the arguments, we would probably guess wrong 6407and then we might not encounter the bug. 6408 6409@item 6410A complete input file, or set of input files, that will reproduce the 6411bug. It is generally most helpful to send the actual object files 6412provided that they are reasonably small. Say no more than 10K. For 6413bigger files you can either make them available by FTP or HTTP or else 6414state that you are willing to send the object file(s) to whomever 6415requests them. (Note - your email will be going to a mailing list, so 6416we do not want to clog it up with large attachments). But small 6417attachments are best. 6418 6419If the source files were assembled using @code{gas} or compiled using 6420@code{gcc}, then it may be OK to send the source files rather than the 6421object files. In this case, be sure to say exactly what version of 6422@code{gas} or @code{gcc} was used to produce the object files. Also say 6423how @code{gas} or @code{gcc} were configured. 6424 6425@item 6426A description of what behavior you observe that you believe is 6427incorrect. For example, ``It gets a fatal signal.'' 6428 6429Of course, if the bug is that @command{ld} gets a fatal signal, then we 6430will certainly notice it. But if the bug is incorrect output, we might 6431not notice unless it is glaringly wrong. You might as well not give us 6432a chance to make a mistake. 6433 6434Even if the problem you experience is a fatal signal, you should still 6435say so explicitly. Suppose something strange is going on, such as, your 6436copy of @command{ld} is out of synch, or you have encountered a bug in the 6437C library on your system. (This has happened!) Your copy might crash 6438and ours would not. If you told us to expect a crash, then when ours 6439fails to crash, we would know that the bug was not happening for us. If 6440you had not told us to expect a crash, then we would not be able to draw 6441any conclusion from our observations. 6442 6443@item 6444If you wish to suggest changes to the @command{ld} source, send us context 6445diffs, as generated by @code{diff} with the @samp{-u}, @samp{-c}, or 6446@samp{-p} option. Always send diffs from the old file to the new file. 6447If you even discuss something in the @command{ld} source, refer to it by 6448context, not by line number. 6449 6450The line numbers in our development sources will not match those in your 6451sources. Your line numbers would convey no useful information to us. 6452@end itemize 6453 6454Here are some things that are not necessary: 6455 6456@itemize @bullet 6457@item 6458A description of the envelope of the bug. 6459 6460Often people who encounter a bug spend a lot of time investigating 6461which changes to the input file will make the bug go away and which 6462changes will not affect it. 6463 6464This is often time consuming and not very useful, because the way we 6465will find the bug is by running a single example under the debugger 6466with breakpoints, not by pure deduction from a series of examples. 6467We recommend that you save your time for something else. 6468 6469Of course, if you can find a simpler example to report @emph{instead} 6470of the original one, that is a convenience for us. Errors in the 6471output will be easier to spot, running under the debugger will take 6472less time, and so on. 6473 6474However, simplification is not vital; if you do not want to do this, 6475report the bug anyway and send us the entire test case you used. 6476 6477@item 6478A patch for the bug. 6479 6480A patch for the bug does help us if it is a good one. But do not omit 6481the necessary information, such as the test case, on the assumption that 6482a patch is all we need. We might see problems with your patch and decide 6483to fix the problem another way, or we might not understand it at all. 6484 6485Sometimes with a program as complicated as @command{ld} it is very hard to 6486construct an example that will make the program follow a certain path 6487through the code. If you do not send us the example, we will not be 6488able to construct one, so we will not be able to verify that the bug is 6489fixed. 6490 6491And if we cannot understand what bug you are trying to fix, or why your 6492patch should be an improvement, we will not install it. A test case will 6493help us to understand. 6494 6495@item 6496A guess about what the bug is or what it depends on. 6497 6498Such guesses are usually wrong. Even we cannot guess right about such 6499things without first using the debugger to find the facts. 6500@end itemize 6501 6502@node MRI 6503@appendix MRI Compatible Script Files 6504@cindex MRI compatibility 6505To aid users making the transition to @sc{gnu} @command{ld} from the MRI 6506linker, @command{ld} can use MRI compatible linker scripts as an 6507alternative to the more general-purpose linker scripting language 6508described in @ref{Scripts}. MRI compatible linker scripts have a much 6509simpler command set than the scripting language otherwise used with 6510@command{ld}. @sc{gnu} @command{ld} supports the most commonly used MRI 6511linker commands; these commands are described here. 6512 6513In general, MRI scripts aren't of much use with the @code{a.out} object 6514file format, since it only has three sections and MRI scripts lack some 6515features to make use of them. 6516 6517You can specify a file containing an MRI-compatible script using the 6518@samp{-c} command-line option. 6519 6520Each command in an MRI-compatible script occupies its own line; each 6521command line starts with the keyword that identifies the command (though 6522blank lines are also allowed for punctuation). If a line of an 6523MRI-compatible script begins with an unrecognized keyword, @command{ld} 6524issues a warning message, but continues processing the script. 6525 6526Lines beginning with @samp{*} are comments. 6527 6528You can write these commands using all upper-case letters, or all 6529lower case; for example, @samp{chip} is the same as @samp{CHIP}. 6530The following list shows only the upper-case form of each command. 6531 6532@table @code 6533@cindex @code{ABSOLUTE} (MRI) 6534@item ABSOLUTE @var{secname} 6535@itemx ABSOLUTE @var{secname}, @var{secname}, @dots{} @var{secname} 6536Normally, @command{ld} includes in the output file all sections from all 6537the input files. However, in an MRI-compatible script, you can use the 6538@code{ABSOLUTE} command to restrict the sections that will be present in 6539your output program. If the @code{ABSOLUTE} command is used at all in a 6540script, then only the sections named explicitly in @code{ABSOLUTE} 6541commands will appear in the linker output. You can still use other 6542input sections (whatever you select on the command line, or using 6543@code{LOAD}) to resolve addresses in the output file. 6544 6545@cindex @code{ALIAS} (MRI) 6546@item ALIAS @var{out-secname}, @var{in-secname} 6547Use this command to place the data from input section @var{in-secname} 6548in a section called @var{out-secname} in the linker output file. 6549 6550@var{in-secname} may be an integer. 6551 6552@cindex @code{ALIGN} (MRI) 6553@item ALIGN @var{secname} = @var{expression} 6554Align the section called @var{secname} to @var{expression}. The 6555@var{expression} should be a power of two. 6556 6557@cindex @code{BASE} (MRI) 6558@item BASE @var{expression} 6559Use the value of @var{expression} as the lowest address (other than 6560absolute addresses) in the output file. 6561 6562@cindex @code{CHIP} (MRI) 6563@item CHIP @var{expression} 6564@itemx CHIP @var{expression}, @var{expression} 6565This command does nothing; it is accepted only for compatibility. 6566 6567@cindex @code{END} (MRI) 6568@item END 6569This command does nothing whatever; it's only accepted for compatibility. 6570 6571@cindex @code{FORMAT} (MRI) 6572@item FORMAT @var{output-format} 6573Similar to the @code{OUTPUT_FORMAT} command in the more general linker 6574language, but restricted to one of these output formats: 6575 6576@enumerate 6577@item 6578S-records, if @var{output-format} is @samp{S} 6579 6580@item 6581IEEE, if @var{output-format} is @samp{IEEE} 6582 6583@item 6584COFF (the @samp{coff-m68k} variant in BFD), if @var{output-format} is 6585@samp{COFF} 6586@end enumerate 6587 6588@cindex @code{LIST} (MRI) 6589@item LIST @var{anything}@dots{} 6590Print (to the standard output file) a link map, as produced by the 6591@command{ld} command-line option @samp{-M}. 6592 6593The keyword @code{LIST} may be followed by anything on the 6594same line, with no change in its effect. 6595 6596@cindex @code{LOAD} (MRI) 6597@item LOAD @var{filename} 6598@itemx LOAD @var{filename}, @var{filename}, @dots{} @var{filename} 6599Include one or more object file @var{filename} in the link; this has the 6600same effect as specifying @var{filename} directly on the @command{ld} 6601command line. 6602 6603@cindex @code{NAME} (MRI) 6604@item NAME @var{output-name} 6605@var{output-name} is the name for the program produced by @command{ld}; the 6606MRI-compatible command @code{NAME} is equivalent to the command-line 6607option @samp{-o} or the general script language command @code{OUTPUT}. 6608 6609@cindex @code{ORDER} (MRI) 6610@item ORDER @var{secname}, @var{secname}, @dots{} @var{secname} 6611@itemx ORDER @var{secname} @var{secname} @var{secname} 6612Normally, @command{ld} orders the sections in its output file in the 6613order in which they first appear in the input files. In an MRI-compatible 6614script, you can override this ordering with the @code{ORDER} command. The 6615sections you list with @code{ORDER} will appear first in your output 6616file, in the order specified. 6617 6618@cindex @code{PUBLIC} (MRI) 6619@item PUBLIC @var{name}=@var{expression} 6620@itemx PUBLIC @var{name},@var{expression} 6621@itemx PUBLIC @var{name} @var{expression} 6622Supply a value (@var{expression}) for external symbol 6623@var{name} used in the linker input files. 6624 6625@cindex @code{SECT} (MRI) 6626@item SECT @var{secname}, @var{expression} 6627@itemx SECT @var{secname}=@var{expression} 6628@itemx SECT @var{secname} @var{expression} 6629You can use any of these three forms of the @code{SECT} command to 6630specify the start address (@var{expression}) for section @var{secname}. 6631If you have more than one @code{SECT} statement for the same 6632@var{secname}, only the @emph{first} sets the start address. 6633@end table 6634 6635@include fdl.texi 6636 6637@node Index 6638@unnumbered Index 6639 6640@printindex cp 6641 6642@tex 6643% I think something like @colophon should be in texinfo. In the 6644% meantime: 6645\long\def\colophon{\hbox to0pt{}\vfill 6646\centerline{The body of this manual is set in} 6647\centerline{\fontname\tenrm,} 6648\centerline{with headings in {\bf\fontname\tenbf}} 6649\centerline{and examples in {\tt\fontname\tentt}.} 6650\centerline{{\it\fontname\tenit\/} and} 6651\centerline{{\sl\fontname\tensl\/}} 6652\centerline{are used for emphasis.}\vfill} 6653\page\colophon 6654% Blame: doc@cygnus.com, 28mar91. 6655@end tex 6656 6657 6658@contents 6659@bye 6660