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