head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC5:1.1.1.11 netbsd-11-0-RC4:1.1.1.11 netbsd-11-0-RC3:1.1.1.11 netbsd-11-0-RC2:1.1.1.11 binutils-2-46:1.1.1.13 netbsd-11-0-RC1:1.1.1.11 binutils-2-45:1.1.1.12 perseant-exfatfs-base-20250801:1.1.1.11 netbsd-11:1.1.1.11.0.2 netbsd-11-base:1.1.1.11 netbsd-10-1-RELEASE:1.1.1.9 perseant-exfatfs-base-20240630:1.1.1.11 binutils-2-42:1.1.1.11 perseant-exfatfs:1.1.1.10.0.2 perseant-exfatfs-base:1.1.1.10 netbsd-8-3-RELEASE:1.1.1.6 netbsd-9-4-RELEASE:1.1.1.8 netbsd-10-0-RELEASE:1.1.1.9 netbsd-10-0-RC6:1.1.1.9 netbsd-10-0-RC5:1.1.1.9 netbsd-10-0-RC4:1.1.1.9 netbsd-10-0-RC3:1.1.1.9 netbsd-10-0-RC2:1.1.1.9 netbsd-10-0-RC1:1.1.1.9 binutils-2-39:1.1.1.10 netbsd-10:1.1.1.9.0.6 netbsd-10-base:1.1.1.9 netbsd-9-3-RELEASE:1.1.1.8 cjep_sun2x-base1:1.1.1.9 cjep_sun2x:1.1.1.9.0.4 cjep_sun2x-base:1.1.1.9 cjep_staticlib_x-base1:1.1.1.9 netbsd-9-2-RELEASE:1.1.1.8 cjep_staticlib_x:1.1.1.9.0.2 cjep_staticlib_x-base:1.1.1.9 netbsd-9-1-RELEASE:1.1.1.8 phil-wifi-20200421:1.1.1.9 phil-wifi-20200411:1.1.1.9 is-mlppp:1.1.1.8.0.4 is-mlppp-base:1.1.1.8 phil-wifi-20200406:1.1.1.9 binutils-2-34:1.1.1.9 netbsd-8-2-RELEASE:1.1.1.6 netbsd-9-0-RELEASE:1.1.1.8 netbsd-9-0-RC2:1.1.1.8 netbsd-9-0-RC1:1.1.1.8 phil-wifi-20191119:1.1.1.8 netbsd-9:1.1.1.8.0.2 netbsd-9-base:1.1.1.8 phil-wifi-20190609:1.1.1.8 netbsd-8-1-RELEASE:1.1.1.6 netbsd-8-1-RC1:1.1.1.6 pgoyette-compat-merge-20190127:1.1.1.6.12.2 pgoyette-compat-20190127:1.1.1.8 pgoyette-compat-20190118:1.1.1.8 pgoyette-compat-1226:1.1.1.8 pgoyette-compat-1126:1.1.1.8 binutils-2-31-1:1.1.1.8 pgoyette-compat-1020:1.1.1.7 pgoyette-compat-0930:1.1.1.7 pgoyette-compat-0906:1.1.1.7 netbsd-7-2-RELEASE:1.1.1.3 pgoyette-compat-0728:1.1.1.7 netbsd-8-0-RELEASE:1.1.1.6 phil-wifi:1.1.1.7.0.2 phil-wifi-base:1.1.1.7 pgoyette-compat-0625:1.1.1.7 netbsd-8-0-RC2:1.1.1.6 pgoyette-compat-0521:1.1.1.7 pgoyette-compat-0502:1.1.1.7 pgoyette-compat-0422:1.1.1.7 netbsd-8-0-RC1:1.1.1.6 pgoyette-compat-0415:1.1.1.7 binutils-2-30:1.1.1.7 pgoyette-compat-0407:1.1.1.6 pgoyette-compat-0330:1.1.1.6 pgoyette-compat-0322:1.1.1.6 pgoyette-compat-0315:1.1.1.6 netbsd-7-1-2-RELEASE:1.1.1.3 pgoyette-compat:1.1.1.6.0.12 pgoyette-compat-base:1.1.1.6 netbsd-7-1-1-RELEASE:1.1.1.3 matt-nb8-mediatek:1.1.1.6.0.10 matt-nb8-mediatek-base:1.1.1.6 perseant-stdc-iso10646:1.1.1.6.0.8 perseant-stdc-iso10646-base:1.1.1.6 netbsd-8:1.1.1.6.0.6 netbsd-8-base:1.1.1.6 prg-localcount2-base3:1.1.1.6 prg-localcount2-base2:1.1.1.6 prg-localcount2-base1:1.1.1.6 prg-localcount2:1.1.1.6.0.4 prg-localcount2-base:1.1.1.6 pgoyette-localcount-20170426:1.1.1.6 bouyer-socketcan-base1:1.1.1.6 pgoyette-localcount-20170320:1.1.1.6 netbsd-7-1:1.1.1.3.0.10 netbsd-7-1-RELEASE:1.1.1.3 netbsd-7-1-RC2:1.1.1.3 netbsd-7-nhusb-base-20170116:1.1.1.3 bouyer-socketcan:1.1.1.6.0.2 bouyer-socketcan-base:1.1.1.6 pgoyette-localcount-20170107:1.1.1.6 netbsd-7-1-RC1:1.1.1.3 pgoyette-localcount-20161104:1.1.1.6 binutils-2-27:1.1.1.6 netbsd-7-0-2-RELEASE:1.1.1.3 localcount-20160914:1.1.1.5 netbsd-7-nhusb:1.1.1.3.0.8 netbsd-7-nhusb-base:1.1.1.3 pgoyette-localcount-20160806:1.1.1.5 binutils-2-26-1:1.1.1.5 pgoyette-localcount-20160726:1.1.1.4 pgoyette-localcount:1.1.1.4.0.2 pgoyette-localcount-base:1.1.1.4 netbsd-7-0-1-RELEASE:1.1.1.3 binutils-2-26:1.1.1.4 netbsd-7-0:1.1.1.3.0.6 netbsd-7-0-RELEASE:1.1.1.3 netbsd-7-0-RC3:1.1.1.3 netbsd-7-0-RC2:1.1.1.3 netbsd-7-0-RC1:1.1.1.3 netbsd-6-0-6-RELEASE:1.1.1.2 netbsd-6-1-5-RELEASE:1.1.1.2 netbsd-7:1.1.1.3.0.4 netbsd-7-base:1.1.1.3 yamt-pagecache-base9:1.1.1.3 yamt-pagecache-tag8:1.1.1.2 netbsd-6-1-4-RELEASE:1.1.1.2 netbsd-6-0-5-RELEASE:1.1.1.2 tls-earlyentropy:1.1.1.3.0.2 tls-earlyentropy-base:1.1.1.3 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.3 riastradh-drm2-base3:1.1.1.3 netbsd-6-1-3-RELEASE:1.1.1.2 netbsd-6-0-4-RELEASE:1.1.1.2 binutils-2-23-2:1.1.1.3 netbsd-6-1-2-RELEASE:1.1.1.2 netbsd-6-0-3-RELEASE:1.1.1.2 netbsd-6-1-1-RELEASE:1.1.1.2 riastradh-drm2-base2:1.1.1.2 riastradh-drm2-base1:1.1.1.2 riastradh-drm2:1.1.1.2.0.12 riastradh-drm2-base:1.1.1.2 netbsd-6-1:1.1.1.2.0.16 netbsd-6-0-2-RELEASE:1.1.1.2 netbsd-6-1-RELEASE:1.1.1.2 netbsd-6-1-RC4:1.1.1.2 netbsd-6-1-RC3:1.1.1.2 agc-symver:1.1.1.2.0.14 agc-symver-base:1.1.1.2 netbsd-6-1-RC2:1.1.1.2 netbsd-6-1-RC1:1.1.1.2 yamt-pagecache-base8:1.1.1.2 netbsd-6-0-1-RELEASE:1.1.1.2 yamt-pagecache-base7:1.1.1.2 matt-nb6-plus-nbase:1.1.1.2 yamt-pagecache-base6:1.1.1.2 netbsd-6-0:1.1.1.2.0.10 netbsd-6-0-RELEASE:1.1.1.2 netbsd-6-0-RC2:1.1.1.2 tls-maxphys:1.1.1.2.0.8 tls-maxphys-base:1.1.1.3 matt-nb6-plus:1.1.1.2.0.6 matt-nb6-plus-base:1.1.1.2 netbsd-6-0-RC1:1.1.1.2 yamt-pagecache-base5:1.1.1.2 yamt-pagecache-base4:1.1.1.2 netbsd-6:1.1.1.2.0.4 netbsd-6-base:1.1.1.2 yamt-pagecache-base3:1.1.1.2 yamt-pagecache-base2:1.1.1.2 yamt-pagecache:1.1.1.2.0.2 yamt-pagecache-base:1.1.1.2 binutils-2-21-1a:1.1.1.2 cherry-xenmp:1.1.1.1.0.4 cherry-xenmp-base:1.1.1.1 bouyer-quota2-nbase:1.1.1.1 bouyer-quota2:1.1.1.1.0.2 bouyer-quota2-base:1.1.1.1 matt-mips64-premerge-20101231:1.1.1.1 binutils-2-19-1-20090402:1.1.1.1 matt-premerge-20091211:1.1.1.1 binutils-2-19-1:1.1.1.1 FSF:1.1.1; locks; strict; comment @# @; 1.1 date 2009.08.18.10.16.42; author skrll; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2009.08.18.10.16.42; author skrll; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 2011.09.24.22.19.21; author christos; state Exp; branches 1.1.1.2.2.1 1.1.1.2.8.1; next 1.1.1.3; 1.1.1.3 date 2013.09.29.13.45.34; author christos; state Exp; branches; next 1.1.1.4; commitid TyuuzSx830x3Yk7x; 1.1.1.4 date 2016.01.29.12.45.12; author christos; state Exp; branches 1.1.1.4.2.1; next 1.1.1.5; commitid B0qHLT45wK2yhPSy; 1.1.1.5 date 2016.07.28.12.19.47; author christos; state Exp; branches; next 1.1.1.6; commitid RBe5VZNgBXTaj5gz; 1.1.1.6 date 2016.10.26.17.30.18; author christos; state Exp; branches 1.1.1.6.12.1; next 1.1.1.7; commitid su5ccdRz6qdh9Grz; 1.1.1.7 date 2018.04.14.22.17.19; author christos; state Exp; branches 1.1.1.7.2.1; next 1.1.1.8; commitid ShNerhdmcUZyxsyA; 1.1.1.8 date 2018.11.06.21.19.02; author christos; state Exp; branches; next 1.1.1.9; commitid 6Ndf2Zuj4yZRAVYA; 1.1.1.9 date 2020.04.03.23.40.02; author christos; state Exp; branches; next 1.1.1.10; commitid qJOWzDWs5P5cQZ2C; 1.1.1.10 date 2022.12.23.19.01.12; author christos; state Exp; branches 1.1.1.10.2.1; next 1.1.1.11; commitid AaAP7ITTx5JnmI6E; 1.1.1.11 date 2024.06.30.16.01.09; author christos; state Exp; branches; next 1.1.1.12; commitid Eqxmo2uubpM9w1gF; 1.1.1.12 date 2025.08.25.14.43.25; author christos; state Exp; branches; next 1.1.1.13; commitid aUBKFf4jmEzPv78G; 1.1.1.13 date 2026.02.11.19.50.27; author christos; state Exp; branches; next ; commitid vybCSY05tblOMZtG; 1.1.1.2.2.1 date 2014.05.22.15.54.30; author yamt; state Exp; branches; next ; commitid LcfsdHQ4HK08ayBx; 1.1.1.2.8.1 date 2014.08.19.23.52.44; author tls; state Exp; branches; next ; commitid jTnpym9Qu0o4R1Nx; 1.1.1.4.2.1 date 2016.08.06.00.18.45; author pgoyette; state Exp; branches; next 1.1.1.4.2.2; commitid da8LmcQp9HeG2bhz; 1.1.1.4.2.2 date 2016.11.04.14.43.21; author pgoyette; state Exp; branches; next ; commitid 2m1JRwYmpwPkOOsz; 1.1.1.6.12.1 date 2018.04.16.01.58.31; author pgoyette; state Exp; branches; next 1.1.1.6.12.2; commitid qk3nktk0szmTIByA; 1.1.1.6.12.2 date 2018.11.26.01.50.19; author pgoyette; state Exp; branches; next ; commitid Zj4q5SspGdKXto1B; 1.1.1.7.2.1 date 2019.06.10.21.52.22; author christos; state Exp; branches; next 1.1.1.7.2.2; commitid jtc8rnCzWiEEHGqB; 1.1.1.7.2.2 date 2020.04.08.14.04.46; author martin; state Exp; branches; next ; commitid Qli2aW9E74UFuA3C; 1.1.1.10.2.1 date 2024.07.01.01.00.18; author perseant; state Exp; branches; next ; commitid NkoYLLCQWWw9v4gF; desc @@ 1.1 log @Initial revision @ text @This is ld.info, produced by makeinfo version 4.8 from ld.texinfo. START-INFO-DIR-ENTRY * Ld: (ld). The GNU linker. END-INFO-DIR-ENTRY This file documents the GNU linker LD (GNU Binutils) version 2.18.90. Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".  File: ld.info, Node: Top, Next: Overview, Up: (dir) LD ** This file documents the GNU linker ld (GNU Binutils) version 2.18.90. This document is distributed under the terms of the GNU Free Documentation License. A copy of the license is included in the section entitled "GNU Free Documentation License". * Menu: * Overview:: Overview * Invocation:: Invocation * Scripts:: Linker Scripts * Machine Dependent:: Machine Dependent Features * BFD:: BFD * Reporting Bugs:: Reporting Bugs * MRI:: MRI Compatible Script Files * GNU Free Documentation License:: GNU Free Documentation License * LD Index:: LD Index  File: ld.info, Node: Overview, Next: Invocation, Prev: Top, Up: Top 1 Overview ********** `ld' combines a number of object and archive files, relocates their data and ties up symbol references. Usually the last step in compiling a program is to run `ld'. `ld' accepts Linker Command Language files written in a superset of AT&T's Link Editor Command Language syntax, to provide explicit and total control over the linking process. This version of `ld' uses the general purpose BFD libraries to operate on object files. This allows `ld' to read, combine, and write object files in many different formats--for example, COFF or `a.out'. Different formats may be linked together to produce any available kind of object file. *Note BFD::, for more information. Aside from its flexibility, the GNU linker is more helpful than other linkers in providing diagnostic information. Many linkers abandon execution immediately upon encountering an error; whenever possible, `ld' continues executing, allowing you to identify other errors (or, in some cases, to get an output file in spite of the error).  File: ld.info, Node: Invocation, Next: Scripts, Prev: Overview, Up: Top 2 Invocation ************ The GNU linker `ld' is meant to cover a broad range of situations, and to be as compatible as possible with other linkers. As a result, you have many choices to control its behavior. * Menu: * Options:: Command Line Options * Environment:: Environment Variables  File: ld.info, Node: Options, Next: Environment, Up: Invocation 2.1 Command Line Options ======================== The linker supports a plethora of command-line options, but in actual practice few of them are used in any particular context. For instance, a frequent use of `ld' is to link standard Unix object files on a standard, supported Unix system. On such a system, to link a file `hello.o': ld -o OUTPUT /lib/crt0.o hello.o -lc This tells `ld' to produce a file called OUTPUT as the result of linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a', which will come from the standard search directories. (See the discussion of the `-l' option below.) Some of the command-line options to `ld' may be specified at any point in the command line. However, options which refer to files, such as `-l' or `-T', cause the file to be read at the point at which the option appears in the command line, relative to the object files and other file options. Repeating non-file options with a different argument will either have no further effect, or override prior occurrences (those further to the left on the command line) of that option. Options which may be meaningfully specified more than once are noted in the descriptions below. Non-option arguments are object files or archives which are to be linked together. They may follow, precede, or be mixed in with command-line options, except that an object file argument may not be placed between an option and its argument. Usually the linker is invoked with at least one object file, but you can specify other forms of binary input files using `-l', `-R', and the script command language. If _no_ binary input files at all are specified, the linker does not produce any output, and issues the message `No input files'. If the linker cannot recognize the format of an object file, it will assume that it is a linker script. A script specified in this way augments the main linker script used for the link (either the default linker script or the one specified by using `-T'). This feature permits the linker to link against a file which appears to be an object or an archive, but actually merely defines some symbol values, or uses `INPUT' or `GROUP' to load other objects. Specifying a script in this way merely augments the main linker script, with the extra commands placed after the main script; use the `-T' option to replace the default linker script entirely, but note the effect of the `INSERT' command. *Note Scripts::. For options whose names are a single letter, option arguments must either follow the option letter without intervening whitespace, or be given as separate arguments immediately following the option that requires them. For options whose names are multiple letters, either one dash or two can precede the option name; for example, `-trace-symbol' and `--trace-symbol' are equivalent. Note--there is one exception to this rule. Multiple letter options that start with a lower case 'o' can only be preceded by two dashes. This is to reduce confusion with the `-o' option. So for example `-omagic' sets the output file name to `magic' whereas `--omagic' sets the NMAGIC flag on the output. Arguments to multiple-letter options must either be separated from the option name by an equals sign, or be given as separate arguments immediately following the option that requires them. For example, `--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique abbreviations of the names of multiple-letter options are accepted. Note--if the linker is being invoked indirectly, via a compiler driver (e.g. `gcc') then all the linker command line options should be prefixed by `-Wl,' (or whatever is appropriate for the particular compiler driver) like this: gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup This is important, because otherwise the compiler driver program may silently drop the linker options, resulting in a bad link. Here is a table of the generic command line switches accepted by the GNU linker: `@@FILE' Read command-line options from FILE. The options read are inserted in place of the original @@FILE option. If FILE does not exist, or cannot be read, then the option will be treated literally, and not removed. Options in FILE are separated by whitespace. A whitespace character may be included in an option by surrounding the entire option in either single or double quotes. Any character (including a backslash) may be included by prefixing the character to be included with a backslash. The FILE may itself contain additional @@FILE options; any such options will be processed recursively. `-aKEYWORD' This option is supported for HP/UX compatibility. The KEYWORD argument must be one of the strings `archive', `shared', or `default'. `-aarchive' is functionally equivalent to `-Bstatic', and the other two keywords are functionally equivalent to `-Bdynamic'. This option may be used any number of times. `-AARCHITECTURE' `--architecture=ARCHITECTURE' In the current release of `ld', this option is useful only for the Intel 960 family of architectures. In that `ld' configuration, the ARCHITECTURE argument identifies the particular architecture in the 960 family, enabling some safeguards and modifying the archive-library search path. *Note `ld' and the Intel 960 family: i960, for details. Future releases of `ld' may support similar functionality for other architecture families. `-b INPUT-FORMAT' `--format=INPUT-FORMAT' `ld' may be configured to support more than one kind of object file. If your `ld' is configured this way, you can use the `-b' option to specify the binary format for input object files that follow this option on the command line. Even when `ld' is configured to support alternative object formats, you don't usually need to specify this, as `ld' should be configured to expect as a default input format the most usual format on each machine. INPUT-FORMAT is a text string, the name of a particular format supported by the BFD libraries. (You can list the available binary formats with `objdump -i'.) *Note BFD::. You may want to use this option if you are linking files with an unusual binary format. You can also use `-b' to switch formats explicitly (when linking object files of different formats), by including `-b INPUT-FORMAT' before each group of object files in a particular format. The default format is taken from the environment variable `GNUTARGET'. *Note Environment::. You can also define the input format from a script, using the command `TARGET'; see *Note Format Commands::. `-c MRI-COMMANDFILE' `--mri-script=MRI-COMMANDFILE' For compatibility with linkers produced by MRI, `ld' accepts script files written in an alternate, restricted command language, described in *Note MRI Compatible Script Files: MRI. Introduce MRI script files with the option `-c'; use the `-T' option to run linker scripts written in the general-purpose `ld' scripting language. If MRI-CMDFILE does not exist, `ld' looks for it in the directories specified by any `-L' options. `-d' `-dc' `-dp' These three options are equivalent; multiple forms are supported for compatibility with other linkers. They assign space to common symbols even if a relocatable output file is specified (with `-r'). The script command `FORCE_COMMON_ALLOCATION' has the same effect. *Note Miscellaneous Commands::. `-e ENTRY' `--entry=ENTRY' Use ENTRY as the explicit symbol for beginning execution of your program, rather than the default entry point. If there is no symbol named ENTRY, the linker will try to parse ENTRY as a number, and use that as the entry address (the number will be interpreted in base 10; you may use a leading `0x' for base 16, or a leading `0' for base 8). *Note Entry Point::, for a discussion of defaults and other ways of specifying the entry point. `--exclude-libs LIB,LIB,...' Specifies a list of archive libraries from which symbols should not be automatically exported. The library names may be delimited by commas or colons. Specifying `--exclude-libs ALL' excludes symbols in all archive libraries from automatic export. This option is available only for the i386 PE targeted port of the linker and for ELF targeted ports. For i386 PE, symbols explicitly listed in a .def file are still exported, regardless of this option. For ELF targeted ports, symbols affected by this option will be treated as hidden. `-E' `--export-dynamic' When creating a dynamically linked executable, add all symbols to the dynamic symbol table. The dynamic symbol table is the set of symbols which are visible from dynamic objects at run time. If you do not use this option, the dynamic symbol table will normally contain only those symbols which are referenced by some dynamic object mentioned in the link. If you use `dlopen' to load a dynamic object which needs to refer back to the symbols defined by the program, rather than some other dynamic object, then you will probably need to use this option when linking the program itself. You can also use the dynamic list to control what symbols should be added to the dynamic symbol table if the output format supports it. See the description of `--dynamic-list'. `-EB' Link big-endian objects. This affects the default output format. `-EL' Link little-endian objects. This affects the default output format. `-f' `--auxiliary NAME' When creating an ELF shared object, set the internal DT_AUXILIARY field to the specified name. This tells the dynamic linker that the symbol table of the shared object should be used as an auxiliary filter on the symbol table of the shared object NAME. If you later link a program against this filter object, then, when you run the program, the dynamic linker will see the DT_AUXILIARY field. If the dynamic linker resolves any symbols from the filter object, it will first check whether there is a definition in the shared object NAME. If there is one, it will be used instead of the definition in the filter object. The shared object NAME need not exist. Thus the shared object NAME may be used to provide an alternative implementation of certain functions, perhaps for debugging or for machine specific performance. This option may be specified more than once. The DT_AUXILIARY entries will be created in the order in which they appear on the command line. `-F NAME' `--filter NAME' When creating an ELF shared object, set the internal DT_FILTER field to the specified name. This tells the dynamic linker that the symbol table of the shared object which is being created should be used as a filter on the symbol table of the shared object NAME. If you later link a program against this filter object, then, when you run the program, the dynamic linker will see the DT_FILTER field. The dynamic linker will resolve symbols according to the symbol table of the filter object as usual, but it will actually link to the definitions found in the shared object NAME. Thus the filter object can be used to select a subset of the symbols provided by the object NAME. Some older linkers used the `-F' option throughout a compilation toolchain for specifying object-file format for both input and output object files. The GNU linker uses other mechanisms for this purpose: the `-b', `--format', `--oformat' options, the `TARGET' command in linker scripts, and the `GNUTARGET' environment variable. The GNU linker will ignore the `-F' option when not creating an ELF shared object. `-fini NAME' When creating an ELF executable or shared object, call NAME when the executable or shared object is unloaded, by setting DT_FINI to the address of the function. By default, the linker uses `_fini' as the function to call. `-g' Ignored. Provided for compatibility with other tools. `-GVALUE' `--gpsize=VALUE' Set the maximum size of objects to be optimized using the GP register to SIZE. This is only meaningful for object file formats such as MIPS ECOFF which supports putting large and small objects into different sections. This is ignored for other object file formats. `-hNAME' `-soname=NAME' When creating an ELF shared object, set the internal DT_SONAME field to the specified name. When an executable is linked with a shared object which has a DT_SONAME field, then when the executable is run the dynamic linker will attempt to load the shared object specified by the DT_SONAME field rather than the using the file name given to the linker. `-i' Perform an incremental link (same as option `-r'). `-init NAME' When creating an ELF executable or shared object, call NAME when the executable or shared object is loaded, by setting DT_INIT to the address of the function. By default, the linker uses `_init' as the function to call. `-lNAMESPEC' `--library=NAMESPEC' Add the archive or object file specified by NAMESPEC to the list of files to link. This option may be used any number of times. If NAMESPEC is of the form `:FILENAME', `ld' will search the library path for a file called FILENAME, otherise it will search the library path for a file called `libNAMESPEC.a'. On systems which support shared libraries, `ld' may also search for files other than `libNAMESPEC.a'. Specifically, on ELF and SunOS systems, `ld' will search a directory for a library called `libNAMESPEC.so' before searching for one called `libNAMESPEC.a'. (By convention, a `.so' extension indicates a shared library.) Note that this behavior does not apply to `:FILENAME', which always specifies a file called FILENAME. The linker will search an archive only once, at the location where it is specified on the command line. If the archive defines a symbol which was undefined in some object which appeared before the archive on the command line, the linker will include the appropriate file(s) from the archive. However, an undefined symbol in an object appearing later on the command line will not cause the linker to search the archive again. See the `-(' option for a way to force the linker to search archives multiple times. You may list the same archive multiple times on the command line. This type of archive searching is standard for Unix linkers. However, if you are using `ld' on AIX, note that it is different from the behaviour of the AIX linker. `-LSEARCHDIR' `--library-path=SEARCHDIR' Add path SEARCHDIR to the list of paths that `ld' will search for archive libraries and `ld' control scripts. You may use this option any number of times. The directories are searched in the order in which they are specified on the command line. Directories specified on the command line are searched before the default directories. All `-L' options apply to all `-l' options, regardless of the order in which the options appear. If SEARCHDIR begins with `=', then the `=' will be replaced by the "sysroot prefix", a path specified when the linker is configured. The default set of paths searched (without being specified with `-L') depends on which emulation mode `ld' is using, and in some cases also on how it was configured. *Note Environment::. The paths can also be specified in a link script with the `SEARCH_DIR' command. Directories specified this way are searched at the point in which the linker script appears in the command line. `-mEMULATION' Emulate the EMULATION linker. You can list the available emulations with the `--verbose' or `-V' options. If the `-m' option is not used, the emulation is taken from the `LDEMULATION' environment variable, if that is defined. Otherwise, the default emulation depends upon how the linker was configured. `-M' `--print-map' Print a link map to the standard output. A link map provides information about the link, including the following: * Where object files are mapped into memory. * How common symbols are allocated. * All archive members included in the link, with a mention of the symbol which caused the archive member to be brought in. * The values assigned to symbols. Note - symbols whose values are computed by an expression which involves a reference to a previous value of the same symbol may not have correct result displayed in the link map. This is because the linker discards intermediate results and only retains the final value of an expression. Under such circumstances the linker will display the final value enclosed by square brackets. Thus for example a linker script containing: foo = 1 foo = foo * 4 foo = foo + 8 will produce the following output in the link map if the `-M' option is used: 0x00000001 foo = 0x1 [0x0000000c] foo = (foo * 0x4) [0x0000000c] foo = (foo + 0x8) See *Note Expressions:: for more information about expressions in linker scripts. `-n' `--nmagic' Turn off page alignment of sections, and mark the output as `NMAGIC' if possible. `-N' `--omagic' Set the text and data sections to be readable and writable. Also, do not page-align the data segment, and disable linking against shared libraries. If the output format supports Unix style magic numbers, mark the output as `OMAGIC'. Note: Although a writable text section is allowed for PE-COFF targets, it does not conform to the format specification published by Microsoft. `--no-omagic' This option negates most of the effects of the `-N' option. It sets the text section to be read-only, and forces the data segment to be page-aligned. Note - this option does not enable linking against shared libraries. Use `-Bdynamic' for this. `-o OUTPUT' `--output=OUTPUT' Use OUTPUT as the name for the program produced by `ld'; if this option is not specified, the name `a.out' is used by default. The script command `OUTPUT' can also specify the output file name. `-O LEVEL' If LEVEL is a numeric values greater than zero `ld' optimizes the output. This might take significantly longer and therefore probably should only be enabled for the final binary. At the moment this option only affects ELF shared library generation. Future releases of the linker may make more use of this option. Also currently there is no difference in the linker's behaviour for different non-zero values of this option. Again this may change with future releases. `-q' `--emit-relocs' Leave relocation sections and contents in fully linked executables. Post link analysis and optimization tools may need this information in order to perform correct modifications of executables. This results in larger executables. This option is currently only supported on ELF platforms. `--force-dynamic' Force the output file to have dynamic sections. This option is specific to VxWorks targets. `-r' `--relocatable' Generate relocatable output--i.e., generate an output file that can in turn serve as input to `ld'. This is often called "partial linking". As a side effect, in environments that support standard Unix magic numbers, this option also sets the output file's magic number to `OMAGIC'. If this option is not specified, an absolute file is produced. When linking C++ programs, this option _will not_ resolve references to constructors; to do that, use `-Ur'. When an input file does not have the same format as the output file, partial linking is only supported if that input file does not contain any relocations. Different output formats can have further restrictions; for example some `a.out'-based formats do not support partial linking with input files in other formats at all. This option does the same thing as `-i'. `-R FILENAME' `--just-symbols=FILENAME' Read symbol names and their addresses from FILENAME, but do not relocate it or include it in the output. This allows your output file to refer symbolically to absolute locations of memory defined in other programs. You may use this option more than once. For compatibility with other ELF linkers, if the `-R' option is followed by a directory name, rather than a file name, it is treated as the `-rpath' option. `-s' `--strip-all' Omit all symbol information from the output file. `-S' `--strip-debug' Omit debugger symbol information (but not all symbols) from the output file. `-t' `--trace' Print the names of the input files as `ld' processes them. `-T SCRIPTFILE' `--script=SCRIPTFILE' Use SCRIPTFILE as the linker script. This script replaces `ld''s default linker script (rather than adding to it), so COMMANDFILE must specify everything necessary to describe the output file. *Note Scripts::. If SCRIPTFILE does not exist in the current directory, `ld' looks for it in the directories specified by any preceding `-L' options. Multiple `-T' options accumulate. `-dT SCRIPTFILE' `--default-script=SCRIPTFILE' Use SCRIPTFILE as the default linker script. *Note Scripts::. This option is similar to the `--script' option except that processing of the script is delayed until after the rest of the command line has been processed. This allows options placed after the `--default-script' option on the command line to affect the behaviour of the linker script, which can be important when the linker command line cannot be directly controlled by the user. (eg because the command line is being constructed by another tool, such as `gcc'). `-u SYMBOL' `--undefined=SYMBOL' Force SYMBOL to be entered in the output file as an undefined symbol. Doing this may, for example, trigger linking of additional modules from standard libraries. `-u' may be repeated with different option arguments to enter additional undefined symbols. This option is equivalent to the `EXTERN' linker script command. `-Ur' For anything other than C++ programs, this option is equivalent to `-r': it generates relocatable output--i.e., an output file that can in turn serve as input to `ld'. When linking C++ programs, `-Ur' _does_ resolve references to constructors, unlike `-r'. It does not work to use `-Ur' on files that were themselves linked with `-Ur'; once the constructor table has been built, it cannot be added to. Use `-Ur' only for the last partial link, and `-r' for the others. `--unique[=SECTION]' Creates a separate output section for every input section matching SECTION, or if the optional wildcard SECTION argument is missing, for every orphan input section. An orphan section is one not specifically mentioned in a linker script. You may use this option multiple times on the command line; It prevents the normal merging of input sections with the same name, overriding output section assignments in a linker script. `-v' `--version' `-V' Display the version number for `ld'. The `-V' option also lists the supported emulations. `-x' `--discard-all' Delete all local symbols. `-X' `--discard-locals' Delete all temporary local symbols. (These symbols start with system-specific local label prefixes, typically `.L' for ELF systems or `L' for traditional a.out systems.) `-y SYMBOL' `--trace-symbol=SYMBOL' Print the name of each linked file in which SYMBOL appears. This option may be given any number of times. On many systems it is necessary to prepend an underscore. This option is useful when you have an undefined symbol in your link but don't know where the reference is coming from. `-Y PATH' Add PATH to the default library search path. This option exists for Solaris compatibility. `-z KEYWORD' The recognized keywords are: `combreloc' Combines multiple reloc sections and sorts them to make dynamic symbol lookup caching possible. `defs' Disallows undefined symbols in object files. Undefined symbols in shared libraries are still allowed. `execstack' Marks the object as requiring executable stack. `initfirst' This option is only meaningful when building a shared object. It marks the object so that its runtime initialization will occur before the runtime initialization of any other objects brought into the process at the same time. Similarly the runtime finalization of the object will occur after the runtime finalization of any other objects. `interpose' Marks the object that its symbol table interposes before all symbols but the primary executable. `lazy' When generating an executable or shared library, mark it to tell the dynamic linker to defer function call resolution to the point when the function is called (lazy binding), rather than at load time. Lazy binding is the default. `loadfltr' Marks the object that its filters be processed immediately at runtime. `muldefs' Allows multiple definitions. `nocombreloc' Disables multiple reloc sections combining. `nocopyreloc' Disables production of copy relocs. `nodefaultlib' Marks the object that the search for dependencies of this object will ignore any default library search paths. `nodelete' Marks the object shouldn't be unloaded at runtime. `nodlopen' Marks the object not available to `dlopen'. `nodump' Marks the object can not be dumped by `dldump'. `noexecstack' Marks the object as not requiring executable stack. `norelro' Don't create an ELF `PT_GNU_RELRO' segment header in the object. `now' When generating an executable or shared library, mark it to tell the dynamic linker to resolve all symbols when the program is started, or when the shared library is linked to using dlopen, instead of deferring function call resolution to the point when the function is first called. `origin' Marks the object may contain $ORIGIN. `relro' Create an ELF `PT_GNU_RELRO' segment header in the object. `max-page-size=VALUE' Set the emulation maximum page size to VALUE. `common-page-size=VALUE' Set the emulation common page size to VALUE. Other keywords are ignored for Solaris compatibility. `-( ARCHIVES -)' `--start-group ARCHIVES --end-group' The ARCHIVES should be a list of archive files. They may be either explicit file names, or `-l' options. The specified archives are searched repeatedly until no new undefined references are created. Normally, an archive is searched only once in the order that it is specified on the command line. If a symbol in that archive is needed to resolve an undefined symbol referred to by an object in an archive that appears later on the command line, the linker would not be able to resolve that reference. By grouping the archives, they all be searched repeatedly until all possible references are resolved. Using this option has a significant performance cost. It is best to use it only when there are unavoidable circular references between two or more archives. `--accept-unknown-input-arch' `--no-accept-unknown-input-arch' Tells the linker to accept input files whose architecture cannot be recognised. The assumption is that the user knows what they are doing and deliberately wants to link in these unknown input files. This was the default behaviour of the linker, before release 2.14. The default behaviour from release 2.14 onwards is to reject such input files, and so the `--accept-unknown-input-arch' option has been added to restore the old behaviour. `--as-needed' `--no-as-needed' This option affects ELF DT_NEEDED tags for dynamic libraries mentioned on the command line after the `--as-needed' option. Normally, the linker will add a DT_NEEDED tag for each dynamic library mentioned on the command line, regardless of whether the library is actually needed. `--as-needed' causes DT_NEEDED tags to only be emitted for libraries that satisfy some symbol reference from regular objects which is undefined at the point that the library was linked. `--no-as-needed' restores the default behaviour. `--add-needed' `--no-add-needed' This option affects the treatment of dynamic libraries from ELF DT_NEEDED tags in dynamic libraries mentioned on the command line after the `--no-add-needed' option. Normally, the linker will add a DT_NEEDED tag for each dynamic library from DT_NEEDED tags. `--no-add-needed' causes DT_NEEDED tags will never be emitted for those libraries from DT_NEEDED tags. `--add-needed' restores the default behaviour. `-assert KEYWORD' This option is ignored for SunOS compatibility. `-Bdynamic' `-dy' `-call_shared' Link against dynamic libraries. This is only meaningful on platforms for which shared libraries are supported. This option is normally the default on such platforms. The different variants of this option are for compatibility with various systems. You may use this option multiple times on the command line: it affects library searching for `-l' options which follow it. `-Bgroup' Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic section. This causes the runtime linker to handle lookups in this object and its dependencies to be performed only inside the group. `--unresolved-symbols=report-all' is implied. This option is only meaningful on ELF platforms which support shared libraries. `-Bstatic' `-dn' `-non_shared' `-static' Do not link against shared libraries. This is only meaningful on platforms for which shared libraries are supported. The different variants of this option are for compatibility with various systems. You may use this option multiple times on the command line: it affects library searching for `-l' options which follow it. This option also implies `--unresolved-symbols=report-all'. This option can be used with `-shared'. Doing so means that a shared library is being created but that all of the library's external references must be resolved by pulling in entries from static libraries. `-Bsymbolic' When creating a shared library, bind references to global symbols to the definition within the shared library, if any. Normally, it is possible for a program linked against a shared library to override the definition within the shared library. This option is only meaningful on ELF platforms which support shared libraries. `-Bsymbolic-functions' When creating a shared library, bind references to global function symbols to the definition within the shared library, if any. This option is only meaningful on ELF platforms which support shared libraries. `--dynamic-list=DYNAMIC-LIST-FILE' Specify the name of a dynamic list file to the linker. This is typically used when creating shared libraries to specify a list of global symbols whose references shouldn't be bound to the definition within the shared library, or creating dynamically linked executables to specify a list of symbols which should be added to the symbol table in the executable. This option is only meaningful on ELF platforms which support shared libraries. The format of the dynamic list is the same as the version node without scope and node name. See *Note VERSION:: for more information. `--dynamic-list-data' Include all global data symbols to the dynamic list. `--dynamic-list-cpp-new' Provide the builtin dynamic list for C++ operator new and delete. It is mainly useful for building shared libstdc++. `--dynamic-list-cpp-typeinfo' Provide the builtin dynamic list for C++ runtime type identification. `--check-sections' `--no-check-sections' Asks the linker _not_ to check section addresses after they have been assigned to see if there are any overlaps. Normally the linker will perform this check, and if it finds any overlaps it will produce suitable error messages. The linker does know about, and does make allowances for sections in overlays. The default behaviour can be restored by using the command line switch `--check-sections'. `--cref' Output a cross reference table. If a linker map file is being generated, the cross reference table is printed to the map file. Otherwise, it is printed on the standard output. The format of the table is intentionally simple, so that it may be easily processed by a script if necessary. The symbols are printed out, sorted by name. For each symbol, a list of file names is given. If the symbol is defined, the first file listed is the location of the definition. The remaining files contain references to the symbol. `--no-define-common' This option inhibits the assignment of addresses to common symbols. The script command `INHIBIT_COMMON_ALLOCATION' has the same effect. *Note Miscellaneous Commands::. The `--no-define-common' option allows decoupling the decision to assign addresses to Common symbols from the choice of the output file type; otherwise a non-Relocatable output type forces assigning addresses to Common symbols. Using `--no-define-common' allows Common symbols that are referenced from a shared library to be assigned addresses only in the main program. This eliminates the unused duplicate space in the shared library, and also prevents any possible confusion over resolving to the wrong duplicate when there are many dynamic modules with specialized search paths for runtime symbol resolution. `--defsym SYMBOL=EXPRESSION' Create a global symbol in the output file, containing the absolute address given by EXPRESSION. You may use this option as many times as necessary to define multiple symbols in the command line. A limited form of arithmetic is supported for the EXPRESSION in this context: you may give a hexadecimal constant or the name of an existing symbol, or use `+' and `-' to add or subtract hexadecimal constants or symbols. If you need more elaborate expressions, consider using the linker command language from a script (*note Assignment: Symbol Definitions: Assignments.). _Note:_ there should be no white space between SYMBOL, the equals sign ("<=>"), and EXPRESSION. `--demangle[=STYLE]' `--no-demangle' These options control whether to demangle symbol names in error messages and other output. When the linker is told to demangle, it tries to present symbol names in a readable fashion: it strips leading underscores if they are used by the object file format, and converts C++ mangled symbol names into user readable names. Different compilers have different mangling styles. The optional demangling style argument can be used to choose an appropriate demangling style for your compiler. The linker will demangle by default unless the environment variable `COLLECT_NO_DEMANGLE' is set. These options may be used to override the default. `--dynamic-linker FILE' Set the name of the dynamic linker. This is only meaningful when generating dynamically linked ELF executables. The default dynamic linker is normally correct; don't use this unless you know what you are doing. `--fatal-warnings' `--no-fatal-warnings' Treat all warnings as errors. The default behaviour can be restored with the option `--no-fatal-warnings'. `--force-exe-suffix' Make sure that an output file has a .exe suffix. If a successfully built fully linked output file does not have a `.exe' or `.dll' suffix, this option forces the linker to copy the output file to one of the same name with a `.exe' suffix. This option is useful when using unmodified Unix makefiles on a Microsoft Windows host, since some versions of Windows won't run an image unless it ends in a `.exe' suffix. `--gc-sections' `--no-gc-sections' Enable garbage collection of unused input sections. It is ignored on targets that do not support this option. The default behaviour (of not performing this garbage collection) can be restored by specifying `--no-gc-sections' on the command line. `--gc-sections' decides which input sections are used by examining symbols and relocations. The section containing the entry symbol and all sections containing symbols undefined on the command-line will be kept, as will sections containing symbols referenced by dynamic objects. Note that when building shared libraries, the linker must assume that any visible symbol is referenced. Once this initial set of sections has been determined, the linker recursively marks as used any section referenced by their relocations. See `--entry' and `--undefined'. This option can be set when doing a partial link (enabled with option `-r'). In this case the root of symbols kept must be explicitely specified either by an `--entry' or `--undefined' option or by a `ENTRY' command in the linker script. `--print-gc-sections' `--no-print-gc-sections' List all sections removed by garbage collection. The listing is printed on stderr. This option is only effective if garbage collection has been enabled via the `--gc-sections') option. The default behaviour (of not listing the sections that are removed) can be restored by specifying `--no-print-gc-sections' on the command line. `--help' Print a summary of the command-line options on the standard output and exit. `--target-help' Print a summary of all target specific options on the standard output and exit. `-Map MAPFILE' Print a link map to the file MAPFILE. See the description of the `-M' option, above. `--no-keep-memory' `ld' normally optimizes for speed over memory usage by caching the symbol tables of input files in memory. This option tells `ld' to instead optimize for memory usage, by rereading the symbol tables as necessary. This may be required if `ld' runs out of memory space while linking a large executable. `--no-undefined' `-z defs' Report unresolved symbol references from regular object files. This is done even if the linker is creating a non-symbolic shared library. The switch `--[no-]allow-shlib-undefined' controls the behaviour for reporting unresolved references found in shared libraries being linked in. `--allow-multiple-definition' `-z muldefs' Normally when a symbol is defined multiple times, the linker will report a fatal error. These options allow multiple definitions and the first definition will be used. `--allow-shlib-undefined' `--no-allow-shlib-undefined' Allows (the default) or disallows undefined symbols in shared libraries. This switch is similar to `--no-undefined' except that it determines the behaviour when the undefined symbols are in a shared library rather than a regular object file. It does not affect how undefined symbols in regular object files are handled. The reason that `--allow-shlib-undefined' is the default is that the shared library being specified at link time may not be the same as the one that is available at load time, so the symbols might actually be resolvable at load time. Plus there are some systems, (eg BeOS) where undefined symbols in shared libraries is normal. (The kernel patches them at load time to select which function is most appropriate for the current architecture. This is used for example to dynamically select an appropriate memset function). Apparently it is also normal for HPPA shared libraries to have undefined symbols. `--no-undefined-version' Normally when a symbol has an undefined version, the linker will ignore it. This option disallows symbols with undefined version and a fatal error will be issued instead. `--default-symver' Create and use a default symbol version (the soname) for unversioned exported symbols. `--default-imported-symver' Create and use a default symbol version (the soname) for unversioned imported symbols. `--no-warn-mismatch' Normally `ld' will give an error if you try to link together input files that are mismatched for some reason, perhaps because they have been compiled for different processors or for different endiannesses. This option tells `ld' that it should silently permit such possible errors. This option should only be used with care, in cases when you have taken some special action that ensures that the linker errors are inappropriate. `--no-warn-search-mismatch' Normally `ld' will give a warning if it finds an incompatible library during a library search. This option silences the warning. `--no-whole-archive' Turn off the effect of the `--whole-archive' option for subsequent archive files. `--noinhibit-exec' Retain the executable output file whenever it is still usable. Normally, the linker will not produce an output file if it encounters errors during the link process; it exits without writing an output file when it issues any error whatsoever. `-nostdlib' Only search library directories explicitly specified on the command line. Library directories specified in linker scripts (including linker scripts specified on the command line) are ignored. `--oformat OUTPUT-FORMAT' `ld' may be configured to support more than one kind of object file. If your `ld' is configured this way, you can use the `--oformat' option to specify the binary format for the output object file. Even when `ld' is configured to support alternative object formats, you don't usually need to specify this, as `ld' should be configured to produce as a default output format the most usual format on each machine. OUTPUT-FORMAT is a text string, the name of a particular format supported by the BFD libraries. (You can list the available binary formats with `objdump -i'.) The script command `OUTPUT_FORMAT' can also specify the output format, but this option overrides it. *Note BFD::. `-pie' `--pic-executable' Create a position independent executable. This is currently only supported on ELF platforms. Position independent executables are similar to shared libraries in that they are relocated by the dynamic linker to the virtual address the OS chooses for them (which can vary between invocations). Like normal dynamically linked executables they can be executed and symbols defined in the executable cannot be overridden by shared libraries. `-qmagic' This option is ignored for Linux compatibility. `-Qy' This option is ignored for SVR4 compatibility. `--relax' An option with machine dependent effects. This option is only supported on a few targets. *Note `ld' and the H8/300: H8/300. *Note `ld' and the Intel 960 family: i960. *Note `ld' and Xtensa Processors: Xtensa. *Note `ld' and the 68HC11 and 68HC12: M68HC11/68HC12. *Note `ld' and PowerPC 32-bit ELF Support: PowerPC ELF32. On some platforms, the `--relax' option performs global optimizations that become possible when the linker resolves addressing in the program, such as relaxing address modes and synthesizing new instructions in the output object file. On some platforms these link time global optimizations may make symbolic debugging of the resulting executable impossible. This is known to be the case for the Matsushita MN10200 and MN10300 family of processors. On platforms where this is not supported, `--relax' is accepted, but ignored. `--retain-symbols-file FILENAME' Retain _only_ the symbols listed in the file FILENAME, discarding all others. FILENAME is simply a flat file, with one symbol name per line. This option is especially useful in environments (such as VxWorks) where a large global symbol table is accumulated gradually, to conserve run-time memory. `--retain-symbols-file' does _not_ discard undefined symbols, or symbols needed for relocations. You may only specify `--retain-symbols-file' once in the command line. It overrides `-s' and `-S'. `-rpath DIR' Add a directory to the runtime library search path. This is used when linking an ELF executable with shared objects. All `-rpath' arguments are concatenated and passed to the runtime linker, which uses them to locate shared objects at runtime. The `-rpath' option is also used when locating shared objects which are needed by shared objects explicitly included in the link; see the description of the `-rpath-link' option. If `-rpath' is not used when linking an ELF executable, the contents of the environment variable `LD_RUN_PATH' will be used if it is defined. The `-rpath' option may also be used on SunOS. By default, on SunOS, the linker will form a runtime search patch out of all the `-L' options it is given. If a `-rpath' option is used, the runtime search path will be formed exclusively using the `-rpath' options, ignoring the `-L' options. This can be useful when using gcc, which adds many `-L' options which may be on NFS mounted file systems. For compatibility with other ELF linkers, if the `-R' option is followed by a directory name, rather than a file name, it is treated as the `-rpath' option. `-rpath-link DIR' When using ELF or SunOS, one shared library may require another. This happens when an `ld -shared' link includes a shared library as one of the input files. When the linker encounters such a dependency when doing a non-shared, non-relocatable link, it will automatically try to locate the required shared library and include it in the link, if it is not included explicitly. In such a case, the `-rpath-link' option specifies the first set of directories to search. The `-rpath-link' option may specify a sequence of directory names either by specifying a list of names separated by colons, or by appearing multiple times. This option should be used with caution as it overrides the search path that may have been hard compiled into a shared library. In such a case it is possible to use unintentionally a different search path than the runtime linker would do. The linker uses the following search paths to locate required shared libraries: 1. Any directories specified by `-rpath-link' options. 2. Any directories specified by `-rpath' options. The difference between `-rpath' and `-rpath-link' is that directories specified by `-rpath' options are included in the executable and used at runtime, whereas the `-rpath-link' option is only effective at link time. Searching `-rpath' in this way is only supported by native linkers and cross linkers which have been configured with the `--with-sysroot' option. 3. On an ELF system, for native linkers, if the `-rpath' and `-rpath-link' options were not used, search the contents of the environment variable `LD_RUN_PATH'. 4. On SunOS, if the `-rpath' option was not used, search any directories specified using `-L' options. 5. For a native linker, the search the contents of the environment variable `LD_LIBRARY_PATH'. 6. For a native ELF linker, the directories in `DT_RUNPATH' or `DT_RPATH' of a shared library are searched for shared libraries needed by it. The `DT_RPATH' entries are ignored if `DT_RUNPATH' entries exist. 7. The default directories, normally `/lib' and `/usr/lib'. 8. For a native linker on an ELF system, if the file `/etc/ld.so.conf' exists, the list of directories found in that file. If the required shared library is not found, the linker will issue a warning and continue with the link. `-shared' `-Bshareable' Create a shared library. This is currently only supported on ELF, XCOFF and SunOS platforms. On SunOS, the linker will automatically create a shared library if the `-e' option is not used and there are undefined symbols in the link. `--sort-common [= ascending | descending]' This option tells `ld' to sort the common symbols by alignment in ascending or descending order when it places them in the appropriate output sections. The symbol alignments considered are sixteen-byte or larger, eight-byte, four-byte, two-byte, and one-byte. This is to prevent gaps between symbols due to alignment constraints. If no sorting order is specified, then descending order is assumed. `--sort-section name' This option will apply `SORT_BY_NAME' to all wildcard section patterns in the linker script. `--sort-section alignment' This option will apply `SORT_BY_ALIGNMENT' to all wildcard section patterns in the linker script. `--split-by-file [SIZE]' Similar to `--split-by-reloc' but creates a new output section for each input file when SIZE is reached. SIZE defaults to a size of 1 if not given. `--split-by-reloc [COUNT]' Tries to creates extra sections in the output file so that no single output section in the file contains more than COUNT relocations. This is useful when generating huge relocatable files for downloading into certain real time kernels with the COFF object file format; since COFF cannot represent more than 65535 relocations in a single section. Note that this will fail to work with object file formats which do not support arbitrary sections. The linker will not split up individual input sections for redistribution, so if a single input section contains more than COUNT relocations one output section will contain that many relocations. COUNT defaults to a value of 32768. `--stats' Compute and display statistics about the operation of the linker, such as execution time and memory usage. `--sysroot=DIRECTORY' Use DIRECTORY as the location of the sysroot, overriding the configure-time default. This option is only supported by linkers that were configured using `--with-sysroot'. `--traditional-format' For some targets, the output of `ld' is different in some ways from the output of some existing linker. This switch requests `ld' to use the traditional format instead. For example, on SunOS, `ld' combines duplicate entries in the symbol string table. This can reduce the size of an output file with full debugging information by over 30 percent. Unfortunately, the SunOS `dbx' program can not read the resulting program (`gdb' has no trouble). The `--traditional-format' switch tells `ld' to not combine duplicate entries. `--section-start SECTIONNAME=ORG' Locate a section in the output file at the absolute address given by ORG. You may use this option as many times as necessary to locate multiple sections in the command line. ORG must be a single hexadecimal integer; for compatibility with other linkers, you may omit the leading `0x' usually associated with hexadecimal values. _Note:_ there should be no white space between SECTIONNAME, the equals sign ("<=>"), and ORG. `-Tbss ORG' `-Tdata ORG' `-Ttext ORG' Same as -section-start, with `.bss', `.data' or `.text' as the SECTIONNAME. `--unresolved-symbols=METHOD' Determine how to handle unresolved symbols. There are four possible values for `method': `ignore-all' Do not report any unresolved symbols. `report-all' Report all unresolved symbols. This is the default. `ignore-in-object-files' Report unresolved symbols that are contained in shared libraries, but ignore them if they come from regular object files. `ignore-in-shared-libs' Report unresolved symbols that come from regular object files, but ignore them if they come from shared libraries. This can be useful when creating a dynamic binary and it is known that all the shared libraries that it should be referencing are included on the linker's command line. The behaviour for shared libraries on their own can also be controlled by the `--[no-]allow-shlib-undefined' option. Normally the linker will generate an error message for each reported unresolved symbol but the option `--warn-unresolved-symbols' can change this to a warning. `--dll-verbose' `--verbose' Display the version number for `ld' and list the linker emulations supported. Display which input files can and cannot be opened. Display the linker script being used by the linker. `--version-script=VERSION-SCRIPTFILE' Specify the name of a version script to the linker. This is typically used when creating shared libraries to specify additional information about the version hierarchy for the library being created. This option is only meaningful on ELF platforms which support shared libraries. *Note VERSION::. `--warn-common' Warn when a common symbol is combined with another common symbol or with a symbol definition. Unix linkers allow this somewhat sloppy practise, but linkers on some other operating systems do not. This option allows you to find potential problems from combining global symbols. Unfortunately, some C libraries use this practise, so you may get some warnings about symbols in the libraries as well as in your programs. There are three kinds of global symbols, illustrated here by C examples: `int i = 1;' A definition, which goes in the initialized data section of the output file. `extern int i;' An undefined reference, which does not allocate space. There must be either a definition or a common symbol for the variable somewhere. `int i;' A common symbol. If there are only (one or more) common symbols for a variable, it goes in the uninitialized data area of the output file. The linker merges multiple common symbols for the same variable into a single symbol. If they are of different sizes, it picks the largest size. The linker turns a common symbol into a declaration, if there is a definition of the same variable. The `--warn-common' option can produce five kinds of warnings. Each warning consists of a pair of lines: the first describes the symbol just encountered, and the second describes the previous symbol encountered with the same name. One or both of the two symbols will be a common symbol. 1. Turning a common symbol into a reference, because there is already a definition for the symbol. FILE(SECTION): warning: common of `SYMBOL' overridden by definition FILE(SECTION): warning: defined here 2. Turning a common symbol into a reference, because a later definition for the symbol is encountered. This is the same as the previous case, except that the symbols are encountered in a different order. FILE(SECTION): warning: definition of `SYMBOL' overriding common FILE(SECTION): warning: common is here 3. Merging a common symbol with a previous same-sized common symbol. FILE(SECTION): warning: multiple common of `SYMBOL' FILE(SECTION): warning: previous common is here 4. Merging a common symbol with a previous larger common symbol. FILE(SECTION): warning: common of `SYMBOL' overridden by larger common FILE(SECTION): warning: larger common is here 5. Merging a common symbol with a previous smaller common symbol. This is the same as the previous case, except that the symbols are encountered in a different order. FILE(SECTION): warning: common of `SYMBOL' overriding smaller common FILE(SECTION): warning: smaller common is here `--warn-constructors' Warn if any global constructors are used. This is only useful for a few object file formats. For formats like COFF or ELF, the linker can not detect the use of global constructors. `--warn-multiple-gp' Warn if multiple global pointer values are required in the output file. This is only meaningful for certain processors, such as the Alpha. Specifically, some processors put large-valued constants in a special section. A special register (the global pointer) points into the middle of this section, so that constants can be loaded efficiently via a base-register relative addressing mode. Since the offset in base-register relative mode is fixed and relatively small (e.g., 16 bits), this limits the maximum size of the constant pool. Thus, in large programs, it is often necessary to use multiple global pointer values in order to be able to address all possible constants. This option causes a warning to be issued whenever this case occurs. `--warn-once' Only warn once for each undefined symbol, rather than once per module which refers to it. `--warn-section-align' Warn if the address of an output section is changed because of alignment. Typically, the alignment will be set by an input section. The address will only be changed if it not explicitly specified; that is, if the `SECTIONS' command does not specify a start address for the section (*note SECTIONS::). `--warn-shared-textrel' Warn if the linker adds a DT_TEXTREL to a shared object. `--warn-unresolved-symbols' If the linker is going to report an unresolved symbol (see the option `--unresolved-symbols') it will normally generate an error. This option makes it generate a warning instead. `--error-unresolved-symbols' This restores the linker's default behaviour of generating errors when it is reporting unresolved symbols. `--whole-archive' For each archive mentioned on the command line after the `--whole-archive' option, include every object file in the archive in the link, rather than searching the archive for the required object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the resulting shared library. This option may be used more than once. Two notes when using this option from gcc: First, gcc doesn't know about this option, so you have to use `-Wl,-whole-archive'. Second, don't forget to use `-Wl,-no-whole-archive' after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well. `--wrap SYMBOL' Use a wrapper function for SYMBOL. Any undefined reference to SYMBOL will be resolved to `__wrap_SYMBOL'. Any undefined reference to `__real_SYMBOL' will be resolved to SYMBOL. This can be used to provide a wrapper for a system function. The wrapper function should be called `__wrap_SYMBOL'. If it wishes to call the system function, it should call `__real_SYMBOL'. Here is a trivial example: void * __wrap_malloc (size_t c) { printf ("malloc called with %zu\n", c); return __real_malloc (c); } If you link other code with this file using `--wrap malloc', then all calls to `malloc' will call the function `__wrap_malloc' instead. The call to `__real_malloc' in `__wrap_malloc' will call the real `malloc' function. You may wish to provide a `__real_malloc' function as well, so that links without the `--wrap' option will succeed. If you do this, you should not put the definition of `__real_malloc' in the same file as `__wrap_malloc'; if you do, the assembler may resolve the call before the linker has a chance to wrap it to `malloc'. `--eh-frame-hdr' Request creation of `.eh_frame_hdr' section and ELF `PT_GNU_EH_FRAME' segment header. `--enable-new-dtags' `--disable-new-dtags' This linker can create the new dynamic tags in ELF. But the older ELF systems may not understand them. If you specify `--enable-new-dtags', the dynamic tags will be created as needed. If you specify `--disable-new-dtags', no new dynamic tags will be created. By default, the new dynamic tags are not created. Note that those options are only available for ELF systems. `--hash-size=NUMBER' Set the default size of the linker's hash tables to a prime number close to NUMBER. Increasing this value can reduce the length of time it takes the linker to perform its tasks, at the expense of increasing the linker's memory requirements. Similarly reducing this value can reduce the memory requirements at the expense of speed. `--hash-style=STYLE' Set the type of linker's hash table(s). STYLE can be either `sysv' for classic ELF `.hash' section, `gnu' for new style GNU `.gnu.hash' section or `both' for both the classic ELF `.hash' and new style GNU `.gnu.hash' hash tables. The default is `sysv'. `--reduce-memory-overheads' This option reduces memory requirements at ld runtime, at the expense of linking speed. This was introduced to select the old O(n^2) algorithm for link map file generation, rather than the new O(n) algorithm which uses about 40% more memory for symbol storage. Another effect of the switch is to set the default hash table size to 1021, which again saves memory at the cost of lengthening the linker's run time. This is not done however if the `--hash-size' switch has been used. The `--reduce-memory-overheads' switch may be also be used to enable other tradeoffs in future versions of the linker. `--build-id' `--build-id=STYLE' Request creation of `.note.gnu.build-id' ELF note section. The contents of the note are unique bits identifying this linked file. STYLE can be `uuid' to use 128 random bits, `sha1' to use a 160-bit SHA1 hash on the normative parts of the output contents, `md5' to use a 128-bit MD5 hash on the normative parts of the output contents, or `0xHEXSTRING' to use a chosen bit string specified as an even number of hexadecimal digits (`-' and `:' characters between digit pairs are ignored). If STYLE is omitted, `sha1' is used. The `md5' and `sha1' styles produces an identifier that is always the same in an identical output file, but will be unique among all nonidentical output files. It is not intended to be compared as a checksum for the file's contents. A linked file may be changed later by other tools, but the build ID bit string identifying the original linked file does not change. Passing `none' for STYLE disables the setting from any `--build-id' options earlier on the command line. 2.1.1 Options Specific to i386 PE Targets ----------------------------------------- The i386 PE linker supports the `-shared' option, which causes the output to be a dynamically linked library (DLL) instead of a normal executable. You should name the output `*.dll' when you use this option. In addition, the linker fully supports the standard `*.def' files, which may be specified on the linker command line like an object file (in fact, it should precede archives it exports symbols from, to ensure that they get linked in, just like a normal object file). In addition to the options common to all targets, the i386 PE linker support additional command line options that are specific to the i386 PE target. Options that take values may be separated from their values by either a space or an equals sign. `--add-stdcall-alias' If given, symbols with a stdcall suffix (@@NN) will be exported as-is and also with the suffix stripped. [This option is specific to the i386 PE targeted port of the linker] `--base-file FILE' Use FILE as the name of a file in which to save the base addresses of all the relocations needed for generating DLLs with `dlltool'. [This is an i386 PE specific option] `--dll' Create a DLL instead of a regular executable. You may also use `-shared' or specify a `LIBRARY' in a given `.def' file. [This option is specific to the i386 PE targeted port of the linker] `--enable-stdcall-fixup' `--disable-stdcall-fixup' If the link finds a symbol that it cannot resolve, it will attempt to do "fuzzy linking" by looking for another defined symbol that differs only in the format of the symbol name (cdecl vs stdcall) and will resolve that symbol by linking to the match. For example, the undefined symbol `_foo' might be linked to the function `_foo@@12', or the undefined symbol `_bar@@16' might be linked to the function `_bar'. When the linker does this, it prints a warning, since it normally should have failed to link, but sometimes import libraries generated from third-party dlls may need this feature to be usable. If you specify `--enable-stdcall-fixup', this feature is fully enabled and warnings are not printed. If you specify `--disable-stdcall-fixup', this feature is disabled and such mismatches are considered to be errors. [This option is specific to the i386 PE targeted port of the linker] `--export-all-symbols' If given, all global symbols in the objects used to build a DLL will be exported by the DLL. Note that this is the default if there otherwise wouldn't be any exported symbols. When symbols are explicitly exported via DEF files or implicitly exported via function attributes, the default is to not export anything else unless this option is given. Note that the symbols `DllMain@@12', `DllEntryPoint@@0', `DllMainCRTStartup@@12', and `impure_ptr' will not be automatically exported. Also, symbols imported from other DLLs will not be re-exported, nor will symbols specifying the DLL's internal layout such as those beginning with `_head_' or ending with `_iname'. In addition, no symbols from `libgcc', `libstd++', `libmingw32', or `crtX.o' will be exported. Symbols whose names begin with `__rtti_' or `__builtin_' will not be exported, to help with C++ DLLs. Finally, there is an extensive list of cygwin-private symbols that are not exported (obviously, this applies on when building DLLs for cygwin targets). These cygwin-excludes are: `_cygwin_dll_entry@@12', `_cygwin_crt0_common@@8', `_cygwin_noncygwin_dll_entry@@12', `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0', `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and `environ'. [This option is specific to the i386 PE targeted port of the linker] `--exclude-symbols SYMBOL,SYMBOL,...' Specifies a list of symbols which should not be automatically exported. The symbol names may be delimited by commas or colons. [This option is specific to the i386 PE targeted port of the linker] `--file-alignment' Specify the file alignment. Sections in the file will always begin at file offsets which are multiples of this number. This defaults to 512. [This option is specific to the i386 PE targeted port of the linker] `--heap RESERVE' `--heap RESERVE,COMMIT' Specify the number of bytes of memory to reserve (and optionally commit) to be used as heap for this program. The default is 1Mb reserved, 4K committed. [This option is specific to the i386 PE targeted port of the linker] `--image-base VALUE' Use VALUE as the base address of your program or dll. This is the lowest memory location that will be used when your program or dll is loaded. To reduce the need to relocate and improve performance of your dlls, each should have a unique base address and not overlap any other dlls. The default is 0x400000 for executables, and 0x10000000 for dlls. [This option is specific to the i386 PE targeted port of the linker] `--kill-at' If given, the stdcall suffixes (@@NN) will be stripped from symbols before they are exported. [This option is specific to the i386 PE targeted port of the linker] `--large-address-aware' If given, the appropriate bit in the "Characteristics" field of the COFF header is set to indicate that this executable supports virtual addresses greater than 2 gigabytes. This should be used in conjunction with the /3GB or /USERVA=VALUE megabytes switch in the "[operating systems]" section of the BOOT.INI. Otherwise, this bit has no effect. [This option is specific to PE targeted ports of the linker] `--major-image-version VALUE' Sets the major number of the "image version". Defaults to 1. [This option is specific to the i386 PE targeted port of the linker] `--major-os-version VALUE' Sets the major number of the "os version". Defaults to 4. [This option is specific to the i386 PE targeted port of the linker] `--major-subsystem-version VALUE' Sets the major number of the "subsystem version". Defaults to 4. [This option is specific to the i386 PE targeted port of the linker] `--minor-image-version VALUE' Sets the minor number of the "image version". Defaults to 0. [This option is specific to the i386 PE targeted port of the linker] `--minor-os-version VALUE' Sets the minor number of the "os version". Defaults to 0. [This option is specific to the i386 PE targeted port of the linker] `--minor-subsystem-version VALUE' Sets the minor number of the "subsystem version". Defaults to 0. [This option is specific to the i386 PE targeted port of the linker] `--output-def FILE' The linker will create the file FILE which will contain a DEF file corresponding to the DLL the linker is generating. This DEF file (which should be called `*.def') may be used to create an import library with `dlltool' or may be used as a reference to automatically or implicitly exported symbols. [This option is specific to the i386 PE targeted port of the linker] `--out-implib FILE' The linker will create the file FILE which will contain an import lib corresponding to the DLL the linker is generating. This import lib (which should be called `*.dll.a' or `*.a' may be used to link clients against the generated DLL; this behaviour makes it possible to skip a separate `dlltool' import library creation step. [This option is specific to the i386 PE targeted port of the linker] `--enable-auto-image-base' Automatically choose the image base for DLLs, unless one is specified using the `--image-base' argument. By using a hash generated from the dllname to create unique image bases for each DLL, in-memory collisions and relocations which can delay program execution are avoided. [This option is specific to the i386 PE targeted port of the linker] `--disable-auto-image-base' Do not automatically generate a unique image base. If there is no user-specified image base (`--image-base') then use the platform default. [This option is specific to the i386 PE targeted port of the linker] `--dll-search-prefix STRING' When linking dynamically to a dll without an import library, search for `.dll' in preference to `lib.dll'. This behaviour allows easy distinction between DLLs built for the various "subplatforms": native, cygwin, uwin, pw, etc. For instance, cygwin DLLs typically use `--dll-search-prefix=cyg'. [This option is specific to the i386 PE targeted port of the linker] `--enable-auto-import' Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA imports from DLLs, and create the necessary thunking symbols when building the import libraries with those DATA exports. Note: Use of the 'auto-import' extension will cause the text section of the image file to be made writable. This does not conform to the PE-COFF format specification published by Microsoft. Note - use of the 'auto-import' extension will also cause read only data which would normally be placed into the .rdata section to be placed into the .data section instead. This is in order to work around a problem with consts that is described here: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html Using 'auto-import' generally will 'just work' - but sometimes you may see this message: "variable '' can't be auto-imported. Please read the documentation for ld's `--enable-auto-import' for details." This message occurs when some (sub)expression accesses an address ultimately given by the sum of two constants (Win32 import tables only allow one). Instances where this may occur include accesses to member fields of struct variables imported from a DLL, as well as using a constant index into an array variable imported from a DLL. Any multiword variable (arrays, structs, long long, etc) may trigger this error condition. However, regardless of the exact data type of the offending exported variable, ld will always detect it, issue the warning, and exit. There are several ways to address this difficulty, regardless of the data type of the exported variable: One way is to use -enable-runtime-pseudo-reloc switch. This leaves the task of adjusting references in your client code for runtime environment, so this method works only when runtime environment supports this feature. A second solution is to force one of the 'constants' to be a variable - that is, unknown and un-optimizable at compile time. For arrays, there are two possibilities: a) make the indexee (the array's address) a variable, or b) make the 'constant' index a variable. Thus: extern type extern_array[]; extern_array[1] --> { volatile type *t=extern_array; t[1] } or extern type extern_array[]; extern_array[1] --> { volatile int t=1; extern_array[t] } For structs (and most other multiword data types) the only option is to make the struct itself (or the long long, or the ...) variable: extern struct s extern_struct; extern_struct.field --> { volatile struct s *t=&extern_struct; t->field } or extern long long extern_ll; extern_ll --> { volatile long long * local_ll=&extern_ll; *local_ll } A third method of dealing with this difficulty is to abandon 'auto-import' for the offending symbol and mark it with `__declspec(dllimport)'. However, in practise that requires using compile-time #defines to indicate whether you are building a DLL, building client code that will link to the DLL, or merely building/linking to a static library. In making the choice between the various methods of resolving the 'direct address with constant offset' problem, you should consider typical real-world usage: Original: --foo.h extern int arr[]; --foo.c #include "foo.h" void main(int argc, char **argv){ printf("%d\n",arr[1]); } Solution 1: --foo.h extern int arr[]; --foo.c #include "foo.h" void main(int argc, char **argv){ /* This workaround is for win32 and cygwin; do not "optimize" */ volatile int *parr = arr; printf("%d\n",parr[1]); } Solution 2: --foo.h /* Note: auto-export is assumed (no __declspec(dllexport)) */ #if (defined(_WIN32) || defined(__CYGWIN__)) && \ !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) #define FOO_IMPORT __declspec(dllimport) #else #define FOO_IMPORT #endif extern FOO_IMPORT int arr[]; --foo.c #include "foo.h" void main(int argc, char **argv){ printf("%d\n",arr[1]); } A fourth way to avoid this problem is to re-code your library to use a functional interface rather than a data interface for the offending variables (e.g. set_foo() and get_foo() accessor functions). [This option is specific to the i386 PE targeted port of the linker] `--disable-auto-import' Do not attempt to do sophisticated linking of `_symbol' to `__imp__symbol' for DATA imports from DLLs. [This option is specific to the i386 PE targeted port of the linker] `--enable-runtime-pseudo-reloc' If your code contains expressions described in -enable-auto-import section, that is, DATA imports from DLL with non-zero offset, this switch will create a vector of 'runtime pseudo relocations' which can be used by runtime environment to adjust references to such data in your client code. [This option is specific to the i386 PE targeted port of the linker] `--disable-runtime-pseudo-reloc' Do not create pseudo relocations for non-zero offset DATA imports from DLLs. This is the default. [This option is specific to the i386 PE targeted port of the linker] `--enable-extra-pe-debug' Show additional debug info related to auto-import symbol thunking. [This option is specific to the i386 PE targeted port of the linker] `--section-alignment' Sets the section alignment. Sections in memory will always begin at addresses which are a multiple of this number. Defaults to 0x1000. [This option is specific to the i386 PE targeted port of the linker] `--stack RESERVE' `--stack RESERVE,COMMIT' Specify the number of bytes of memory to reserve (and optionally commit) to be used as stack for this program. The default is 2Mb reserved, 4K committed. [This option is specific to the i386 PE targeted port of the linker] `--subsystem WHICH' `--subsystem WHICH:MAJOR' `--subsystem WHICH:MAJOR.MINOR' Specifies the subsystem under which your program will execute. The legal values for WHICH are `native', `windows', `console', `posix', and `xbox'. You may optionally set the subsystem version also. Numeric values are also accepted for WHICH. [This option is specific to the i386 PE targeted port of the linker] 2.1.2 Options specific to Motorola 68HC11 and 68HC12 targets ------------------------------------------------------------ The 68HC11 and 68HC12 linkers support specific options to control the memory bank switching mapping and trampoline code generation. `--no-trampoline' This option disables the generation of trampoline. By default a trampoline is generated for each far function which is called using a `jsr' instruction (this happens when a pointer to a far function is taken). `--bank-window NAME' This option indicates to the linker the name of the memory region in the `MEMORY' specification that describes the memory bank window. The definition of such region is then used by the linker to compute paging and addresses within the memory window. 2.1.3 Options specific to Motorola 68K target --------------------------------------------- The following options are supported to control handling of GOT generation when linking for 68K targets. `--got=TYPE' This option tells the linker which GOT generation scheme to use. TYPE should be one of `single', `negative', `multigot' or `target'. For more information refer to the Info entry for `ld'.  File: ld.info, Node: Environment, Prev: Options, Up: Invocation 2.2 Environment Variables ========================= You can change the behaviour of `ld' with the environment variables `GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'. `GNUTARGET' determines the input-file object format if you don't use `-b' (or its synonym `--format'). Its value should be one of the BFD names for an input format (*note BFD::). If there is no `GNUTARGET' in the environment, `ld' uses the natural format of the target. If `GNUTARGET' is set to `default' then BFD attempts to discover the input format by examining binary input files; this method often succeeds, but there are potential ambiguities, since there is no method of ensuring that the magic number used to specify object-file formats is unique. However, the configuration procedure for BFD on each system places the conventional format for that system first in the search-list, so ambiguities are resolved in favor of convention. `LDEMULATION' determines the default emulation if you don't use the `-m' option. The emulation can affect various aspects of linker behaviour, particularly the default linker script. You can list the available emulations with the `--verbose' or `-V' options. If the `-m' option is not used, and the `LDEMULATION' environment variable is not defined, the default emulation depends upon how the linker was configured. Normally, the linker will default to demangling symbols. However, if `COLLECT_NO_DEMANGLE' is set in the environment, then it will default to not demangling symbols. This environment variable is used in a similar fashion by the `gcc' linker wrapper program. The default may be overridden by the `--demangle' and `--no-demangle' options.  File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top 3 Linker Scripts **************** Every link is controlled by a "linker script". This script is written in the linker command language. The main purpose of the linker script is to describe how the sections in the input files should be mapped into the output file, and to control the memory layout of the output file. Most linker scripts do nothing more than this. However, when necessary, the linker script can also direct the linker to perform many other operations, using the commands described below. The linker always uses a linker script. If you do not supply one yourself, the linker will use a default script that is compiled into the linker executable. You can use the `--verbose' command line option to display the default linker script. Certain command line options, such as `-r' or `-N', will affect the default linker script. You may supply your own linker script by using the `-T' command line option. When you do this, your linker script will replace the default linker script. You may also use linker scripts implicitly by naming them as input files to the linker, as though they were files to be linked. *Note Implicit Linker Scripts::. * Menu: * Basic Script Concepts:: Basic Linker Script Concepts * Script Format:: Linker Script Format * Simple Example:: Simple Linker Script Example * Simple Commands:: Simple Linker Script Commands * Assignments:: Assigning Values to Symbols * SECTIONS:: SECTIONS Command * MEMORY:: MEMORY Command * PHDRS:: PHDRS Command * VERSION:: VERSION Command * Expressions:: Expressions in Linker Scripts * Implicit Linker Scripts:: Implicit Linker Scripts  File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts 3.1 Basic Linker Script Concepts ================================ We need to define some basic concepts and vocabulary in order to describe the linker script language. The linker combines input files into a single output file. The output file and each input file are in a special data format known as an "object file format". Each file is called an "object file". The output file is often called an "executable", but for our purposes we will also call it an object file. Each object file has, among other things, a list of "sections". We sometimes refer to a section in an input file as an "input section"; similarly, a section in the output file is an "output section". Each section in an object file has a name and a size. Most sections also have an associated block of data, known as the "section contents". A section may be marked as "loadable", which mean that the contents should be loaded into memory when the output file is run. A section with no contents may be "allocatable", which means that an area in memory should be set aside, but nothing in particular should be loaded there (in some cases this memory must be zeroed out). A section which is neither loadable nor allocatable typically contains some sort of debugging information. Every loadable or allocatable output section has two addresses. The first is the "VMA", or virtual memory address. This is the address the section will have when the output file is run. The second is the "LMA", or load memory address. This is the address at which the section will be loaded. In most cases the two addresses will be the same. An example of when they might be different is when a data section is loaded into ROM, and then copied into RAM when the program starts up (this technique is often used to initialize global variables in a ROM based system). In this case the ROM address would be the LMA, and the RAM address would be the VMA. You can see the sections in an object file by using the `objdump' program with the `-h' option. Every object file also has a list of "symbols", known as the "symbol table". A symbol may be defined or undefined. Each symbol has a name, and each defined symbol has an address, among other information. If you compile a C or C++ program into an object file, you will get a defined symbol for every defined function and global or static variable. Every undefined function or global variable which is referenced in the input file will become an undefined symbol. You can see the symbols in an object file by using the `nm' program, or by using the `objdump' program with the `-t' option.  File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts 3.2 Linker Script Format ======================== Linker scripts are text files. You write a linker script as a series of commands. Each command is either a keyword, possibly followed by arguments, or an assignment to a symbol. You may separate commands using semicolons. Whitespace is generally ignored. Strings such as file or format names can normally be entered directly. If the file name contains a character such as a comma which would otherwise serve to separate file names, you may put the file name in double quotes. There is no way to use a double quote character in a file name. You may include comments in linker scripts just as in C, delimited by `/*' and `*/'. As in C, comments are syntactically equivalent to whitespace.  File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts 3.3 Simple Linker Script Example ================================ Many linker scripts are fairly simple. The simplest possible linker script has just one command: `SECTIONS'. You use the `SECTIONS' command to describe the memory layout of the output file. The `SECTIONS' command is a powerful command. Here we will describe a simple use of it. Let's assume your program consists only of code, initialized data, and uninitialized data. These will be in the `.text', `.data', and `.bss' sections, respectively. Let's assume further that these are the only sections which appear in your input files. For this example, let's say that the code should be loaded at address 0x10000, and that the data should start at address 0x8000000. Here is a linker script which will do that: SECTIONS { . = 0x10000; .text : { *(.text) } . = 0x8000000; .data : { *(.data) } .bss : { *(.bss) } } You write the `SECTIONS' command as the keyword `SECTIONS', followed by a series of symbol assignments and output section descriptions enclosed in curly braces. The first line inside the `SECTIONS' command of the above example sets the value of the special symbol `.', which is the location counter. If you do not specify the address of an output section in some other way (other ways are described later), the address is set from the current value of the location counter. The location counter is then incremented by the size of the output section. At the start of the `SECTIONS' command, the location counter has the value `0'. The second line defines an output section, `.text'. The colon is required syntax which may be ignored for now. Within the curly braces after the output section name, you list the names of the input sections which should be placed into this output section. The `*' is a wildcard which matches any file name. The expression `*(.text)' means all `.text' input sections in all input files. Since the location counter is `0x10000' when the output section `.text' is defined, the linker will set the address of the `.text' section in the output file to be `0x10000'. The remaining lines define the `.data' and `.bss' sections in the output file. The linker will place the `.data' output section at address `0x8000000'. After the linker places the `.data' output section, the value of the location counter will be `0x8000000' plus the size of the `.data' output section. The effect is that the linker will place the `.bss' output section immediately after the `.data' output section in memory. The linker will ensure that each output section has the required alignment, by increasing the location counter if necessary. In this example, the specified addresses for the `.text' and `.data' sections will probably satisfy any alignment constraints, but the linker may have to create a small gap between the `.data' and `.bss' sections. That's it! That's a simple and complete linker script.  File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts 3.4 Simple Linker Script Commands ================================= In this section we describe the simple linker script commands. * Menu: * Entry Point:: Setting the entry point * File Commands:: Commands dealing with files * Format Commands:: Commands dealing with object file formats * Miscellaneous Commands:: Other linker script commands  File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands 3.4.1 Setting the Entry Point ----------------------------- The first instruction to execute in a program is called the "entry point". You can use the `ENTRY' linker script command to set the entry point. The argument is a symbol name: ENTRY(SYMBOL) There are several ways to set the entry point. The linker will set the entry point by trying each of the following methods in order, and stopping when one of them succeeds: * the `-e' ENTRY command-line option; * the `ENTRY(SYMBOL)' command in a linker script; * the value of the symbol `start', if defined; * the address of the first byte of the `.text' section, if present; * The address `0'.  File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands 3.4.2 Commands Dealing with Files --------------------------------- Several linker script commands deal with files. `INCLUDE FILENAME' Include the linker script FILENAME at this point. The file will be searched for in the current directory, and in any directory specified with the `-L' option. You can nest calls to `INCLUDE' up to 10 levels deep. You can place `INCLUDE' directives at the top level, in `MEMORY' or `SECTIONS' commands, or in output section descriptions. `INPUT(FILE, FILE, ...)' `INPUT(FILE FILE ...)' The `INPUT' command directs the linker to include the named files in the link, as though they were named on the command line. For example, if you always want to include `subr.o' any time you do a link, but you can't be bothered to put it on every link command line, then you can put `INPUT (subr.o)' in your linker script. In fact, if you like, you can list all of your input files in the linker script, and then invoke the linker with nothing but a `-T' option. In case a "sysroot prefix" is configured, and the filename starts with the `/' character, and the script being processed was located inside the "sysroot prefix", the filename will be looked for in the "sysroot prefix". Otherwise, the linker will try to open the file in the current directory. If it is not found, the linker will search through the archive library search path. See the description of `-L' in *Note Command Line Options: Options. If you use `INPUT (-lFILE)', `ld' will transform the name to `libFILE.a', as with the command line argument `-l'. When you use the `INPUT' command in an implicit linker script, the files will be included in the link at the point at which the linker script file is included. This can affect archive searching. `GROUP(FILE, FILE, ...)' `GROUP(FILE FILE ...)' The `GROUP' command is like `INPUT', except that the named files should all be archives, and they are searched repeatedly until no new undefined references are created. See the description of `-(' in *Note Command Line Options: Options. `AS_NEEDED(FILE, FILE, ...)' `AS_NEEDED(FILE FILE ...)' This construct can appear only inside of the `INPUT' or `GROUP' commands, among other filenames. The files listed will be handled as if they appear directly in the `INPUT' or `GROUP' commands, with the exception of ELF shared libraries, that will be added only when they are actually needed. This construct essentially enables `--as-needed' option for all the files listed inside of it and restores previous `--as-needed' resp. `--no-as-needed' setting afterwards. `OUTPUT(FILENAME)' The `OUTPUT' command names the output file. Using `OUTPUT(FILENAME)' in the linker script is exactly like using `-o FILENAME' on the command line (*note Command Line Options: Options.). If both are used, the command line option takes precedence. You can use the `OUTPUT' command to define a default name for the output file other than the usual default of `a.out'. `SEARCH_DIR(PATH)' The `SEARCH_DIR' command adds PATH to the list of paths where `ld' looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly like using `-L PATH' on the command line (*note Command Line Options: Options.). If both are used, then the linker will search both paths. Paths specified using the command line option are searched first. `STARTUP(FILENAME)' The `STARTUP' command is just like the `INPUT' command, except that FILENAME will become the first input file to be linked, as though it were specified first on the command line. This may be useful when using a system in which the entry point is always the start of the first file.  File: ld.info, Node: Format Commands, Next: Miscellaneous Commands, Prev: File Commands, Up: Simple Commands 3.4.3 Commands Dealing with Object File Formats ----------------------------------------------- A couple of linker script commands deal with object file formats. `OUTPUT_FORMAT(BFDNAME)' `OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)' The `OUTPUT_FORMAT' command names the BFD format to use for the output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is exactly like using `--oformat BFDNAME' on the command line (*note Command Line Options: Options.). If both are used, the command line option takes precedence. You can use `OUTPUT_FORMAT' with three arguments to use different formats based on the `-EB' and `-EL' command line options. This permits the linker script to set the output format based on the desired endianness. If neither `-EB' nor `-EL' are used, then the output format will be the first argument, DEFAULT. If `-EB' is used, the output format will be the second argument, BIG. If `-EL' is used, the output format will be the third argument, LITTLE. For example, the default linker script for the MIPS ELF target uses this command: OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips) This says that the default format for the output file is `elf32-bigmips', but if the user uses the `-EL' command line option, the output file will be created in the `elf32-littlemips' format. `TARGET(BFDNAME)' The `TARGET' command names the BFD format to use when reading input files. It affects subsequent `INPUT' and `GROUP' commands. This command is like using `-b BFDNAME' on the command line (*note Command Line Options: Options.). If the `TARGET' command is used but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also used to set the format for the output file. *Note BFD::.  File: ld.info, Node: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands 3.4.4 Other Linker Script Commands ---------------------------------- There are a few other linker scripts commands. `ASSERT(EXP, MESSAGE)' Ensure that EXP is non-zero. If it is zero, then exit the linker with an error code, and print MESSAGE. `EXTERN(SYMBOL SYMBOL ...)' Force SYMBOL to be entered in the output file as an undefined symbol. Doing this may, for example, trigger linking of additional modules from standard libraries. You may list several SYMBOLs for each `EXTERN', and you may use `EXTERN' multiple times. This command has the same effect as the `-u' command-line option. `FORCE_COMMON_ALLOCATION' This command has the same effect as the `-d' command-line option: to make `ld' assign space to common symbols even if a relocatable output file is specified (`-r'). `INHIBIT_COMMON_ALLOCATION' This command has the same effect as the `--no-define-common' command-line option: to make `ld' omit the assignment of addresses to common symbols even for a non-relocatable output file. `INSERT [ AFTER | BEFORE ] OUTPUT_SECTION' This command is typically used in a script specified by `-T' to augment the default `SECTIONS' with, for example, overlays. It inserts all prior linker script statements after (or before) OUTPUT_SECTION, and also causes `-T' to not override the default linker script. The exact insertion point is as for orphan sections. *Note Location Counter::. The insertion happens after the linker has mapped input sections to output sections. Prior to the insertion, since `-T' scripts are parsed before the default linker script, statements in the `-T' script occur before the default linker script statements in the internal linker representation of the script. In particular, input section assignments will be made to `-T' output sections before those in the default script. Here is an example of how a `-T' script using `INSERT' might look: SECTIONS { OVERLAY : { .ov1 { ov1*(.text) } .ov2 { ov2*(.text) } } } INSERT AFTER .text; `NOCROSSREFS(SECTION SECTION ...)' This command may be used to tell `ld' to issue an error about any references among certain output sections. In certain types of programs, particularly on embedded systems when using overlays, when one section is loaded into memory, another section will not be. Any direct references between the two sections would be errors. For example, it would be an error if code in one section called a function defined in the other section. The `NOCROSSREFS' command takes a list of output section names. If `ld' detects any cross references between the sections, it reports an error and returns a non-zero exit status. Note that the `NOCROSSREFS' command uses output section names, not input section names. `OUTPUT_ARCH(BFDARCH)' Specify a particular output machine architecture. The argument is one of the names used by the BFD library (*note BFD::). You can see the architecture of an object file by using the `objdump' program with the `-f' option.  File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts 3.5 Assigning Values to Symbols =============================== You may assign a value to a symbol in a linker script. This will define the symbol and place it into the symbol table with a global scope. * Menu: * Simple Assignments:: Simple Assignments * PROVIDE:: PROVIDE * PROVIDE_HIDDEN:: PROVIDE_HIDDEN * Source Code Reference:: How to use a linker script defined symbol in source code  File: ld.info, Node: Simple Assignments, Next: PROVIDE, Up: Assignments 3.5.1 Simple Assignments ------------------------ You may assign to a symbol using any of the C assignment operators: `SYMBOL = EXPRESSION ;' `SYMBOL += EXPRESSION ;' `SYMBOL -= EXPRESSION ;' `SYMBOL *= EXPRESSION ;' `SYMBOL /= EXPRESSION ;' `SYMBOL <<= EXPRESSION ;' `SYMBOL >>= EXPRESSION ;' `SYMBOL &= EXPRESSION ;' `SYMBOL |= EXPRESSION ;' The first case will define SYMBOL to the value of EXPRESSION. In the other cases, SYMBOL must already be defined, and the value will be adjusted accordingly. The special symbol name `.' indicates the location counter. You may only use this within a `SECTIONS' command. *Note Location Counter::. The semicolon after EXPRESSION is required. Expressions are defined below; see *Note Expressions::. You may write symbol assignments as commands in their own right, or as statements within a `SECTIONS' command, or as part of an output section description in a `SECTIONS' command. The section of the symbol will be set from the section of the expression; for more information, see *Note Expression Section::. Here is an example showing the three different places that symbol assignments may be used: floating_point = 0; SECTIONS { .text : { *(.text) _etext = .; } _bdata = (. + 3) & ~ 3; .data : { *(.data) } } In this example, the symbol `floating_point' will be defined as zero. The symbol `_etext' will be defined as the address following the last `.text' input section. The symbol `_bdata' will be defined as the address following the `.text' output section aligned upward to a 4 byte boundary.  File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: Simple Assignments, Up: Assignments 3.5.2 PROVIDE ------------- In some cases, it is desirable for a linker script to define a symbol only if it is referenced and is not defined by any object included in the link. For example, traditional linkers defined the symbol `etext'. However, ANSI C requires that the user be able to use `etext' as a function name without encountering an error. The `PROVIDE' keyword may be used to define a symbol, such as `etext', only if it is referenced but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'. Here is an example of using `PROVIDE' to define `etext': SECTIONS { .text : { *(.text) _etext = .; PROVIDE(etext = .); } } In this example, if the program defines `_etext' (with a leading underscore), the linker will give a multiple definition error. If, on the other hand, the program defines `etext' (with no leading underscore), the linker will silently use the definition in the program. If the program references `etext' but does not define it, the linker will use the definition in the linker script.  File: ld.info, Node: PROVIDE_HIDDEN, Next: Source Code Reference, Prev: PROVIDE, Up: Assignments 3.5.3 PROVIDE_HIDDEN -------------------- Similar to `PROVIDE'. For ELF targeted ports, the symbol will be hidden and won't be exported.  File: ld.info, Node: Source Code Reference, Prev: PROVIDE_HIDDEN, Up: Assignments 3.5.4 Source Code Reference --------------------------- Accessing a linker script defined variable from source code is not intuitive. In particular a linker script symbol is not equivalent to a variable declaration in a high level language, it is instead a symbol that does not have a value. Before going further, it is important to note that compilers often transform names in the source code into different names when they are stored in the symbol table. For example, Fortran compilers commonly prepend or append an underscore, and C++ performs extensive `name mangling'. Therefore there might be a discrepancy between the name of a variable as it is used in source code and the name of the same variable as it is defined in a linker script. For example in C a linker script variable might be referred to as: extern int foo; But in the linker script it might be defined as: _foo = 1000; In the remaining examples however it is assumed that no name transformation has taken place. When a symbol is declared in a high level language such as C, two things happen. The first is that the compiler reserves enough space in the program's memory to hold the _value_ of the symbol. The second is that the compiler creates an entry in the program's symbol table which holds the symbol's _address_. ie the symbol table contains the address of the block of memory holding the symbol's value. So for example the following C declaration, at file scope: int foo = 1000; creates a entry called `foo' in the symbol table. This entry holds the address of an `int' sized block of memory where the number 1000 is initially stored. When a program references a symbol the compiler generates code that first accesses the symbol table to find the address of the symbol's memory block and then code to read the value from that memory block. So: foo = 1; looks up the symbol `foo' in the symbol table, gets the address associated with this symbol and then writes the value 1 into that address. Whereas: int * a = & foo; looks up the symbol `foo' in the symbol table, gets it address and then copies this address into the block of memory associated with the variable `a'. Linker scripts symbol declarations, by contrast, create an entry in the symbol table but do not assign any memory to them. Thus they are an address without a value. So for example the linker script definition: foo = 1000; creates an entry in the symbol table called `foo' which holds the address of memory location 1000, but nothing special is stored at address 1000. This means that you cannot access the _value_ of a linker script defined symbol - it has no value - all you can do is access the _address_ of a linker script defined symbol. Hence when you are using a linker script defined symbol in source code you should always take the address of the symbol, and never attempt to use its value. For example suppose you want to copy the contents of a section of memory called .ROM into a section called .FLASH and the linker script contains these declarations: start_of_ROM = .ROM; end_of_ROM = .ROM + sizeof (.ROM) - 1; start_of_FLASH = .FLASH; Then the C source code to perform the copy would be: extern char start_of_ROM, end_of_ROM, start_of_FLASH; memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM); Note the use of the `&' operators. These are correct.  File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts 3.6 SECTIONS Command ==================== The `SECTIONS' command tells the linker how to map input sections into output sections, and how to place the output sections in memory. The format of the `SECTIONS' command is: SECTIONS { SECTIONS-COMMAND SECTIONS-COMMAND ... } Each SECTIONS-COMMAND may of be one of the following: * an `ENTRY' command (*note Entry command: Entry Point.) * a symbol assignment (*note Assignments::) * an output section description * an overlay description The `ENTRY' command and symbol assignments are permitted inside the `SECTIONS' command for convenience in using the location counter in those commands. This can also make the linker script easier to understand because you can use those commands at meaningful points in the layout of the output file. Output section descriptions and overlay descriptions are described below. If you do not use a `SECTIONS' command in your linker script, the linker will place each input section into an identically named output section in the order that the sections are first encountered in the input files. If all input sections are present in the first file, for example, the order of sections in the output file will match the order in the first input file. The first section will be at address zero. * Menu: * Output Section Description:: Output section description * Output Section Name:: Output section name * Output Section Address:: Output section address * Input Section:: Input section description * Output Section Data:: Output section data * Output Section Keywords:: Output section keywords * Output Section Discarding:: Output section discarding * Output Section Attributes:: Output section attributes * Overlay Description:: Overlay description  File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS 3.6.1 Output Section Description -------------------------------- The full description of an output section looks like this: SECTION [ADDRESS] [(TYPE)] : [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] { OUTPUT-SECTION-COMMAND OUTPUT-SECTION-COMMAND ... } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] Most output sections do not use most of the optional section attributes. The whitespace around SECTION is required, so that the section name is unambiguous. The colon and the curly braces are also required. The line breaks and other white space are optional. Each OUTPUT-SECTION-COMMAND may be one of the following: * a symbol assignment (*note Assignments::) * an input section description (*note Input Section::) * data values to include directly (*note Output Section Data::) * a special output section keyword (*note Output Section Keywords::)  File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS 3.6.2 Output Section Name ------------------------- The name of the output section is SECTION. SECTION must meet the constraints of your output format. In formats which only support a limited number of sections, such as `a.out', the name must be one of the names supported by the format (`a.out', for example, allows only `.text', `.data' or `.bss'). If the output format supports any number of sections, but with numbers and not names (as is the case for Oasys), the name should be supplied as a quoted numeric string. A section name may consist of any sequence of characters, but a name which contains any unusual characters such as commas must be quoted. The output section name `/DISCARD/' is special; *Note Output Section Discarding::.  File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS 3.6.3 Output Section Address ---------------------------- The ADDRESS is an expression for the VMA (the virtual memory address) of the output section. If you do not provide ADDRESS, the linker will set it based on REGION if present, or otherwise based on the current value of the location counter. If you provide ADDRESS, the address of the output section will be set to precisely that. If you provide neither ADDRESS nor REGION, then the address of the output section will be set to the current value of the location counter aligned to the alignment requirements of the output section. The alignment requirement of the output section is the strictest alignment of any input section contained within the output section. For example, .text . : { *(.text) } and .text : { *(.text) } are subtly different. The first will set the address of the `.text' output section to the current value of the location counter. The second will set it to the current value of the location counter aligned to the strictest alignment of a `.text' input section. The ADDRESS may be an arbitrary expression; *Note Expressions::. For example, if you want to align the section on a 0x10 byte boundary, so that the lowest four bits of the section address are zero, you could do something like this: .text ALIGN(0x10) : { *(.text) } This works because `ALIGN' returns the current location counter aligned upward to the specified value. Specifying ADDRESS for a section will change the value of the location counter.  File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS 3.6.4 Input Section Description ------------------------------- The most common output section command is an input section description. The input section description is the most basic linker script operation. You use output sections to tell the linker how to lay out your program in memory. You use input section descriptions to tell the linker how to map the input files into your memory layout. * Menu: * Input Section Basics:: Input section basics * Input Section Wildcards:: Input section wildcard patterns * Input Section Common:: Input section for common symbols * Input Section Keep:: Input section and garbage collection * Input Section Example:: Input section example  File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section 3.6.4.1 Input Section Basics ............................ An input section description consists of a file name optionally followed by a list of section names in parentheses. The file name and the section name may be wildcard patterns, which we describe further below (*note Input Section Wildcards::). The most common input section description is to include all input sections with a particular name in the output section. For example, to include all input `.text' sections, you would write: *(.text) Here the `*' is a wildcard which matches any file name. To exclude a list of files from matching the file name wildcard, EXCLUDE_FILE may be used to match all files except the ones specified in the EXCLUDE_FILE list. For example: *(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors) will cause all .ctors sections from all files except `crtend.o' and `otherfile.o' to be included. There are two ways to include more than one section: *(.text .rdata) *(.text) *(.rdata) The difference between these is the order in which the `.text' and `.rdata' input sections will appear in the output section. In the first example, they will be intermingled, appearing in the same order as they are found in the linker input. In the second example, all `.text' input sections will appear first, followed by all `.rdata' input sections. You can specify a file name to include sections from a particular file. You would do this if one or more of your files contain special data that needs to be at a particular location in memory. For example: data.o(.data) You can also specify files within archives by writing a pattern matching the archive, a colon, then the pattern matching the file, with no whitespace around the colon. `archive:file' matches file within archive `archive:' matches the whole archive `:file' matches file but not one in an archive Either one or both of `archive' and `file' can contain shell wildcards. On DOS based file systems, the linker will assume that a single letter followed by a colon is a drive specifier, so `c:myfile.o' is a simple file specification, not `myfile.o' within an archive called `c'. `archive:file' filespecs may also be used within an `EXCLUDE_FILE' list, but may not appear in other linker script contexts. For instance, you cannot extract a file from an archive by using `archive:file' in an `INPUT' command. If you use a file name without a list of sections, then all sections in the input file will be included in the output section. This is not commonly done, but it may by useful on occasion. For example: data.o When you use a file name which is not an `archive:file' specifier and does not contain any wild card characters, the linker will first see if you also specified the file name on the linker command line or in an `INPUT' command. If you did not, the linker will attempt to open the file as an input file, as though it appeared on the command line. Note that this differs from an `INPUT' command, because the linker will not search for the file in the archive search path.  File: ld.info, Node: Input Section Wildcards, Next: Input Section Common, Prev: Input Section Basics, Up: Input Section 3.6.4.2 Input Section Wildcard Patterns ....................................... In an input section description, either the file name or the section name or both may be wildcard patterns. The file name of `*' seen in many examples is a simple wildcard pattern for the file name. The wildcard patterns are like those used by the Unix shell. `*' matches any number of characters `?' matches any single character `[CHARS]' matches a single instance of any of the CHARS; the `-' character may be used to specify a range of characters, as in `[a-z]' to match any lower case letter `\' quotes the following character When a file name is matched with a wildcard, the wildcard characters will not match a `/' character (used to separate directory names on Unix). A pattern consisting of a single `*' character is an exception; it will always match any file name, whether it contains a `/' or not. In a section name, the wildcard characters will match a `/' character. File name wildcard patterns only match files which are explicitly specified on the command line or in an `INPUT' command. The linker does not search directories to expand wildcards. If a file name matches more than one wildcard pattern, or if a file name appears explicitly and is also matched by a wildcard pattern, the linker will use the first match in the linker script. For example, this sequence of input section descriptions is probably in error, because the `data.o' rule will not be used: .data : { *(.data) } .data1 : { data.o(.data) } Normally, the linker will place files and sections matched by wildcards in the order in which they are seen during the link. You can change this by using the `SORT_BY_NAME' keyword, which appears before a wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)'). When the `SORT_BY_NAME' keyword is used, the linker will sort the files or sections into ascending order by name before placing them in the output file. `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The difference is `SORT_BY_ALIGNMENT' will sort sections into ascending order by alignment before placing them in the output file. `SORT' is an alias for `SORT_BY_NAME'. When there are nested section sorting commands in linker script, there can be at most 1 level of nesting for section sorting commands. 1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)). It will sort the input sections by name first, then by alignment if 2 sections have the same name. 2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)). It will sort the input sections by alignment first, then by name if 2 sections have the same alignment. 3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is treated the same as `SORT_BY_NAME' (wildcard section pattern). 4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard section pattern). 5. All other nested section sorting commands are invalid. When both command line section sorting option and linker script section sorting command are used, section sorting command always takes precedence over the command line option. If the section sorting command in linker script isn't nested, the command line option will make the section sorting command to be treated as nested sorting command. 1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)). 2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)). If the section sorting command in linker script is nested, the command line option will be ignored. If you ever get confused about where input sections are going, use the `-M' linker option to generate a map file. The map file shows precisely how input sections are mapped to output sections. This example shows how wildcard patterns might be used to partition files. This linker script directs the linker to place all `.text' sections in `.text' and all `.bss' sections in `.bss'. The linker will place the `.data' section from all files beginning with an upper case character in `.DATA'; for all other files, the linker will place the `.data' section in `.data'. SECTIONS { .text : { *(.text) } .DATA : { [A-Z]*(.data) } .data : { *(.data) } .bss : { *(.bss) } }  File: ld.info, Node: Input Section Common, Next: Input Section Keep, Prev: Input Section Wildcards, Up: Input Section 3.6.4.3 Input Section for Common Symbols ........................................ A special notation is needed for common symbols, because in many object file formats common symbols do not have a particular input section. The linker treats common symbols as though they are in an input section named `COMMON'. You may use file names with the `COMMON' section just as with any other input sections. You can use this to place common symbols from a particular input file in one section while common symbols from other input files are placed in another section. In most cases, common symbols in input files will be placed in the `.bss' section in the output file. For example: .bss { *(.bss) *(COMMON) } Some object file formats have more than one type of common symbol. For example, the MIPS ELF object file format distinguishes standard common symbols and small common symbols. In this case, the linker will use a different special section name for other types of common symbols. In the case of MIPS ELF, the linker uses `COMMON' for standard common symbols and `.scommon' for small common symbols. This permits you to map the different types of common symbols into memory at different locations. You will sometimes see `[COMMON]' in old linker scripts. This notation is now considered obsolete. It is equivalent to `*(COMMON)'.  File: ld.info, Node: Input Section Keep, Next: Input Section Example, Prev: Input Section Common, Up: Input Section 3.6.4.4 Input Section and Garbage Collection ............................................ When link-time garbage collection is in use (`--gc-sections'), it is often useful to mark sections that should not be eliminated. This is accomplished by surrounding an input section's wildcard entry with `KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'.  File: ld.info, Node: Input Section Example, Prev: Input Section Keep, Up: Input Section 3.6.4.5 Input Section Example ............................. The following example is a complete linker script. It tells the linker to read all of the sections from file `all.o' and place them at the start of output section `outputa' which starts at location `0x10000'. All of section `.input1' from file `foo.o' follows immediately, in the same output section. All of section `.input2' from `foo.o' goes into output section `outputb', followed by section `.input1' from `foo1.o'. All of the remaining `.input1' and `.input2' sections from any files are written to output section `outputc'. SECTIONS { outputa 0x10000 : { all.o foo.o (.input1) } outputb : { foo.o (.input2) foo1.o (.input1) } outputc : { *(.input1) *(.input2) } }  File: ld.info, Node: Output Section Data, Next: Output Section Keywords, Prev: Input Section, Up: SECTIONS 3.6.5 Output Section Data ------------------------- You can include explicit bytes of data in an output section by using `BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section command. Each keyword is followed by an expression in parentheses providing the value to store (*note Expressions::). The value of the expression is stored at the current value of the location counter. The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two, four, and eight bytes (respectively). After storing the bytes, the location counter is incremented by the number of bytes stored. For example, this will store the byte 1 followed by the four byte value of the symbol `addr': BYTE(1) LONG(addr) When using a 64 bit host or target, `QUAD' and `SQUAD' are the same; they both store an 8 byte, or 64 bit, value. When both host and target are 32 bits, an expression is computed as 32 bits. In this case `QUAD' stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32 bit value sign extended to 64 bits. If the object file format of the output file has an explicit endianness, which is the normal case, the value will be stored in that endianness. When the object file format does not have an explicit endianness, as is true of, for example, S-records, the value will be stored in the endianness of the first input object file. Note--these commands only work inside a section description and not between them, so the following will produce an error from the linker: SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } } whereas this will work: SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } } You may use the `FILL' command to set the fill pattern for the current section. It is followed by an expression in parentheses. Any otherwise unspecified regions of memory within the section (for example, gaps left due to the required alignment of input sections) are filled with the value of the expression, repeated as necessary. A `FILL' statement covers memory locations after the point at which it occurs in the section definition; by including more than one `FILL' statement, you can have different fill patterns in different parts of an output section. This example shows how to fill unspecified regions of memory with the value `0x90': FILL(0x90909090) The `FILL' command is similar to the `=FILLEXP' output section attribute, but it only affects the part of the section following the `FILL' command, rather than the entire section. If both are used, the `FILL' command takes precedence. *Note Output Section Fill::, for details on the fill expression.  File: ld.info, Node: Output Section Keywords, Next: Output Section Discarding, Prev: Output Section Data, Up: SECTIONS 3.6.6 Output Section Keywords ----------------------------- There are a couple of keywords which can appear as output section commands. `CREATE_OBJECT_SYMBOLS' The command tells the linker to create a symbol for each input file. The name of each symbol will be the name of the corresponding input file. The section of each symbol will be the output section in which the `CREATE_OBJECT_SYMBOLS' command appears. This is conventional for the a.out object file format. It is not normally used for any other object file format. `CONSTRUCTORS' When linking using the a.out object file format, the linker uses an unusual set construct to support C++ global constructors and destructors. When linking object file formats which do not support arbitrary sections, such as ECOFF and XCOFF, the linker will automatically recognize C++ global constructors and destructors by name. For these object file formats, the `CONSTRUCTORS' command tells the linker to place constructor information in the output section where the `CONSTRUCTORS' command appears. The `CONSTRUCTORS' command is ignored for other object file formats. The symbol `__CTOR_LIST__' marks the start of the global constructors, and the symbol `__CTOR_END__' marks the end. Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and end of the global destructors. The first word in the list is the number of entries, followed by the address of each constructor or destructor, followed by a zero word. The compiler must arrange to actually run the code. For these object file formats GNU C++ normally calls constructors from a subroutine `__main'; a call to `__main' is automatically inserted into the startup code for `main'. GNU C++ normally runs destructors either by using `atexit', or directly from the function `exit'. For object file formats such as `COFF' or `ELF' which support arbitrary section names, GNU C++ will normally arrange to put the addresses of global constructors and destructors into the `.ctors' and `.dtors' sections. Placing the following sequence into your linker script will build the sort of table which the GNU C++ runtime code expects to see. __CTOR_LIST__ = .; LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) *(.ctors) LONG(0) __CTOR_END__ = .; __DTOR_LIST__ = .; LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) *(.dtors) LONG(0) __DTOR_END__ = .; If you are using the GNU C++ support for initialization priority, which provides some control over the order in which global constructors are run, you must sort the constructors at link time to ensure that they are executed in the correct order. When using the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)' instead. When using the `.ctors' and `.dtors' sections, use `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of just `*(.ctors)' and `*(.dtors)'. Normally the compiler and linker will handle these issues automatically, and you will not need to concern yourself with them. However, you may need to consider this if you are using C++ and writing your own linker scripts.  File: ld.info, Node: Output Section Discarding, Next: Output Section Attributes, Prev: Output Section Keywords, Up: SECTIONS 3.6.7 Output Section Discarding ------------------------------- The linker will not create output sections with no contents. This is for convenience when referring to input sections that may or may not be present in any of the input files. For example: .foo : { *(.foo) } will only create a `.foo' section in the output file if there is a `.foo' section in at least one input file, and if the input sections are not all empty. Other link script directives that allocate space in an output section will also create the output section. The linker will ignore address assignments (*note Output Section Address::) on discarded output sections, except when the linker script defines symbols in the output section. In that case the linker will obey the address assignments, possibly advancing dot even though the section is discarded. The special output section name `/DISCARD/' may be used to discard input sections. Any input sections which are assigned to an output section named `/DISCARD/' are not included in the output file.  File: ld.info, Node: Output Section Attributes, Next: Overlay Description, Prev: Output Section Discarding, Up: SECTIONS 3.6.8 Output Section Attributes ------------------------------- We showed above that the full description of an output section looked like this: SECTION [ADDRESS] [(TYPE)] : [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] { OUTPUT-SECTION-COMMAND OUTPUT-SECTION-COMMAND ... } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] We've already described SECTION, ADDRESS, and OUTPUT-SECTION-COMMAND. In this section we will describe the remaining section attributes. * Menu: * Output Section Type:: Output section type * Output Section LMA:: Output section LMA * Forced Output Alignment:: Forced Output Alignment * Forced Input Alignment:: Forced Input Alignment * Output Section Region:: Output section region * Output Section Phdr:: Output section phdr * Output Section Fill:: Output section fill  File: ld.info, Node: Output Section Type, Next: Output Section LMA, Up: Output Section Attributes 3.6.8.1 Output Section Type ........................... Each output section may have a type. The type is a keyword in parentheses. The following types are defined: `NOLOAD' The section should be marked as not loadable, so that it will not be loaded into memory when the program is run. `DSECT' `COPY' `INFO' `OVERLAY' These type names are supported for backward compatibility, and are rarely used. They all have the same effect: the section should be marked as not allocatable, so that no memory is allocated for the section when the program is run. The linker normally sets the attributes of an output section based on the input sections which map into it. You can override this by using the section type. For example, in the script sample below, the `ROM' section is addressed at memory location `0' and does not need to be loaded when the program is run. The contents of the `ROM' section will appear in the linker output file as usual. SECTIONS { ROM 0 (NOLOAD) : { ... } ... }  File: ld.info, Node: Output Section LMA, Next: Forced Output Alignment, Prev: Output Section Type, Up: Output Section Attributes 3.6.8.2 Output Section LMA .......................... Every section has a virtual address (VMA) and a load address (LMA); see *Note Basic Script Concepts::. The address expression which may appear in an output section description sets the VMA (*note Output Section Address::). The expression LMA that follows the `AT' keyword specifies the load address of the section. Alternatively, with `AT>LMA_REGION' expression, you may specify a memory region for the section's load address. *Note MEMORY::. Note that if the section has not had a VMA assigned to it then the linker will use the LMA_REGION as the VMA region as well. If neither `AT' nor `AT>' is specified for an allocatable section, the linker will set the LMA such that the difference between VMA and LMA for the section is the same as the preceding output section in the same region. If there is no preceding output section or the section is not allocatable, the linker will set the LMA equal to the VMA. *Note Output Section Region::. This feature is designed to make it easy to build a ROM image. For example, the following linker script creates three output sections: one called `.text', which starts at `0x1000', one called `.mdata', which is loaded at the end of the `.text' section even though its VMA is `0x2000', and one called `.bss' to hold uninitialized data at address `0x3000'. The symbol `_data' is defined with the value `0x2000', which shows that the location counter holds the VMA value, not the LMA value. SECTIONS { .text 0x1000 : { *(.text) _etext = . ; } .mdata 0x2000 : AT ( ADDR (.text) + SIZEOF (.text) ) { _data = . ; *(.data); _edata = . ; } .bss 0x3000 : { _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;} } The run-time initialization code for use with a program generated with this linker script would include something like the following, to copy the initialized data from the ROM image to its runtime address. Notice how this code takes advantage of the symbols defined by the linker script. extern char _etext, _data, _edata, _bstart, _bend; char *src = &_etext; char *dst = &_data; /* ROM has data at end of text; copy it. */ while (dst < &_edata) { *dst++ = *src++; } /* Zero bss */ for (dst = &_bstart; dst< &_bend; dst++) *dst = 0;  File: ld.info, Node: Forced Output Alignment, Next: Forced Input Alignment, Prev: Output Section LMA, Up: Output Section Attributes 3.6.8.3 Forced Output Alignment ............................... You can increase an output section's alignment by using ALIGN.  File: ld.info, Node: Forced Input Alignment, Next: Output Section Region, Prev: Forced Output Alignment, Up: Output Section Attributes 3.6.8.4 Forced Input Alignment .............................. You can force input section alignment within an output section by using SUBALIGN. The value specified overrides any alignment given by input sections, whether larger or smaller.  File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Forced Input Alignment, Up: Output Section Attributes 3.6.8.5 Output Section Region ............................. You can assign a section to a previously defined region of memory by using `>REGION'. *Note MEMORY::. Here is a simple example: MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 } SECTIONS { ROM : { *(.text) } >rom }  File: ld.info, Node: Output Section Phdr, Next: Output Section Fill, Prev: Output Section Region, Up: Output Section Attributes 3.6.8.6 Output Section Phdr ........................... You can assign a section to a previously defined program segment by using `:PHDR'. *Note PHDRS::. If a section is assigned to one or more segments, then all subsequent allocated sections will be assigned to those segments as well, unless they use an explicitly `:PHDR' modifier. You can use `:NONE' to tell the linker to not put the section in any segment at all. Here is a simple example: PHDRS { text PT_LOAD ; } SECTIONS { .text : { *(.text) } :text }  File: ld.info, Node: Output Section Fill, Prev: Output Section Phdr, Up: Output Section Attributes 3.6.8.7 Output Section Fill ........................... You can set the fill pattern for an entire section by using `=FILLEXP'. FILLEXP is an expression (*note Expressions::). Any otherwise unspecified regions of memory within the output section (for example, gaps left due to the required alignment of input sections) will be filled with the value, repeated as necessary. If the fill expression is a simple hex number, ie. a string of hex digit starting with `0x' and without a trailing `k' or `M', then an arbitrarily long sequence of hex digits can be used to specify the fill pattern; Leading zeros become part of the pattern too. For all other cases, including extra parentheses or a unary `+', the fill pattern is the four least significant bytes of the value of the expression. In all cases, the number is big-endian. You can also change the fill value with a `FILL' command in the output section commands; (*note Output Section Data::). Here is a simple example: SECTIONS { .text : { *(.text) } =0x90909090 }  File: ld.info, Node: Overlay Description, Prev: Output Section Attributes, Up: SECTIONS 3.6.9 Overlay Description ------------------------- An overlay description provides an easy way to describe sections which are to be loaded as part of a single memory image but are to be run at the same memory address. At run time, some sort of overlay manager will copy the overlaid sections in and out of the runtime memory address as required, perhaps by simply manipulating addressing bits. This approach can be useful, for example, when a certain region of memory is faster than another. Overlays are described using the `OVERLAY' command. The `OVERLAY' command is used within a `SECTIONS' command, like an output section description. The full syntax of the `OVERLAY' command is as follows: OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )] { SECNAME1 { OUTPUT-SECTION-COMMAND OUTPUT-SECTION-COMMAND ... } [:PHDR...] [=FILL] SECNAME2 { OUTPUT-SECTION-COMMAND OUTPUT-SECTION-COMMAND ... } [:PHDR...] [=FILL] ... } [>REGION] [:PHDR...] [=FILL] Everything is optional except `OVERLAY' (a keyword), and each section must have a name (SECNAME1 and SECNAME2 above). The section definitions within the `OVERLAY' construct are identical to those within the general `SECTIONS' contruct (*note SECTIONS::), except that no addresses and no memory regions may be defined for sections within an `OVERLAY'. The sections are all defined with the same starting address. The load addresses of the sections are arranged such that they are consecutive in memory starting at the load address used for the `OVERLAY' as a whole (as with normal section definitions, the load address is optional, and defaults to the start address; the start address is also optional, and defaults to the current value of the location counter). If the `NOCROSSREFS' keyword is used, and there any references among the sections, the linker will report an error. Since the sections all run at the same address, it normally does not make sense for one section to refer directly to another. *Note NOCROSSREFS: Miscellaneous Commands. For each section within the `OVERLAY', the linker automatically provides two symbols. The symbol `__load_start_SECNAME' is defined as the starting load address of the section. The symbol `__load_stop_SECNAME' is defined as the final load address of the section. Any characters within SECNAME which are not legal within C identifiers are removed. C (or assembler) code may use these symbols to move the overlaid sections around as necessary. At the end of the overlay, the value of the location counter is set to the start address of the overlay plus the size of the largest section. Here is an example. Remember that this would appear inside a `SECTIONS' construct. OVERLAY 0x1000 : AT (0x4000) { .text0 { o1/*.o(.text) } .text1 { o2/*.o(.text) } } This will define both `.text0' and `.text1' to start at address 0x1000. `.text0' will be loaded at address 0x4000, and `.text1' will be loaded immediately after `.text0'. The following symbols will be defined if referenced: `__load_start_text0', `__load_stop_text0', `__load_start_text1', `__load_stop_text1'. C code to copy overlay `.text1' into the overlay area might look like the following. extern char __load_start_text1, __load_stop_text1; memcpy ((char *) 0x1000, &__load_start_text1, &__load_stop_text1 - &__load_start_text1); Note that the `OVERLAY' command is just syntactic sugar, since everything it does can be done using the more basic commands. The above example could have been written identically as follows. .text0 0x1000 : AT (0x4000) { o1/*.o(.text) } PROVIDE (__load_start_text0 = LOADADDR (.text0)); PROVIDE (__load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0)); .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) } PROVIDE (__load_start_text1 = LOADADDR (.text1)); PROVIDE (__load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1)); . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));  File: ld.info, Node: MEMORY, Next: PHDRS, Prev: SECTIONS, Up: Scripts 3.7 MEMORY Command ================== The linker's default configuration permits allocation of all available memory. You can override this by using the `MEMORY' command. The `MEMORY' command describes the location and size of blocks of memory in the target. You can use it to describe which memory regions may be used by the linker, and which memory regions it must avoid. You can then assign sections to particular memory regions. The linker will set section addresses based on the memory regions, and will warn about regions that become too full. The linker will not shuffle sections around to fit into the available regions. A linker script may contain at most one use of the `MEMORY' command. However, you can define as many blocks of memory within it as you wish. The syntax is: MEMORY { NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN ... } The NAME is a name used in the linker script to refer to the region. The region name has no meaning outside of the linker script. Region names are stored in a separate name space, and will not conflict with symbol names, file names, or section names. Each memory region must have a distinct name. The ATTR string is an optional list of attributes that specify whether to use a particular memory region for an input section which is not explicitly mapped in the linker script. As described in *Note SECTIONS::, if you do not specify an output section for some input section, the linker will create an output section with the same name as the input section. If you define region attributes, the linker will use them to select the memory region for the output section that it creates. The ATTR string must consist only of the following characters: `R' Read-only section `W' Read/write section `X' Executable section `A' Allocatable section `I' Initialized section `L' Same as `I' `!' Invert the sense of any of the preceding attributes If a unmapped section matches any of the listed attributes other than `!', it will be placed in the memory region. The `!' attribute reverses this test, so that an unmapped section will be placed in the memory region only if it does not match any of the listed attributes. The ORIGIN is an numerical expression for the start address of the memory region. The expression must evaluate to a constant and it cannot involve any symbols. The keyword `ORIGIN' may be abbreviated to `org' or `o' (but not, for example, `ORG'). The LEN is an expression for the size in bytes of the memory region. As with the ORIGIN expression, the expression must be numerical only and must evaluate to a constant. The keyword `LENGTH' may be abbreviated to `len' or `l'. In the following example, we specify that there are two memory regions available for allocation: one starting at `0' for 256 kilobytes, and the other starting at `0x40000000' for four megabytes. The linker will place into the `rom' memory region every section which is not explicitly mapped into a memory region, and is either read-only or executable. The linker will place other sections which are not explicitly mapped into a memory region into the `ram' memory region. MEMORY { rom (rx) : ORIGIN = 0, LENGTH = 256K ram (!rx) : org = 0x40000000, l = 4M } Once you define a memory region, you can direct the linker to place specific output sections into that memory region by using the `>REGION' output section attribute. For example, if you have a memory region named `mem', you would use `>mem' in the output section definition. *Note Output Section Region::. If no address was specified for the output section, the linker will set the address to the next available address within the memory region. If the combined output sections directed to a memory region are too large for the region, the linker will issue an error message. It is possible to access the origin and length of a memory in an expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions: _fstack = ORIGIN(ram) + LENGTH(ram) - 4;  File: ld.info, Node: PHDRS, Next: VERSION, Prev: MEMORY, Up: Scripts 3.8 PHDRS Command ================= The ELF object file format uses "program headers", also knows as "segments". The program headers describe how the program should be loaded into memory. You can print them out by using the `objdump' program with the `-p' option. When you run an ELF program on a native ELF system, the system loader reads the program headers in order to figure out how to load the program. This will only work if the program headers are set correctly. This manual does not describe the details of how the system loader interprets program headers; for more information, see the ELF ABI. The linker will create reasonable program headers by default. However, in some cases, you may need to specify the program headers more precisely. You may use the `PHDRS' command for this purpose. When the linker sees the `PHDRS' command in the linker script, it will not create any program headers other than the ones specified. The linker only pays attention to the `PHDRS' command when generating an ELF output file. In other cases, the linker will simply ignore `PHDRS'. This is the syntax of the `PHDRS' command. The words `PHDRS', `FILEHDR', `AT', and `FLAGS' are keywords. PHDRS { NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ] [ FLAGS ( FLAGS ) ] ; } The NAME is used only for reference in the `SECTIONS' command of the linker script. It is not put into the output file. Program header names are stored in a separate name space, and will not conflict with symbol names, file names, or section names. Each program header must have a distinct name. Certain program header types describe segments of memory which the system loader will load from the file. In the linker script, you specify the contents of these segments by placing allocatable output sections in the segments. You use the `:PHDR' output section attribute to place a section in a particular segment. *Note Output Section Phdr::. It is normal to put certain sections in more than one segment. This merely implies that one segment of memory contains another. You may repeat `:PHDR', using it once for each segment which should contain the section. If you place a section in one or more segments using `:PHDR', then the linker will place all subsequent allocatable sections which do not specify `:PHDR' in the same segments. This is for convenience, since generally a whole set of contiguous sections will be placed in a single segment. You can use `:NONE' to override the default segment and tell the linker to not put the section in any segment at all. You may use the `FILEHDR' and `PHDRS' keywords appear after the program header type to further describe the contents of the segment. The `FILEHDR' keyword means that the segment should include the ELF file header. The `PHDRS' keyword means that the segment should include the ELF program headers themselves. The TYPE may be one of the following. The numbers indicate the value of the keyword. `PT_NULL' (0) Indicates an unused program header. `PT_LOAD' (1) Indicates that this program header describes a segment to be loaded from the file. `PT_DYNAMIC' (2) Indicates a segment where dynamic linking information can be found. `PT_INTERP' (3) Indicates a segment where the name of the program interpreter may be found. `PT_NOTE' (4) Indicates a segment holding note information. `PT_SHLIB' (5) A reserved program header type, defined but not specified by the ELF ABI. `PT_PHDR' (6) Indicates a segment where the program headers may be found. EXPRESSION An expression giving the numeric type of the program header. This may be used for types not defined above. You can specify that a segment should be loaded at a particular address in memory by using an `AT' expression. This is identical to the `AT' command used as an output section attribute (*note Output Section LMA::). The `AT' command for a program header overrides the output section attribute. The linker will normally set the segment flags based on the sections which comprise the segment. You may use the `FLAGS' keyword to explicitly specify the segment flags. The value of FLAGS must be an integer. It is used to set the `p_flags' field of the program header. Here is an example of `PHDRS'. This shows a typical set of program headers used on a native ELF system. PHDRS { headers PT_PHDR PHDRS ; interp PT_INTERP ; text PT_LOAD FILEHDR PHDRS ; data PT_LOAD ; dynamic PT_DYNAMIC ; } SECTIONS { . = SIZEOF_HEADERS; .interp : { *(.interp) } :text :interp .text : { *(.text) } :text .rodata : { *(.rodata) } /* defaults to :text */ ... . = . + 0x1000; /* move to a new page in memory */ .data : { *(.data) } :data .dynamic : { *(.dynamic) } :data :dynamic ... }  File: ld.info, Node: VERSION, Next: Expressions, Prev: PHDRS, Up: Scripts 3.9 VERSION Command =================== The linker supports symbol versions when using ELF. Symbol versions are only useful when using shared libraries. The dynamic linker can use symbol versions to select a specific version of a function when it runs a program that may have been linked against an earlier version of the shared library. You can include a version script directly in the main linker script, or you can supply the version script as an implicit linker script. You can also use the `--version-script' linker option. The syntax of the `VERSION' command is simply VERSION { version-script-commands } The format of the version script commands is identical to that used by Sun's linker in Solaris 2.5. The version script defines a tree of version nodes. You specify the node names and interdependencies in the version script. You can specify which symbols are bound to which version nodes, and you can reduce a specified set of symbols to local scope so that they are not globally visible outside of the shared library. The easiest way to demonstrate the version script language is with a few examples. VERS_1.1 { global: foo1; local: old*; original*; new*; }; VERS_1.2 { foo2; } VERS_1.1; VERS_2.0 { bar1; bar2; extern "C++" { ns::*; "int f(int, double)"; } } VERS_1.2; This example version script defines three version nodes. The first version node defined is `VERS_1.1'; it has no other dependencies. The script binds the symbol `foo1' to `VERS_1.1'. It reduces a number of symbols to local scope so that they are not visible outside of the shared library; this is done using wildcard patterns, so that any symbol whose name begins with `old', `original', or `new' is matched. The wildcard patterns available are the same as those used in the shell when matching filenames (also known as "globbing"). However, if you specify the symbol name inside double quotes, then the name is treated as literal, rather than as a glob pattern. Next, the version script defines node `VERS_1.2'. This node depends upon `VERS_1.1'. The script binds the symbol `foo2' to the version node `VERS_1.2'. Finally, the version script defines node `VERS_2.0'. This node depends upon `VERS_1.2'. The scripts binds the symbols `bar1' and `bar2' are bound to the version node `VERS_2.0'. When the linker finds a symbol defined in a library which is not specifically bound to a version node, it will effectively bind it to an unspecified base version of the library. You can bind all otherwise unspecified symbols to a given version node by using `global: *;' somewhere in the version script. The names of the version nodes have no specific meaning other than what they might suggest to the person reading them. The `2.0' version could just as well have appeared in between `1.1' and `1.2'. However, this would be a confusing way to write a version script. Node name can be omitted, provided it is the only version node in the version script. Such version script doesn't assign any versions to symbols, only selects which symbols will be globally visible out and which won't. { global: foo; bar; local: *; }; When you link an application against a shared library that has versioned symbols, the application itself knows which version of each symbol it requires, and it also knows which version nodes it needs from each shared library it is linked against. Thus at runtime, the dynamic loader can make a quick check to make sure that the libraries you have linked against do in fact supply all of the version nodes that the application will need to resolve all of the dynamic symbols. In this way it is possible for the dynamic linker to know with certainty that all external symbols that it needs will be resolvable without having to search for each symbol reference. The symbol versioning is in effect a much more sophisticated way of doing minor version checking that SunOS does. The fundamental problem that is being addressed here is that typically references to external functions are bound on an as-needed basis, and are not all bound when the application starts up. If a shared library is out of date, a required interface may be missing; when the application tries to use that interface, it may suddenly and unexpectedly fail. With symbol versioning, the user will get a warning when they start their program if the libraries being used with the application are too old. There are several GNU extensions to Sun's versioning approach. The first of these is the ability to bind a symbol to a version node in the source file where the symbol is defined instead of in the versioning script. This was done mainly to reduce the burden on the library maintainer. You can do this by putting something like: __asm__(".symver original_foo,foo@@VERS_1.1"); in the C source file. This renames the function `original_foo' to be an alias for `foo' bound to the version node `VERS_1.1'. The `local:' directive can be used to prevent the symbol `original_foo' from being exported. A `.symver' directive takes precedence over a version script. The second GNU extension is to allow multiple versions of the same function to appear in a given shared library. In this way you can make an incompatible change to an interface without increasing the major version number of the shared library, while still allowing applications linked against the old interface to continue to function. To do this, you must use multiple `.symver' directives in the source file. Here is an example: __asm__(".symver original_foo,foo@@"); __asm__(".symver old_foo,foo@@VERS_1.1"); __asm__(".symver old_foo1,foo@@VERS_1.2"); __asm__(".symver new_foo,foo@@@@VERS_2.0"); In this example, `foo@@' represents the symbol `foo' bound to the unspecified base version of the symbol. The source file that contains this example would define 4 C functions: `original_foo', `old_foo', `old_foo1', and `new_foo'. When you have multiple definitions of a given symbol, there needs to be some way to specify a default version to which external references to this symbol will be bound. You can do this with the `foo@@@@VERS_2.0' type of `.symver' directive. You can only declare one version of a symbol as the default in this manner; otherwise you would effectively have multiple definitions of the same symbol. If you wish to bind a reference to a specific version of the symbol within the shared library, you can use the aliases of convenience (i.e., `old_foo'), or you can use the `.symver' directive to specifically bind to an external version of the function in question. You can also specify the language in the version script: VERSION extern "lang" { version-script-commands } The supported `lang's are `C', `C++', and `Java'. The linker will iterate over the list of symbols at the link time and demangle them according to `lang' before matching them to the patterns specified in `version-script-commands'. Demangled names may contains spaces and other special characters. As described above, you can use a glob pattern to match demangled names, or you can use a double-quoted string to match the string exactly. In the latter case, be aware that minor differences (such as differing whitespace) between the version script and the demangler output will cause a mismatch. As the exact string generated by the demangler might change in the future, even if the mangled name does not, you should check that all of your version directives are behaving as you expect when you upgrade.  File: ld.info, Node: Expressions, Next: Implicit Linker Scripts, Prev: VERSION, Up: Scripts 3.10 Expressions in Linker Scripts ================================== The syntax for expressions in the linker script language is identical to that of C expressions. All expressions are evaluated as integers. All expressions are evaluated in the same size, which is 32 bits if both the host and target are 32 bits, and is otherwise 64 bits. You can use and set symbol values in expressions. The linker defines several special purpose builtin functions for use in expressions. * Menu: * Constants:: Constants * Symbols:: Symbol Names * Orphan Sections:: Orphan Sections * Location Counter:: The Location Counter * Operators:: Operators * Evaluation:: Evaluation * Expression Section:: The Section of an Expression * Builtin Functions:: Builtin Functions  File: ld.info, Node: Constants, Next: Symbols, Up: Expressions 3.10.1 Constants ---------------- All constants are integers. As in C, the linker considers an integer beginning with `0' to be octal, and an integer beginning with `0x' or `0X' to be hexadecimal. The linker considers other integers to be decimal. In addition, you can use the suffixes `K' and `M' to scale a constant by `1024' or `1024*1024' respectively. For example, the following all refer to the same quantity: _fourk_1 = 4K; _fourk_2 = 4096; _fourk_3 = 0x1000;  File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Constants, Up: Expressions 3.10.2 Symbol Names ------------------- Unless quoted, symbol names start with a letter, underscore, or period and may include letters, digits, underscores, periods, and hyphens. Unquoted symbol names must not conflict with any keywords. You can specify a symbol which contains odd characters or has the same name as a keyword by surrounding the symbol name in double quotes: "SECTION" = 9; "with a space" = "also with a space" + 10; Since symbols can contain many non-alphabetic characters, it is safest to delimit symbols with spaces. For example, `A-B' is one symbol, whereas `A - B' is an expression involving subtraction.  File: ld.info, Node: Orphan Sections, Next: Location Counter, Prev: Symbols, Up: Expressions 3.10.3 Orphan Sections ---------------------- Orphan sections are sections present in the input files which are not explicitly placed into the output file by the linker script. The linker will still copy these sections into the output file, but it has to guess as to where they should be placed. The linker uses a simple heuristic to do this. It attempts to place orphan sections after non-orphan sections of the same attribute, such as code vs data, loadable vs non-loadable, etc. If there is not enough room to do this then it places at the end of the file. For ELF targets, the attribute of the section includes section type as well as section flag. If an orphaned section's name is representable as a C identifier then the linker will automatically *note PROVIDE:: two symbols: __start_SECNAME and __end_SECNAME, where SECNAME is the name of the section. These indicate the start address and end address of the orphaned section respectively. Note: most section names are not representable as C identifiers because they contain a `.' character.  File: ld.info, Node: Location Counter, Next: Operators, Prev: Orphan Sections, Up: Expressions 3.10.4 The Location Counter --------------------------- The special linker variable "dot" `.' always contains the current output location counter. Since the `.' always refers to a location in an output section, it may only appear in an expression within a `SECTIONS' command. The `.' symbol may appear anywhere that an ordinary symbol is allowed in an expression. Assigning a value to `.' will cause the location counter to be moved. This may be used to create holes in the output section. The location counter may not be moved backwards inside an output section, and may not be moved backwards outside of an output section if so doing creates areas with overlapping LMAs. SECTIONS { output : { file1(.text) . = . + 1000; file2(.text) . += 1000; file3(.text) } = 0x12345678; } In the previous example, the `.text' section from `file1' is located at the beginning of the output section `output'. It is followed by a 1000 byte gap. Then the `.text' section from `file2' appears, also with a 1000 byte gap following before the `.text' section from `file3'. The notation `= 0x12345678' specifies what data to write in the gaps (*note Output Section Fill::). Note: `.' actually refers to the byte offset from the start of the current containing object. Normally this is the `SECTIONS' statement, whose start address is 0, hence `.' can be used as an absolute address. If `.' is used inside a section description however, it refers to the byte offset from the start of that section, not an absolute address. Thus in a script like this: SECTIONS { . = 0x100 .text: { *(.text) . = 0x200 } . = 0x500 .data: { *(.data) . += 0x600 } } The `.text' section will be assigned a starting address of 0x100 and a size of exactly 0x200 bytes, even if there is not enough data in the `.text' input sections to fill this area. (If there is too much data, an error will be produced because this would be an attempt to move `.' backwards). The `.data' section will start at 0x500 and it will have an extra 0x600 bytes worth of space after the end of the values from the `.data' input sections and before the end of the `.data' output section itself. Setting symbols to the value of the location counter outside of an output section statement can result in unexpected values if the linker needs to place orphan sections. For example, given the following: SECTIONS { start_of_text = . ; .text: { *(.text) } end_of_text = . ; start_of_data = . ; .data: { *(.data) } end_of_data = . ; } If the linker needs to place some input section, e.g. `.rodata', not mentioned in the script, it might choose to place that section between `.text' and `.data'. You might think the linker should place `.rodata' on the blank line in the above script, but blank lines are of no particular significance to the linker. As well, the linker doesn't associate the above symbol names with their sections. Instead, it assumes that all assignments or other statements belong to the previous output section, except for the special case of an assignment to `.'. I.e., the linker will place the orphan `.rodata' section as if the script was written as follows: SECTIONS { start_of_text = . ; .text: { *(.text) } end_of_text = . ; start_of_data = . ; .rodata: { *(.rodata) } .data: { *(.data) } end_of_data = . ; } This may or may not be the script author's intention for the value of `start_of_data'. One way to influence the orphan section placement is to assign the location counter to itself, as the linker assumes that an assignment to `.' is setting the start address of a following output section and thus should be grouped with that section. So you could write: SECTIONS { start_of_text = . ; .text: { *(.text) } end_of_text = . ; . = . ; start_of_data = . ; .data: { *(.data) } end_of_data = . ; } Now, the orphan `.rodata' section will be placed between `end_of_text' and `start_of_data'.  File: ld.info, Node: Operators, Next: Evaluation, Prev: Location Counter, Up: Expressions 3.10.5 Operators ---------------- The linker recognizes the standard C set of arithmetic operators, with the standard bindings and precedence levels: precedence associativity Operators Notes (highest) 1 left ! - ~ (1) 2 left * / % 3 left + - 4 left >> << 5 left == != > < <= >= 6 left & 7 left | 8 left && 9 left || 10 right ? : 11 right &= += -= *= /= (2) (lowest) Notes: (1) Prefix operators (2) *Note Assignments::.  File: ld.info, Node: Evaluation, Next: Expression Section, Prev: Operators, Up: Expressions 3.10.6 Evaluation ----------------- The linker evaluates expressions lazily. It only computes the value of an expression when absolutely necessary. The linker needs some information, such as the value of the start address of the first section, and the origins and lengths of memory regions, in order to do any linking at all. These values are computed as soon as possible when the linker reads in the linker script. However, other values (such as symbol values) are not known or needed until after storage allocation. Such values are evaluated later, when other information (such as the sizes of output sections) is available for use in the symbol assignment expression. The sizes of sections cannot be known until after allocation, so assignments dependent upon these are not performed until after allocation. Some expressions, such as those depending upon the location counter `.', must be evaluated during section allocation. If the result of an expression is required, but the value is not available, then an error results. For example, a script like the following SECTIONS { .text 9+this_isnt_constant : { *(.text) } } will cause the error message `non constant expression for initial address'.  File: ld.info, Node: Expression Section, Next: Builtin Functions, Prev: Evaluation, Up: Expressions 3.10.7 The Section of an Expression ----------------------------------- When the linker evaluates an expression, the result is either absolute or relative to some section. A relative expression is expressed as a fixed offset from the base of a section. The position of the expression within the linker script determines whether it is absolute or relative. An expression which appears within an output section definition is relative to the base of the output section. An expression which appears elsewhere will be absolute. A symbol set to a relative expression will be relocatable if you request relocatable output using the `-r' option. That means that a further link operation may change the value of the symbol. The symbol's section will be the section of the relative expression. A symbol set to an absolute expression will retain the same value through any further link operation. The symbol will be absolute, and will not have any particular associated section. You can use the builtin function `ABSOLUTE' to force an expression to be absolute when it would otherwise be relative. For example, to create an absolute symbol set to the address of the end of the output section `.data': SECTIONS { .data : { *(.data) _edata = ABSOLUTE(.); } } If `ABSOLUTE' were not used, `_edata' would be relative to the `.data' section.  File: ld.info, Node: Builtin Functions, Prev: Expression Section, Up: Expressions 3.10.8 Builtin Functions ------------------------ The linker script language includes a number of builtin functions for use in linker script expressions. `ABSOLUTE(EXP)' Return the absolute (non-relocatable, as opposed to non-negative) value of the expression EXP. Primarily useful to assign an absolute value to a symbol within a section definition, where symbol values are normally section relative. *Note Expression Section::. `ADDR(SECTION)' Return the absolute address (the VMA) of the named SECTION. Your script must previously have defined the location of that section. In the following example, `symbol_1' and `symbol_2' are assigned identical values: SECTIONS { ... .output1 : { start_of_output_1 = ABSOLUTE(.); ... } .output : { symbol_1 = ADDR(.output1); symbol_2 = start_of_output_1; } ... } `ALIGN(ALIGN)' `ALIGN(EXP,ALIGN)' Return the location counter (`.') or arbitrary expression aligned to the next ALIGN boundary. The single operand `ALIGN' doesn't change the value of the location counter--it just does arithmetic on it. The two operand `ALIGN' allows an arbitrary expression to be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(., ALIGN)'). Here is an example which aligns the output `.data' section to the next `0x2000' byte boundary after the preceding section and sets a variable within the section to the next `0x8000' boundary after the input sections: SECTIONS { ... .data ALIGN(0x2000): { *(.data) variable = ALIGN(0x8000); } ... } The first use of `ALIGN' in this example specifies the location of a section because it is used as the optional ADDRESS attribute of a section definition (*note Output Section Address::). The second use of `ALIGN' is used to defines the value of a symbol. The builtin function `NEXT' is closely related to `ALIGN'. `ALIGNOF(SECTION)' Return the alignment in bytes of the named SECTION, if that section has been allocated. If the section has not been allocated when this is evaluated, the linker will report an error. In the following example, the alignment of the `.output' section is stored as the first value in that section. SECTIONS{ ... .output { LONG (ALIGNOF (.output)) ... } ... } `BLOCK(EXP)' This is a synonym for `ALIGN', for compatibility with older linker scripts. It is most often seen when setting the address of an output section. `DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)' This is equivalent to either (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1))) or (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE))) depending on whether the latter uses fewer COMMONPAGESIZE sized pages for the data segment (area between the result of this expression and `DATA_SEGMENT_END') than the former or not. If the latter form is used, it means COMMONPAGESIZE bytes of runtime memory will be saved at the expense of up to COMMONPAGESIZE wasted bytes in the on-disk file. This expression can only be used directly in `SECTIONS' commands, not in any output section descriptions and only once in the linker script. COMMONPAGESIZE should be less or equal to MAXPAGESIZE and should be the system page size the object wants to be optimized for (while still working on system page sizes up to MAXPAGESIZE). Example: . = DATA_SEGMENT_ALIGN(0x10000, 0x2000); `DATA_SEGMENT_END(EXP)' This defines the end of data segment for `DATA_SEGMENT_ALIGN' evaluation purposes. . = DATA_SEGMENT_END(.); `DATA_SEGMENT_RELRO_END(OFFSET, EXP)' This defines the end of the `PT_GNU_RELRO' segment when `-z relro' option is used. Second argument is returned. When `-z relro' option is not present, `DATA_SEGMENT_RELRO_END' does nothing, otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is aligned to the most commonly used page boundary for particular target. If present in the linker script, it must always come in between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'. . = DATA_SEGMENT_RELRO_END(24, .); `DEFINED(SYMBOL)' Return 1 if SYMBOL is in the linker global symbol table and is defined before the statement using DEFINED in the script, otherwise return 0. You can use this function to provide default values for symbols. For example, the following script fragment shows how to set a global symbol `begin' to the first location in the `.text' section--but if a symbol called `begin' already existed, its value is preserved: SECTIONS { ... .text : { begin = DEFINED(begin) ? begin : . ; ... } ... } `LENGTH(MEMORY)' Return the length of the memory region named MEMORY. `LOADADDR(SECTION)' Return the absolute LMA of the named SECTION. This is normally the same as `ADDR', but it may be different if the `AT' attribute is used in the output section definition (*note Output Section LMA::). `MAX(EXP1, EXP2)' Returns the maximum of EXP1 and EXP2. `MIN(EXP1, EXP2)' Returns the minimum of EXP1 and EXP2. `NEXT(EXP)' Return the next unallocated address that is a multiple of EXP. This function is closely related to `ALIGN(EXP)'; unless you use the `MEMORY' command to define discontinuous memory for the output file, the two functions are equivalent. `ORIGIN(MEMORY)' Return the origin of the memory region named MEMORY. `SEGMENT_START(SEGMENT, DEFAULT)' Return the base address of the named SEGMENT. If an explicit value has been given for this segment (with a command-line `-T' option) that value will be returned; otherwise the value will be DEFAULT. At present, the `-T' command-line option can only be used to set the base address for the "text", "data", and "bss" sections, but you use `SEGMENT_START' with any segment name. `SIZEOF(SECTION)' Return the size in bytes of the named SECTION, if that section has been allocated. If the section has not been allocated when this is evaluated, the linker will report an error. In the following example, `symbol_1' and `symbol_2' are assigned identical values: SECTIONS{ ... .output { .start = . ; ... .end = . ; } symbol_1 = .end - .start ; symbol_2 = SIZEOF(.output); ... } `SIZEOF_HEADERS' `sizeof_headers' Return the size in bytes of the output file's headers. This is information which appears at the start of the output file. You can use this number when setting the start address of the first section, if you choose, to facilitate paging. When producing an ELF output file, if the linker script uses the `SIZEOF_HEADERS' builtin function, the linker must compute the number of program headers before it has determined all the section addresses and sizes. If the linker later discovers that it needs additional program headers, it will report an error `not enough room for program headers'. To avoid this error, you must avoid using the `SIZEOF_HEADERS' function, or you must rework your linker script to avoid forcing the linker to use additional program headers, or you must define the program headers yourself using the `PHDRS' command (*note PHDRS::).  File: ld.info, Node: Implicit Linker Scripts, Prev: Expressions, Up: Scripts 3.11 Implicit Linker Scripts ============================ If you specify a linker input file which the linker can not recognize as an object file or an archive file, it will try to read the file as a linker script. If the file can not be parsed as a linker script, the linker will report an error. An implicit linker script will not replace the default linker script. Typically an implicit linker script would contain only symbol assignments, or the `INPUT', `GROUP', or `VERSION' commands. Any input files read because of an implicit linker script will be read at the position in the command line where the implicit linker script was read. This can affect archive searching.  File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Scripts, Up: Top 4 Machine Dependent Features **************************** `ld' has additional features on some platforms; the following sections describe them. Machines where `ld' has no additional functionality are not listed. * Menu: * H8/300:: `ld' and the H8/300 * i960:: `ld' and the Intel 960 family * ARM:: `ld' and the ARM family * HPPA ELF32:: `ld' and HPPA 32-bit ELF * M68K:: `ld' and the Motorola 68K family * MMIX:: `ld' and MMIX * MSP430:: `ld' and MSP430 * M68HC11/68HC12:: `ld' and the Motorola 68HC11 and 68HC12 families * PowerPC ELF32:: `ld' and PowerPC 32-bit ELF Support * PowerPC64 ELF64:: `ld' and PowerPC64 64-bit ELF Support * SPU ELF:: `ld' and SPU ELF Support * TI COFF:: `ld' and TI COFF * WIN32:: `ld' and WIN32 (cygwin/mingw) * Xtensa:: `ld' and Xtensa Processors  File: ld.info, Node: H8/300, Next: i960, Up: Machine Dependent 4.1 `ld' and the H8/300 ======================= For the H8/300, `ld' can perform these global optimizations when you specify the `--relax' command-line option. _relaxing address modes_ `ld' finds all `jsr' and `jmp' instructions whose targets are within eight bits, and turns them into eight-bit program-counter relative `bsr' and `bra' instructions, respectively. _synthesizing instructions_ `ld' finds all `mov.b' instructions which use the sixteen-bit absolute address form, but refer to the top page of memory, and changes them to use the eight-bit address form. (That is: the linker turns `mov.b `@@'AA:16' into `mov.b `@@'AA:8' whenever the address AA is in the top page of memory). _bit manipulation instructions_ `ld' finds all bit manipulation instructions like `band, bclr, biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, bxor' which use 32 bit and 16 bit absolute address form, but refer to the top page of memory, and changes them to use the 8 bit address form. (That is: the linker turns `bset #xx:3,`@@'AA:32' into `bset #xx:3,`@@'AA:8' whenever the address AA is in the top page of memory). _system control instructions_ `ld' finds all `ldc.w, stc.w' instructions which use the 32 bit absolute address form, but refer to the top page of memory, and changes them to use 16 bit address form. (That is: the linker turns `ldc.w `@@'AA:32,ccr' into `ldc.w `@@'AA:16,ccr' whenever the address AA is in the top page of memory).  File: ld.info, Node: i960, Next: ARM, Prev: H8/300, Up: Machine Dependent 4.2 `ld' and the Intel 960 Family ================================= You can use the `-AARCHITECTURE' command line option to specify one of the two-letter names identifying members of the 960 family; the option specifies the desired output target, and warns of any incompatible instructions in the input files. It also modifies the linker's search strategy for archive libraries, to support the use of libraries specific to each particular architecture, by including in the search loop names suffixed with the string identifying the architecture. For example, if your `ld' command line included `-ACA' as well as `-ltry', the linker would look (in its built-in search paths, and in any paths you specify with `-L') for a library with the names try libtry.a tryca libtryca.a The first two possibilities would be considered in any event; the last two are due to the use of `-ACA'. You can meaningfully use `-A' more than once on a command line, since the 960 architecture family allows combination of target architectures; each use will add another pair of name variants to search for when `-l' specifies a library. `ld' supports the `--relax' option for the i960 family. If you specify `--relax', `ld' finds all `balx' and `calx' instructions whose targets are within 24 bits, and turns them into 24-bit program-counter relative `bal' and `cal' instructions, respectively. `ld' also turns `cal' instructions into `bal' instructions when it determines that the target subroutine is a leaf routine (that is, the target subroutine does not itself call any subroutines).  File: ld.info, Node: M68HC11/68HC12, Next: PowerPC ELF32, Prev: MSP430, Up: Machine Dependent 4.3 `ld' and the Motorola 68HC11 and 68HC12 families ==================================================== 4.3.1 Linker Relaxation ----------------------- For the Motorola 68HC11, `ld' can perform these global optimizations when you specify the `--relax' command-line option. _relaxing address modes_ `ld' finds all `jsr' and `jmp' instructions whose targets are within eight bits, and turns them into eight-bit program-counter relative `bsr' and `bra' instructions, respectively. `ld' also looks at all 16-bit extended addressing modes and transforms them in a direct addressing mode when the address is in page 0 (between 0 and 0x0ff). _relaxing gcc instruction group_ When `gcc' is called with `-mrelax', it can emit group of instructions that the linker can optimize to use a 68HC11 direct addressing mode. These instructions consists of `bclr' or `bset' instructions. 4.3.2 Trampoline Generation --------------------------- For 68HC11 and 68HC12, `ld' can generate trampoline code to call a far function using a normal `jsr' instruction. The linker will also change the relocation to some far function to use the trampoline address instead of the function address. This is typically the case when a pointer to a function is taken. The pointer will in fact point to the function trampoline.  File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent 4.4 `ld' and the ARM family =========================== For the ARM, `ld' will generate code stubs to allow functions calls between ARM and Thumb code. These stubs only work with code that has been compiled and assembled with the `-mthumb-interwork' command line option. If it is necessary to link with old ARM object files or libraries, which have not been compiled with the -mthumb-interwork option then the `--support-old-code' command line switch should be given to the linker. This will make it generate larger stub functions which will work with non-interworking aware ARM code. Note, however, the linker does not support generating stubs for function calls to non-interworking aware Thumb code. The `--thumb-entry' switch is a duplicate of the generic `--entry' switch, in that it sets the program's starting address. But it also sets the bottom bit of the address, so that it can be branched to using a BX instruction, and the program will start executing in Thumb mode straight away. The `--be8' switch instructs `ld' to generate BE8 format executables. This option is only valid when linking big-endian objects. The resulting image will contain big-endian data and little-endian code. The `R_ARM_TARGET1' relocation is typically used for entries in the `.init_array' section. It is interpreted as either `R_ARM_REL32' or `R_ARM_ABS32', depending on the target. The `--target1-rel' and `--target1-abs' switches override the default. The `--target2=type' switch overrides the default definition of the `R_ARM_TARGET2' relocation. Valid values for `type', their meanings, and target defaults are as follows: `rel' `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi) `abs' `R_ARM_ABS32' (arm*-*-symbianelf) `got-rel' `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd) The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification) enables objects compiled for the ARMv4 architecture to be interworking-safe when linked with other objects compiled for ARMv4t, but also allows pure ARMv4 binaries to be built from the same ARMv4 objects. In the latter case, the switch `--fix-v4bx' must be passed to the linker, which causes v4t `BX rM' instructions to be rewritten as `MOV PC,rM', since v4 processors do not have a `BX' instruction. In the former case, the switch should not be used, and `R_ARM_V4BX' relocations are ignored. Replace `BX rM' instructions identified by `R_ARM_V4BX' relocations with a branch to the following veneer: TST rM, #1 MOVEQ PC, rM BX Rn This allows generation of libraries/applications that work on ARMv4 cores and are still interworking safe. Note that the above veneer clobbers the condition flags, so may cause incorrect progrm behavior in rare cases. The `--use-blx' switch enables the linker to use ARM/Thumb BLX instructions (available on ARMv5t and above) in various situations. Currently it is used to perform calls via the PLT from Thumb code using BLX rather than using BX and a mode-switching stub before each PLT entry. This should lead to such calls executing slightly faster. This option is enabled implicitly for SymbianOS, so there is no need to specify it if you are using that target. The `--vfp11-denorm-fix' switch enables a link-time workaround for a bug in certain VFP11 coprocessor hardware, which sometimes allows instructions with denorm operands (which must be handled by support code) to have those operands overwritten by subsequent instructions before the support code can read the intended values. The bug may be avoided in scalar mode if you allow at least one intervening instruction between a VFP11 instruction which uses a register and another instruction which writes to the same register, or at least two intervening instructions if vector mode is in use. The bug only affects full-compliance floating-point mode: you do not need this workaround if you are using "runfast" mode. Please contact ARM for further details. If you know you are using buggy VFP11 hardware, you can enable this workaround by specifying the linker option `--vfp-denorm-fix=scalar' if you are using the VFP11 scalar mode only, or `--vfp-denorm-fix=vector' if you are using vector mode (the latter also works for scalar code). The default is `--vfp-denorm-fix=none'. If the workaround is enabled, instructions are scanned for potentially-troublesome sequences, and a veneer is created for each such sequence which may trigger the erratum. The veneer consists of the first instruction of the sequence and a branch back to the subsequent instruction. The original instruction is then replaced with a branch to the veneer. The extra cycles required to call and return from the veneer are sufficient to avoid the erratum in both the scalar and vector cases. The `--no-enum-size-warning' switch prevents the linker from warning when linking object files that specify incompatible EABI enumeration size attributes. For example, with this switch enabled, linking of an object file using 32-bit enumeration values with another using enumeration values fitted into the smallest possible space will not be diagnosed. The `--no-wchar-size-warning' switch prevents the linker from warning when linking object files that specify incompatible EABI `wchar_t' size attributes. For example, with this switch enabled, linking of an object file using 32-bit `wchar_t' values with another using 16-bit `wchar_t' values will not be diagnosed. The `--pic-veneer' switch makes the linker use PIC sequences for ARM/Thumb interworking veneers, even if the rest of the binary is not PIC. This avoids problems on uClinux targets where `--emit-relocs' is used to generate relocatable binaries. The linker will automatically generate and insert small sequences of code into a linked ARM ELF executable whenever an attempt is made to perform a function call to a symbol that is too far away. The placement of these sequences of instructions - called stubs - is controlled by the command line option `--stub-group-size=N'. The placement is important because a poor choice can create a need for duplicate stubs, increasing the code sizw. The linker will try to group stubs together in order to reduce interruptions to the flow of code, but it needs guidance as to how big these groups should be and where they should be placed. The value of `N', the parameter to the `--stub-group-size=' option controls where the stub groups are placed. If it is negative then all stubs are placed before the first branch that needs them. If it is positive then the stubs can be placed either before or after the branches that need them. If the value of `N' is 1 (either +1 or -1) then the linker will choose exactly where to place groups of stubs, using its built in heuristics. A value of `N' greater than 1 (or smaller than -1) tells the linker that a single group of stubs can service at most `N' bytes from the input sections. The default, if `--stub-group-size=' is not specified, is `N = +1'. Farcalls stubs insertion is fully supported for the ARM-EABI target only, because it relies on object files properties not present otherwise.  File: ld.info, Node: HPPA ELF32, Next: M68K, Prev: ARM, Up: Machine Dependent 4.5 `ld' and HPPA 32-bit ELF Support ==================================== When generating a shared library, `ld' will by default generate import stubs suitable for use with a single sub-space application. The `--multi-subspace' switch causes `ld' to generate export stubs, and different (larger) import stubs suitable for use with multiple sub-spaces. Long branch stubs and import/export stubs are placed by `ld' in stub sections located between groups of input sections. `--stub-group-size' specifies the maximum size of a group of input sections handled by one stub section. Since branch offsets are signed, a stub section may serve two groups of input sections, one group before the stub section, and one group after it. However, when using conditional branches that require stubs, it may be better (for branch prediction) that stub sections only serve one group of input sections. A negative value for `N' chooses this scheme, ensuring that branches to stubs always use a negative offset. Two special values of `N' are recognized, `1' and `-1'. These both instruct `ld' to automatically size input section groups for the branch types detected, with the same behaviour regarding stub placement as other positive or negative values of `N' respectively. Note that `--stub-group-size' does not split input sections. A single input section larger than the group size specified will of course create a larger group (of one section). If input sections are too large, it may not be possible for a branch to reach its stub.  File: ld.info, Node: M68K, Next: MMIX, Prev: HPPA ELF32, Up: Machine Dependent 4.6 `ld' and the Motorola 68K family ==================================== The `--got=TYPE' option lets you choose the GOT generation scheme. The choices are `single', `negative', `multigot' and `target'. When `target' is selected the linker chooses the default GOT generation scheme for the current target. `single' tells the linker to generate a single GOT with entries only at non-negative offsets. `negative' instructs the linker to generate a single GOT with entries at both negative and positive offsets. Not all environments support such GOTs. `multigot' allows the linker to generate several GOTs in the output file. All GOT references from a single input object file access the same GOT, but references from different input object files might access different GOTs. Not all environments support such GOTs.  File: ld.info, Node: MMIX, Next: MSP430, Prev: M68K, Up: Machine Dependent 4.7 `ld' and MMIX ================= For MMIX, there is a choice of generating `ELF' object files or `mmo' object files when linking. The simulator `mmix' understands the `mmo' format. The binutils `objcopy' utility can translate between the two formats. There is one special section, the `.MMIX.reg_contents' section. Contents in this section is assumed to correspond to that of global registers, and symbols referring to it are translated to special symbols, equal to registers. In a final link, the start address of the `.MMIX.reg_contents' section corresponds to the first allocated global register multiplied by 8. Register `$255' is not included in this section; it is always set to the program entry, which is at the symbol `Main' for `mmo' files. Global symbols with the prefix `__.MMIX.start.', for example `__.MMIX.start..text' and `__.MMIX.start..data' are special. The default linker script uses these to set the default start address of a section. Initial and trailing multiples of zero-valued 32-bit words in a section, are left out from an mmo file.  File: ld.info, Node: MSP430, Next: M68HC11/68HC12, Prev: MMIX, Up: Machine Dependent 4.8 `ld' and MSP430 =================== For the MSP430 it is possible to select the MPU architecture. The flag `-m [mpu type]' will select an appropriate linker script for selected MPU type. (To get a list of known MPUs just pass `-m help' option to the linker). The linker will recognize some extra sections which are MSP430 specific: ``.vectors'' Defines a portion of ROM where interrupt vectors located. ``.bootloader'' Defines the bootloader portion of the ROM (if applicable). Any code in this section will be uploaded to the MPU. ``.infomem'' Defines an information memory section (if applicable). Any code in this section will be uploaded to the MPU. ``.infomemnobits'' This is the same as the `.infomem' section except that any code in this section will not be uploaded to the MPU. ``.noinit'' Denotes a portion of RAM located above `.bss' section. The last two sections are used by gcc.  File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: M68HC11/68HC12, Up: Machine Dependent 4.9 `ld' and PowerPC 32-bit ELF Support ======================================= Branches on PowerPC processors are limited to a signed 26-bit displacement, which may result in `ld' giving `relocation truncated to fit' errors with very large programs. `--relax' enables the generation of trampolines that can access the entire 32-bit address space. These trampolines are inserted at section boundaries, so may not themselves be reachable if an input section exceeds 33M in size. `--bss-plt' Current PowerPC GCC accepts a `-msecure-plt' option that generates code capable of using a newer PLT and GOT layout that has the security advantage of no executable section ever needing to be writable and no writable section ever being executable. PowerPC `ld' will generate this layout, including stubs to access the PLT, if all input files (including startup and static libraries) were compiled with `-msecure-plt'. `--bss-plt' forces the old BSS PLT (and GOT layout) which can give slightly better performance. `--secure-plt' `ld' will use the new PLT and GOT layout if it is linking new `-fpic' or `-fPIC' code, but does not do so automatically when linking non-PIC code. This option requests the new PLT and GOT layout. A warning will be given if some object file requires the old style BSS PLT. `--sdata-got' The new secure PLT and GOT are placed differently relative to other sections compared to older BSS PLT and GOT placement. The location of `.plt' must change because the new secure PLT is an initialized section while the old PLT is uninitialized. The reason for the `.got' change is more subtle: The new placement allows `.got' to be read-only in applications linked with `-z relro -z now'. However, this placement means that `.sdata' cannot always be used in shared libraries, because the PowerPC ABI accesses `.sdata' in shared libraries from the GOT pointer. `--sdata-got' forces the old GOT placement. PowerPC GCC doesn't use `.sdata' in shared libraries, so this option is really only useful for other compilers that may do so. `--emit-stub-syms' This option causes `ld' to label linker stubs with a local symbol that encodes the stub type and destination. `--no-tls-optimize' PowerPC `ld' normally performs some optimization of code sequences used to access Thread-Local Storage. Use this option to disable the optimization.  File: ld.info, Node: PowerPC64 ELF64, Next: SPU ELF, Prev: PowerPC ELF32, Up: Machine Dependent 4.10 `ld' and PowerPC64 64-bit ELF Support ========================================== `--stub-group-size' Long branch stubs, PLT call stubs and TOC adjusting stubs are placed by `ld' in stub sections located between groups of input sections. `--stub-group-size' specifies the maximum size of a group of input sections handled by one stub section. Since branch offsets are signed, a stub section may serve two groups of input sections, one group before the stub section, and one group after it. However, when using conditional branches that require stubs, it may be better (for branch prediction) that stub sections only serve one group of input sections. A negative value for `N' chooses this scheme, ensuring that branches to stubs always use a negative offset. Two special values of `N' are recognized, `1' and `-1'. These both instruct `ld' to automatically size input section groups for the branch types detected, with the same behaviour regarding stub placement as other positive or negative values of `N' respectively. Note that `--stub-group-size' does not split input sections. A single input section larger than the group size specified will of course create a larger group (of one section). If input sections are too large, it may not be possible for a branch to reach its stub. `--emit-stub-syms' This option causes `ld' to label linker stubs with a local symbol that encodes the stub type and destination. `--dotsyms, --no-dotsyms' These two options control how `ld' interprets version patterns in a version script. Older PowerPC64 compilers emitted both a function descriptor symbol with the same name as the function, and a code entry symbol with the name prefixed by a dot (`.'). To properly version a function `foo', the version script thus needs to control both `foo' and `.foo'. The option `--dotsyms', on by default, automatically adds the required dot-prefixed patterns. Use `--no-dotsyms' to disable this feature. `--no-tls-optimize' PowerPC64 `ld' normally performs some optimization of code sequences used to access Thread-Local Storage. Use this option to disable the optimization. `--no-opd-optimize' PowerPC64 `ld' normally removes `.opd' section entries corresponding to deleted link-once functions, or functions removed by the action of `--gc-sections' or linker script `/DISCARD/'. Use this option to disable `.opd' optimization. `--non-overlapping-opd' Some PowerPC64 compilers have an option to generate compressed `.opd' entries spaced 16 bytes apart, overlapping the third word, the static chain pointer (unused in C) with the first word of the next entry. This option expands such entries to the full 24 bytes. `--no-toc-optimize' PowerPC64 `ld' normally removes unused `.toc' section entries. Such entries are detected by examining relocations that reference the TOC in code sections. A reloc in a deleted code section marks a TOC word as unneeded, while a reloc in a kept code section marks a TOC word as needed. Since the TOC may reference itself, TOC relocs are also examined. TOC words marked as both needed and unneeded will of course be kept. TOC words without any referencing reloc are assumed to be part of a multi-word entry, and are kept or discarded as per the nearest marked preceding word. This works reliably for compiler generated code, but may be incorrect if assembly code is used to insert TOC entries. Use this option to disable the optimization. `--no-multi-toc' By default, PowerPC64 GCC generates code for a TOC model where TOC entries are accessed with a 16-bit offset from r2. This limits the total TOC size to 64K. PowerPC64 `ld' extends this limit by grouping code sections such that each group uses less than 64K for its TOC entries, then inserts r2 adjusting stubs between inter-group calls. `ld' does not split apart input sections, so cannot help if a single input file has a `.toc' section that exceeds 64K, most likely from linking multiple files with `ld -r'. Use this option to turn off this feature.  File: ld.info, Node: SPU ELF, Next: TI COFF, Prev: PowerPC64 ELF64, Up: Machine Dependent 4.11 `ld' and SPU ELF Support ============================= `--plugin' This option marks an executable as a PIC plugin module. `--no-overlays' Normally, `ld' recognizes calls to functions within overlay regions, and redirects such calls to an overlay manager via a stub. `ld' also provides a built-in overlay manager. This option turns off all this special overlay handling. `--emit-stub-syms' This option causes `ld' to label overlay stubs with a local symbol that encodes the stub type and destination. `--extra-overlay-stubs' This option causes `ld' to add overlay call stubs on all function calls out of overlay regions. Normally stubs are not added on calls to non-overlay regions. `--local-store=lo:hi' `ld' usually checks that a final executable for SPU fits in the address range 0 to 256k. This option may be used to change the range. Disable the check entirely with `--local-store=0:0'. `--stack-analysis' SPU local store space is limited. Over-allocation of stack space unnecessarily limits space available for code and data, while under-allocation results in runtime failures. If given this option, `ld' will provide an estimate of maximum stack usage. `ld' does this by examining symbols in code sections to determine the extents of functions, and looking at function prologues for stack adjusting instructions. A call-graph is created by looking for relocations on branch instructions. The graph is then searched for the maximum stack usage path. Note that this analysis does not find calls made via function pointers, and does not handle recursion and other cycles in the call graph. Stack usage may be under-estimated if your code makes such calls. Also, stack usage for dynamic allocation, e.g. alloca, will not be detected. If a link map is requested, detailed information about each function's stack usage and calls will be given. `--emit-stack-syms' This option, if given along with `--stack-analysis' will result in `ld' emitting stack sizing symbols for each function. These take the form `__stack_' for global functions, and `__stack__' for static functions. `' is the section id in hex. The value of such symbols is the stack requirement for the corresponding function. The symbol size will be zero, type `STT_NOTYPE', binding `STB_LOCAL', and section `SHN_ABS'.  File: ld.info, Node: TI COFF, Next: WIN32, Prev: SPU ELF, Up: Machine Dependent 4.12 `ld''s Support for Various TI COFF Versions ================================================ The `--format' switch allows selection of one of the various TI COFF versions. The latest of this writing is 2; versions 0 and 1 are also supported. The TI COFF versions also vary in header byte-order format; `ld' will read any version or byte order, but the output header format depends on the default specified by the specific target.  File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent 4.13 `ld' and WIN32 (cygwin/mingw) ================================== This section describes some of the win32 specific `ld' issues. See *Note Command Line Options: Options. for detailed description of the command line options mentioned here. _import libraries_ The standard Windows linker creates and uses so-called import libraries, which contains information for linking to dll's. They are regular static archives and are handled as any other static archive. The cygwin and mingw ports of `ld' have specific support for creating such libraries provided with the `--out-implib' command line option. _exporting DLL symbols_ The cygwin/mingw `ld' has several ways to export symbols for dll's. _using auto-export functionality_ By default `ld' exports symbols with the auto-export functionality, which is controlled by the following command line options: * -export-all-symbols [This is the default] * -exclude-symbols * -exclude-libs If, however, `--export-all-symbols' is not given explicitly on the command line, then the default auto-export behavior will be _disabled_ if either of the following are true: * A DEF file is used. * Any symbol in any object file was marked with the __declspec(dllexport) attribute. _using a DEF file_ Another way of exporting symbols is using a DEF file. A DEF file is an ASCII file containing definitions of symbols which should be exported when a dll is created. Usually it is named `.def' and is added as any other object file to the linker's command line. The file's name must end in `.def' or `.DEF'. gcc -o .def Using a DEF file turns off the normal auto-export behavior, unless the `--export-all-symbols' option is also used. Here is an example of a DEF file for a shared library called `xyz.dll': LIBRARY "xyz.dll" BASE=0x20000000 EXPORTS foo bar _bar = bar another_foo = abc.dll.afoo var1 DATA This example defines a DLL with a non-default base address and five symbols in the export table. The third exported symbol `_bar' is an alias for the second. The fourth symbol, `another_foo' is resolved by "forwarding" to another module and treating it as an alias for `afoo' exported from the DLL `abc.dll'. The final symbol `var1' is declared to be a data object. The optional `LIBRARY ' command indicates the _internal_ name of the output DLL. If `' does not include a suffix, the default library suffix, `.DLL' is appended. When the .DEF file is used to build an application, rather than a library, the `NAME ' command should be used instead of `LIBRARY'. If `' does not include a suffix, the default executable suffix, `.EXE' is appended. With either `LIBRARY ' or `NAME ' the optional specification `BASE = ' may be used to specify a non-default base address for the image. If neither `LIBRARY ' nor `NAME ' is specified, or they specify an empty string, the internal name is the same as the filename specified on the command line. The complete specification of an export symbol is: EXPORTS ( ( ( [ = ] ) | ( = . )) [ @@ ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) * Declares `' as an exported symbol from the DLL, or declares `' as an exported alias for `'; or declares `' as a "forward" alias for the symbol `' in the DLL `'. Optionally, the symbol may be exported by the specified ordinal `' alias. The optional keywords that follow the declaration indicate: `NONAME': Do not put the symbol name in the DLL's export table. It will still be exported by its ordinal alias (either the value specified by the .def specification or, otherwise, the value assigned by the linker). The symbol name, however, does remain visible in the import library (if any), unless `PRIVATE' is also specified. `DATA': The symbol is a variable or object, rather than a function. The import lib will export only an indirect reference to `foo' as the symbol `_imp__foo' (ie, `foo' must be resolved as `*_imp__foo'). `CONSTANT': Like `DATA', but put the undecorated `foo' as well as `_imp__foo' into the import library. Both refer to the read-only import address table's pointer to the variable, not to the variable itself. This can be dangerous. If the user code fails to add the `dllimport' attribute and also fails to explicitly add the extra indirection that the use of the attribute enforces, the application will behave unexpectedly. `PRIVATE': Put the symbol in the DLL's export table, but do not put it into the static import library used to resolve imports at link time. The symbol can still be imported using the `LoadLibrary/GetProcAddress' API at runtime or by by using the GNU ld extension of linking directly to the DLL without an import library. See ld/deffilep.y in the binutils sources for the full specification of other DEF file statements While linking a shared dll, `ld' is able to create a DEF file with the `--output-def ' command line option. _Using decorations_ Another way of marking symbols for export is to modify the source code itself, so that when building the DLL each symbol to be exported is declared as: __declspec(dllexport) int a_variable __declspec(dllexport) void a_function(int with_args) All such symbols will be exported from the DLL. If, however, any of the object files in the DLL contain symbols decorated in this way, then the normal auto-export behavior is disabled, unless the `--export-all-symbols' option is also used. Note that object files that wish to access these symbols must _not_ decorate them with dllexport. Instead, they should use dllimport, instead: __declspec(dllimport) int a_variable __declspec(dllimport) void a_function(int with_args) This complicates the structure of library header files, because when included by the library itself the header must declare the variables and functions as dllexport, but when included by client code the header must declare them as dllimport. There are a number of idioms that are typically used to do this; often client code can omit the __declspec() declaration completely. See `--enable-auto-import' and `automatic data imports' for more information. _automatic data imports_ The standard Windows dll format supports data imports from dlls only by adding special decorations (dllimport/dllexport), which let the compiler produce specific assembler instructions to deal with this issue. This increases the effort necessary to port existing Un*x code to these platforms, especially for large c++ libraries and applications. The auto-import feature, which was initially provided by Paul Sokolovsky, allows one to omit the decorations to achieve a behavior that conforms to that on POSIX/Un*x platforms. This feature is enabled with the `--enable-auto-import' command-line option, although it is enabled by default on cygwin/mingw. The `--enable-auto-import' option itself now serves mainly to suppress any warnings that are ordinarily emitted when linked objects trigger the feature's use. auto-import of variables does not always work flawlessly without additional assistance. Sometimes, you will see this message "variable '' can't be auto-imported. Please read the documentation for ld's `--enable-auto-import' for details." The `--enable-auto-import' documentation explains why this error occurs, and several methods that can be used to overcome this difficulty. One of these methods is the _runtime pseudo-relocs_ feature, described below. For complex variables imported from DLLs (such as structs or classes), object files typically contain a base address for the variable and an offset (_addend_) within the variable-to specify a particular field or public member, for instance. Unfortunately, the runtime loader used in win32 environments is incapable of fixing these references at runtime without the additional information supplied by dllimport/dllexport decorations. The standard auto-import feature described above is unable to resolve these references. The `--enable-runtime-pseudo-relocs' switch allows these references to be resolved without error, while leaving the task of adjusting the references themselves (with their non-zero addends) to specialized code provided by the runtime environment. Recent versions of the cygwin and mingw environments and compilers provide this runtime support; older versions do not. However, the support is only necessary on the developer's platform; the compiled result will run without error on an older system. `--enable-runtime-pseudo-relocs' is not the default; it must be explicitly enabled as needed. _direct linking to a dll_ The cygwin/mingw ports of `ld' support the direct linking, including data symbols, to a dll without the usage of any import libraries. This is much faster and uses much less memory than does the traditional import library method, especially when linking large libraries or applications. When `ld' creates an import lib, each function or variable exported from the dll is stored in its own bfd, even though a single bfd could contain many exports. The overhead involved in storing, loading, and processing so many bfd's is quite large, and explains the tremendous time, memory, and storage needed to link against particularly large or complex libraries when using import libs. Linking directly to a dll uses no extra command-line switches other than `-L' and `-l', because `ld' already searches for a number of names to match each library. All that is needed from the developer's perspective is an understanding of this search, in order to force ld to select the dll instead of an import library. For instance, when ld is called with the argument `-lxxx' it will attempt to find, in the first directory of its search path, libxxx.dll.a xxx.dll.a libxxx.a xxx.lib cygxxx.dll (*) libxxx.dll xxx.dll before moving on to the next directory in the search path. (*) Actually, this is not `cygxxx.dll' but in fact is `xxx.dll', where `' is set by the `ld' option `--dll-search-prefix='. In the case of cygwin, the standard gcc spec file includes `--dll-search-prefix=cyg', so in effect we actually search for `cygxxx.dll'. Other win32-based unix environments, such as mingw or pw32, may use other `'es, although at present only cygwin makes use of this feature. It was originally intended to help avoid name conflicts among dll's built for the various win32/un*x environments, so that (for example) two versions of a zlib dll could coexist on the same machine. The generic cygwin/mingw path layout uses a `bin' directory for applications and dll's and a `lib' directory for the import libraries (using cygwin nomenclature): bin/ cygxxx.dll lib/ libxxx.dll.a (in case of dll's) libxxx.a (in case of static archive) Linking directly to a dll without using the import library can be done two ways: 1. Use the dll directly by adding the `bin' path to the link line gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx However, as the dll's often have version numbers appended to their names (`cygncurses-5.dll') this will often fail, unless one specifies `-L../bin -lncurses-5' to include the version. Import libs are generally not versioned, and do not have this difficulty. 2. Create a symbolic link from the dll to a file in the `lib' directory according to the above mentioned search pattern. This should be used to avoid unwanted changes in the tools needed for making the app/dll. ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a] Then you can link without any make environment changes. gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx This technique also avoids the version number problems, because the following is perfectly legal bin/ cygxxx-5.dll lib/ libxxx.dll.a -> ../bin/cygxxx-5.dll Linking directly to a dll without using an import lib will work even when auto-import features are exercised, and even when `--enable-runtime-pseudo-relocs' is used. Given the improvements in speed and memory usage, one might justifiably wonder why import libraries are used at all. There are three reasons: 1. Until recently, the link-directly-to-dll functionality did _not_ work with auto-imported data. 2. Sometimes it is necessary to include pure static objects within the import library (which otherwise contains only bfd's for indirection symbols that point to the exports of a dll). Again, the import lib for the cygwin kernel makes use of this ability, and it is not possible to do this without an import lib. 3. Symbol aliases can only be resolved using an import lib. This is critical when linking against OS-supplied dll's (eg, the win32 API) in which symbols are usually exported as undecorated aliases of their stdcall-decorated assembly names. So, import libs are not going away. But the ability to replace true import libs with a simple symbolic link to (or a copy of) a dll, in many cases, is a useful addition to the suite of tools binutils makes available to the win32 developer. Given the massive improvements in memory requirements during linking, storage requirements, and linking speed, we expect that many developers will soon begin to use this feature whenever possible. _symbol aliasing_ _adding additional names_ Sometimes, it is useful to export symbols with additional names. A symbol `foo' will be exported as `foo', but it can also be exported as `_foo' by using special directives in the DEF file when creating the dll. This will affect also the optional created import library. Consider the following DEF file: LIBRARY "xyz.dll" BASE=0x61000000 EXPORTS foo _foo = foo The line `_foo = foo' maps the symbol `foo' to `_foo'. Another method for creating a symbol alias is to create it in the source code using the "weak" attribute: void foo () { /* Do something. */; } void _foo () __attribute__ ((weak, alias ("foo"))); See the gcc manual for more information about attributes and weak symbols. _renaming symbols_ Sometimes it is useful to rename exports. For instance, the cygwin kernel does this regularly. A symbol `_foo' can be exported as `foo' but not as `_foo' by using special directives in the DEF file. (This will also affect the import library, if it is created). In the following example: LIBRARY "xyz.dll" BASE=0x61000000 EXPORTS _foo = foo The line `_foo = foo' maps the exported symbol `foo' to `_foo'. Note: using a DEF file disables the default auto-export behavior, unless the `--export-all-symbols' command line option is used. If, however, you are trying to rename symbols, then you should list _all_ desired exports in the DEF file, including the symbols that are not being renamed, and do _not_ use the `--export-all-symbols' option. If you list only the renamed symbols in the DEF file, and use `--export-all-symbols' to handle the other symbols, then the both the new names _and_ the original names for the renamed symbols will be exported. In effect, you'd be aliasing those symbols, not renaming them, which is probably not what you wanted. _weak externals_ The Windows object format, PE, specifies a form of weak symbols called weak externals. When a weak symbol is linked and the symbol is not defined, the weak symbol becomes an alias for some other symbol. There are three variants of weak externals: * Definition is searched for in objects and libraries, historically called lazy externals. * Definition is searched for only in other objects, not in libraries. This form is not presently implemented. * No search; the symbol is an alias. This form is not presently implemented. As a GNU extension, weak symbols that do not specify an alternate symbol are supported. If the symbol is undefined when linking, the symbol uses a default value.  File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent 4.14 `ld' and Xtensa Processors =============================== The default `ld' behavior for Xtensa processors is to interpret `SECTIONS' commands so that lists of explicitly named sections in a specification with a wildcard file will be interleaved when necessary to keep literal pools within the range of PC-relative load offsets. For example, with the command: SECTIONS { .text : { *(.literal .text) } } `ld' may interleave some of the `.literal' and `.text' sections from different object files to ensure that the literal pools are within the range of PC-relative load offsets. A valid interleaving might place the `.literal' sections from an initial group of files followed by the `.text' sections of that group of files. Then, the `.literal' sections from the rest of the files and the `.text' sections from the rest of the files would follow. Relaxation is enabled by default for the Xtensa version of `ld' and provides two important link-time optimizations. The first optimization is to combine identical literal values to reduce code size. A redundant literal will be removed and all the `L32R' instructions that use it will be changed to reference an identical literal, as long as the location of the replacement literal is within the offset range of all the `L32R' instructions. The second optimization is to remove unnecessary overhead from assembler-generated "longcall" sequences of `L32R'/`CALLXN' when the target functions are within range of direct `CALLN' instructions. For each of these cases where an indirect call sequence can be optimized to a direct call, the linker will change the `CALLXN' instruction to a `CALLN' instruction, remove the `L32R' instruction, and remove the literal referenced by the `L32R' instruction if it is not used for anything else. Removing the `L32R' instruction always reduces code size but can potentially hurt performance by changing the alignment of subsequent branch targets. By default, the linker will always preserve alignments, either by switching some instructions between 24-bit encodings and the equivalent density instructions or by inserting a no-op in place of the `L32R' instruction that was removed. If code size is more important than performance, the `--size-opt' option can be used to prevent the linker from widening density instructions or inserting no-ops, except in a few cases where no-ops are required for correctness. The following Xtensa-specific command-line options can be used to control the linker: `--no-relax' Since the Xtensa version of `ld' enables the `--relax' option by default, the `--no-relax' option is provided to disable relaxation. `--size-opt' When optimizing indirect calls to direct calls, optimize for code size more than performance. With this option, the linker will not insert no-ops or widen density instructions to preserve branch target alignment. There may still be some cases where no-ops are required to preserve the correctness of the code.  File: ld.info, Node: BFD, Next: Reporting Bugs, Prev: Machine Dependent, Up: Top 5 BFD ***** The linker accesses object and archive files using the BFD libraries. These libraries allow the linker to use the same routines to operate on object files whatever the object file format. A different object file format can be supported simply by creating a new BFD back end and adding it to the library. To conserve runtime memory, however, the linker and associated tools are usually configured to support only a subset of the object file formats available. You can use `objdump -i' (*note objdump: (binutils.info)objdump.) to list all the formats available for your configuration. As with most implementations, BFD is a compromise between several conflicting requirements. The major factor influencing BFD design was efficiency: any time used converting between formats is time which would not have been spent had BFD not been involved. This is partly offset by abstraction payback; since BFD simplifies applications and back ends, more time and care may be spent optimizing algorithms for a greater speed. One minor artifact of the BFD solution which you should bear in mind is the potential for information loss. There are two places where useful information can be lost using the BFD mechanism: during conversion and during output. *Note BFD information loss::. * Menu: * BFD outline:: How it works: an outline of BFD  File: ld.info, Node: BFD outline, Up: BFD 5.1 How It Works: An Outline of BFD =================================== When an object file is opened, BFD subroutines automatically determine the format of the input object file. They then build a descriptor in memory with pointers to routines that will be used to access elements of the object file's data structures. As different information from the object files is required, BFD reads from different sections of the file and processes them. For example, a very common operation for the linker is processing symbol tables. Each BFD back end provides a routine for converting between the object file's representation of symbols and an internal canonical format. When the linker asks for the symbol table of an object file, it calls through a memory pointer to the routine from the relevant BFD back end which reads and converts the table into a canonical form. The linker then operates upon the canonical form. When the link is finished and the linker writes the output file's symbol table, another BFD back end routine is called to take the newly created symbol table and convert it into the chosen output format. * Menu: * BFD information loss:: Information Loss * Canonical format:: The BFD canonical object-file format  File: ld.info, Node: BFD information loss, Next: Canonical format, Up: BFD outline 5.1.1 Information Loss ---------------------- _Information can be lost during output._ The output formats supported by BFD do not provide identical facilities, and information which can be described in one form has nowhere to go in another format. One example of this is alignment information in `b.out'. There is nowhere in an `a.out' format file to store alignment information on the contained data, so when a file is linked from `b.out' and an `a.out' image is produced, alignment information will not propagate to the output file. (The linker will still use the alignment information internally, so the link is performed correctly). Another example is COFF section names. COFF files may contain an unlimited number of sections, each one with a textual section name. If the target of the link is a format which does not have many sections (e.g., `a.out') or has sections without names (e.g., the Oasys format), the link cannot be done simply. You can circumvent this problem by describing the desired input-to-output section mapping with the linker command language. _Information can be lost during canonicalization._ The BFD internal canonical form of the external formats is not exhaustive; there are structures in input formats for which there is no direct representation internally. This means that the BFD back ends cannot maintain all possible data richness through the transformation between external to internal and back to external formats. This limitation is only a problem when an application reads one format and writes another. Each BFD back end is responsible for maintaining as much data as possible, and the internal BFD canonical form has structures which are opaque to the BFD core, and exported only to the back ends. When a file is read in one format, the canonical form is generated for BFD and the application. At the same time, the back end saves away any information which may otherwise be lost. If the data is then written back in the same format, the back end routine will be able to use the canonical form provided by the BFD core as well as the information it prepared earlier. Since there is a great deal of commonality between back ends, there is no information lost when linking or copying big endian COFF to little endian COFF, or `a.out' to `b.out'. When a mixture of formats is linked, the information is only lost from the files whose format differs from the destination.  File: ld.info, Node: Canonical format, Prev: BFD information loss, Up: BFD outline 5.1.2 The BFD canonical object-file format ------------------------------------------ The greatest potential for loss of information occurs when there is the least overlap between the information provided by the source format, that stored by the canonical format, and that needed by the destination format. A brief description of the canonical form may help you understand which kinds of data you can count on preserving across conversions. _files_ Information stored on a per-file basis includes target machine architecture, particular implementation format type, a demand pageable bit, and a write protected bit. Information like Unix magic numbers is not stored here--only the magic numbers' meaning, so a `ZMAGIC' file would have both the demand pageable bit and the write protected text bit set. The byte order of the target is stored on a per-file basis, so that big- and little-endian object files may be used with one another. _sections_ Each section in the input file contains the name of the section, the section's original address in the object file, size and alignment information, various flags, and pointers into other BFD data structures. _symbols_ Each symbol contains a pointer to the information for the object file which originally defined it, its name, its value, and various flag bits. When a BFD back end reads in a symbol table, it relocates all symbols to make them relative to the base of the section where they were defined. Doing this ensures that each symbol points to its containing section. Each symbol also has a varying amount of hidden private data for the BFD back end. Since the symbol points to the original file, the private data format for that symbol is accessible. `ld' can operate on a collection of symbols of wildly different formats without problems. Normal global and simple local symbols are maintained on output, so an output file (no matter its format) will retain symbols pointing to functions and to global, static, and common variables. Some symbol information is not worth retaining; in `a.out', type information is stored in the symbol table as long symbol names. This information would be useless to most COFF debuggers; the linker has command line switches to allow users to throw it away. There is one word of type information within the symbol, so if the format supports symbol type information within symbols (for example, COFF, IEEE, Oasys) and the type is simple enough to fit within one word (nearly everything but aggregates), the information will be preserved. _relocation level_ Each canonical BFD relocation record contains a pointer to the symbol to relocate to, the offset of the data to relocate, the section the data is in, and a pointer to a relocation type descriptor. Relocation is performed by passing messages through the relocation type descriptor and the symbol pointer. Therefore, relocations can be performed on output data using a relocation method that is only available in one of the input formats. For instance, Oasys provides a byte relocation format. A relocation record requesting this relocation type would point indirectly to a routine to perform this, so the relocation may be performed on a byte being written to a 68k COFF file, even though 68k COFF has no such relocation type. _line numbers_ Object formats can contain, for debugging purposes, some form of mapping between symbols, source line numbers, and addresses in the output file. These addresses have to be relocated along with the symbol information. Each symbol with an associated list of line number records points to the first record of the list. The head of a line number list consists of a pointer to the symbol, which allows finding out the address of the function whose line number is being described. The rest of the list is made up of pairs: offsets into the section and line numbers. Any format which can simply derive this information can pass it successfully between formats (COFF, IEEE and Oasys).  File: ld.info, Node: Reporting Bugs, Next: MRI, Prev: BFD, Up: Top 6 Reporting Bugs **************** Your bug reports play an essential role in making `ld' reliable. Reporting a bug may help you by bringing a solution to your problem, or it may not. But in any case the principal function of a bug report is to help the entire community by making the next version of `ld' work better. Bug reports are your contribution to the maintenance of `ld'. In order for a bug report to serve its purpose, you must include the information that enables us to fix the bug. * Menu: * Bug Criteria:: Have you found a bug? * Bug Reporting:: How to report bugs  File: ld.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs 6.1 Have You Found a Bug? ========================= If you are not sure whether you have found a bug, here are some guidelines: * If the linker gets a fatal signal, for any input whatever, that is a `ld' bug. Reliable linkers never crash. * If `ld' produces an error message for valid input, that is a bug. * If `ld' does not produce an error message for invalid input, that may be a bug. In the general case, the linker can not verify that object files are correct. * If you are an experienced user of linkers, your suggestions for improvement of `ld' are welcome in any case.  File: ld.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs 6.2 How to Report Bugs ====================== A number of companies and individuals offer support for GNU products. If you obtained `ld' from a support organization, we recommend you contact that organization first. You can find contact information for many support companies and individuals in the file `etc/SERVICE' in the GNU Emacs distribution. Otherwise, send bug reports for `ld' to `http://www.sourceware.org/bugzilla/'. The fundamental principle of reporting bugs usefully is this: *report all the facts*. If you are not sure whether to state a fact or leave it out, state it! Often people omit facts because they think they know what causes the problem and assume that some details do not matter. Thus, you might assume that the name of a symbol you use in an example does not matter. Well, probably it does not, but one cannot be sure. Perhaps the bug is a stray memory reference which happens to fetch from the location where that name is stored in memory; perhaps, if the name were different, the contents of that location would fool the linker into doing the right thing despite the bug. Play it safe and give a specific, complete example. That is the easiest thing for you to do, and the most helpful. Keep in mind that the purpose of a bug report is to enable us to fix the bug if it is new to us. Therefore, always write your bug reports on the assumption that the bug has not been reported previously. Sometimes people give a few sketchy facts and ask, "Does this ring a bell?" This cannot help us fix a bug, so it is basically useless. We respond by asking for enough details to enable us to investigate. You might as well expedite matters by sending them to begin with. To enable us to fix the bug, you should include all these things: * The version of `ld'. `ld' announces it if you start it with the `--version' argument. Without this, we will not know whether there is any point in looking for the bug in the current version of `ld'. * Any patches you may have applied to the `ld' source, including any patches made to the `BFD' library. * The type of machine you are using, and the operating system name and version number. * What compiler (and its version) was used to compile `ld'--e.g. "`gcc-2.7'". * The command arguments you gave the linker to link your example and observe the bug. To guarantee you will not omit something important, list them all. A copy of the Makefile (or the output from make) is sufficient. If we were to try to guess the arguments, we would probably guess wrong and then we might not encounter the bug. * A complete input file, or set of input files, that will reproduce the bug. It is generally most helpful to send the actual object files provided that they are reasonably small. Say no more than 10K. For bigger files you can either make them available by FTP or HTTP or else state that you are willing to send the object file(s) to whomever requests them. (Note - your email will be going to a mailing list, so we do not want to clog it up with large attachments). But small attachments are best. If the source files were assembled using `gas' or compiled using `gcc', then it may be OK to send the source files rather than the object files. In this case, be sure to say exactly what version of `gas' or `gcc' was used to produce the object files. Also say how `gas' or `gcc' were configured. * A description of what behavior you observe that you believe is incorrect. For example, "It gets a fatal signal." Of course, if the bug is that `ld' gets a fatal signal, then we will certainly notice it. But if the bug is incorrect output, we might not notice unless it is glaringly wrong. You might as well not give us a chance to make a mistake. Even if the problem you experience is a fatal signal, you should still say so explicitly. Suppose something strange is going on, such as, your copy of `ld' is out of sync, or you have encountered a bug in the C library on your system. (This has happened!) Your copy might crash and ours would not. If you told us to expect a crash, then when ours fails to crash, we would know that the bug was not happening for us. If you had not told us to expect a crash, then we would not be able to draw any conclusion from our observations. * If you wish to suggest changes to the `ld' source, send us context diffs, as generated by `diff' with the `-u', `-c', or `-p' option. Always send diffs from the old file to the new file. If you even discuss something in the `ld' source, refer to it by context, not by line number. The line numbers in our development sources will not match those in your sources. Your line numbers would convey no useful information to us. Here are some things that are not necessary: * A description of the envelope of the bug. Often people who encounter a bug spend a lot of time investigating which changes to the input file will make the bug go away and which changes will not affect it. This is often time consuming and not very useful, because the way we will find the bug is by running a single example under the debugger with breakpoints, not by pure deduction from a series of examples. We recommend that you save your time for something else. Of course, if you can find a simpler example to report _instead_ of the original one, that is a convenience for us. Errors in the output will be easier to spot, running under the debugger will take less time, and so on. However, simplification is not vital; if you do not want to do this, report the bug anyway and send us the entire test case you used. * A patch for the bug. A patch for the bug does help us if it is a good one. But do not omit the necessary information, such as the test case, on the assumption that a patch is all we need. We might see problems with your patch and decide to fix the problem another way, or we might not understand it at all. Sometimes with a program as complicated as `ld' it is very hard to construct an example that will make the program follow a certain path through the code. If you do not send us the example, we will not be able to construct one, so we will not be able to verify that the bug is fixed. And if we cannot understand what bug you are trying to fix, or why your patch should be an improvement, we will not install it. A test case will help us to understand. * A guess about what the bug is or what it depends on. Such guesses are usually wrong. Even we cannot guess right about such things without first using the debugger to find the facts.  File: ld.info, Node: MRI, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top Appendix A MRI Compatible Script Files ************************************** To aid users making the transition to GNU `ld' from the MRI linker, `ld' can use MRI compatible linker scripts as an alternative to the more general-purpose linker scripting language described in *Note Scripts::. MRI compatible linker scripts have a much simpler command set than the scripting language otherwise used with `ld'. GNU `ld' supports the most commonly used MRI linker commands; these commands are described here. In general, MRI scripts aren't of much use with the `a.out' object file format, since it only has three sections and MRI scripts lack some features to make use of them. You can specify a file containing an MRI-compatible script using the `-c' command-line option. Each command in an MRI-compatible script occupies its own line; each command line starts with the keyword that identifies the command (though blank lines are also allowed for punctuation). If a line of an MRI-compatible script begins with an unrecognized keyword, `ld' issues a warning message, but continues processing the script. Lines beginning with `*' are comments. You can write these commands using all upper-case letters, or all lower case; for example, `chip' is the same as `CHIP'. The following list shows only the upper-case form of each command. `ABSOLUTE SECNAME' `ABSOLUTE SECNAME, SECNAME, ... SECNAME' Normally, `ld' includes in the output file all sections from all the input files. However, in an MRI-compatible script, you can use the `ABSOLUTE' command to restrict the sections that will be present in your output program. If the `ABSOLUTE' command is used at all in a script, then only the sections named explicitly in `ABSOLUTE' commands will appear in the linker output. You can still use other input sections (whatever you select on the command line, or using `LOAD') to resolve addresses in the output file. `ALIAS OUT-SECNAME, IN-SECNAME' Use this command to place the data from input section IN-SECNAME in a section called OUT-SECNAME in the linker output file. IN-SECNAME may be an integer. `ALIGN SECNAME = EXPRESSION' Align the section called SECNAME to EXPRESSION. The EXPRESSION should be a power of two. `BASE EXPRESSION' Use the value of EXPRESSION as the lowest address (other than absolute addresses) in the output file. `CHIP EXPRESSION' `CHIP EXPRESSION, EXPRESSION' This command does nothing; it is accepted only for compatibility. `END' This command does nothing whatever; it's only accepted for compatibility. `FORMAT OUTPUT-FORMAT' Similar to the `OUTPUT_FORMAT' command in the more general linker language, but restricted to one of these output formats: 1. S-records, if OUTPUT-FORMAT is `S' 2. IEEE, if OUTPUT-FORMAT is `IEEE' 3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is `COFF' `LIST ANYTHING...' Print (to the standard output file) a link map, as produced by the `ld' command-line option `-M'. The keyword `LIST' may be followed by anything on the same line, with no change in its effect. `LOAD FILENAME' `LOAD FILENAME, FILENAME, ... FILENAME' Include one or more object file FILENAME in the link; this has the same effect as specifying FILENAME directly on the `ld' command line. `NAME OUTPUT-NAME' OUTPUT-NAME is the name for the program produced by `ld'; the MRI-compatible command `NAME' is equivalent to the command-line option `-o' or the general script language command `OUTPUT'. `ORDER SECNAME, SECNAME, ... SECNAME' `ORDER SECNAME SECNAME SECNAME' Normally, `ld' orders the sections in its output file in the order in which they first appear in the input files. In an MRI-compatible script, you can override this ordering with the `ORDER' command. The sections you list with `ORDER' will appear first in your output file, in the order specified. `PUBLIC NAME=EXPRESSION' `PUBLIC NAME,EXPRESSION' `PUBLIC NAME EXPRESSION' Supply a value (EXPRESSION) for external symbol NAME used in the linker input files. `SECT SECNAME, EXPRESSION' `SECT SECNAME=EXPRESSION' `SECT SECNAME EXPRESSION' You can use any of these three forms of the `SECT' command to specify the start address (EXPRESSION) for section SECNAME. If you have more than one `SECT' statement for the same SECNAME, only the _first_ sets the start address.  File: ld.info, Node: GNU Free Documentation License, Next: LD Index, Prev: MRI, Up: Top Appendix B GNU Free Documentation License ***************************************** Version 1.1, March 2000 Copyright (C) 2000, 2003 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you." A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque." Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements." Such a section may not be included in the Modified Version. N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties-for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications." You must delete all sections entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. ADDENDUM: How to use this License for your documents ==================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License." If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  File: ld.info, Node: LD Index, Prev: GNU Free Documentation License, Up: Top LD Index ******** [index] * Menu: * ": Symbols. (line 6) * -(: Options. (line 645) * --accept-unknown-input-arch: Options. (line 663) * --add-needed: Options. (line 685) * --add-stdcall-alias: Options. (line 1470) * --allow-multiple-definition: Options. (line 910) * --allow-shlib-undefined: Options. (line 916) * --architecture=ARCH: Options. (line 106) * --as-needed: Options. (line 673) * --auxiliary: Options. (line 207) * --bank-window: Options. (line 1815) * --base-file: Options. (line 1475) * --be8: ARM. (line 23) * --bss-plt: PowerPC ELF32. (line 13) * --build-id: Options. (line 1432) * --build-id=STYLE: Options. (line 1432) * --check-sections: Options. (line 767) * --cref: Options. (line 777) * --default-imported-symver: Options. (line 944) * --default-script=SCRIPT: Options. (line 490) * --default-symver: Options. (line 940) * --defsym SYMBOL=EXP: Options. (line 805) * --demangle[=STYLE]: Options. (line 818) * --disable-auto-image-base: Options. (line 1622) * --disable-auto-import: Options. (line 1757) * --disable-new-dtags: Options. (line 1395) * --disable-runtime-pseudo-reloc: Options. (line 1770) * --disable-stdcall-fixup: Options. (line 1485) * --discard-all: Options. (line 536) * --discard-locals: Options. (line 540) * --dll: Options. (line 1480) * --dll-search-prefix: Options. (line 1628) * --dotsyms: PowerPC64 ELF64. (line 33) * --dynamic-linker FILE: Options. (line 831) * --dynamic-list-cpp-new: Options. (line 759) * --dynamic-list-cpp-typeinfo: Options. (line 763) * --dynamic-list-data: Options. (line 756) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 743) * --eh-frame-hdr: Options. (line 1391) * --emit-relocs: Options. (line 425) * --emit-stack-syms: SPU ELF. (line 46) * --emit-stub-syms <1>: SPU ELF. (line 15) * --emit-stub-syms <2>: PowerPC64 ELF64. (line 29) * --emit-stub-syms: PowerPC ELF32. (line 44) * --enable-auto-image-base: Options. (line 1614) * --enable-auto-import: Options. (line 1637) * --enable-extra-pe-debug: Options. (line 1775) * --enable-new-dtags: Options. (line 1395) * --enable-runtime-pseudo-reloc: Options. (line 1762) * --enable-stdcall-fixup: Options. (line 1485) * --entry=ENTRY: Options. (line 160) * --error-unresolved-symbols: Options. (line 1344) * --exclude-libs: Options. (line 170) * --exclude-symbols: Options. (line 1527) * --export-all-symbols: Options. (line 1503) * --export-dynamic: Options. (line 181) * --extra-overlay-stubs: SPU ELF. (line 19) * --fatal-warnings: Options. (line 837) * --file-alignment: Options. (line 1533) * --filter: Options. (line 228) * --fix-v4bx: ARM. (line 44) * --fix-v4bx-interworking: ARM. (line 57) * --force-dynamic: Options. (line 434) * --force-exe-suffix: Options. (line 842) * --format=FORMAT: Options. (line 117) * --format=VERSION: TI COFF. (line 6) * --gc-sections: Options. (line 852) * --got: Options. (line 1828) * --got=TYPE: M68K. (line 6) * --gpsize: Options. (line 261) * --hash-size=NUMBER: Options. (line 1404) * --hash-style=STYLE: Options. (line 1412) * --heap: Options. (line 1539) * --help: Options. (line 883) * --image-base: Options. (line 1546) * --just-symbols=FILE: Options. (line 457) * --kill-at: Options. (line 1555) * --large-address-aware: Options. (line 1560) * --library-path=DIR: Options. (line 320) * --library=NAMESPEC: Options. (line 287) * --local-store=lo:hi: SPU ELF. (line 24) * --major-image-version: Options. (line 1569) * --major-os-version: Options. (line 1574) * --major-subsystem-version: Options. (line 1578) * --minor-image-version: Options. (line 1583) * --minor-os-version: Options. (line 1588) * --minor-subsystem-version: Options. (line 1592) * --mri-script=MRI-CMDFILE: Options. (line 141) * --multi-subspace: HPPA ELF32. (line 6) * --nmagic: Options. (line 389) * --no-accept-unknown-input-arch: Options. (line 663) * --no-add-needed: Options. (line 685) * --no-allow-shlib-undefined: Options. (line 916) * --no-as-needed: Options. (line 673) * --no-check-sections: Options. (line 767) * --no-define-common: Options. (line 789) * --no-demangle: Options. (line 818) * --no-dotsyms: PowerPC64 ELF64. (line 33) * --no-enum-size-warning: ARM. (line 106) * --no-fatal-warnings: Options. (line 837) * --no-gc-sections: Options. (line 852) * --no-keep-memory: Options. (line 895) * --no-multi-toc: PowerPC64 ELF64. (line 74) * --no-omagic: Options. (line 403) * --no-opd-optimize: PowerPC64 ELF64. (line 48) * --no-overlays: SPU ELF. (line 9) * --no-print-gc-sections: Options. (line 874) * --no-relax: Xtensa. (line 56) * --no-tls-optimize <1>: PowerPC64 ELF64. (line 43) * --no-tls-optimize: PowerPC ELF32. (line 48) * --no-toc-optimize: PowerPC64 ELF64. (line 60) * --no-trampoline: Options. (line 1809) * --no-undefined: Options. (line 902) * --no-undefined-version: Options. (line 935) * --no-warn-mismatch: Options. (line 948) * --no-warn-search-mismatch: Options. (line 957) * --no-wchar-size-warning: ARM. (line 113) * --no-whole-archive: Options. (line 961) * --noinhibit-exec: Options. (line 965) * --non-overlapping-opd: PowerPC64 ELF64. (line 54) * --oformat: Options. (line 977) * --omagic: Options. (line 394) * --out-implib: Options. (line 1605) * --output-def: Options. (line 1597) * --output=OUTPUT: Options. (line 409) * --pic-executable: Options. (line 990) * --pic-veneer: ARM. (line 119) * --plugin: SPU ELF. (line 6) * --print-gc-sections: Options. (line 874) * --print-map: Options. (line 352) * --reduce-memory-overheads: Options. (line 1418) * --relax: Options. (line 1006) * --relax on i960: i960. (line 31) * --relax on PowerPC: PowerPC ELF32. (line 6) * --relax on Xtensa: Xtensa. (line 27) * --relocatable: Options. (line 438) * --script=SCRIPT: Options. (line 481) * --sdata-got: PowerPC ELF32. (line 30) * --section-alignment: Options. (line 1780) * --section-start SECTIONNAME=ORG: Options. (line 1181) * --secure-plt: PowerPC ELF32. (line 23) * --sort-common: Options. (line 1126) * --sort-section alignment: Options. (line 1138) * --sort-section name: Options. (line 1134) * --split-by-file: Options. (line 1142) * --split-by-reloc: Options. (line 1147) * --stack: Options. (line 1786) * --stack-analysis: SPU ELF. (line 29) * --stats: Options. (line 1160) * --strip-all: Options. (line 468) * --strip-debug: Options. (line 472) * --stub-group-size: PowerPC64 ELF64. (line 6) * --stub-group-size=N <1>: HPPA ELF32. (line 12) * --stub-group-size=N: ARM. (line 124) * --subsystem: Options. (line 1793) * --support-old-code: ARM. (line 6) * --sysroot: Options. (line 1164) * --target-help: Options. (line 887) * --target1-abs: ARM. (line 27) * --target1-rel: ARM. (line 27) * --target2=TYPE: ARM. (line 32) * --thumb-entry=ENTRY: ARM. (line 17) * --trace: Options. (line 477) * --trace-symbol=SYMBOL: Options. (line 546) * --traditional-format: Options. (line 1169) * --undefined=SYMBOL: Options. (line 503) * --unique[=SECTION]: Options. (line 521) * --unresolved-symbols: Options. (line 1196) * --use-blx: ARM. (line 69) * --verbose: Options. (line 1225) * --version: Options. (line 530) * --version-script=VERSION-SCRIPTFILE: Options. (line 1231) * --vfp11-denorm-fix: ARM. (line 78) * --warn-common: Options. (line 1238) * --warn-constructors: Options. (line 1306) * --warn-multiple-gp: Options. (line 1311) * --warn-once: Options. (line 1325) * --warn-section-align: Options. (line 1329) * --warn-shared-textrel: Options. (line 1336) * --warn-unresolved-symbols: Options. (line 1339) * --whole-archive: Options. (line 1348) * --wrap: Options. (line 1362) * -AARCH: Options. (line 105) * -aKEYWORD: Options. (line 98) * -assert KEYWORD: Options. (line 695) * -b FORMAT: Options. (line 117) * -Bdynamic: Options. (line 698) * -Bgroup: Options. (line 708) * -Bshareable: Options. (line 1118) * -Bstatic: Options. (line 715) * -Bsymbolic: Options. (line 730) * -Bsymbolic-functions: Options. (line 737) * -c MRI-CMDFILE: Options. (line 141) * -call_shared: Options. (line 698) * -d: Options. (line 151) * -dc: Options. (line 151) * -dn: Options. (line 715) * -dp: Options. (line 151) * -dT SCRIPT: Options. (line 490) * -dy: Options. (line 698) * -E: Options. (line 181) * -e ENTRY: Options. (line 160) * -EB: Options. (line 200) * -EL: Options. (line 203) * -F: Options. (line 228) * -f: Options. (line 207) * -fini: Options. (line 252) * -G: Options. (line 261) * -g: Options. (line 258) * -hNAME: Options. (line 269) * -i: Options. (line 278) * -IFILE: Options. (line 831) * -init: Options. (line 281) * -LDIR: Options. (line 320) * -lNAMESPEC: Options. (line 287) * -M: Options. (line 352) * -m EMULATION: Options. (line 342) * -Map: Options. (line 891) * -N: Options. (line 394) * -n: Options. (line 389) * -non_shared: Options. (line 715) * -nostdlib: Options. (line 971) * -O LEVEL: Options. (line 415) * -o OUTPUT: Options. (line 409) * -pie: Options. (line 990) * -q: Options. (line 425) * -qmagic: Options. (line 1000) * -Qy: Options. (line 1003) * -r: Options. (line 438) * -R FILE: Options. (line 457) * -rpath: Options. (line 1041) * -rpath-link: Options. (line 1063) * -S: Options. (line 472) * -s: Options. (line 468) * -shared: Options. (line 1118) * -soname=NAME: Options. (line 269) * -static: Options. (line 715) * -t: Options. (line 477) * -T SCRIPT: Options. (line 481) * -Tbss ORG: Options. (line 1190) * -Tdata ORG: Options. (line 1190) * -Ttext ORG: Options. (line 1190) * -u SYMBOL: Options. (line 503) * -Ur: Options. (line 511) * -V: Options. (line 530) * -v: Options. (line 530) * -X: Options. (line 540) * -x: Options. (line 536) * -Y PATH: Options. (line 555) * -y SYMBOL: Options. (line 546) * -z defs: Options. (line 902) * -z KEYWORD: Options. (line 559) * -z muldefs: Options. (line 910) * .: Location Counter. (line 6) * /DISCARD/: Output Section Discarding. (line 21) * :PHDR: Output Section Phdr. (line 6) * =FILLEXP: Output Section Fill. (line 6) * >REGION: Output Section Region. (line 6) * [COMMON]: Input Section Common. (line 29) * ABSOLUTE (MRI): MRI. (line 33) * absolute and relocatable symbols: Expression Section. (line 6) * absolute expressions: Expression Section. (line 6) * ABSOLUTE(EXP): Builtin Functions. (line 10) * ADDR(SECTION): Builtin Functions. (line 17) * address, section: Output Section Address. (line 6) * ALIAS (MRI): MRI. (line 44) * ALIGN (MRI): MRI. (line 50) * align expression: Builtin Functions. (line 36) * align location counter: Builtin Functions. (line 36) * ALIGN(ALIGN): Builtin Functions. (line 36) * ALIGN(EXP,ALIGN): Builtin Functions. (line 36) * ALIGN(SECTION_ALIGN): Forced Output Alignment. (line 6) * ALIGNOF(SECTION): Builtin Functions. (line 62) * allocating memory: MEMORY. (line 6) * architecture: Miscellaneous Commands. (line 72) * architectures: Options. (line 105) * archive files, from cmd line: Options. (line 287) * archive search path in linker script: File Commands. (line 74) * arithmetic: Expressions. (line 6) * arithmetic operators: Operators. (line 6) * ARM interworking support: ARM. (line 6) * AS_NEEDED(FILES): File Commands. (line 54) * ASSERT: Miscellaneous Commands. (line 9) * assertion in linker script: Miscellaneous Commands. (line 9) * assignment in scripts: Assignments. (line 6) * AT(LMA): Output Section LMA. (line 6) * AT>LMA_REGION: Output Section LMA. (line 6) * automatic data imports: WIN32. (line 170) * back end: BFD. (line 6) * BASE (MRI): MRI. (line 54) * BE8: ARM. (line 23) * BFD canonical format: Canonical format. (line 11) * BFD requirements: BFD. (line 16) * big-endian objects: Options. (line 200) * binary input format: Options. (line 117) * BLOCK(EXP): Builtin Functions. (line 75) * bug criteria: Bug Criteria. (line 6) * bug reports: Bug Reporting. (line 6) * bugs in ld: Reporting Bugs. (line 6) * BYTE(EXPRESSION): Output Section Data. (line 6) * C++ constructors, arranging in link: Output Section Keywords. (line 19) * CHIP (MRI): MRI. (line 58) * COLLECT_NO_DEMANGLE: Environment. (line 29) * combining symbols, warnings on: Options. (line 1238) * command files: Scripts. (line 6) * command line: Options. (line 6) * common allocation: Options. (line 151) * common allocation in linker script: Miscellaneous Commands. (line 20) * common symbol placement: Input Section Common. (line 6) * compatibility, MRI: Options. (line 141) * constants in linker scripts: Constants. (line 6) * CONSTRUCTORS: Output Section Keywords. (line 19) * constructors: Options. (line 511) * constructors, arranging in link: Output Section Keywords. (line 19) * crash of linker: Bug Criteria. (line 9) * CREATE_OBJECT_SYMBOLS: Output Section Keywords. (line 9) * creating a DEF file: WIN32. (line 137) * cross reference table: Options. (line 777) * cross references: Miscellaneous Commands. (line 56) * current output location: Location Counter. (line 6) * data: Output Section Data. (line 6) * DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions. (line 80) * DATA_SEGMENT_END(EXP): Builtin Functions. (line 101) * DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 107) * dbx: Options. (line 1174) * DEF files, creating: Options. (line 1597) * default emulation: Environment. (line 21) * default input format: Environment. (line 9) * DEFINED(SYMBOL): Builtin Functions. (line 118) * deleting local symbols: Options. (line 536) * demangling, default: Environment. (line 29) * demangling, from command line: Options. (line 818) * direct linking to a dll: WIN32. (line 218) * discarding sections: Output Section Discarding. (line 6) * discontinuous memory: MEMORY. (line 6) * DLLs, creating: Options. (line 1503) * DLLs, linking to: Options. (line 1628) * dot: Location Counter. (line 6) * dot inside sections: Location Counter. (line 36) * dot outside sections: Location Counter. (line 66) * dynamic linker, from command line: Options. (line 831) * dynamic symbol table: Options. (line 181) * ELF program headers: PHDRS. (line 6) * emulation: Options. (line 342) * emulation, default: Environment. (line 21) * END (MRI): MRI. (line 62) * endianness: Options. (line 200) * entry point: Entry Point. (line 6) * entry point, from command line: Options. (line 160) * entry point, thumb: ARM. (line 17) * ENTRY(SYMBOL): Entry Point. (line 6) * error on valid input: Bug Criteria. (line 12) * example of linker script: Simple Example. (line 6) * exporting DLL symbols: WIN32. (line 19) * expression evaluation order: Evaluation. (line 6) * expression sections: Expression Section. (line 6) * expression, absolute: Builtin Functions. (line 10) * expressions: Expressions. (line 6) * EXTERN: Miscellaneous Commands. (line 13) * fatal signal: Bug Criteria. (line 9) * file name wildcard patterns: Input Section Wildcards. (line 6) * FILEHDR: PHDRS. (line 61) * filename symbols: Output Section Keywords. (line 9) * fill pattern, entire section: Output Section Fill. (line 6) * FILL(EXPRESSION): Output Section Data. (line 39) * finalization function: Options. (line 252) * first input file: File Commands. (line 82) * first instruction: Entry Point. (line 6) * FIX_V4BX: ARM. (line 44) * FIX_V4BX_INTERWORKING: ARM. (line 57) * FORCE_COMMON_ALLOCATION: Miscellaneous Commands. (line 20) * forcing input section alignment: Forced Input Alignment. (line 6) * forcing output section alignment: Forced Output Alignment. (line 6) * forcing the creation of dynamic sections: Options. (line 434) * FORMAT (MRI): MRI. (line 66) * functions in expressions: Builtin Functions. (line 6) * garbage collection <1>: Input Section Keep. (line 6) * garbage collection: Options. (line 852) * generating optimized output: Options. (line 415) * GNU linker: Overview. (line 6) * GNUTARGET: Environment. (line 9) * GROUP(FILES): File Commands. (line 47) * grouping input files: File Commands. (line 47) * groups of archives: Options. (line 645) * H8/300 support: H8/300. (line 6) * header size: Builtin Functions. (line 183) * heap size: Options. (line 1539) * help: Options. (line 883) * holes: Location Counter. (line 12) * holes, filling: Output Section Data. (line 39) * HPPA multiple sub-space stubs: HPPA ELF32. (line 6) * HPPA stub grouping: HPPA ELF32. (line 12) * i960 support: i960. (line 6) * image base: Options. (line 1546) * implicit linker scripts: Implicit Linker Scripts. (line 6) * import libraries: WIN32. (line 10) * INCLUDE FILENAME: File Commands. (line 9) * including a linker script: File Commands. (line 9) * including an entire archive: Options. (line 1348) * incremental link: Options. (line 278) * INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands. (line 25) * initialization function: Options. (line 281) * initialized data in ROM: Output Section LMA. (line 26) * input file format in linker script: Format Commands. (line 35) * input filename symbols: Output Section Keywords. (line 9) * input files in linker scripts: File Commands. (line 19) * input files, displaying: Options. (line 477) * input format: Options. (line 117) * input object files in linker scripts: File Commands. (line 19) * input section alignment: Forced Input Alignment. (line 6) * input section basics: Input Section Basics. (line 6) * input section wildcards: Input Section Wildcards. (line 6) * input sections: Input Section. (line 6) * INPUT(FILES): File Commands. (line 19) * INSERT: Miscellaneous Commands. (line 30) * insert user script into default script: Miscellaneous Commands. (line 30) * integer notation: Constants. (line 6) * integer suffixes: Constants. (line 12) * internal object-file format: Canonical format. (line 11) * invalid input: Bug Criteria. (line 14) * K and M integer suffixes: Constants. (line 12) * KEEP: Input Section Keep. (line 6) * l =: MEMORY. (line 72) * lazy evaluation: Evaluation. (line 6) * ld bugs, reporting: Bug Reporting. (line 6) * LDEMULATION: Environment. (line 21) * len =: MEMORY. (line 72) * LENGTH =: MEMORY. (line 72) * LENGTH(MEMORY): Builtin Functions. (line 135) * library search path in linker script: File Commands. (line 74) * link map: Options. (line 352) * link-time runtime library search path: Options. (line 1063) * linker crash: Bug Criteria. (line 9) * linker script concepts: Basic Script Concepts. (line 6) * linker script example: Simple Example. (line 6) * linker script file commands: File Commands. (line 6) * linker script format: Script Format. (line 6) * linker script input object files: File Commands. (line 19) * linker script simple commands: Simple Commands. (line 6) * linker scripts: Scripts. (line 6) * LIST (MRI): MRI. (line 77) * little-endian objects: Options. (line 203) * LOAD (MRI): MRI. (line 84) * load address: Output Section LMA. (line 6) * LOADADDR(SECTION): Builtin Functions. (line 138) * loading, preventing: Output Section Type. (line 22) * local symbols, deleting: Options. (line 540) * location counter: Location Counter. (line 6) * LONG(EXPRESSION): Output Section Data. (line 6) * M and K integer suffixes: Constants. (line 12) * M68HC11 and 68HC12 support: M68HC11/68HC12. (line 6) * machine architecture: Miscellaneous Commands. (line 72) * machine dependencies: Machine Dependent. (line 6) * mapping input sections to output sections: Input Section. (line 6) * MAX: Builtin Functions. (line 143) * MEMORY: MEMORY. (line 6) * memory region attributes: MEMORY. (line 32) * memory regions: MEMORY. (line 6) * memory regions and sections: Output Section Region. (line 6) * memory usage: Options. (line 895) * MIN: Builtin Functions. (line 146) * Motorola 68K GOT generation: M68K. (line 6) * MRI compatibility: MRI. (line 6) * MSP430 extra sections: MSP430. (line 11) * NAME (MRI): MRI. (line 90) * name, section: Output Section Name. (line 6) * names: Symbols. (line 6) * naming the output file: Options. (line 409) * NEXT(EXP): Builtin Functions. (line 150) * NMAGIC: Options. (line 389) * NO_ENUM_SIZE_WARNING: ARM. (line 106) * NO_WCHAR_SIZE_WARNING: ARM. (line 113) * NOCROSSREFS(SECTIONS): Miscellaneous Commands. (line 56) * NOLOAD: Output Section Type. (line 22) * not enough room for program headers: Builtin Functions. (line 188) * o =: MEMORY. (line 67) * objdump -i: BFD. (line 6) * object file management: BFD. (line 6) * object files: Options. (line 29) * object formats available: BFD. (line 6) * object size: Options. (line 261) * OMAGIC: Options. (line 394) * opening object files: BFD outline. (line 6) * operators for arithmetic: Operators. (line 6) * options: Options. (line 6) * ORDER (MRI): MRI. (line 95) * org =: MEMORY. (line 67) * ORIGIN =: MEMORY. (line 67) * ORIGIN(MEMORY): Builtin Functions. (line 156) * orphan: Orphan Sections. (line 6) * output file after errors: Options. (line 965) * output file format in linker script: Format Commands. (line 10) * output file name in linker script: File Commands. (line 64) * output section alignment: Forced Output Alignment. (line 6) * output section attributes: Output Section Attributes. (line 6) * output section data: Output Section Data. (line 6) * OUTPUT(FILENAME): File Commands. (line 64) * OUTPUT_ARCH(BFDARCH): Miscellaneous Commands. (line 72) * OUTPUT_FORMAT(BFDNAME): Format Commands. (line 10) * OVERLAY: Overlay Description. (line 6) * overlays: Overlay Description. (line 6) * partial link: Options. (line 438) * PHDRS: PHDRS. (line 6) * PIC_VENEER: ARM. (line 119) * position independent executables: Options. (line 992) * PowerPC ELF32 options: PowerPC ELF32. (line 13) * PowerPC GOT: PowerPC ELF32. (line 30) * PowerPC long branches: PowerPC ELF32. (line 6) * PowerPC PLT: PowerPC ELF32. (line 13) * PowerPC stub symbols: PowerPC ELF32. (line 44) * PowerPC TLS optimization: PowerPC ELF32. (line 48) * PowerPC64 dot symbols: PowerPC64 ELF64. (line 33) * PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6) * PowerPC64 multi-TOC: PowerPC64 ELF64. (line 74) * PowerPC64 OPD optimization: PowerPC64 ELF64. (line 48) * PowerPC64 OPD spacing: PowerPC64 ELF64. (line 54) * PowerPC64 stub grouping: PowerPC64 ELF64. (line 6) * PowerPC64 stub symbols: PowerPC64 ELF64. (line 29) * PowerPC64 TLS optimization: PowerPC64 ELF64. (line 43) * PowerPC64 TOC optimization: PowerPC64 ELF64. (line 60) * precedence in expressions: Operators. (line 6) * prevent unnecessary loading: Output Section Type. (line 22) * program headers: PHDRS. (line 6) * program headers and sections: Output Section Phdr. (line 6) * program headers, not enough room: Builtin Functions. (line 188) * program segments: PHDRS. (line 6) * PROVIDE: PROVIDE. (line 6) * PROVIDE_HIDDEN: PROVIDE_HIDDEN. (line 6) * PUBLIC (MRI): MRI. (line 103) * QUAD(EXPRESSION): Output Section Data. (line 6) * quoted symbol names: Symbols. (line 6) * read-only text: Options. (line 389) * read/write from cmd line: Options. (line 394) * regions of memory: MEMORY. (line 6) * relative expressions: Expression Section. (line 6) * relaxing addressing modes: Options. (line 1006) * relaxing on H8/300: H8/300. (line 9) * relaxing on i960: i960. (line 31) * relaxing on M68HC11: M68HC11/68HC12. (line 12) * relaxing on Xtensa: Xtensa. (line 27) * relocatable and absolute symbols: Expression Section. (line 6) * relocatable output: Options. (line 438) * removing sections: Output Section Discarding. (line 6) * reporting bugs in ld: Reporting Bugs. (line 6) * requirements for BFD: BFD. (line 16) * retain relocations in final executable: Options. (line 425) * retaining specified symbols: Options. (line 1027) * ROM initialized data: Output Section LMA. (line 26) * round up expression: Builtin Functions. (line 36) * round up location counter: Builtin Functions. (line 36) * runtime library name: Options. (line 269) * runtime library search path: Options. (line 1041) * runtime pseudo-relocation: WIN32. (line 196) * scaled integers: Constants. (line 12) * scommon section: Input Section Common. (line 20) * script files: Options. (line 481) * scripts: Scripts. (line 6) * search directory, from cmd line: Options. (line 320) * search path in linker script: File Commands. (line 74) * SEARCH_DIR(PATH): File Commands. (line 74) * SECT (MRI): MRI. (line 109) * section address: Output Section Address. (line 6) * section address in expression: Builtin Functions. (line 17) * section alignment: Builtin Functions. (line 62) * section alignment, warnings on: Options. (line 1329) * section data: Output Section Data. (line 6) * section fill pattern: Output Section Fill. (line 6) * section load address: Output Section LMA. (line 6) * section load address in expression: Builtin Functions. (line 138) * section name: Output Section Name. (line 6) * section name wildcard patterns: Input Section Wildcards. (line 6) * section size: Builtin Functions. (line 167) * section, assigning to memory region: Output Section Region. (line 6) * section, assigning to program header: Output Section Phdr. (line 6) * SECTIONS: SECTIONS. (line 6) * sections, discarding: Output Section Discarding. (line 6) * segment origins, cmd line: Options. (line 1190) * SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 159) * segments, ELF: PHDRS. (line 6) * shared libraries: Options. (line 1120) * SHORT(EXPRESSION): Output Section Data. (line 6) * SIZEOF(SECTION): Builtin Functions. (line 167) * SIZEOF_HEADERS: Builtin Functions. (line 183) * small common symbols: Input Section Common. (line 20) * SORT: Input Section Wildcards. (line 58) * SORT_BY_ALIGNMENT: Input Section Wildcards. (line 54) * SORT_BY_NAME: Input Section Wildcards. (line 46) * SPU: SPU ELF. (line 29) * SPU ELF options: SPU ELF. (line 6) * SPU extra overlay stubs: SPU ELF. (line 19) * SPU local store size: SPU ELF. (line 24) * SPU overlay stub symbols: SPU ELF. (line 15) * SPU overlays: SPU ELF. (line 9) * SPU plugins: SPU ELF. (line 6) * SQUAD(EXPRESSION): Output Section Data. (line 6) * stack size: Options. (line 1786) * standard Unix system: Options. (line 7) * start of execution: Entry Point. (line 6) * STARTUP(FILENAME): File Commands. (line 82) * strip all symbols: Options. (line 468) * strip debugger symbols: Options. (line 472) * stripping all but some symbols: Options. (line 1027) * STUB_GROUP_SIZE: ARM. (line 124) * SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment. (line 6) * suffixes for integers: Constants. (line 12) * symbol defaults: Builtin Functions. (line 118) * symbol definition, scripts: Assignments. (line 6) * symbol names: Symbols. (line 6) * symbol tracing: Options. (line 546) * symbol versions: VERSION. (line 6) * symbol-only input: Options. (line 457) * symbols, from command line: Options. (line 805) * symbols, relocatable and absolute: Expression Section. (line 6) * symbols, retaining selectively: Options. (line 1027) * synthesizing linker: Options. (line 1006) * synthesizing on H8/300: H8/300. (line 14) * TARGET(BFDNAME): Format Commands. (line 35) * TARGET1: ARM. (line 27) * TARGET2: ARM. (line 32) * thumb entry point: ARM. (line 17) * TI COFF versions: TI COFF. (line 6) * traditional format: Options. (line 1169) * trampoline generation on M68HC11: M68HC11/68HC12. (line 31) * trampoline generation on M68HC12: M68HC11/68HC12. (line 31) * unallocated address, next: Builtin Functions. (line 150) * undefined symbol: Options. (line 503) * undefined symbol in linker script: Miscellaneous Commands. (line 13) * undefined symbols, warnings on: Options. (line 1325) * uninitialized data placement: Input Section Common. (line 6) * unspecified memory: Output Section Data. (line 39) * usage: Options. (line 883) * USE_BLX: ARM. (line 69) * using a DEF file: WIN32. (line 42) * using auto-export functionality: WIN32. (line 22) * Using decorations: WIN32. (line 141) * variables, defining: Assignments. (line 6) * verbose: Options. (line 1225) * version: Options. (line 530) * version script: VERSION. (line 6) * version script, symbol versions: Options. (line 1231) * VERSION {script text}: VERSION. (line 6) * versions of symbols: VERSION. (line 6) * VFP11_DENORM_FIX: ARM. (line 78) * warnings, on combining symbols: Options. (line 1238) * warnings, on section alignment: Options. (line 1329) * warnings, on undefined symbols: Options. (line 1325) * weak externals: WIN32. (line 386) * what is this?: Overview. (line 6) * wildcard file name patterns: Input Section Wildcards. (line 6) * Xtensa options: Xtensa. (line 56) * Xtensa processors: Xtensa. (line 6)  Tag Table: Node: Top750 Node: Overview1524 Node: Invocation2638 Node: Options3046 Node: Environment85511 Node: Scripts87271 Node: Basic Script Concepts89005 Node: Script Format91712 Node: Simple Example92575 Node: Simple Commands95671 Node: Entry Point96122 Node: File Commands96881 Node: Format Commands100882 Node: Miscellaneous Commands102848 Node: Assignments106227 Node: Simple Assignments106718 Node: PROVIDE108454 Node: PROVIDE_HIDDEN109659 Node: Source Code Reference109903 Node: SECTIONS113483 Node: Output Section Description115374 Node: Output Section Name116427 Node: Output Section Address117303 Node: Input Section118952 Node: Input Section Basics119753 Node: Input Section Wildcards122971 Node: Input Section Common127704 Node: Input Section Keep129186 Node: Input Section Example129676 Node: Output Section Data130644 Node: Output Section Keywords133421 Node: Output Section Discarding136990 Node: Output Section Attributes138171 Node: Output Section Type139175 Node: Output Section LMA140329 Node: Forced Output Alignment142842 Node: Forced Input Alignment143110 Node: Output Section Region143495 Node: Output Section Phdr143925 Node: Output Section Fill144589 Node: Overlay Description145731 Node: MEMORY150034 Node: PHDRS154234 Node: VERSION159273 Node: Expressions167065 Node: Constants167943 Node: Symbols168504 Node: Orphan Sections169242 Node: Location Counter170406 Node: Operators174842 Node: Evaluation175764 Node: Expression Section177128 Node: Builtin Functions178617 Node: Implicit Linker Scripts186584 Node: Machine Dependent187359 Node: H8/300188375 Node: i960190000 Node: M68HC11/68HC12191685 Node: ARM193139 Node: HPPA ELF32200389 Node: M68K202012 Node: MMIX202921 Node: MSP430204086 Node: PowerPC ELF32205135 Node: PowerPC64 ELF64207749 Node: SPU ELF212165 Node: TI COFF214797 Node: WIN32215323 Node: Xtensa233680 Node: BFD236802 Node: BFD outline238257 Node: BFD information loss239543 Node: Canonical format242060 Node: Reporting Bugs246417 Node: Bug Criteria247111 Node: Bug Reporting247810 Node: MRI254849 Node: GNU Free Documentation License259492 Node: LD Index279209  End Tag Table @ 1.1.1.1 log @Import binutils 2.19.1 as requested by matt@@ OK'ed by board@@ @ text @@ 1.1.1.2 log @from ftp.gnu.org @ text @a2 1 INFO-DIR-SECTION Software development d7 1 a7 1 This file documents the GNU linker LD (GNU Binutils) version 2.21.1. d9 2 a10 3 Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. d13 1 a13 1 under the terms of the GNU Free Documentation License, Version 1.3 or d25 1 a25 1 This file documents the GNU linker ld (GNU Binutils) version 2.21.1. d28 2 a29 2 Documentation License version 1.3. A copy of the license is included in the section entitled "GNU Free Documentation License". d163 1 a163 1 gcc -Wl,--start-group foo.o bar.o -Wl,--end-group d166 1 a166 8 silently drop the linker options, resulting in a bad link. Confusion may also arise when passing options that require values through a driver, as the use of a space between option and argument acts as a separator, and causes the driver to pass only the option to the linker and the argument to the compiler. In this case, it is simplest to use the joined forms of both single- and multiple-letter options, such as: gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map d185 1 a185 1 `-a KEYWORD' d192 1 a192 11 `--audit AUDITLIB' Adds AUDITLIB to the `DT_AUDIT' entry of the dynamic section. AUDITLIB is not checked for existence, nor will it use the DT_SONAME specified in the library. If specified multiple times `DT_AUDIT' will contain a colon separated list of audit interfaces to use. If the linker finds an object with an audit entry while searching for shared libraries, it will add a corresponding `DT_DEPAUDIT' entry in the output file. This option is only meaningful on ELF platforms supporting the rtld-audit interface. `-A ARCHITECTURE' a246 10 `--depaudit AUDITLIB' `-P AUDITLIB' Adds AUDITLIB to the `DT_DEPAUDIT' entry of the dynamic section. AUDITLIB is not checked for existence, nor will it use the DT_SONAME specified in the library. If specified multiple times `DT_DEPAUDIT' will contain a colon separated list of audit interfaces to use. This option is only meaningful on ELF platforms supporting the rtld-audit interface. The -P option is provided for Solaris compatibility. d259 1 a259 1 not be automatically exported. The library names may be delimited a267 13 `--exclude-modules-for-implib MODULE,MODULE,...' Specifies a list of object files or archive members, from which symbols should not be automatically exported, but which should be copied wholesale into the import library being generated during the link. The module names may be delimited by commas or colons, and must match exactly the filenames used by `ld' to open the files; for archive members, this is simply the member name, but for object files the name listed must include and match precisely any path used to specify the input file on the linker's command-line. This option is available only for the i386 PE targeted port of the linker. Symbols explicitly listed in a .def file are still exported, regardless of this option. d270 7 a276 11 `--no-export-dynamic' When creating a dynamically linked executable, using the `-E' option or the `--export-dynamic' option causes the linker to add all symbols to the dynamic symbol table. The dynamic symbol table is the set of symbols which are visible from dynamic objects at run time. If you do not use either of these options (or use the `--no-export-dynamic' option to restore the default behavior), the dynamic symbol table will normally contain only those symbols which are referenced by some dynamic object mentioned in the link. a286 4 Note that this option is specific to ELF targeted ports. PE targets support a similar function to export all symbols from a DLL or EXE; see the description of `--export-all-symbols' below. d294 2 a295 2 `-f NAME' `--auxiliary=NAME' d316 1 a316 1 `--filter=NAME' d339 1 a339 1 `-fini=NAME' d348 1 a348 1 `-G VALUE' d356 1 a356 1 `-h NAME' d368 1 a368 1 `-init=NAME' d374 1 a374 1 `-l NAMESPEC' d379 1 a379 1 library path for a file called FILENAME, otherwise it will search d407 1 a407 1 `-L SEARCHDIR' d415 1 a415 3 regardless of the order in which the options appear. `-L' options do not affect how `ld' searches for a linker script unless `-T' option is specified. d429 1 a429 1 `-m EMULATION' d478 2 a479 3 Turn off page alignment of sections, and disable linking against shared libraries. If the output format supports Unix style magic numbers, mark the output as `NMAGIC'. d764 1 a764 1 Normally the linker will add a DT_NEEDED tag for each dynamic d766 5 a770 7 library is actually needed or not. `--as-needed' causes a DT_NEEDED tag to only be emitted for a library that satisfies an undefined symbol reference from a regular object file or, if the library is not found in the DT_NEEDED lists of other libraries linked up to that point, an undefined symbol reference from another dynamic library. `--no-as-needed' restores the default behaviour. d774 7 a780 4 These two options have been deprecated because of the similarity of their names to the `--as-needed' and `--no-as-needed' options. They have been replaced by `--copy-dt-needed-entries' and `--no-copy-dt-needed-entries'. d862 1 a862 24 `--check-sections'. Section overlap is not usually checked for relocatable links. You can force checking in that case by using the `--check-sections' option. `--copy-dt-needed-entries' `--no-copy-dt-needed-entries' This option affects the treatment of dynamic libraries referred to by DT_NEEDED tags _inside_ ELF dynamic libraries mentioned on the command line. Normally the linker will add a DT_NEEDED tag to the output binary for each library mentioned in a DT_NEEDED tag in an input dynamic library. With `--no-copy-dt-needed-entries' specified on the command line however any dynamic libraries that follow it will have their DT_NEEDED entries ignored. The default behaviour can be restored with `--copy-dt-needed-entries'. This option also has an effect on the resolution of symbols in dynamic libraries. With the default setting dynamic libraries mentioned on the command line will be recursively searched, following their DT_NEEDED tags to other libraries, in order to resolve symbols required by the output binary. With `--no-copy-dt-needed-entries' specified however the searching of dynamic libraries that follow it will stop with the dynamic library itself. No DT_NEEDED links will be traversed to resolve symbols. d892 1 a892 1 `--defsym=SYMBOL=EXPRESSION' d918 1 a918 2 `-IFILE' `--dynamic-linker=FILE' d958 1 a958 1 explicitly specified either by an `--entry' or `--undefined' d978 1 a978 1 `-Map=MAPFILE' d1005 16 a1020 25 Allows or disallows undefined symbols in shared libraries. This switch is similar to `--no-undefined' except that it determines the behaviour when the undefined symbols are in a shared library rather than a regular object file. It does not affect how undefined symbols in regular object files are handled. The default behaviour is to report errors for any undefined symbols referenced in shared libraries if the linker is being used to create an executable, but to allow them if the linker is being used to create a shared library. The reasons for allowing undefined symbol references in shared libraries specified at link time are that: * A shared library specified at link time may not be the same as the one that is available at load time, so the symbol might actually be resolvable at load time. * There are some operating systems, eg BeOS and HPPA, where undefined symbols in shared libraries are normal. The BeOS kernel for example patches shared libraries at load time to select whichever function is most appropriate for the current architecture. This is used, for example, to dynamically select an appropriate memset function. d1064 1 a1064 1 `--oformat=OUTPUT-FORMAT' a1093 1 `--no-relax' d1101 4 a1104 5 On some platforms the `--relax' option performs target specific, global optimizations that become possible when the linker resolves addressing in the program, such as relaxing address modes, synthesizing new instructions, selecting shorter version of current instructions, and combinig constant values. d1114 1 a1114 4 On platforms where `--relax' is accepted the option `--no-relax' can be used to disable the feature. `--retain-symbols-file=FILENAME' d1127 1 a1127 1 `-rpath=DIR' d1150 1 a1150 1 `-rpath-link=DIR' d1212 1 a1212 3 `--sort-common' `--sort-common=ascending' `--sort-common=descending' d1221 1 a1221 1 `--sort-section=name' d1225 1 a1225 1 `--sort-section=alignment' d1229 1 a1229 1 `--split-by-file[=SIZE]' d1234 1 a1234 1 `--split-by-reloc[=COUNT]' d1268 1 a1268 1 `--section-start=SECTIONNAME=ORG' d1277 4 a1280 4 `-Tbss=ORG' `-Tdata=ORG' `-Ttext=ORG' Same as `--section-start', with `.bss', `.data' or `.text' as the a1282 4 `-Ttext-segment=ORG' When creating an ELF executable or shared object, it will set the address of the first byte of the text segment. d1313 1 a1313 1 `--verbose[=NUMBER]' d1316 1 a1316 3 Display the linker script being used by the linker. If the optional NUMBER argument > 1, plugin symbol status will also be displayed. d1322 2 a1323 6 being created. This option is only fully supported on ELF platforms which support shared libraries; see *Note VERSION::. It is partially supported on PE platforms, which can use version scripts to filter symbol visibility in auto-export mode: any symbols marked `local' in the version script will not be exported. *Note WIN32::. a1425 3 `--warn-alternate-em' Warn if an object has alternate ELF machine code. d1449 1 a1449 1 `--wrap=SYMBOL' a1571 22 `--enable-long-section-names' `--disable-long-section-names' The PE variants of the Coff object format add an extension that permits the use of section names longer than eight characters, the normal limit for Coff. By default, these names are only allowed in object files, as fully-linked executable images do not carry the Coff string table required to support the longer names. As a GNU extension, it is possible to allow their use in executable images as well, or to (probably pointlessly!) disallow it in object files, by using these two options. Executable images generated with these long section names are slightly non-standard, carrying as they do a string table, and may generate confusing output when examined with non-GNU PE-aware tools, such as file viewers and dumpers. However, GDB relies on the use of PE long section names to find Dwarf-2 debug information sections in an executable image at runtime, and so if neither option is specified on the command-line, `ld' will enable long section names, overriding the default and technically correct behaviour, when it finds the presence of debug information while linking an executable image and not stripping symbols. [This option is valid for all PE targeted ports of the linker] a1589 6 `--leading-underscore' `--no-leading-underscore' For most targets default symbol-prefix is an underscore and is defined in target's description. By this option it is possible to disable/enable the default underscore symbol-prefix. a1619 4 `--exclude-all-symbols' Specifies no symbols should be automatically exported. [This option is specific to the i386 PE targeted port of the linker] a1888 32 The following options set flags in the `DllCharacteristics' field of the PE file header: [These options are specific to PE targeted ports of the linker] `--dynamicbase' The image base address may be relocated using address space layout randomization (ASLR). This feature was introduced with MS Windows Vista for i386 PE targets. `--forceinteg' Code integrity checks are enforced. `--nxcompat' The image is compatible with the Data Execution Prevention. This feature was introduced with MS Windows XP SP2 for i386 PE targets. `--no-isolation' Although the image understands isolation, do not isolate the image. `--no-seh' The image does not use SEH. No SE handler may be called from this image. `--no-bind' Do not bind this image. `--wdmdriver' The driver uses the MS Windows Driver Model. `--tsaware' The image is Terminal Server aware. a2160 1 * REGION_ALIAS:: Assign alias names to memory regions d2181 1 a2181 4 * the value of a target specific symbol, if it is defined; For many targets this is `start', but PE and BeOS based systems for example check a list of possible entry symbols, matching the first one found. d2276 1 a2276 1 File: ld.info, Node: Format Commands, Next: REGION_ALIAS, Prev: File Commands, Up: Simple Commands d2318 1 a2318 1 File: ld.info, Node: REGION_ALIAS, Next: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands d2320 1 a2320 142 3.4.4 Assign alias names to memory regions ------------------------------------------ Alias names can be added to existing memory regions created with the *Note MEMORY:: command. Each name corresponds to at most one memory region. REGION_ALIAS(ALIAS, REGION) The `REGION_ALIAS' function creates an alias name ALIAS for the memory region REGION. This allows a flexible mapping of output sections to memory regions. An example follows. Suppose we have an application for embedded systems which come with various memory storage devices. All have a general purpose, volatile memory `RAM' that allows code execution or data storage. Some may have a read-only, non-volatile memory `ROM' that allows code execution and read-only data access. The last variant is a read-only, non-volatile memory `ROM2' with read-only data access and no code execution capability. We have four output sections: * `.text' program code; * `.rodata' read-only data; * `.data' read-write initialized data; * `.bss' read-write zero initialized data. The goal is to provide a linker command file that contains a system independent part defining the output sections and a system dependent part mapping the output sections to the memory regions available on the system. Our embedded systems come with three different memory setups `A', `B' and `C': Section Variant A Variant B Variant C .text RAM ROM ROM .rodata RAM ROM ROM2 .data RAM RAM/ROM RAM/ROM2 .bss RAM RAM RAM The notation `RAM/ROM' or `RAM/ROM2' means that this section is loaded into region `ROM' or `ROM2' respectively. Please note that the load address of the `.data' section starts in all three variants at the end of the `.rodata' section. The base linker script that deals with the output sections follows. It includes the system dependent `linkcmds.memory' file that describes the memory layout: INCLUDE linkcmds.memory SECTIONS { .text : { *(.text) } > REGION_TEXT .rodata : { *(.rodata) rodata_end = .; } > REGION_RODATA .data : AT (rodata_end) { data_start = .; *(.data) } > REGION_DATA data_size = SIZEOF(.data); data_load_start = LOADADDR(.data); .bss : { *(.bss) } > REGION_BSS } Now we need three different `linkcmds.memory' files to define memory regions and alias names. The content of `linkcmds.memory' for the three variants `A', `B' and `C': `A' Here everything goes into the `RAM'. MEMORY { RAM : ORIGIN = 0, LENGTH = 4M } REGION_ALIAS("REGION_TEXT", RAM); REGION_ALIAS("REGION_RODATA", RAM); REGION_ALIAS("REGION_DATA", RAM); REGION_ALIAS("REGION_BSS", RAM); `B' Program code and read-only data go into the `ROM'. Read-write data goes into the `RAM'. An image of the initialized data is loaded into the `ROM' and will be copied during system start into the `RAM'. MEMORY { ROM : ORIGIN = 0, LENGTH = 3M RAM : ORIGIN = 0x10000000, LENGTH = 1M } REGION_ALIAS("REGION_TEXT", ROM); REGION_ALIAS("REGION_RODATA", ROM); REGION_ALIAS("REGION_DATA", RAM); REGION_ALIAS("REGION_BSS", RAM); `C' Program code goes into the `ROM'. Read-only data goes into the `ROM2'. Read-write data goes into the `RAM'. An image of the initialized data is loaded into the `ROM2' and will be copied during system start into the `RAM'. MEMORY { ROM : ORIGIN = 0, LENGTH = 2M ROM2 : ORIGIN = 0x10000000, LENGTH = 1M RAM : ORIGIN = 0x20000000, LENGTH = 1M } REGION_ALIAS("REGION_TEXT", ROM); REGION_ALIAS("REGION_RODATA", ROM2); REGION_ALIAS("REGION_DATA", RAM); REGION_ALIAS("REGION_BSS", RAM); It is possible to write a common system initialization routine to copy the `.data' section from `ROM' or `ROM2' into the `RAM' if necessary: #include extern char data_start []; extern char data_size []; extern char data_load_start []; void copy_data(void) { if (data_start != data_load_start) { memcpy(data_start, data_load_start, (size_t) data_size); } }  File: ld.info, Node: Miscellaneous Commands, Prev: REGION_ALIAS, Up: Simple Commands 3.4.5 Other Linker Script Commands a2393 5 `LD_FEATURE(STRING)' This command may be used to modify `ld' behavior. If STRING is `"SANE_EXPR"' then absolute symbols and numbers in a script are simply treated as numbers everywhere. *Note Expression Section::. d2661 1 a2661 4 [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] [CONSTRAINT] d2711 11 a2721 26 of the output section. This address is optional, but if it is provided then the output address will be set exactly as specified. If the output address is not specified then one will be chosen for the section, based on the heuristic below. This address will be adjusted to fit the alignment requirement of the output section. The alignment requirement is the strictest alignment of any input section contained within the output section. The output section address heuristic is as follows: * If an output memory REGION is set for the section then it is added to this region and its address will be the next free address in that region. * If the MEMORY command has been used to create a list of memory regions then the first region which has attributes compatible with the section is selected to contain it. The section's output address will be the next free address in that region; *Note MEMORY::. * If no memory regions were specified, or none match the section then the output address will be based on the current value of the location counter. For example: d2723 1 d2725 1 a2725 3 and d2727 1 a2727 2 are subtly different. The first will set the address of the `.text' d2730 1 a2730 1 to the strictest alignment of any of the `.text' input sections. d2741 1 a2741 2 location counter, provided that the section is non-empty. (Empty sections are ignored). a3196 1 d3198 1 a3198 4 [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] [CONSTRAINT] d3204 1 a3204 2 We've already described SECTION, ADDRESS, and a3213 1 * Output Section Constraint:: Output section constraint d3244 2 a3245 1 loaded when the program is run. d3258 11 a3268 10 *Note Basic Script Concepts::. The virtual address is specified by the *note Output Section Address:: described earlier. The load address is specified by the `AT' or `AT>' keywords. Specifying a load address is optional. The `AT' keyword takes an expression as an argument. This specifies the exact load address of the section. The `AT>' keyword takes the name of a memory region as an argument. *Note MEMORY::. The load address of the section is set to the next free address in the region, aligned to the section's alignment requirements. d3271 5 a3275 19 the linker will use the following heuristic to determine the load address: * If the section has a specific VMA address, then this is used as the LMA address as well. * If the section is not allocatable then its LMA is set to its VMA. * Otherwise if a memory region can be found that is compatible with the current section, and this region contains at least one section, then the LMA is set so the difference between the VMA and LMA is the same as the difference between the VMA and LMA of the last section in the located region. * If no memory regions have been declared then a default region that covers the entire address space is used in the previous step. * If no suitable region could be found, or there was no previous section then the LMA is set equal to the VMA. d3305 2 a3306 2 /* ROM has data at end of text; copy it. */ while (dst < &_edata) d3308 1 d3310 1 a3310 1 /* Zero bss. */ d3323 1 a3323 1 File: ld.info, Node: Forced Input Alignment, Next: Output Section Constraint, Prev: Forced Output Alignment, Up: Output Section Attributes d3333 1 a3333 12 File: ld.info, Node: Output Section Constraint, Next: Output Section Region, Prev: Forced Input Alignment, Up: Output Section Attributes 3.6.8.5 Output Section Constraint ................................. You can specify that an output section should only be created if all of its input sections are read-only or all of its input sections are read-write by using the keyword `ONLY_IF_RO' and `ONLY_IF_RW' respectively.  File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Output Section Constraint, Up: Output Section Attributes d3335 1 a3335 1 3.6.8.6 Output Section Region d3348 1 a3348 1 3.6.8.7 Output Section Phdr d3365 1 a3365 1 3.6.8.8 Output Section Fill d3516 1 a3516 3 have a distinct name within the `MEMORY' command. However you can add later alias names to existing memory regions with the *Note REGION_ALIAS:: command. d3546 1 a3546 1 Invert the sense of any of the attributes that follow d3632 1 a3632 2 have a distinct name. The headers are processed in order and it is usual for them to map to sections in ascending load address order. d3653 5 a3657 7 You may use the `FILEHDR' and `PHDRS' keywords after the program header type to further describe the contents of the segment. The `FILEHDR' keyword means that the segment should include the ELF file header. The `PHDRS' keyword means that the segment should include the ELF program headers themselves. If applied to a loadable segment (`PT_LOAD'), all prior loadable segments must have one of these keywords. d3773 2 a3774 2 "f(int, double)"; }; d3800 1 a3800 5 somewhere in the version script. Note that it's slightly crazy to use wildcards in a global spec except on the last version node. Global wildcards elsewhere run the risk of accidentally adding symbols to the set exported for an old version. That's wrong since older versions ought to have a fixed set of symbols. d3885 1 a3885 1 `version-script-commands'. The default `lang' is `C'. a3915 1 * Symbolic Constants:: Symbolic constants d3925 1 a3925 1 File: ld.info, Node: Constants, Next: Symbolic Constants, Up: Expressions d3934 1 a3934 4 Alternatively the linker accepts suffixes of `h' or `H' for hexadeciaml, `o' or `O' for octal, `b' or `B' for binary and `d' or `D' for decimal. Any integer value without a prefix or a suffix is considered to be decimal. d3937 1 a3937 1 constant by `1024' or `1024*1024' respectively. For example, the a3938 1 a3941 26 _fourk_4 = 10000o; Note - the `K' and `M' suffixes cannot be used in conjunction with the base suffixes mentioned above.  File: ld.info, Node: Symbolic Constants, Next: Symbols, Prev: Constants, Up: Expressions 3.10.2 Symbolic Constants ------------------------- It is possible to refer to target specific constants via the use of the `CONSTANT(NAME)' operator, where NAME is one of: `MAXPAGESIZE' The target's maximum page size. `COMMONPAGESIZE' The target's default page size. So for example: .text ALIGN (CONSTANT (MAXPAGESIZE)) : { *(.text) } will create a text section aligned to the largest page boundary supported by the target. d3944 1 a3944 1 File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Symbolic Constants, Up: Expressions d3946 1 a3946 1 3.10.3 Symbol Names d3964 1 a3964 1 3.10.4 Orphan Sections d3989 1 a3989 1 3.10.5 The Location Counter d4115 1 a4115 1 3.10.6 Operators d4139 1 a4139 1 3.10.7 Evaluation d4176 1 a4176 1 3.10.8 The Section of an Expression d4179 17 a4195 69 Addresses and symbols may be section relative, or absolute. A section relative symbol is relocatable. If you request relocatable output using the `-r' option, a further link operation may change the value of a section relative symbol. On the other hand, an absolute symbol will retain the same value throughout any further link operations. Some terms in linker expressions are addresses. This is true of section relative symbols and for builtin functions that return an address, such as `ADDR', `LOADADDR', `ORIGIN' and `SEGMENT_START'. Other terms are simply numbers, or are builtin functions that return a non-address value, such as `LENGTH'. One complication is that unless you set `LD_FEATURE ("SANE_EXPR")' (*note Miscellaneous Commands::), numbers and absolute symbols are treated differently depending on their location, for compatibility with older versions of `ld'. Expressions appearing outside an output section definition treat all numbers as absolute addresses. Expressions appearing inside an output section definition treat absolute symbols as numbers. If `LD_FEATURE ("SANE_EXPR")' is given, then absolute symbols and numbers are simply treated as numbers everywhere. In the following simple example, SECTIONS { . = 0x100; __executable_start = 0x100; .data : { . = 0x10; __data_start = 0x10; *(.data) } ... } both `.' and `__executable_start' are set to the absolute address 0x100 in the first two assignments, then both `.' and `__data_start' are set to 0x10 relative to the `.data' section in the second two assignments. For expressions involving numbers, relative addresses and absolute addresses, ld follows these rules to evaluate terms: * Unary operations on a relative address, and binary operations on two relative addresses in the same section or between one relative address and a number, apply the operator to the offset part of the address(es). * Unary operations on an absolute address, and binary operations on one or more absolute addresses or on two relative addresses not in the same section, first convert any non-absolute term to an absolute address before applying the operator. The result section of each sub-expression is as follows: * An operation involving only numbers results in a number. * The result of comparisons, `&&' and `||' is also a number. * The result of other binary arithmetic and logical operations on two relative addresses in the same section or two absolute addresess (after above conversions) is also a number. * The result of other operations on relative addresses or one relative address and a number, is a relative address in the same section as the relative operand(s). * The result of other operations on absolute addresses (after above conversions) is an absolute address. a4207 3 Using `LOADADDR' also forces an expression absolute, since this particular builtin function returns an absolute address. d4211 1 a4211 1 3.10.9 Builtin Functions d4225 4 a4228 6 Return the address (VMA) of the named SECTION. Your script must previously have defined the location of that section. In the following example, `start_of_output_1', `symbol_1' and `symbol_2' are assigned equivalent values, except that `symbol_1' will be relative to the `.output1' section while the other two will be absolute: d4346 4 a4349 2 Return the absolute LMA of the named SECTION. (*note Output Section LMA::). d4372 1 a4372 1 sections, but you can use `SEGMENT_START' with any segment name. a4543 12 The `--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 `--fix-cortex-a8', or disabled unconditionally by specifying `--no-fix-cortex-a8'. The erratum only affects Thumb-2 code. Please contact ARM for further details. The `--no-merge-exidx-entries' switch disables the merging of adjacent exidx entries in debuginfo. a4604 5 The `--use-nul-prefixed-import-tables' switch is specifying, that the import tables idata4 and idata5 have to be generated with a zero elememt prefix for import libraries. This is the old style to generate import tables. By default this option is turned off. d4719 1 a4719 1 stubs are placed after the first branch that needs them. If it is d4855 1 a4855 4 be reachable if an input section exceeds 33M in size. You may combine `-r' and `--relax' to add trampolines in a partial link. In that case both branches to undefined symbols and inter-section branches are also considered potentially out of range, and trampolines inserted. d5082 3 a5084 18 * -exclude-modules-for-implib * -version-script When auto-export is in operation, `ld' will export all the non-local (global and common) symbols it finds in a DLL, with the exception of a few symbols known to belong to the system's runtime and libraries. As it will often not be desirable to export all of a DLL's symbols, which may include private functions that are not part of any public interface, the command-line options listed above may be used to filter symbols out from the list for exporting. The `--output-def' option can be used in order to see the final list of exported symbols with all exclusions taken into effect. If `--export-all-symbols' is not given explicitly on the command line, then the default auto-export behavior will be _disabled_ if either of the following are true: a5114 2 doo = foo == foo2 eoo DATA == var1 d5117 1 a5117 1 and seven symbols in the export table. The third exported d5122 1 a5122 4 object. The `doo' symbol in export library is an alias of `foo', which gets the string name in export table `foo2'. The `eoo' symbol is an data export symbol, which gets in export table the name `var1'. d5146 1 a5146 1 [ @@ ] [NONAME] [DATA] [CONSTANT] [PRIVATE] [== ] ) * d5153 1 a5153 2 `' alias. The optional `' is the to be used string in import/export table for the symbol. a5452 11 _aligned common symbols_ As a GNU extension to the PE file format, it is possible to specify the desired alignment for a common symbol. This information is conveyed from the assembler or compiler to the linker by means of GNU-specific commands carried in the object file's `.drectve' section, which are recognized by `ld' and respected when laying out the common symbols. Native tools will be able to process object files employing this GNU extension, but will fail to respect the alignment instructions, and may issue noisy warnings about unknown linker directives. d5509 4 d6028 1 a6028 1 Version 1.3, 3 November 2008 d6030 2 a6031 2 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. `http://fsf.org/' d6036 1 d6040 6 a6045 6 functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. d6061 1 d6064 5 a6068 9 This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. d6074 10 a6083 10 A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. d6088 1 a6088 4 License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. d6092 1 a6092 3 that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. d6096 2 a6097 2 general public, that is suitable for revising the document straightforwardly with generic text editors or (for images d6102 3 a6104 5 otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". d6109 6 a6114 7 standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. a6122 19 The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. d6141 4 a6144 5 If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and d6162 5 a6166 4 state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the d6189 51 a6239 69 A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. d6249 1 a6249 1 You may add a section Entitled "Endorsements", provided it contains d6251 3 a6253 3 parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. d6277 1 a6277 2 combined work in its license notice, and that you preserve all their Warranty Disclaimers. d6289 1 a6289 1 In the combination, you must combine any sections Entitled d6291 3 a6293 3 Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." d6314 7 a6320 6 a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. d6323 5 a6327 6 copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. d6337 4 a6340 12 translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. d6345 6 a6350 23 except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. d6358 1 a6358 1 `http://www.gnu.org/copyleft/'. d6368 1 a6368 34 Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. d6378 13 a6390 18 Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. d6407 31 a6437 35 * -(: Options. (line 696) * --accept-unknown-input-arch: Options. (line 714) * --add-needed: Options. (line 738) * --add-stdcall-alias: Options. (line 1573) * --allow-multiple-definition: Options. (line 984) * --allow-shlib-undefined: Options. (line 990) * --architecture=ARCH: Options. (line 123) * --as-needed: Options. (line 724) * --audit AUDITLIB: Options. (line 112) * --auxiliary=NAME: Options. (line 255) * --bank-window: Options. (line 1982) * --base-file: Options. (line 1578) * --be8: ARM. (line 28) * --bss-plt: PowerPC ELF32. (line 16) * --build-id: Options. (line 1535) * --build-id=STYLE: Options. (line 1535) * --check-sections: Options. (line 817) * --copy-dt-needed-entries: Options. (line 829) * --cref: Options. (line 850) * --default-imported-symver: Options. (line 1027) * --default-script=SCRIPT: Options. (line 541) * --default-symver: Options. (line 1023) * --defsym=SYMBOL=EXP: Options. (line 878) * --demangle[=STYLE]: Options. (line 891) * --depaudit AUDITLIB: Options. (line 177) * --disable-auto-image-base: Options. (line 1757) * --disable-auto-import: Options. (line 1892) * --disable-long-section-names: Options. (line 1588) * --disable-new-dtags: Options. (line 1498) * --disable-runtime-pseudo-reloc: Options. (line 1905) * --disable-stdcall-fixup: Options. (line 1610) * --discard-all: Options. (line 587) * --discard-locals: Options. (line 591) * --dll: Options. (line 1583) * --dll-search-prefix: Options. (line 1763) d6439 7 a6445 8 * --dynamic-linker=FILE: Options. (line 904) * --dynamic-list-cpp-new: Options. (line 809) * --dynamic-list-cpp-typeinfo: Options. (line 813) * --dynamic-list-data: Options. (line 806) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 793) * --dynamicbase: Options. (line 1941) * --eh-frame-hdr: Options. (line 1494) * --emit-relocs: Options. (line 476) d6447 15 a6461 18 * --emit-stub-syms <1>: PowerPC ELF32. (line 47) * --emit-stub-syms <2>: SPU ELF. (line 15) * --emit-stub-syms: PowerPC64 ELF64. (line 29) * --enable-auto-image-base: Options. (line 1749) * --enable-auto-import: Options. (line 1772) * --enable-extra-pe-debug: Options. (line 1910) * --enable-long-section-names: Options. (line 1588) * --enable-new-dtags: Options. (line 1498) * --enable-runtime-pseudo-reloc: Options. (line 1897) * --enable-stdcall-fixup: Options. (line 1610) * --entry=ENTRY: Options. (line 187) * --error-unresolved-symbols: Options. (line 1447) * --exclude-all-symbols: Options. (line 1664) * --exclude-libs: Options. (line 197) * --exclude-modules-for-implib: Options. (line 208) * --exclude-symbols: Options. (line 1658) * --export-all-symbols: Options. (line 1634) * --export-dynamic: Options. (line 221) d6463 8 a6470 10 * --fatal-warnings: Options. (line 911) * --file-alignment: Options. (line 1668) * --filter=NAME: Options. (line 276) * --fix-cortex-a8: i960. (line 39) * --fix-v4bx: ARM. (line 49) * --fix-v4bx-interworking: ARM. (line 62) * --force-dynamic: Options. (line 485) * --force-exe-suffix: Options. (line 916) * --forceinteg: Options. (line 1946) * --format=FORMAT: Options. (line 134) d6472 2 a6473 2 * --gc-sections: Options. (line 926) * --got: Options. (line 1995) d6475 11 a6485 12 * --gpsize=VALUE: Options. (line 309) * --hash-size=NUMBER: Options. (line 1507) * --hash-style=STYLE: Options. (line 1515) * --heap: Options. (line 1674) * --help: Options. (line 957) * --image-base: Options. (line 1681) * --just-symbols=FILE: Options. (line 508) * --kill-at: Options. (line 1690) * --large-address-aware: Options. (line 1695) * --leading-underscore: Options. (line 1628) * --library-path=DIR: Options. (line 368) * --library=NAMESPEC: Options. (line 335) d6487 7 a6493 8 * --major-image-version: Options. (line 1704) * --major-os-version: Options. (line 1709) * --major-subsystem-version: Options. (line 1713) * --merge-exidx-entries: i960. (line 48) * --minor-image-version: Options. (line 1718) * --minor-os-version: Options. (line 1723) * --minor-subsystem-version: Options. (line 1727) * --mri-script=MRI-CMDFILE: Options. (line 158) d6495 8 a6502 10 * --nmagic: Options. (line 439) * --no-accept-unknown-input-arch: Options. (line 714) * --no-add-needed: Options. (line 738) * --no-allow-shlib-undefined: Options. (line 990) * --no-as-needed: Options. (line 724) * --no-bind: Options. (line 1960) * --no-check-sections: Options. (line 817) * --no-copy-dt-needed-entries: Options. (line 829) * --no-define-common: Options. (line 862) * --no-demangle: Options. (line 891) d6504 4 a6507 9 * --no-enum-size-warning: ARM. (line 111) * --no-export-dynamic: Options. (line 221) * --no-fatal-warnings: Options. (line 911) * --no-fix-cortex-a8: i960. (line 39) * --no-gc-sections: Options. (line 926) * --no-isolation: Options. (line 1953) * --no-keep-memory: Options. (line 969) * --no-leading-underscore: Options. (line 1628) * --no-merge-exidx-entries: i960. (line 48) d6509 1 a6509 1 * --no-omagic: Options. (line 454) d6512 4 a6515 4 * --no-print-gc-sections: Options. (line 948) * --no-seh: Options. (line 1956) * --no-tls-optimize <1>: PowerPC ELF32. (line 51) * --no-tls-optimize: PowerPC64 ELF64. (line 43) d6517 8 a6524 8 * --no-trampoline: Options. (line 1976) * --no-undefined: Options. (line 976) * --no-undefined-version: Options. (line 1018) * --no-warn-mismatch: Options. (line 1031) * --no-warn-search-mismatch: Options. (line 1040) * --no-wchar-size-warning: ARM. (line 118) * --no-whole-archive: Options. (line 1044) * --noinhibit-exec: Options. (line 1048) d6526 7 a6532 8 * --nxcompat: Options. (line 1949) * --oformat=OUTPUT-FORMAT: Options. (line 1060) * --omagic: Options. (line 445) * --out-implib: Options. (line 1740) * --output-def: Options. (line 1732) * --output=OUTPUT: Options. (line 460) * --pic-executable: Options. (line 1073) * --pic-veneer: ARM. (line 124) d6534 4 a6537 4 * --print-gc-sections: Options. (line 948) * --print-map: Options. (line 402) * --reduce-memory-overheads: Options. (line 1521) * --relax: Options. (line 1089) d6541 12 a6552 13 * --relocatable: Options. (line 489) * --retain-symbols-file=FILENAME: Options. (line 1115) * --script=SCRIPT: Options. (line 532) * --sdata-got: PowerPC ELF32. (line 33) * --section-alignment: Options. (line 1915) * --section-start=SECTIONNAME=ORG: Options. (line 1271) * --secure-plt: PowerPC ELF32. (line 26) * --sort-common: Options. (line 1213) * --sort-section=alignment: Options. (line 1228) * --sort-section=name: Options. (line 1224) * --split-by-file: Options. (line 1232) * --split-by-reloc: Options. (line 1237) * --stack: Options. (line 1921) d6554 3 a6556 3 * --stats: Options. (line 1250) * --strip-all: Options. (line 519) * --strip-debug: Options. (line 523) d6558 3 a6560 3 * --stub-group-size=N <1>: ARM. (line 129) * --stub-group-size=N: HPPA ELF32. (line 12) * --subsystem: Options. (line 1928) d6562 5 a6566 5 * --sysroot=DIRECTORY: Options. (line 1254) * --target-help: Options. (line 961) * --target1-abs: ARM. (line 32) * --target1-rel: ARM. (line 32) * --target2=TYPE: ARM. (line 37) d6568 91 a6658 98 * --trace: Options. (line 528) * --trace-symbol=SYMBOL: Options. (line 597) * --traditional-format: Options. (line 1259) * --tsaware: Options. (line 1966) * --undefined=SYMBOL: Options. (line 554) * --unique[=SECTION]: Options. (line 572) * --unresolved-symbols: Options. (line 1290) * --use-blx: ARM. (line 74) * --use-nul-prefixed-import-tables: ARM. (line 23) * --verbose[=NUMBER]: Options. (line 1319) * --version: Options. (line 581) * --version-script=VERSION-SCRIPTFILE: Options. (line 1327) * --vfp11-denorm-fix: ARM. (line 83) * --warn-alternate-em: Options. (line 1439) * --warn-common: Options. (line 1338) * --warn-constructors: Options. (line 1406) * --warn-multiple-gp: Options. (line 1411) * --warn-once: Options. (line 1425) * --warn-section-align: Options. (line 1429) * --warn-shared-textrel: Options. (line 1436) * --warn-unresolved-symbols: Options. (line 1442) * --wdmdriver: Options. (line 1963) * --whole-archive: Options. (line 1451) * --wrap=SYMBOL: Options. (line 1465) * -A ARCH: Options. (line 122) * -a KEYWORD: Options. (line 105) * -assert KEYWORD: Options. (line 745) * -b FORMAT: Options. (line 134) * -Bdynamic: Options. (line 748) * -Bgroup: Options. (line 758) * -Bshareable: Options. (line 1206) * -Bstatic: Options. (line 765) * -Bsymbolic: Options. (line 780) * -Bsymbolic-functions: Options. (line 787) * -c MRI-CMDFILE: Options. (line 158) * -call_shared: Options. (line 748) * -d: Options. (line 168) * -dc: Options. (line 168) * -dn: Options. (line 765) * -dp: Options. (line 168) * -dT SCRIPT: Options. (line 541) * -dy: Options. (line 748) * -E: Options. (line 221) * -e ENTRY: Options. (line 187) * -EB: Options. (line 248) * -EL: Options. (line 251) * -f NAME: Options. (line 255) * -F NAME: Options. (line 276) * -fini=NAME: Options. (line 300) * -g: Options. (line 306) * -G VALUE: Options. (line 309) * -h NAME: Options. (line 317) * -i: Options. (line 326) * -IFILE: Options. (line 904) * -init=NAME: Options. (line 329) * -L DIR: Options. (line 368) * -l NAMESPEC: Options. (line 335) * -M: Options. (line 402) * -m EMULATION: Options. (line 392) * -Map=MAPFILE: Options. (line 965) * -n: Options. (line 439) * -N: Options. (line 445) * -no-relax: Options. (line 1089) * -non_shared: Options. (line 765) * -nostdlib: Options. (line 1054) * -O LEVEL: Options. (line 466) * -o OUTPUT: Options. (line 460) * -P AUDITLIB: Options. (line 177) * -pie: Options. (line 1073) * -q: Options. (line 476) * -qmagic: Options. (line 1083) * -Qy: Options. (line 1086) * -r: Options. (line 489) * -R FILE: Options. (line 508) * -rpath-link=DIR: Options. (line 1151) * -rpath=DIR: Options. (line 1129) * -s: Options. (line 519) * -S: Options. (line 523) * -shared: Options. (line 1206) * -soname=NAME: Options. (line 317) * -static: Options. (line 765) * -t: Options. (line 528) * -T SCRIPT: Options. (line 532) * -Tbss=ORG: Options. (line 1280) * -Tdata=ORG: Options. (line 1280) * -Ttext-segment=ORG: Options. (line 1286) * -Ttext=ORG: Options. (line 1280) * -u SYMBOL: Options. (line 554) * -Ur: Options. (line 562) * -V: Options. (line 581) * -v: Options. (line 581) * -X: Options. (line 591) * -x: Options. (line 587) * -Y PATH: Options. (line 606) * -y SYMBOL: Options. (line 597) * -z defs: Options. (line 976) * -z KEYWORD: Options. (line 610) * -z muldefs: Options. (line 984) d6679 4 a6682 4 * align expression: Builtin Functions. (line 38) * align location counter: Builtin Functions. (line 38) * ALIGN(ALIGN): Builtin Functions. (line 38) * ALIGN(EXP,ALIGN): Builtin Functions. (line 38) d6685 1 a6685 2 * aligned common symbols: WIN32. (line 424) * ALIGNOF(SECTION): Builtin Functions. (line 64) d6689 2 a6690 2 * architectures: Options. (line 122) * archive files, from cmd line: Options. (line 335) d6703 1 a6703 1 * automatic data imports: WIN32. (line 191) d6706 1 a6706 1 * BE8: ARM. (line 28) d6709 3 a6711 3 * big-endian objects: Options. (line 248) * binary input format: Options. (line 134) * BLOCK(EXP): Builtin Functions. (line 77) d6721 1 a6721 1 * combining symbols, warnings on: Options. (line 1338) d6724 1 a6724 1 * common allocation: Options. (line 862) d6726 1 a6726 1 (line 25) d6729 1 a6729 3 * COMMONPAGESIZE: Symbolic Constants. (line 13) * compatibility, MRI: Options. (line 158) * CONSTANT: Symbolic Constants. (line 6) a6730 2 * constraints on output sections: Output Section Constraint. (line 6) d6733 1 a6733 1 * constructors: Options. (line 562) a6735 1 * Cortex-A8 erratum workaround: i960. (line 39) d6739 2 a6740 2 * creating a DEF file: WIN32. (line 158) * cross reference table: Options. (line 850) d6747 5 a6751 5 (line 82) * DATA_SEGMENT_END(EXP): Builtin Functions. (line 103) * DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 109) * dbx: Options. (line 1264) * DEF files, creating: Options. (line 1732) d6754 2 a6755 2 * DEFINED(SYMBOL): Builtin Functions. (line 120) * deleting local symbols: Options. (line 587) d6757 2 a6758 2 * demangling, from command line: Options. (line 891) * direct linking to a dll: WIN32. (line 239) d6762 2 a6763 2 * DLLs, creating: Options. (line 1634) * DLLs, linking to: Options. (line 1763) d6767 2 a6768 2 * dynamic linker, from command line: Options. (line 904) * dynamic symbol table: Options. (line 221) d6770 1 a6770 1 * emulation: Options. (line 392) d6773 1 a6773 1 * endianness: Options. (line 248) d6775 1 a6775 1 * entry point, from command line: Options. (line 187) d6790 1 a6790 1 * FILEHDR: PHDRS. (line 62) d6797 1 a6797 1 * finalization function: Options. (line 300) d6800 2 a6801 2 * FIX_V4BX: ARM. (line 49) * FIX_V4BX_INTERWORKING: ARM. (line 62) d6808 1 a6808 1 * forcing the creation of dynamic sections: Options. (line 485) d6811 3 a6813 3 * garbage collection <1>: Options. (line 948) * garbage collection: Input Section Keep. (line 6) * generating optimized output: Options. (line 466) d6818 1 a6818 1 * groups of archives: Options. (line 696) d6821 2 a6822 2 * heap size: Options. (line 1674) * help: Options. (line 957) d6829 1 a6829 1 * image base: Options. (line 1681) d6835 2 a6836 2 * including an entire archive: Options. (line 1451) * incremental link: Options. (line 326) d6839 2 a6840 2 * initialization function: Options. (line 329) * initialized data in ROM: Output Section LMA. (line 39) d6845 2 a6846 2 * input files, displaying: Options. (line 528) * input format: Options. (line 134) d6861 1 a6861 1 * integer suffixes: Constants. (line 15) d6864 1 a6864 1 * K and M integer suffixes: Constants. (line 15) d6866 1 a6866 1 * l =: MEMORY. (line 74) a6868 2 * LD_FEATURE(STRING): Miscellaneous Commands. (line 78) d6870 3 a6872 3 * len =: MEMORY. (line 74) * LENGTH =: MEMORY. (line 74) * LENGTH(MEMORY): Builtin Functions. (line 137) d6874 2 a6875 2 * link map: Options. (line 402) * link-time runtime library search path: Options. (line 1151) d6886 1 a6886 1 * little-endian objects: Options. (line 251) d6889 1 a6889 1 * LOADADDR(SECTION): Builtin Functions. (line 140) d6892 1 a6892 1 * local symbols, deleting: Options. (line 591) d6896 1 a6896 1 * M and K integer suffixes: Constants. (line 15) a6902 1 * MAXPAGESIZE: Symbolic Constants. (line 10) d6904 1 a6904 1 * memory region attributes: MEMORY. (line 34) d6908 1 a6908 1 * memory usage: Options. (line 969) d6917 1 a6917 1 * naming the output file: Options. (line 460) d6919 3 a6921 3 * NMAGIC: Options. (line 439) * NO_ENUM_SIZE_WARNING: ARM. (line 111) * NO_WCHAR_SIZE_WARNING: ARM. (line 118) d6927 1 a6927 1 * o =: MEMORY. (line 69) d6932 2 a6933 6 * object size: Options. (line 309) * OMAGIC: Options. (line 454) * ONLY_IF_RO: Output Section Constraint. (line 6) * ONLY_IF_RW: Output Section Constraint. (line 6) d6938 2 a6939 2 * org =: MEMORY. (line 69) * ORIGIN =: MEMORY. (line 69) d6942 1 a6942 1 * output file after errors: Options. (line 1048) d6959 6 a6964 7 * partial link: Options. (line 489) * PE import table prefixing: ARM. (line 23) * PHDRS: PHDRS. (line 62) * PIC_VENEER: ARM. (line 124) * position independent executables: Options. (line 1075) * PowerPC ELF32 options: PowerPC ELF32. (line 16) * PowerPC GOT: PowerPC ELF32. (line 33) d6966 3 a6968 3 * PowerPC PLT: PowerPC ELF32. (line 16) * PowerPC stub symbols: PowerPC ELF32. (line 47) * PowerPC TLS optimization: PowerPC ELF32. (line 51) d6992 2 a6993 5 * read-only text: Options. (line 439) * read/write from cmd line: Options. (line 445) * region alias: REGION_ALIAS. (line 6) * region names: REGION_ALIAS. (line 6) * REGION_ALIAS(ALIAS, REGION): REGION_ALIAS. (line 6) d6996 1 a6996 1 * relaxing addressing modes: Options. (line 1089) d7002 1 a7002 1 * relocatable output: Options. (line 489) d7007 9 a7015 9 * retain relocations in final executable: Options. (line 476) * retaining specified symbols: Options. (line 1115) * ROM initialized data: Output Section LMA. (line 39) * round up expression: Builtin Functions. (line 38) * round up location counter: Builtin Functions. (line 38) * runtime library name: Options. (line 317) * runtime library search path: Options. (line 1129) * runtime pseudo-relocation: WIN32. (line 217) * scaled integers: Constants. (line 15) d7018 1 a7018 1 * script files: Options. (line 532) d7020 1 a7020 1 * search directory, from cmd line: Options. (line 368) d7027 2 a7028 2 * section alignment: Builtin Functions. (line 64) * section alignment, warnings on: Options. (line 1429) d7034 1 a7034 1 * section load address in expression: Builtin Functions. (line 140) d7047 1 a7047 1 * segment origins, cmd line: Options. (line 1280) d7050 1 a7050 1 * shared libraries: Options. (line 1208) d7072 1 a7072 1 * stack size: Options. (line 1921) d7076 4 a7079 4 * strip all symbols: Options. (line 519) * strip debugger symbols: Options. (line 523) * stripping all but some symbols: Options. (line 1115) * STUB_GROUP_SIZE: ARM. (line 129) d7082 2 a7083 2 * suffixes for integers: Constants. (line 15) * symbol defaults: Builtin Functions. (line 120) d7086 1 a7086 1 * symbol tracing: Options. (line 597) d7088 2 a7089 3 * symbol-only input: Options. (line 508) * symbolic constants: Symbolic Constants. (line 6) * symbols, from command line: Options. (line 878) d7091 2 a7092 2 * symbols, retaining selectively: Options. (line 1115) * synthesizing linker: Options. (line 1089) d7095 2 a7096 3 * TARGET1: ARM. (line 32) * TARGET2: ARM. (line 37) * text segment origin, cmd line: Options. (line 1287) d7099 1 a7099 1 * traditional format: Options. (line 1259) d7103 1 a7103 1 * undefined symbol: Options. (line 554) d7106 1 a7106 1 * undefined symbols, warnings on: Options. (line 1425) d7111 3 a7113 3 * usage: Options. (line 957) * USE_BLX: ARM. (line 74) * using a DEF file: WIN32. (line 57) d7115 1 a7115 1 * Using decorations: WIN32. (line 162) d7117 2 a7118 2 * verbose[=NUMBER]: Options. (line 1319) * version: Options. (line 581) d7120 1 a7120 1 * version script, symbol versions: Options. (line 1327) d7123 5 a7127 5 * VFP11_DENORM_FIX: ARM. (line 83) * warnings, on combining symbols: Options. (line 1338) * warnings, on section alignment: Options. (line 1429) * warnings, on undefined symbols: Options. (line 1425) * weak externals: WIN32. (line 407) d7137 79 a7215 82 Node: Top815 Node: Overview1600 Node: Invocation2714 Node: Options3122 Node: Environment93440 Node: Scripts95200 Node: Basic Script Concepts96934 Node: Script Format99641 Node: Simple Example100504 Node: Simple Commands103600 Node: Entry Point104106 Node: File Commands105039 Node: Format Commands109040 Node: REGION_ALIAS110996 Node: Miscellaneous Commands115828 Node: Assignments119436 Node: Simple Assignments119927 Node: PROVIDE121663 Node: PROVIDE_HIDDEN122868 Node: Source Code Reference123112 Node: SECTIONS126692 Node: Output Section Description128583 Node: Output Section Name129670 Node: Output Section Address130546 Node: Input Section132781 Node: Input Section Basics133582 Node: Input Section Wildcards136800 Node: Input Section Common141533 Node: Input Section Keep143015 Node: Input Section Example143505 Node: Output Section Data144473 Node: Output Section Keywords147250 Node: Output Section Discarding150819 Node: Output Section Attributes152000 Node: Output Section Type153101 Node: Output Section LMA154172 Node: Forced Output Alignment157243 Node: Forced Input Alignment157511 Node: Output Section Constraint157900 Node: Output Section Region158328 Node: Output Section Phdr158761 Node: Output Section Fill159425 Node: Overlay Description160567 Node: MEMORY164870 Node: PHDRS169205 Node: VERSION174459 Node: Expressions182552 Node: Constants183481 Node: Symbolic Constants184356 Node: Symbols184907 Node: Orphan Sections185654 Node: Location Counter186818 Node: Operators191254 Node: Evaluation192176 Node: Expression Section193540 Node: Builtin Functions197197 Node: Implicit Linker Scripts205158 Node: Machine Dependent205933 Node: H8/300206949 Node: i960208574 Node: M68HC11/68HC12210778 Node: ARM212232 Node: HPPA ELF32219744 Node: M68K221367 Node: MMIX222276 Node: MSP430223441 Node: PowerPC ELF32224490 Node: PowerPC64 ELF64227326 Node: SPU ELF231742 Node: TI COFF234374 Node: WIN32234900 Node: Xtensa255025 Node: BFD257990 Node: BFD outline259445 Node: BFD information loss260731 Node: Canonical format263248 Node: Reporting Bugs267605 Node: Bug Criteria268299 Node: Bug Reporting268998 Node: MRI276037 Node: GNU Free Documentation License280680 Node: LD Index305836 @ 1.1.1.2.8.1 log @Rebase to HEAD as of a few days ago. @ text @d8 1 a8 1 This file documents the GNU linker LD (GNU Binutils) version 2.23.2. d27 1 a27 1 This file documents the GNU linker ld (GNU Binutils) version 2.23.2. d922 1 a922 1 command line. Normally the linker won't add a DT_NEEDED tag to the d924 4 a927 4 input dynamic library. With `--copy-dt-needed-entries' specified on the command line however any dynamic libraries that follow it will have their DT_NEEDED entries added. The default behaviour can be restored with `--no-copy-dt-needed-entries'. d930 8 a937 7 dynamic libraries. With `--copy-dt-needed-entries' dynamic libraries mentioned on the command line will be recursively searched, following their DT_NEEDED tags to other libraries, in order to resolve symbols required by the output binary. With the default setting however the searching of dynamic libraries that follow it will stop with the dynamic library itself. No DT_NEEDED links will be traversed to resolve symbols. a1045 6 `--print-output-format' Print the name of the default output format (perhaps influenced by other command-line options). This is the string that would appear in an `OUTPUT_FORMAT' linker script command (*note File Commands::). a1378 6 `-Trodata-segment=ORG' When creating an ELF executable or shared object for a target where the read-only data is in its own segment separate from the executable text, it will set the address of the first byte of the read-only data segment. a1586 5 `--no-ld-generated-unwind-info' Request creation of `.eh_frame' unwind info for linker generated code sections like PLT. This option is on by default if linker generated unwind info is supported. d2059 1 a2059 24 2.1.2 Options specific to C6X uClinux targets --------------------------------------------- The C6X uClinux target uses a binary format called DSBT to support shared libraries. Each shared library in the system needs to have a unique index; all executables use an index of 0. `--dsbt-size SIZE' This option sets the number of entires in the DSBT of the current executable or shared library to SIZE. The default is to create a table with 64 entries. `--dsbt-index INDEX' This option sets the DSBT index of the current executable or shared library to INDEX. The default is 0, which is appropriate for generating executables. If a shared library is generated with a DSBT index of 0, the `R_C6000_DSBT_INDEX' relocs are copied into the output file. The `--no-merge-exidx-entries' switch disables the merging of adjacent exidx entries in frame unwind info. 2.1.3 Options specific to Motorola 68HC11 and 68HC12 targets d2078 1 a2078 1 2.1.4 Options specific to Motorola 68K target a2724 1 * HIDDEN:: HIDDEN d2730 1 a2730 1 File: ld.info, Node: Simple Assignments, Next: HIDDEN, Up: Assignments d2786 1 a2786 4 File: ld.info, Node: HIDDEN, Next: PROVIDE, Prev: Simple Assignments, Up: Assignments 3.5.2 HIDDEN ------------ d2788 1 a2788 24 For ELF targeted ports, define a symbol that will be hidden and won't be exported. The syntax is `HIDDEN(SYMBOL = EXPRESSION)'. Here is the example from *Note Simple Assignments::, rewritten to use `HIDDEN': HIDDEN(floating_point = 0); SECTIONS { .text : { *(.text) HIDDEN(_etext = .); } HIDDEN(_bdata = (. + 3) & ~ 3); .data : { *(.data) } } In this case none of the three symbols will be visible outside this module.  File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: HIDDEN, Up: Assignments 3.5.3 PROVIDE d2820 1 a2820 1 3.5.4 PROVIDE_HIDDEN d2829 1 a2829 1 3.5.5 Source Code Reference a3142 17 To refine the sections that are included based on the section flags of an input section, INPUT_SECTION_FLAGS may be used. Here is a simple example for using Section header flags for ELF sections: SECTIONS { .text : { INPUT_SECTION_FLAGS (SHF_MERGE & SHF_STRINGS) *(.text) } .text2 : { INPUT_SECTION_FLAGS (!SHF_WRITE) *(.text) } } In this example, the output section `.text' will be comprised of any input section matching the name *(.text) whose section header flags `SHF_MERGE' and `SHF_STRINGS' are set. The output section `.text2' will be comprised of any input section matching the name *(.text) whose section header flag `SHF_WRITE' is clear. a3235 5 `SORT_BY_INIT_PRIORITY' is very similar to `SORT_BY_NAME'. The difference is `SORT_BY_INIT_PRIORITY' will sort sections into ascending order by numerical value of the GCC init_priority attribute encoded in the section name before placing them in the output file. a3276 3 `SORT_NONE' disables section sorting by ignoring the command line section sorting option. d4389 1 a4389 1 __start_SECNAME and __stop_SECNAME, where SECNAME is the name of the a5167 9 The `--fix-arm1176' switch enables a link-time workaround for an erratum in certain ARM1176 processors. The workaround is enabled by default if you are targetting ARM v6 (excluding ARM v6T2) or earlier. It can be disabled unconditionally by specifying `--no-fix-arm1176'. Further information is available in the "ARM1176JZ-S and ARM1176JZF-S Programmer Advice Notice" available on the ARM documentaion website at: http://infocenter.arm.com/. d5455 9 a5463 45 If given any toc option besides `-mcmodel=medium' or `-mcmodel=large', PowerPC64 GCC generates code for a TOC model where TOC entries are accessed with a 16-bit offset from r2. This limits the total TOC size to 64K. PowerPC64 `ld' extends this limit by grouping code sections such that each group uses less than 64K for its TOC entries, then inserts r2 adjusting stubs between inter-group calls. `ld' does not split apart input sections, so cannot help if a single input file has a `.toc' section that exceeds 64K, most likely from linking multiple files with `ld -r'. Use this option to turn off this feature. `--no-toc-sort' By default, `ld' sorts TOC sections so that those whose file happens to have a section called `.init' or `.fini' are placed first, followed by TOC sections referenced by code generated with PowerPC64 gcc's `-mcmodel=small', and lastly TOC sections referenced only by code generated with PowerPC64 gcc's `-mcmodel=medium' or `-mcmodel=large' options. Doing this results in better TOC grouping for multi-TOC. Use this option to turn off this feature. `--plt-align' `--no-plt-align' Use these options to control whether individual PLT call stubs are aligned to a 32-byte boundary, or to the specified power of two boundary when using `--plt-align='. By default PLT call stubs are packed tightly. `--plt-static-chain' `--no-plt-static-chain' Use these options to control whether PLT call stubs load the static chain pointer (r11). `ld' defaults to not loading the static chain since there is never any need to do so on a PLT call. `--plt-thread-safe' `--no-thread-safe' With power7's weakly ordered memory model, it is possible when using lazy binding for ld.so to update a plt entry in one thread and have another thread see the individual plt entry words update in the wrong order, despite ld.so carefully writing in the correct order and using memory write barriers. To avoid this we need some sort of read barrier in the call stub, or use LD_BIND_NOW=1. By default, `ld' looks for calls to commonly used functions that create threads, and if seen, adds the necessary barriers. Use these options to change the default behaviour. d7032 3 a7034 3 * --add-stdcall-alias: Options. (line 1589) * --allow-multiple-definition: Options. (line 989) * --allow-shlib-undefined: Options. (line 995) d7039 2 a7040 2 * --bank-window: Options. (line 2021) * --base-file: Options. (line 1594) d7043 2 a7044 2 * --build-id: Options. (line 1551) * --build-id=STYLE: Options. (line 1551) d7047 2 a7048 2 * --cref: Options. (line 849) * --default-imported-symver: Options. (line 1032) d7050 3 a7052 3 * --default-symver: Options. (line 1028) * --defsym=SYMBOL=EXP: Options. (line 877) * --demangle[=STYLE]: Options. (line 890) d7054 6 a7059 6 * --disable-auto-image-base: Options. (line 1773) * --disable-auto-import: Options. (line 1908) * --disable-long-section-names: Options. (line 1604) * --disable-new-dtags: Options. (line 1514) * --disable-runtime-pseudo-reloc: Options. (line 1921) * --disable-stdcall-fixup: Options. (line 1626) d7062 2 a7063 2 * --dll: Options. (line 1599) * --dll-search-prefix: Options. (line 1779) d7065 1 a7065 3 * --dsbt-index: Options. (line 1998) * --dsbt-size: Options. (line 1993) * --dynamic-linker=FILE: Options. (line 903) d7070 2 a7071 2 * --dynamicbase: Options. (line 1957) * --eh-frame-hdr: Options. (line 1505) d7074 2 a7075 2 * --emit-stub-syms <1>: SPU ELF. (line 15) * --emit-stub-syms <2>: PowerPC ELF32. (line 47) d7077 7 a7083 7 * --enable-auto-image-base: Options. (line 1765) * --enable-auto-import: Options. (line 1788) * --enable-extra-pe-debug: Options. (line 1926) * --enable-long-section-names: Options. (line 1604) * --enable-new-dtags: Options. (line 1514) * --enable-runtime-pseudo-reloc: Options. (line 1913) * --enable-stdcall-fixup: Options. (line 1626) d7085 2 a7086 2 * --error-unresolved-symbols: Options. (line 1458) * --exclude-all-symbols: Options. (line 1680) d7089 2 a7090 2 * --exclude-symbols: Options. (line 1674) * --export-all-symbols: Options. (line 1650) d7093 2 a7094 2 * --fatal-warnings: Options. (line 910) * --file-alignment: Options. (line 1684) a7095 1 * --fix-arm1176: ARM. (line 111) d7100 2 a7101 2 * --force-exe-suffix: Options. (line 915) * --forceinteg: Options. (line 1962) d7104 2 a7105 2 * --gc-sections: Options. (line 925) * --got: Options. (line 2034) d7108 5 a7112 5 * --hash-size=NUMBER: Options. (line 1523) * --hash-style=STYLE: Options. (line 1531) * --heap: Options. (line 1690) * --help: Options. (line 962) * --image-base: Options. (line 1697) d7114 3 a7116 4 * --kill-at: Options. (line 1706) * --large-address-aware: Options. (line 1711) * --ld-generated-unwind-info: Options. (line 1509) * --leading-underscore: Options. (line 1644) d7120 3 a7122 3 * --major-image-version: Options. (line 1720) * --major-os-version: Options. (line 1725) * --major-subsystem-version: Options. (line 1729) d7124 3 a7126 3 * --minor-image-version: Options. (line 1734) * --minor-os-version: Options. (line 1739) * --minor-subsystem-version: Options. (line 1743) d7132 1 a7132 1 * --no-allow-shlib-undefined: Options. (line 995) d7134 1 a7134 1 * --no-bind: Options. (line 1976) d7137 2 a7138 2 * --no-define-common: Options. (line 861) * --no-demangle: Options. (line 890) d7140 1 a7140 1 * --no-enum-size-warning: ARM. (line 120) d7142 1 a7142 2 * --no-fatal-warnings: Options. (line 910) * --no-fix-arm1176: ARM. (line 111) d7144 4 a7147 5 * --no-gc-sections: Options. (line 925) * --no-isolation: Options. (line 1969) * --no-keep-memory: Options. (line 974) * --no-leading-underscore: Options. (line 1644) * --no-merge-exidx-entries <1>: Options. (line 2005) d7153 2 a7154 5 * --no-plt-align: PowerPC64 ELF64. (line 96) * --no-plt-static-chain: PowerPC64 ELF64. (line 103) * --no-plt-thread-safe: PowerPC64 ELF64. (line 109) * --no-print-gc-sections: Options. (line 947) * --no-seh: Options. (line 1972) d7158 8 a7165 9 * --no-toc-sort: PowerPC64 ELF64. (line 86) * --no-trampoline: Options. (line 2015) * --no-undefined: Options. (line 981) * --no-undefined-version: Options. (line 1023) * --no-warn-mismatch: Options. (line 1036) * --no-warn-search-mismatch: Options. (line 1045) * --no-wchar-size-warning: ARM. (line 127) * --no-whole-archive: Options. (line 1049) * --noinhibit-exec: Options. (line 1053) d7167 2 a7168 2 * --nxcompat: Options. (line 1965) * --oformat=OUTPUT-FORMAT: Options. (line 1065) d7170 2 a7171 2 * --out-implib: Options. (line 1756) * --output-def: Options. (line 1748) d7173 2 a7174 5 * --pic-executable: Options. (line 1078) * --pic-veneer: ARM. (line 133) * --plt-align: PowerPC64 ELF64. (line 96) * --plt-static-chain: PowerPC64 ELF64. (line 103) * --plt-thread-safe: PowerPC64 ELF64. (line 109) d7176 1 a7176 1 * --print-gc-sections: Options. (line 947) d7178 2 a7179 3 * --print-output-format: Options. (line 956) * --reduce-memory-overheads: Options. (line 1537) * --relax: Options. (line 1094) d7184 1 a7184 1 * --retain-symbols-file=FILENAME: Options. (line 1120) d7187 2 a7188 2 * --section-alignment: Options. (line 1931) * --section-start=SECTIONNAME=ORG: Options. (line 1276) d7190 6 a7195 6 * --sort-common: Options. (line 1218) * --sort-section=alignment: Options. (line 1233) * --sort-section=name: Options. (line 1229) * --split-by-file: Options. (line 1237) * --split-by-reloc: Options. (line 1242) * --stack: Options. (line 1937) d7197 1 a7197 1 * --stats: Options. (line 1255) d7201 3 a7203 3 * --stub-group-size=N <1>: HPPA ELF32. (line 12) * --stub-group-size=N: ARM. (line 138) * --subsystem: Options. (line 1944) d7205 2 a7206 2 * --sysroot=DIRECTORY: Options. (line 1259) * --target-help: Options. (line 966) d7213 2 a7214 2 * --traditional-format: Options. (line 1264) * --tsaware: Options. (line 1982) d7217 1 a7217 1 * --unresolved-symbols: Options. (line 1301) d7220 1 a7220 1 * --verbose[=NUMBER]: Options. (line 1330) d7222 1 a7222 1 * --version-script=VERSION-SCRIPTFILE: Options. (line 1338) d7224 11 a7234 11 * --warn-alternate-em: Options. (line 1450) * --warn-common: Options. (line 1349) * --warn-constructors: Options. (line 1417) * --warn-multiple-gp: Options. (line 1422) * --warn-once: Options. (line 1436) * --warn-section-align: Options. (line 1440) * --warn-shared-textrel: Options. (line 1447) * --warn-unresolved-symbols: Options. (line 1453) * --wdmdriver: Options. (line 1979) * --whole-archive: Options. (line 1462) * --wrap=SYMBOL: Options. (line 1476) d7241 1 a7241 1 * -Bshareable: Options. (line 1211) d7264 1 a7264 1 * -IFILE: Options. (line 903) d7270 2 a7271 1 * -Map=MAPFILE: Options. (line 970) d7273 1 a7273 2 * -n: Options. (line 439) * -no-relax: Options. (line 1094) d7275 1 a7275 1 * -nostdlib: Options. (line 1059) d7279 1 a7279 1 * -pie: Options. (line 1078) d7281 2 a7282 2 * -qmagic: Options. (line 1088) * -Qy: Options. (line 1091) d7285 3 a7287 2 * -rpath-link=DIR: Options. (line 1156) * -rpath=DIR: Options. (line 1134) d7289 1 a7289 2 * -s: Options. (line 519) * -shared: Options. (line 1211) d7294 4 a7297 5 * -Tbss=ORG: Options. (line 1285) * -Tdata=ORG: Options. (line 1285) * -Trodata-segment=ORG: Options. (line 1295) * -Ttext-segment=ORG: Options. (line 1291) * -Ttext=ORG: Options. (line 1285) d7300 1 d7302 1 a7302 1 * -V: Options. (line 581) a7303 1 * -X: Options. (line 591) d7306 1 a7306 1 * -z defs: Options. (line 981) d7308 1 a7308 1 * -z muldefs: Options. (line 989) a7345 1 * ARM1176 erratum workaround: ARM. (line 111) d7372 1 a7372 1 * combining symbols, warnings on: Options. (line 1349) d7375 1 a7375 1 * common allocation: Options. (line 861) d7377 1 a7377 1 (line 20) a7385 1 * constructors: Options. (line 562) d7388 1 d7396 1 a7396 1 * cross reference table: Options. (line 849) d7406 2 a7407 2 * dbx: Options. (line 1269) * DEF files, creating: Options. (line 1748) d7413 1 a7413 1 * demangling, from command line: Options. (line 890) d7418 2 a7419 2 * DLLs, creating: Options. (line 1650) * DLLs, linking to: Options. (line 1779) d7423 1 a7423 1 * dynamic linker, from command line: Options. (line 903) d7467 2 a7468 3 * garbage collection <1>: Options. (line 947) * garbage collection <2>: Input Section Keep. (line 6) * garbage collection: Options. (line 925) d7477 2 a7478 3 * heap size: Options. (line 1690) * help: Options. (line 962) * HIDDEN: HIDDEN. (line 6) d7485 1 a7485 1 * image base: Options. (line 1697) d7491 1 a7491 1 * including an entire archive: Options. (line 1462) d7533 1 a7533 1 * link-time runtime library search path: Options. (line 1156) d7567 1 a7567 1 * memory usage: Options. (line 974) d7579 2 a7580 2 * NO_ENUM_SIZE_WARNING: ARM. (line 120) * NO_WCHAR_SIZE_WARNING: ARM. (line 127) d7592 1 a7592 1 * OMAGIC: Options. (line 445) d7605 1 a7605 1 * output file after errors: Options. (line 1053) a7607 1 * output format: Options. (line 956) d7625 2 a7626 2 * PIC_VENEER: ARM. (line 133) * position independent executables: Options. (line 1080) a7637 3 * PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 103) * PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 109) * PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 96) a7641 1 * PowerPC64 TOC sorting: PowerPC64 ELF64. (line 86) d7663 1 a7663 1 * relaxing addressing modes: Options. (line 1094) d7675 1 a7675 2 * retaining specified symbols: Options. (line 1120) * rodata segment origin, cmd line: Options. (line 1296) d7680 1 a7680 1 * runtime library search path: Options. (line 1134) d7685 1 a7685 1 * script files: Options. (line 541) d7695 1 a7695 1 * section alignment, warnings on: Options. (line 1440) d7714 1 a7714 1 * segment origins, cmd line: Options. (line 1285) d7717 1 a7717 1 * shared libraries: Options. (line 1213) d7725 1 a7725 1 (line 63) a7727 2 * SORT_BY_INIT_PRIORITY: Input Section Wildcards. (line 58) a7729 2 * SORT_NONE: Input Section Wildcards. (line 104) d7739 1 a7739 1 * stack size: Options. (line 1937) d7745 2 a7746 2 * stripping all but some symbols: Options. (line 1120) * STUB_GROUP_SIZE: ARM. (line 138) d7757 1 a7757 1 * symbols, from command line: Options. (line 877) d7759 2 a7760 2 * symbols, retaining selectively: Options. (line 1120) * synthesizing linker: Options. (line 1094) d7765 1 a7765 1 * text segment origin, cmd line: Options. (line 1292) d7768 1 a7768 1 * traditional format: Options. (line 1264) d7775 1 a7775 1 * undefined symbols, warnings on: Options. (line 1436) d7780 1 a7780 1 * usage: Options. (line 962) d7786 1 a7786 1 * verbose[=NUMBER]: Options. (line 1330) d7789 1 a7789 1 * version script, symbol versions: Options. (line 1338) d7793 3 a7795 3 * warnings, on combining symbols: Options. (line 1349) * warnings, on section alignment: Options. (line 1440) * warnings, on undefined symbols: Options. (line 1436) d7810 78 a7887 79 Node: Environment95055 Node: Scripts96815 Node: Basic Script Concepts98549 Node: Script Format101256 Node: Simple Example102119 Node: Simple Commands105215 Node: Entry Point105721 Node: File Commands106654 Node: Format Commands110655 Node: REGION_ALIAS112611 Node: Miscellaneous Commands117443 Node: Assignments121051 Node: Simple Assignments121562 Node: HIDDEN123297 Node: PROVIDE123927 Node: PROVIDE_HIDDEN125120 Node: Source Code Reference125364 Node: SECTIONS128944 Node: Output Section Description130835 Node: Output Section Name131922 Node: Output Section Address132798 Node: Input Section135033 Node: Input Section Basics135834 Node: Input Section Wildcards139740 Node: Input Section Common144834 Node: Input Section Keep146316 Node: Input Section Example146806 Node: Output Section Data147774 Node: Output Section Keywords150551 Node: Output Section Discarding154120 Node: Output Section Attributes155301 Node: Output Section Type156402 Node: Output Section LMA157473 Node: Forced Output Alignment160544 Node: Forced Input Alignment160812 Node: Output Section Constraint161201 Node: Output Section Region161629 Node: Output Section Phdr162062 Node: Output Section Fill162726 Node: Overlay Description163868 Node: MEMORY168171 Node: PHDRS172506 Node: VERSION177760 Node: Expressions185853 Node: Constants186782 Node: Symbolic Constants187657 Node: Symbols188208 Node: Orphan Sections188955 Node: Location Counter190120 Node: Operators194556 Node: Evaluation195478 Node: Expression Section196842 Node: Builtin Functions200499 Node: Implicit Linker Scripts208460 Node: Machine Dependent209235 Node: H8/300210251 Node: i960211876 Node: M68HC11/68HC12214080 Node: ARM215534 Node: HPPA ELF32223497 Node: M68K225120 Node: MMIX226029 Node: MSP430227194 Node: PowerPC ELF32228243 Node: PowerPC64 ELF64231079 Node: SPU ELF237235 Node: TI COFF239867 Node: WIN32240393 Node: Xtensa260518 Node: BFD263483 Node: BFD outline264938 Node: BFD information loss266224 Node: Canonical format268741 Node: Reporting Bugs273098 Node: Bug Criteria273792 Node: Bug Reporting274491 Node: MRI281530 Node: GNU Free Documentation License286173 Node: LD Index311329 @ 1.1.1.2.2.1 log @sync with head. for a reference, the tree before this commit was tagged as yamt-pagecache-tag8. this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments") @ text @d8 1 a8 1 This file documents the GNU linker LD (GNU Binutils) version 2.23.2. d27 1 a27 1 This file documents the GNU linker ld (GNU Binutils) version 2.23.2. d922 1 a922 1 command line. Normally the linker won't add a DT_NEEDED tag to the d924 4 a927 4 input dynamic library. With `--copy-dt-needed-entries' specified on the command line however any dynamic libraries that follow it will have their DT_NEEDED entries added. The default behaviour can be restored with `--no-copy-dt-needed-entries'. d930 8 a937 7 dynamic libraries. With `--copy-dt-needed-entries' dynamic libraries mentioned on the command line will be recursively searched, following their DT_NEEDED tags to other libraries, in order to resolve symbols required by the output binary. With the default setting however the searching of dynamic libraries that follow it will stop with the dynamic library itself. No DT_NEEDED links will be traversed to resolve symbols. a1045 6 `--print-output-format' Print the name of the default output format (perhaps influenced by other command-line options). This is the string that would appear in an `OUTPUT_FORMAT' linker script command (*note File Commands::). a1378 6 `-Trodata-segment=ORG' When creating an ELF executable or shared object for a target where the read-only data is in its own segment separate from the executable text, it will set the address of the first byte of the read-only data segment. a1586 5 `--no-ld-generated-unwind-info' Request creation of `.eh_frame' unwind info for linker generated code sections like PLT. This option is on by default if linker generated unwind info is supported. d2059 1 a2059 24 2.1.2 Options specific to C6X uClinux targets --------------------------------------------- The C6X uClinux target uses a binary format called DSBT to support shared libraries. Each shared library in the system needs to have a unique index; all executables use an index of 0. `--dsbt-size SIZE' This option sets the number of entires in the DSBT of the current executable or shared library to SIZE. The default is to create a table with 64 entries. `--dsbt-index INDEX' This option sets the DSBT index of the current executable or shared library to INDEX. The default is 0, which is appropriate for generating executables. If a shared library is generated with a DSBT index of 0, the `R_C6000_DSBT_INDEX' relocs are copied into the output file. The `--no-merge-exidx-entries' switch disables the merging of adjacent exidx entries in frame unwind info. 2.1.3 Options specific to Motorola 68HC11 and 68HC12 targets d2078 1 a2078 1 2.1.4 Options specific to Motorola 68K target a2724 1 * HIDDEN:: HIDDEN d2730 1 a2730 1 File: ld.info, Node: Simple Assignments, Next: HIDDEN, Up: Assignments d2786 1 a2786 4 File: ld.info, Node: HIDDEN, Next: PROVIDE, Prev: Simple Assignments, Up: Assignments 3.5.2 HIDDEN ------------ d2788 1 a2788 24 For ELF targeted ports, define a symbol that will be hidden and won't be exported. The syntax is `HIDDEN(SYMBOL = EXPRESSION)'. Here is the example from *Note Simple Assignments::, rewritten to use `HIDDEN': HIDDEN(floating_point = 0); SECTIONS { .text : { *(.text) HIDDEN(_etext = .); } HIDDEN(_bdata = (. + 3) & ~ 3); .data : { *(.data) } } In this case none of the three symbols will be visible outside this module.  File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: HIDDEN, Up: Assignments 3.5.3 PROVIDE d2820 1 a2820 1 3.5.4 PROVIDE_HIDDEN d2829 1 a2829 1 3.5.5 Source Code Reference a3142 17 To refine the sections that are included based on the section flags of an input section, INPUT_SECTION_FLAGS may be used. Here is a simple example for using Section header flags for ELF sections: SECTIONS { .text : { INPUT_SECTION_FLAGS (SHF_MERGE & SHF_STRINGS) *(.text) } .text2 : { INPUT_SECTION_FLAGS (!SHF_WRITE) *(.text) } } In this example, the output section `.text' will be comprised of any input section matching the name *(.text) whose section header flags `SHF_MERGE' and `SHF_STRINGS' are set. The output section `.text2' will be comprised of any input section matching the name *(.text) whose section header flag `SHF_WRITE' is clear. a3235 5 `SORT_BY_INIT_PRIORITY' is very similar to `SORT_BY_NAME'. The difference is `SORT_BY_INIT_PRIORITY' will sort sections into ascending order by numerical value of the GCC init_priority attribute encoded in the section name before placing them in the output file. a3276 3 `SORT_NONE' disables section sorting by ignoring the command line section sorting option. d4389 1 a4389 1 __start_SECNAME and __stop_SECNAME, where SECNAME is the name of the a5167 9 The `--fix-arm1176' switch enables a link-time workaround for an erratum in certain ARM1176 processors. The workaround is enabled by default if you are targetting ARM v6 (excluding ARM v6T2) or earlier. It can be disabled unconditionally by specifying `--no-fix-arm1176'. Further information is available in the "ARM1176JZ-S and ARM1176JZF-S Programmer Advice Notice" available on the ARM documentaion website at: http://infocenter.arm.com/. d5455 9 a5463 45 If given any toc option besides `-mcmodel=medium' or `-mcmodel=large', PowerPC64 GCC generates code for a TOC model where TOC entries are accessed with a 16-bit offset from r2. This limits the total TOC size to 64K. PowerPC64 `ld' extends this limit by grouping code sections such that each group uses less than 64K for its TOC entries, then inserts r2 adjusting stubs between inter-group calls. `ld' does not split apart input sections, so cannot help if a single input file has a `.toc' section that exceeds 64K, most likely from linking multiple files with `ld -r'. Use this option to turn off this feature. `--no-toc-sort' By default, `ld' sorts TOC sections so that those whose file happens to have a section called `.init' or `.fini' are placed first, followed by TOC sections referenced by code generated with PowerPC64 gcc's `-mcmodel=small', and lastly TOC sections referenced only by code generated with PowerPC64 gcc's `-mcmodel=medium' or `-mcmodel=large' options. Doing this results in better TOC grouping for multi-TOC. Use this option to turn off this feature. `--plt-align' `--no-plt-align' Use these options to control whether individual PLT call stubs are aligned to a 32-byte boundary, or to the specified power of two boundary when using `--plt-align='. By default PLT call stubs are packed tightly. `--plt-static-chain' `--no-plt-static-chain' Use these options to control whether PLT call stubs load the static chain pointer (r11). `ld' defaults to not loading the static chain since there is never any need to do so on a PLT call. `--plt-thread-safe' `--no-thread-safe' With power7's weakly ordered memory model, it is possible when using lazy binding for ld.so to update a plt entry in one thread and have another thread see the individual plt entry words update in the wrong order, despite ld.so carefully writing in the correct order and using memory write barriers. To avoid this we need some sort of read barrier in the call stub, or use LD_BIND_NOW=1. By default, `ld' looks for calls to commonly used functions that create threads, and if seen, adds the necessary barriers. Use these options to change the default behaviour. d7032 3 a7034 3 * --add-stdcall-alias: Options. (line 1589) * --allow-multiple-definition: Options. (line 989) * --allow-shlib-undefined: Options. (line 995) d7039 2 a7040 2 * --bank-window: Options. (line 2021) * --base-file: Options. (line 1594) d7043 2 a7044 2 * --build-id: Options. (line 1551) * --build-id=STYLE: Options. (line 1551) d7047 2 a7048 2 * --cref: Options. (line 849) * --default-imported-symver: Options. (line 1032) d7050 3 a7052 3 * --default-symver: Options. (line 1028) * --defsym=SYMBOL=EXP: Options. (line 877) * --demangle[=STYLE]: Options. (line 890) d7054 6 a7059 6 * --disable-auto-image-base: Options. (line 1773) * --disable-auto-import: Options. (line 1908) * --disable-long-section-names: Options. (line 1604) * --disable-new-dtags: Options. (line 1514) * --disable-runtime-pseudo-reloc: Options. (line 1921) * --disable-stdcall-fixup: Options. (line 1626) d7062 2 a7063 2 * --dll: Options. (line 1599) * --dll-search-prefix: Options. (line 1779) d7065 1 a7065 3 * --dsbt-index: Options. (line 1998) * --dsbt-size: Options. (line 1993) * --dynamic-linker=FILE: Options. (line 903) d7070 2 a7071 2 * --dynamicbase: Options. (line 1957) * --eh-frame-hdr: Options. (line 1505) d7074 2 a7075 2 * --emit-stub-syms <1>: SPU ELF. (line 15) * --emit-stub-syms <2>: PowerPC ELF32. (line 47) d7077 7 a7083 7 * --enable-auto-image-base: Options. (line 1765) * --enable-auto-import: Options. (line 1788) * --enable-extra-pe-debug: Options. (line 1926) * --enable-long-section-names: Options. (line 1604) * --enable-new-dtags: Options. (line 1514) * --enable-runtime-pseudo-reloc: Options. (line 1913) * --enable-stdcall-fixup: Options. (line 1626) d7085 2 a7086 2 * --error-unresolved-symbols: Options. (line 1458) * --exclude-all-symbols: Options. (line 1680) d7089 2 a7090 2 * --exclude-symbols: Options. (line 1674) * --export-all-symbols: Options. (line 1650) d7093 2 a7094 2 * --fatal-warnings: Options. (line 910) * --file-alignment: Options. (line 1684) a7095 1 * --fix-arm1176: ARM. (line 111) d7100 2 a7101 2 * --force-exe-suffix: Options. (line 915) * --forceinteg: Options. (line 1962) d7104 2 a7105 2 * --gc-sections: Options. (line 925) * --got: Options. (line 2034) d7108 5 a7112 5 * --hash-size=NUMBER: Options. (line 1523) * --hash-style=STYLE: Options. (line 1531) * --heap: Options. (line 1690) * --help: Options. (line 962) * --image-base: Options. (line 1697) d7114 3 a7116 4 * --kill-at: Options. (line 1706) * --large-address-aware: Options. (line 1711) * --ld-generated-unwind-info: Options. (line 1509) * --leading-underscore: Options. (line 1644) d7120 3 a7122 3 * --major-image-version: Options. (line 1720) * --major-os-version: Options. (line 1725) * --major-subsystem-version: Options. (line 1729) d7124 3 a7126 3 * --minor-image-version: Options. (line 1734) * --minor-os-version: Options. (line 1739) * --minor-subsystem-version: Options. (line 1743) d7132 1 a7132 1 * --no-allow-shlib-undefined: Options. (line 995) d7134 1 a7134 1 * --no-bind: Options. (line 1976) d7137 2 a7138 2 * --no-define-common: Options. (line 861) * --no-demangle: Options. (line 890) d7140 1 a7140 1 * --no-enum-size-warning: ARM. (line 120) d7142 1 a7142 2 * --no-fatal-warnings: Options. (line 910) * --no-fix-arm1176: ARM. (line 111) d7144 4 a7147 5 * --no-gc-sections: Options. (line 925) * --no-isolation: Options. (line 1969) * --no-keep-memory: Options. (line 974) * --no-leading-underscore: Options. (line 1644) * --no-merge-exidx-entries <1>: Options. (line 2005) d7153 2 a7154 5 * --no-plt-align: PowerPC64 ELF64. (line 96) * --no-plt-static-chain: PowerPC64 ELF64. (line 103) * --no-plt-thread-safe: PowerPC64 ELF64. (line 109) * --no-print-gc-sections: Options. (line 947) * --no-seh: Options. (line 1972) d7158 8 a7165 9 * --no-toc-sort: PowerPC64 ELF64. (line 86) * --no-trampoline: Options. (line 2015) * --no-undefined: Options. (line 981) * --no-undefined-version: Options. (line 1023) * --no-warn-mismatch: Options. (line 1036) * --no-warn-search-mismatch: Options. (line 1045) * --no-wchar-size-warning: ARM. (line 127) * --no-whole-archive: Options. (line 1049) * --noinhibit-exec: Options. (line 1053) d7167 2 a7168 2 * --nxcompat: Options. (line 1965) * --oformat=OUTPUT-FORMAT: Options. (line 1065) d7170 2 a7171 2 * --out-implib: Options. (line 1756) * --output-def: Options. (line 1748) d7173 2 a7174 5 * --pic-executable: Options. (line 1078) * --pic-veneer: ARM. (line 133) * --plt-align: PowerPC64 ELF64. (line 96) * --plt-static-chain: PowerPC64 ELF64. (line 103) * --plt-thread-safe: PowerPC64 ELF64. (line 109) d7176 1 a7176 1 * --print-gc-sections: Options. (line 947) d7178 2 a7179 3 * --print-output-format: Options. (line 956) * --reduce-memory-overheads: Options. (line 1537) * --relax: Options. (line 1094) d7184 1 a7184 1 * --retain-symbols-file=FILENAME: Options. (line 1120) d7187 2 a7188 2 * --section-alignment: Options. (line 1931) * --section-start=SECTIONNAME=ORG: Options. (line 1276) d7190 6 a7195 6 * --sort-common: Options. (line 1218) * --sort-section=alignment: Options. (line 1233) * --sort-section=name: Options. (line 1229) * --split-by-file: Options. (line 1237) * --split-by-reloc: Options. (line 1242) * --stack: Options. (line 1937) d7197 1 a7197 1 * --stats: Options. (line 1255) d7201 3 a7203 3 * --stub-group-size=N <1>: HPPA ELF32. (line 12) * --stub-group-size=N: ARM. (line 138) * --subsystem: Options. (line 1944) d7205 2 a7206 2 * --sysroot=DIRECTORY: Options. (line 1259) * --target-help: Options. (line 966) d7213 2 a7214 2 * --traditional-format: Options. (line 1264) * --tsaware: Options. (line 1982) d7217 1 a7217 1 * --unresolved-symbols: Options. (line 1301) d7220 1 a7220 1 * --verbose[=NUMBER]: Options. (line 1330) d7222 1 a7222 1 * --version-script=VERSION-SCRIPTFILE: Options. (line 1338) d7224 11 a7234 11 * --warn-alternate-em: Options. (line 1450) * --warn-common: Options. (line 1349) * --warn-constructors: Options. (line 1417) * --warn-multiple-gp: Options. (line 1422) * --warn-once: Options. (line 1436) * --warn-section-align: Options. (line 1440) * --warn-shared-textrel: Options. (line 1447) * --warn-unresolved-symbols: Options. (line 1453) * --wdmdriver: Options. (line 1979) * --whole-archive: Options. (line 1462) * --wrap=SYMBOL: Options. (line 1476) d7241 1 a7241 1 * -Bshareable: Options. (line 1211) d7264 1 a7264 1 * -IFILE: Options. (line 903) d7270 2 a7271 1 * -Map=MAPFILE: Options. (line 970) d7273 1 a7273 2 * -n: Options. (line 439) * -no-relax: Options. (line 1094) d7275 1 a7275 1 * -nostdlib: Options. (line 1059) d7279 1 a7279 1 * -pie: Options. (line 1078) d7281 2 a7282 2 * -qmagic: Options. (line 1088) * -Qy: Options. (line 1091) d7285 3 a7287 2 * -rpath-link=DIR: Options. (line 1156) * -rpath=DIR: Options. (line 1134) d7289 1 a7289 2 * -s: Options. (line 519) * -shared: Options. (line 1211) d7294 4 a7297 5 * -Tbss=ORG: Options. (line 1285) * -Tdata=ORG: Options. (line 1285) * -Trodata-segment=ORG: Options. (line 1295) * -Ttext-segment=ORG: Options. (line 1291) * -Ttext=ORG: Options. (line 1285) d7300 1 d7302 1 a7302 1 * -V: Options. (line 581) a7303 1 * -X: Options. (line 591) d7306 1 a7306 1 * -z defs: Options. (line 981) d7308 1 a7308 1 * -z muldefs: Options. (line 989) a7345 1 * ARM1176 erratum workaround: ARM. (line 111) d7372 1 a7372 1 * combining symbols, warnings on: Options. (line 1349) d7375 1 a7375 1 * common allocation: Options. (line 861) d7377 1 a7377 1 (line 20) a7385 1 * constructors: Options. (line 562) d7388 1 d7396 1 a7396 1 * cross reference table: Options. (line 849) d7406 2 a7407 2 * dbx: Options. (line 1269) * DEF files, creating: Options. (line 1748) d7413 1 a7413 1 * demangling, from command line: Options. (line 890) d7418 2 a7419 2 * DLLs, creating: Options. (line 1650) * DLLs, linking to: Options. (line 1779) d7423 1 a7423 1 * dynamic linker, from command line: Options. (line 903) d7467 2 a7468 3 * garbage collection <1>: Options. (line 947) * garbage collection <2>: Input Section Keep. (line 6) * garbage collection: Options. (line 925) d7477 2 a7478 3 * heap size: Options. (line 1690) * help: Options. (line 962) * HIDDEN: HIDDEN. (line 6) d7485 1 a7485 1 * image base: Options. (line 1697) d7491 1 a7491 1 * including an entire archive: Options. (line 1462) d7533 1 a7533 1 * link-time runtime library search path: Options. (line 1156) d7567 1 a7567 1 * memory usage: Options. (line 974) d7579 2 a7580 2 * NO_ENUM_SIZE_WARNING: ARM. (line 120) * NO_WCHAR_SIZE_WARNING: ARM. (line 127) d7592 1 a7592 1 * OMAGIC: Options. (line 445) d7605 1 a7605 1 * output file after errors: Options. (line 1053) a7607 1 * output format: Options. (line 956) d7625 2 a7626 2 * PIC_VENEER: ARM. (line 133) * position independent executables: Options. (line 1080) a7637 3 * PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 103) * PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 109) * PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 96) a7641 1 * PowerPC64 TOC sorting: PowerPC64 ELF64. (line 86) d7663 1 a7663 1 * relaxing addressing modes: Options. (line 1094) d7675 1 a7675 2 * retaining specified symbols: Options. (line 1120) * rodata segment origin, cmd line: Options. (line 1296) d7680 1 a7680 1 * runtime library search path: Options. (line 1134) d7685 1 a7685 1 * script files: Options. (line 541) d7695 1 a7695 1 * section alignment, warnings on: Options. (line 1440) d7714 1 a7714 1 * segment origins, cmd line: Options. (line 1285) d7717 1 a7717 1 * shared libraries: Options. (line 1213) d7725 1 a7725 1 (line 63) a7727 2 * SORT_BY_INIT_PRIORITY: Input Section Wildcards. (line 58) a7729 2 * SORT_NONE: Input Section Wildcards. (line 104) d7739 1 a7739 1 * stack size: Options. (line 1937) d7745 2 a7746 2 * stripping all but some symbols: Options. (line 1120) * STUB_GROUP_SIZE: ARM. (line 138) d7757 1 a7757 1 * symbols, from command line: Options. (line 877) d7759 2 a7760 2 * symbols, retaining selectively: Options. (line 1120) * synthesizing linker: Options. (line 1094) d7765 1 a7765 1 * text segment origin, cmd line: Options. (line 1292) d7768 1 a7768 1 * traditional format: Options. (line 1264) d7775 1 a7775 1 * undefined symbols, warnings on: Options. (line 1436) d7780 1 a7780 1 * usage: Options. (line 962) d7786 1 a7786 1 * verbose[=NUMBER]: Options. (line 1330) d7789 1 a7789 1 * version script, symbol versions: Options. (line 1338) d7793 3 a7795 3 * warnings, on combining symbols: Options. (line 1349) * warnings, on section alignment: Options. (line 1440) * warnings, on undefined symbols: Options. (line 1436) d7810 78 a7887 79 Node: Environment95055 Node: Scripts96815 Node: Basic Script Concepts98549 Node: Script Format101256 Node: Simple Example102119 Node: Simple Commands105215 Node: Entry Point105721 Node: File Commands106654 Node: Format Commands110655 Node: REGION_ALIAS112611 Node: Miscellaneous Commands117443 Node: Assignments121051 Node: Simple Assignments121562 Node: HIDDEN123297 Node: PROVIDE123927 Node: PROVIDE_HIDDEN125120 Node: Source Code Reference125364 Node: SECTIONS128944 Node: Output Section Description130835 Node: Output Section Name131922 Node: Output Section Address132798 Node: Input Section135033 Node: Input Section Basics135834 Node: Input Section Wildcards139740 Node: Input Section Common144834 Node: Input Section Keep146316 Node: Input Section Example146806 Node: Output Section Data147774 Node: Output Section Keywords150551 Node: Output Section Discarding154120 Node: Output Section Attributes155301 Node: Output Section Type156402 Node: Output Section LMA157473 Node: Forced Output Alignment160544 Node: Forced Input Alignment160812 Node: Output Section Constraint161201 Node: Output Section Region161629 Node: Output Section Phdr162062 Node: Output Section Fill162726 Node: Overlay Description163868 Node: MEMORY168171 Node: PHDRS172506 Node: VERSION177760 Node: Expressions185853 Node: Constants186782 Node: Symbolic Constants187657 Node: Symbols188208 Node: Orphan Sections188955 Node: Location Counter190120 Node: Operators194556 Node: Evaluation195478 Node: Expression Section196842 Node: Builtin Functions200499 Node: Implicit Linker Scripts208460 Node: Machine Dependent209235 Node: H8/300210251 Node: i960211876 Node: M68HC11/68HC12214080 Node: ARM215534 Node: HPPA ELF32223497 Node: M68K225120 Node: MMIX226029 Node: MSP430227194 Node: PowerPC ELF32228243 Node: PowerPC64 ELF64231079 Node: SPU ELF237235 Node: TI COFF239867 Node: WIN32240393 Node: Xtensa260518 Node: BFD263483 Node: BFD outline264938 Node: BFD information loss266224 Node: Canonical format268741 Node: Reporting Bugs273098 Node: Bug Criteria273792 Node: Bug Reporting274491 Node: MRI281530 Node: GNU Free Documentation License286173 Node: LD Index311329 @ 1.1.1.3 log @from ftp.gnu.org @ text @d8 1 a8 1 This file documents the GNU linker LD (GNU Binutils) version 2.23.2. d27 1 a27 1 This file documents the GNU linker ld (GNU Binutils) version 2.23.2. d922 1 a922 1 command line. Normally the linker won't add a DT_NEEDED tag to the d924 4 a927 4 input dynamic library. With `--copy-dt-needed-entries' specified on the command line however any dynamic libraries that follow it will have their DT_NEEDED entries added. The default behaviour can be restored with `--no-copy-dt-needed-entries'. d930 8 a937 7 dynamic libraries. With `--copy-dt-needed-entries' dynamic libraries mentioned on the command line will be recursively searched, following their DT_NEEDED tags to other libraries, in order to resolve symbols required by the output binary. With the default setting however the searching of dynamic libraries that follow it will stop with the dynamic library itself. No DT_NEEDED links will be traversed to resolve symbols. a1045 6 `--print-output-format' Print the name of the default output format (perhaps influenced by other command-line options). This is the string that would appear in an `OUTPUT_FORMAT' linker script command (*note File Commands::). a1378 6 `-Trodata-segment=ORG' When creating an ELF executable or shared object for a target where the read-only data is in its own segment separate from the executable text, it will set the address of the first byte of the read-only data segment. a1586 5 `--no-ld-generated-unwind-info' Request creation of `.eh_frame' unwind info for linker generated code sections like PLT. This option is on by default if linker generated unwind info is supported. d2059 1 a2059 24 2.1.2 Options specific to C6X uClinux targets --------------------------------------------- The C6X uClinux target uses a binary format called DSBT to support shared libraries. Each shared library in the system needs to have a unique index; all executables use an index of 0. `--dsbt-size SIZE' This option sets the number of entires in the DSBT of the current executable or shared library to SIZE. The default is to create a table with 64 entries. `--dsbt-index INDEX' This option sets the DSBT index of the current executable or shared library to INDEX. The default is 0, which is appropriate for generating executables. If a shared library is generated with a DSBT index of 0, the `R_C6000_DSBT_INDEX' relocs are copied into the output file. The `--no-merge-exidx-entries' switch disables the merging of adjacent exidx entries in frame unwind info. 2.1.3 Options specific to Motorola 68HC11 and 68HC12 targets d2078 1 a2078 1 2.1.4 Options specific to Motorola 68K target a2724 1 * HIDDEN:: HIDDEN d2730 1 a2730 1 File: ld.info, Node: Simple Assignments, Next: HIDDEN, Up: Assignments d2786 1 a2786 4 File: ld.info, Node: HIDDEN, Next: PROVIDE, Prev: Simple Assignments, Up: Assignments 3.5.2 HIDDEN ------------ d2788 1 a2788 24 For ELF targeted ports, define a symbol that will be hidden and won't be exported. The syntax is `HIDDEN(SYMBOL = EXPRESSION)'. Here is the example from *Note Simple Assignments::, rewritten to use `HIDDEN': HIDDEN(floating_point = 0); SECTIONS { .text : { *(.text) HIDDEN(_etext = .); } HIDDEN(_bdata = (. + 3) & ~ 3); .data : { *(.data) } } In this case none of the three symbols will be visible outside this module.  File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: HIDDEN, Up: Assignments 3.5.3 PROVIDE d2820 1 a2820 1 3.5.4 PROVIDE_HIDDEN d2829 1 a2829 1 3.5.5 Source Code Reference a3142 17 To refine the sections that are included based on the section flags of an input section, INPUT_SECTION_FLAGS may be used. Here is a simple example for using Section header flags for ELF sections: SECTIONS { .text : { INPUT_SECTION_FLAGS (SHF_MERGE & SHF_STRINGS) *(.text) } .text2 : { INPUT_SECTION_FLAGS (!SHF_WRITE) *(.text) } } In this example, the output section `.text' will be comprised of any input section matching the name *(.text) whose section header flags `SHF_MERGE' and `SHF_STRINGS' are set. The output section `.text2' will be comprised of any input section matching the name *(.text) whose section header flag `SHF_WRITE' is clear. a3235 5 `SORT_BY_INIT_PRIORITY' is very similar to `SORT_BY_NAME'. The difference is `SORT_BY_INIT_PRIORITY' will sort sections into ascending order by numerical value of the GCC init_priority attribute encoded in the section name before placing them in the output file. a3276 3 `SORT_NONE' disables section sorting by ignoring the command line section sorting option. d4389 1 a4389 1 __start_SECNAME and __stop_SECNAME, where SECNAME is the name of the a5167 9 The `--fix-arm1176' switch enables a link-time workaround for an erratum in certain ARM1176 processors. The workaround is enabled by default if you are targetting ARM v6 (excluding ARM v6T2) or earlier. It can be disabled unconditionally by specifying `--no-fix-arm1176'. Further information is available in the "ARM1176JZ-S and ARM1176JZF-S Programmer Advice Notice" available on the ARM documentaion website at: http://infocenter.arm.com/. d5455 9 a5463 45 If given any toc option besides `-mcmodel=medium' or `-mcmodel=large', PowerPC64 GCC generates code for a TOC model where TOC entries are accessed with a 16-bit offset from r2. This limits the total TOC size to 64K. PowerPC64 `ld' extends this limit by grouping code sections such that each group uses less than 64K for its TOC entries, then inserts r2 adjusting stubs between inter-group calls. `ld' does not split apart input sections, so cannot help if a single input file has a `.toc' section that exceeds 64K, most likely from linking multiple files with `ld -r'. Use this option to turn off this feature. `--no-toc-sort' By default, `ld' sorts TOC sections so that those whose file happens to have a section called `.init' or `.fini' are placed first, followed by TOC sections referenced by code generated with PowerPC64 gcc's `-mcmodel=small', and lastly TOC sections referenced only by code generated with PowerPC64 gcc's `-mcmodel=medium' or `-mcmodel=large' options. Doing this results in better TOC grouping for multi-TOC. Use this option to turn off this feature. `--plt-align' `--no-plt-align' Use these options to control whether individual PLT call stubs are aligned to a 32-byte boundary, or to the specified power of two boundary when using `--plt-align='. By default PLT call stubs are packed tightly. `--plt-static-chain' `--no-plt-static-chain' Use these options to control whether PLT call stubs load the static chain pointer (r11). `ld' defaults to not loading the static chain since there is never any need to do so on a PLT call. `--plt-thread-safe' `--no-thread-safe' With power7's weakly ordered memory model, it is possible when using lazy binding for ld.so to update a plt entry in one thread and have another thread see the individual plt entry words update in the wrong order, despite ld.so carefully writing in the correct order and using memory write barriers. To avoid this we need some sort of read barrier in the call stub, or use LD_BIND_NOW=1. By default, `ld' looks for calls to commonly used functions that create threads, and if seen, adds the necessary barriers. Use these options to change the default behaviour. d7032 3 a7034 3 * --add-stdcall-alias: Options. (line 1589) * --allow-multiple-definition: Options. (line 989) * --allow-shlib-undefined: Options. (line 995) d7039 2 a7040 2 * --bank-window: Options. (line 2021) * --base-file: Options. (line 1594) d7043 2 a7044 2 * --build-id: Options. (line 1551) * --build-id=STYLE: Options. (line 1551) d7047 2 a7048 2 * --cref: Options. (line 849) * --default-imported-symver: Options. (line 1032) d7050 3 a7052 3 * --default-symver: Options. (line 1028) * --defsym=SYMBOL=EXP: Options. (line 877) * --demangle[=STYLE]: Options. (line 890) d7054 6 a7059 6 * --disable-auto-image-base: Options. (line 1773) * --disable-auto-import: Options. (line 1908) * --disable-long-section-names: Options. (line 1604) * --disable-new-dtags: Options. (line 1514) * --disable-runtime-pseudo-reloc: Options. (line 1921) * --disable-stdcall-fixup: Options. (line 1626) d7062 2 a7063 2 * --dll: Options. (line 1599) * --dll-search-prefix: Options. (line 1779) d7065 1 a7065 3 * --dsbt-index: Options. (line 1998) * --dsbt-size: Options. (line 1993) * --dynamic-linker=FILE: Options. (line 903) d7070 2 a7071 2 * --dynamicbase: Options. (line 1957) * --eh-frame-hdr: Options. (line 1505) d7074 2 a7075 2 * --emit-stub-syms <1>: SPU ELF. (line 15) * --emit-stub-syms <2>: PowerPC ELF32. (line 47) d7077 7 a7083 7 * --enable-auto-image-base: Options. (line 1765) * --enable-auto-import: Options. (line 1788) * --enable-extra-pe-debug: Options. (line 1926) * --enable-long-section-names: Options. (line 1604) * --enable-new-dtags: Options. (line 1514) * --enable-runtime-pseudo-reloc: Options. (line 1913) * --enable-stdcall-fixup: Options. (line 1626) d7085 2 a7086 2 * --error-unresolved-symbols: Options. (line 1458) * --exclude-all-symbols: Options. (line 1680) d7089 2 a7090 2 * --exclude-symbols: Options. (line 1674) * --export-all-symbols: Options. (line 1650) d7093 2 a7094 2 * --fatal-warnings: Options. (line 910) * --file-alignment: Options. (line 1684) a7095 1 * --fix-arm1176: ARM. (line 111) d7100 2 a7101 2 * --force-exe-suffix: Options. (line 915) * --forceinteg: Options. (line 1962) d7104 2 a7105 2 * --gc-sections: Options. (line 925) * --got: Options. (line 2034) d7108 5 a7112 5 * --hash-size=NUMBER: Options. (line 1523) * --hash-style=STYLE: Options. (line 1531) * --heap: Options. (line 1690) * --help: Options. (line 962) * --image-base: Options. (line 1697) d7114 3 a7116 4 * --kill-at: Options. (line 1706) * --large-address-aware: Options. (line 1711) * --ld-generated-unwind-info: Options. (line 1509) * --leading-underscore: Options. (line 1644) d7120 3 a7122 3 * --major-image-version: Options. (line 1720) * --major-os-version: Options. (line 1725) * --major-subsystem-version: Options. (line 1729) d7124 3 a7126 3 * --minor-image-version: Options. (line 1734) * --minor-os-version: Options. (line 1739) * --minor-subsystem-version: Options. (line 1743) d7132 1 a7132 1 * --no-allow-shlib-undefined: Options. (line 995) d7134 1 a7134 1 * --no-bind: Options. (line 1976) d7137 2 a7138 2 * --no-define-common: Options. (line 861) * --no-demangle: Options. (line 890) d7140 1 a7140 1 * --no-enum-size-warning: ARM. (line 120) d7142 1 a7142 2 * --no-fatal-warnings: Options. (line 910) * --no-fix-arm1176: ARM. (line 111) d7144 4 a7147 5 * --no-gc-sections: Options. (line 925) * --no-isolation: Options. (line 1969) * --no-keep-memory: Options. (line 974) * --no-leading-underscore: Options. (line 1644) * --no-merge-exidx-entries <1>: Options. (line 2005) d7153 2 a7154 5 * --no-plt-align: PowerPC64 ELF64. (line 96) * --no-plt-static-chain: PowerPC64 ELF64. (line 103) * --no-plt-thread-safe: PowerPC64 ELF64. (line 109) * --no-print-gc-sections: Options. (line 947) * --no-seh: Options. (line 1972) d7158 8 a7165 9 * --no-toc-sort: PowerPC64 ELF64. (line 86) * --no-trampoline: Options. (line 2015) * --no-undefined: Options. (line 981) * --no-undefined-version: Options. (line 1023) * --no-warn-mismatch: Options. (line 1036) * --no-warn-search-mismatch: Options. (line 1045) * --no-wchar-size-warning: ARM. (line 127) * --no-whole-archive: Options. (line 1049) * --noinhibit-exec: Options. (line 1053) d7167 2 a7168 2 * --nxcompat: Options. (line 1965) * --oformat=OUTPUT-FORMAT: Options. (line 1065) d7170 2 a7171 2 * --out-implib: Options. (line 1756) * --output-def: Options. (line 1748) d7173 2 a7174 5 * --pic-executable: Options. (line 1078) * --pic-veneer: ARM. (line 133) * --plt-align: PowerPC64 ELF64. (line 96) * --plt-static-chain: PowerPC64 ELF64. (line 103) * --plt-thread-safe: PowerPC64 ELF64. (line 109) d7176 1 a7176 1 * --print-gc-sections: Options. (line 947) d7178 2 a7179 3 * --print-output-format: Options. (line 956) * --reduce-memory-overheads: Options. (line 1537) * --relax: Options. (line 1094) d7184 1 a7184 1 * --retain-symbols-file=FILENAME: Options. (line 1120) d7187 2 a7188 2 * --section-alignment: Options. (line 1931) * --section-start=SECTIONNAME=ORG: Options. (line 1276) d7190 6 a7195 6 * --sort-common: Options. (line 1218) * --sort-section=alignment: Options. (line 1233) * --sort-section=name: Options. (line 1229) * --split-by-file: Options. (line 1237) * --split-by-reloc: Options. (line 1242) * --stack: Options. (line 1937) d7197 1 a7197 1 * --stats: Options. (line 1255) d7201 3 a7203 3 * --stub-group-size=N <1>: HPPA ELF32. (line 12) * --stub-group-size=N: ARM. (line 138) * --subsystem: Options. (line 1944) d7205 2 a7206 2 * --sysroot=DIRECTORY: Options. (line 1259) * --target-help: Options. (line 966) d7213 2 a7214 2 * --traditional-format: Options. (line 1264) * --tsaware: Options. (line 1982) d7217 1 a7217 1 * --unresolved-symbols: Options. (line 1301) d7220 1 a7220 1 * --verbose[=NUMBER]: Options. (line 1330) d7222 1 a7222 1 * --version-script=VERSION-SCRIPTFILE: Options. (line 1338) d7224 11 a7234 11 * --warn-alternate-em: Options. (line 1450) * --warn-common: Options. (line 1349) * --warn-constructors: Options. (line 1417) * --warn-multiple-gp: Options. (line 1422) * --warn-once: Options. (line 1436) * --warn-section-align: Options. (line 1440) * --warn-shared-textrel: Options. (line 1447) * --warn-unresolved-symbols: Options. (line 1453) * --wdmdriver: Options. (line 1979) * --whole-archive: Options. (line 1462) * --wrap=SYMBOL: Options. (line 1476) d7241 1 a7241 1 * -Bshareable: Options. (line 1211) d7264 1 a7264 1 * -IFILE: Options. (line 903) d7270 2 a7271 1 * -Map=MAPFILE: Options. (line 970) d7273 1 a7273 2 * -n: Options. (line 439) * -no-relax: Options. (line 1094) d7275 1 a7275 1 * -nostdlib: Options. (line 1059) d7279 1 a7279 1 * -pie: Options. (line 1078) d7281 2 a7282 2 * -qmagic: Options. (line 1088) * -Qy: Options. (line 1091) d7285 3 a7287 2 * -rpath-link=DIR: Options. (line 1156) * -rpath=DIR: Options. (line 1134) d7289 1 a7289 2 * -s: Options. (line 519) * -shared: Options. (line 1211) d7294 4 a7297 5 * -Tbss=ORG: Options. (line 1285) * -Tdata=ORG: Options. (line 1285) * -Trodata-segment=ORG: Options. (line 1295) * -Ttext-segment=ORG: Options. (line 1291) * -Ttext=ORG: Options. (line 1285) d7300 1 d7302 1 a7302 1 * -V: Options. (line 581) a7303 1 * -X: Options. (line 591) d7306 1 a7306 1 * -z defs: Options. (line 981) d7308 1 a7308 1 * -z muldefs: Options. (line 989) a7345 1 * ARM1176 erratum workaround: ARM. (line 111) d7372 1 a7372 1 * combining symbols, warnings on: Options. (line 1349) d7375 1 a7375 1 * common allocation: Options. (line 861) d7377 1 a7377 1 (line 20) a7385 1 * constructors: Options. (line 562) d7388 1 d7396 1 a7396 1 * cross reference table: Options. (line 849) d7406 2 a7407 2 * dbx: Options. (line 1269) * DEF files, creating: Options. (line 1748) d7413 1 a7413 1 * demangling, from command line: Options. (line 890) d7418 2 a7419 2 * DLLs, creating: Options. (line 1650) * DLLs, linking to: Options. (line 1779) d7423 1 a7423 1 * dynamic linker, from command line: Options. (line 903) d7467 2 a7468 3 * garbage collection <1>: Options. (line 947) * garbage collection <2>: Input Section Keep. (line 6) * garbage collection: Options. (line 925) d7477 2 a7478 3 * heap size: Options. (line 1690) * help: Options. (line 962) * HIDDEN: HIDDEN. (line 6) d7485 1 a7485 1 * image base: Options. (line 1697) d7491 1 a7491 1 * including an entire archive: Options. (line 1462) d7533 1 a7533 1 * link-time runtime library search path: Options. (line 1156) d7567 1 a7567 1 * memory usage: Options. (line 974) d7579 2 a7580 2 * NO_ENUM_SIZE_WARNING: ARM. (line 120) * NO_WCHAR_SIZE_WARNING: ARM. (line 127) d7592 1 a7592 1 * OMAGIC: Options. (line 445) d7605 1 a7605 1 * output file after errors: Options. (line 1053) a7607 1 * output format: Options. (line 956) d7625 2 a7626 2 * PIC_VENEER: ARM. (line 133) * position independent executables: Options. (line 1080) a7637 3 * PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 103) * PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 109) * PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 96) a7641 1 * PowerPC64 TOC sorting: PowerPC64 ELF64. (line 86) d7663 1 a7663 1 * relaxing addressing modes: Options. (line 1094) d7675 1 a7675 2 * retaining specified symbols: Options. (line 1120) * rodata segment origin, cmd line: Options. (line 1296) d7680 1 a7680 1 * runtime library search path: Options. (line 1134) d7685 1 a7685 1 * script files: Options. (line 541) d7695 1 a7695 1 * section alignment, warnings on: Options. (line 1440) d7714 1 a7714 1 * segment origins, cmd line: Options. (line 1285) d7717 1 a7717 1 * shared libraries: Options. (line 1213) d7725 1 a7725 1 (line 63) a7727 2 * SORT_BY_INIT_PRIORITY: Input Section Wildcards. (line 58) a7729 2 * SORT_NONE: Input Section Wildcards. (line 104) d7739 1 a7739 1 * stack size: Options. (line 1937) d7745 2 a7746 2 * stripping all but some symbols: Options. (line 1120) * STUB_GROUP_SIZE: ARM. (line 138) d7757 1 a7757 1 * symbols, from command line: Options. (line 877) d7759 2 a7760 2 * symbols, retaining selectively: Options. (line 1120) * synthesizing linker: Options. (line 1094) d7765 1 a7765 1 * text segment origin, cmd line: Options. (line 1292) d7768 1 a7768 1 * traditional format: Options. (line 1264) d7775 1 a7775 1 * undefined symbols, warnings on: Options. (line 1436) d7780 1 a7780 1 * usage: Options. (line 962) d7786 1 a7786 1 * verbose[=NUMBER]: Options. (line 1330) d7789 1 a7789 1 * version script, symbol versions: Options. (line 1338) d7793 3 a7795 3 * warnings, on combining symbols: Options. (line 1349) * warnings, on section alignment: Options. (line 1440) * warnings, on undefined symbols: Options. (line 1436) d7810 78 a7887 79 Node: Environment95055 Node: Scripts96815 Node: Basic Script Concepts98549 Node: Script Format101256 Node: Simple Example102119 Node: Simple Commands105215 Node: Entry Point105721 Node: File Commands106654 Node: Format Commands110655 Node: REGION_ALIAS112611 Node: Miscellaneous Commands117443 Node: Assignments121051 Node: Simple Assignments121562 Node: HIDDEN123297 Node: PROVIDE123927 Node: PROVIDE_HIDDEN125120 Node: Source Code Reference125364 Node: SECTIONS128944 Node: Output Section Description130835 Node: Output Section Name131922 Node: Output Section Address132798 Node: Input Section135033 Node: Input Section Basics135834 Node: Input Section Wildcards139740 Node: Input Section Common144834 Node: Input Section Keep146316 Node: Input Section Example146806 Node: Output Section Data147774 Node: Output Section Keywords150551 Node: Output Section Discarding154120 Node: Output Section Attributes155301 Node: Output Section Type156402 Node: Output Section LMA157473 Node: Forced Output Alignment160544 Node: Forced Input Alignment160812 Node: Output Section Constraint161201 Node: Output Section Region161629 Node: Output Section Phdr162062 Node: Output Section Fill162726 Node: Overlay Description163868 Node: MEMORY168171 Node: PHDRS172506 Node: VERSION177760 Node: Expressions185853 Node: Constants186782 Node: Symbolic Constants187657 Node: Symbols188208 Node: Orphan Sections188955 Node: Location Counter190120 Node: Operators194556 Node: Evaluation195478 Node: Expression Section196842 Node: Builtin Functions200499 Node: Implicit Linker Scripts208460 Node: Machine Dependent209235 Node: H8/300210251 Node: i960211876 Node: M68HC11/68HC12214080 Node: ARM215534 Node: HPPA ELF32223497 Node: M68K225120 Node: MMIX226029 Node: MSP430227194 Node: PowerPC ELF32228243 Node: PowerPC64 ELF64231079 Node: SPU ELF237235 Node: TI COFF239867 Node: WIN32240393 Node: Xtensa260518 Node: BFD263483 Node: BFD outline264938 Node: BFD information loss266224 Node: Canonical format268741 Node: Reporting Bugs273098 Node: Bug Criteria273792 Node: Bug Reporting274491 Node: MRI281530 Node: GNU Free Documentation License286173 Node: LD Index311329 @ 1.1.1.4 log @Import binutils-2.26 @ text @d8 1 a8 1 This file documents the GNU linker LD (GNU Binutils) version 2.26. d10 3 a12 1 Copyright (C) 1991-2015 Free Software Foundation, Inc. d27 1 a27 1 This file documents the GNU linker ld (GNU Binutils) version 2.26. d402 3 a404 2 such as MIPS ELF that support putting large and small objects into different sections. This is ignored for other object file formats. d470 1 a470 2 "sysroot prefix", controlled by the `--sysroot' option, or specified when the linker is configured. a564 21 `--push-state' The `--push-state' allows to preserve the current state of the flags which govern the input file handling so that they can all be restored with one corresponding `--pop-state' option. The option which are covered are: `-Bdynamic', `-Bstatic', `-dn', `-dy', `-call_shared', `-non_shared', `-static', `-N', `-n', `--whole-archive', `--no-whole-archive', `-r', `-Ur', `--copy-dt-needed-entries', `--no-copy-dt-needed-entries', `--as-needed', `--no-as-needed', and `-a'. One target for this option are specifications for `pkg-config'. When used with the `--libs' option all possibly needed libraries are listed and then possibly linked with all the time. It is better to return something as follows: -Wl,--push-state,--as-needed -libone -libtwo -Wl,--pop-state Undoes the effect of -push-state, restores the previous values of the flags governing input file handling. a650 13 If this option is being used to force additional modules to be pulled into the link, and if it is an error for the symbol to remain undefined, then the option `--require-defined' should be used instead. `--require-defined=SYMBOL' Require that SYMBOL is defined in the output file. This option is the same as option `--undefined' except that if SYMBOL is not defined in the output file then the linker will issue an error and exit. The same effect can be achieved in a linker script by using `EXTERN', `ASSERT' and `DEFINED' together. This option can be used multiple times to require additional symbols. a660 26 `--orphan-handling=MODE' Control how orphan sections are handled. An orphan section is one not specifically mentioned in a linker script. *Note Orphan Sections::. MODE can have any of the following values: `place' Orphan sections are placed into a suitable output section following the strategy described in *Note Orphan Sections::. The option `--unique' also effects how sections are placed. `discard' All orphan sections are discarded, by placing them in the `/DISCARD/' section (*note Output Section Discarding::). `warn' The linker will place the orphan section as for `place' and also issue a warning. `error' The linker will exit with an error if any orphan section is found. The default if `--orphan-handling' is not given is `place'. a711 5 `global' This option is only meaningful when building a shared object. It makes the symbols defined by this shared object available for symbol resolution of subsequently loaded libraries. d741 1 a741 3 Disable linker generated .dynbss variables used in place of variables defined in shared libraries. May result in dynamic text relocations. a758 9 `text' Treat DT_TEXTREL in shared object as error. `notext' Don't treat DT_TEXTREL in shared object as error. `textoff' Don't treat DT_TEXTREL in shared object as error. a781 32 `stack-size=VALUE' Specify a stack size for in an ELF `PT_GNU_STACK' segment. Specifying zero will override any default non-zero sized `PT_GNU_STACK' segment creation. `bndplt' Always generate BND prefix in PLT entries. Supported for Linux/x86_64. `noextern-protected-data' Don't treat protected data symbol as external when building shared library. This option overrides linker backend default. It can be used to workaround incorrect relocations against protected data symbols generated by compiler. Updates on protected data symbols by another module aren't visible to the resulting shared library. Supported for i386 and x86-64. `call-nop=prefix-addr' `call-nop=prefix-nop' `call-nop=suffix-nop' `call-nop=prefix-BYTE' `call-nop=suffix-BYTE' Specify the 1-byte `NOP' padding when transforming indirect call to a locally defined function, foo, via its GOT slot. `call-nop=prefix-addr' generates `0x67 call foo'. `call-nop=prefix-nop' generates `0x90 call foo'. `call-nop=suffix-nop' generates `call foo 0x90'. `call-nop=prefix-BYTE' generates `BYTE call foo'. `call-nop=suffix-BYTE' generates `call foo BYTE'. Supported for i386 and x86_64. d820 5 a824 9 DT_NEEDED tag to only be emitted for a library that _at that point in the link_ satisfies a non-weak undefined symbol reference from a regular object file or, if the library is not found in the DT_NEEDED lists of other needed libraries, a non-weak undefined symbol reference from another needed dynamic library. Object files or libraries appearing on the command line _after_ the library in question do not affect whether the library is seen as needed. This is similar to the rules for extraction of object files from archives. `--no-as-needed' restores the default d947 2 a948 3 is the location of the definition. If the symbol is defined as a common value then any files where this happens appear next. Finally any files that reference the symbol are listed. d975 3 a977 2 script (*note Assignments::). _Note:_ there should be no white space between SYMBOL, the equals sign ("<=>"), and EXPRESSION. a998 6 `--no-dynamic-linker' When producing an executable file, omit the request for a dynamic linker to be used at load-time. This is only meaningful for ELF executables that contain dynamic relocations, and usually requires entry point code that is capable of processing these relocations. d1019 1 a1019 3 specifying `--no-gc-sections' on the command line. Note that garbage collection for COFF and PE format targets is supported, but the implementation is currently considered to be experimental. a1050 12 `--print-memory-usage' Print used size, total size and used size of memory regions created with the *Note MEMORY:: command. This is useful on embedded targets to have a quick view of amount of free memory. The format of the output has one headline and one line per region. It is both human readable and easily parsable by tools. Here is an example of an output: Memory region Used Size Region Size %age Used ROM: 256 KB 1 MB 25.00% RAM: 32 B 2 GB 0.00% d1189 2 a1190 2 M68HC11/68HC12. *Note `ld' and the Altera Nios II: Nios II. *Note `ld' and PowerPC 32-bit ELF Support: PowerPC ELF32. d1196 1 a1196 1 instructions, and combining constant values. d1234 1 a1234 1 SunOS, the linker will form a runtime search path out of all the d1283 2 a1284 2 5. For a native linker, search the contents of the environment variable `LD_LIBRARY_PATH'. d1381 2 a1382 2 When creating an ELF executable, it will set the address of the first byte of the text segment. a1389 5 `-Tldata-segment=ORG' When creating an ELF executable or shared object for x86-64 medium memory model, it will set the address of the first byte of the ldata segment. d1441 1 a1441 1 sloppy practice, but linkers on some other operating systems do d1444 1 a1444 1 this practice, so you may get some warnings about symbols in the d1607 4 a1610 5 `--enable-new-dtags', the new dynamic tags will be created as needed and older dynamic tags will be omitted. If you specify `--disable-new-dtags', no new dynamic tags will be created. By default, the new dynamic tags are not created. Note that those options are only available for ELF systems. a1625 16 `--compress-debug-sections=none' `--compress-debug-sections=zlib' `--compress-debug-sections=zlib-gnu' `--compress-debug-sections=zlib-gabi' On ELF platforms , these options control how DWARF debug sections are compressed using zlib. `--compress-debug-sections=none' doesn't compress DWARF debug sections. `--compress-debug-sections=zlib-gnu' compresses DWARF debug sections and rename debug section names to begin with `.zdebug' instead of `.debug'. `--compress-debug-sections=zlib' and `--compress-debug-sections=zlib-gabi' compress DWARF debug sections with SHF_COMPRESSED from the ELF ABI. The default behaviour varies depending upon the target involved and the configure options used to build the toolchain. The default can be determined by examing the output from the linker's `--help' option. d1642 9 a1650 9 Request the creation of a `.note.gnu.build-id' ELF note section or a `.buildid' COFF section. The contents of the note are unique bits identifying this linked file. STYLE can be `uuid' to use 128 random bits, `sha1' to use a 160-bit SHA1 hash on the normative parts of the output contents, `md5' to use a 128-bit MD5 hash on the normative parts of the output contents, or `0xHEXSTRING' to use a chosen bit string specified as an even number of hexadecimal digits (`-' and `:' characters between digit pairs are ignored). If STYLE is omitted, `sha1' is used. d1695 1 a1695 1 The PE variants of the COFF object format add an extension that d1697 1 a1697 1 normal limit for COFF. By default, these names are only allowed d1699 1 a1699 1 the COFF string table required to support the longer names. As a d1782 1 a1782 1 commit) to be used as heap for this program. The default is 1MB a1808 7 `--disable-large-address-aware' Reverts the effect of a previous `--large-address-aware' option. This is useful if `--large-address-aware' is always set by the compiler driver (e.g. Cygwin gcc) and the executable does not support virtual addresses greater than 2 gigabytes. [This option is specific to PE targeted ports of the linker] d1855 6 a1860 7 `--enable-auto-image-base=VALUE' Automatically choose the image base for DLLs, optionally starting with base VALUE, unless one is specified using the `--image-base' argument. By using a hash generated from the dllname to create unique image bases for each DLL, in-memory collisions and relocations which can delay program execution are avoided. [This option is specific to the i386 PE targeted port of the linker] d1947 1 a1947 1 `__declspec(dllimport)'. However, in practice that requires using d2012 2 a2013 2 from DLLs. [This option is specific to the i386 PE targeted port of the linker] d2029 1 a2029 1 commit) to be used as stack for this program. The default is 2MB a2045 4 `--high-entropy-va' Image is compatible with 64-bit address space layout randomization (ASLR). a2073 10 `--insert-timestamp' `--no-insert-timestamp' Insert a real timestamp into the image. This is the default behaviour as it matches legacy code and it means that the image will work with other, proprietary tools. The problem with this default is that it will result in slightly different images being produced each time the same sources are linked. The option `--no-insert-timestamp' can be used to insert a zero value for the timestamp, this ensuring that binaries produced from identical sources will compare identically. d2083 1 a2083 1 This option sets the number of entries in the DSBT of the current a2128 16 2.1.5 Options specific to MIPS targets -------------------------------------- The following options are supported to control microMIPS instruction generation when linking for MIPS targets. `--insn32' `--no-insn32' These options control the choice of microMIPS instructions used in code generated by the linker, such as that in the PLT or lazy binding stubs, or in relaxation. If `--insn32' is used, then the linker only uses 32-bit instruction encodings. By default or if `--no-insn32' is used, all instruction encodings are used, including 16-bit ones where possible. d2228 1 a2228 1 A section may be marked as "loadable", which means that the contents d2434 2 a2435 4 will search through the archive library search path. The "sysroot prefix" can also be forced by specifying `=' as the first character in the filename path. See also the description of `-L' in *Note Command Line Options: Options. a2681 26 Note that assertions are checked before the final stages of linking take place. This means that expressions involving symbols PROVIDEd inside section definitions will fail if the user has not set values for those symbols. The only exception to this rule is PROVIDEd symbols that just reference dot. Thus an assertion like this: .stack : { PROVIDE (__stack = .); PROVIDE (__stack_size = 0x100); ASSERT ((__stack > (_end + __stack_size)), "Error: No room left for the stack"); } will fail if `__stack_size' is not defined elsewhere. Symbols PROVIDEd outside of section definitions are evaluated earlier, so they can be used inside ASSERTions. Thus: PROVIDE (__stack_size = 0x100); .stack : { PROVIDE (__stack = .); ASSERT ((__stack > (_end + __stack_size)), "Error: No room left for the stack"); } will work. d2931 1 a2931 1 creates an entry called `foo' in the symbol table. This entry holds d2948 1 a2948 1 looks up the symbol `foo' in the symbol table, gets its address and d2972 1 a2972 1 end_of_ROM = .ROM + sizeof (.ROM); a2981 8 Alternatively the symbols can be treated as the names of vectors or arrays and then the code will again work as expected: extern char start_of_ROM[], end_of_ROM[], start_of_FLASH[]; memcpy (start_of_FLASH, start_of_ROM, end_of_ROM - start_of_ROM); Note how using this method does not require the use of `&' operators. d3047 1 a3047 1 [ALIGN(SECTION_ALIGN) | ALIGN_WITH_INPUT] d3054 1 a3054 1 } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] [,] d3061 1 a3061 3 comma at the end may be required if a FILLEXP is used and the next SECTIONS-COMMAND looks like a continuation of the expression. The line breaks and other white space are optional. d3316 2 a3317 4 difference is `SORT_BY_ALIGNMENT' will sort sections into descending order by alignment before placing them in the output file. Larger alignments are placed before smaller alignments in order to reduce the amount of padding necessary. d3331 1 a3331 1 if two sections have the same name. d3335 1 a3335 1 if two sections have the same alignment. d3601 3 a3603 3 The linker will not normally create output sections with no contents. This is for convenience when referring to input sections that may or may not be present in any of the input files. For example: d3608 1 a3608 6 an output section will also create the output section. So too will assignments to dot even if the assignment does not create space, except for `. = 0', `. = . + 0', `. = sym', `. = . + sym' and `. = ALIGN (. != 0, expr, 1)' when `sym' is an absolute symbol of value 0 defined in the script. This allows you to force output of an empty section with `. = .'. d3768 1 a3768 4 You can increase an output section's alignment by using ALIGN. As an alternative you can enforce that the difference between the VMA and LMA remains intact throughout this output section with the ALIGN_WITH_INPUT attribute. d3878 1 a3878 1 } [>REGION] [:PHDR...] [=FILL] [,] d3883 1 a3883 1 within the general `SECTIONS' construct (*note SECTIONS::), except that a3886 3 The comma at the end may be required if a FILL is used and the next SECTIONS-COMMAND looks like a continuation of the expression. d3895 5 a3899 5 If the `NOCROSSREFS' keyword is used, and there are any references among the sections, the linker will report an error. Since the sections all run at the same address, it normally does not make sense for one section to refer directly to another. *Note NOCROSSREFS: Miscellaneous Commands. d3962 3 a3964 3 A linker script may contain many uses of the `MEMORY' command, however, all memory blocks defined are treated as if they were specified inside a single `MEMORY' command. The syntax for `MEMORY' is: d4404 1 a4404 1 hexadecimal, `o' or `O' for octal, `b' or `B' for binary and `d' or `D' a4477 4 The command line options `--orphan-handling' and `--unique' (*note Command Line Options: Options.) can be used to control which output sections an orphan is placed in. a4720 4 * Unary operations on an absolute address or number, and binary operations on two absolute addresses or two numbers, or between one absolute address and a number, apply the operator to the value(s). d4726 3 a4728 3 * Other binary operations, that is, between two relative addresses not in the same section, or between a relative address and an absolute address, first convert any non-absolute term to an d4738 1 a4738 1 relative addresses in the same section or two absolute addresses d4804 2 a4805 2 be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(ABSOLUTE(.), ALIGN)'). d4847 1 a4847 2 (ALIGN(MAXPAGESIZE) + ((. + COMMONPAGESIZE - 1) & (MAXPAGESIZE - COMMONPAGESIZE))) d4872 6 a4877 8 option is used. When `-z relro' option is not present, `DATA_SEGMENT_RELRO_END' does nothing, otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is aligned to the most commonly used page boundary for particular target. If present in the linker script, it must always come in between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'. Evaluates to the second argument plus any padding needed at the end of the `PT_GNU_RELRO' segment due to section alignment. a4904 4 `LOG2CEIL(EXP)' Return the binary logarithm of EXP rounded towards infinity. `LOG2CEIL(0)' returns 0. d4922 5 a4926 6 value has already been given for this segment (with a command-line `-T' option) then that value will be returned otherwise the value will be DEFAULT. At present, the `-T' command-line option can only be used to set the base address for the "text", "data", and "bss" sections, but you can use `SEGMENT_START' with any segment name. a4997 2 * M68HC11/68HC12:: `ld' and the Motorola 68HC11 and 68HC12 families a5003 2 * MIPS:: `ld' and the MIPS family d5008 1 a5008 3 * NDS32:: `ld' and NDS32 * Nios II:: `ld' and the Altera Nios II a5042 8 `ld' finds all `mov' instructions which use the register indirect with 32-bit displacement addressing mode, but use a small displacement inside 16-bit displacement range, and changes them to use the 16-bit displacement form. (That is: the linker turns `mov.b `@@'D:32,ERx' into `mov.b `@@'D:16,ERx' whenever the displacement D is in the 16 bit signed integer range. Only implemented in ELF-format ld). d5060 1 a5060 1 File: ld.info, Node: i960, Next: M68HC11/68HC12, Prev: H8/300, Up: Machine Dependent d5098 12 d5111 1 a5111 1 File: ld.info, Node: M68HC11/68HC12, Next: ARM, Prev: i960, Up: Machine Dependent d5149 1 a5149 1 File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: M68HC11/68HC12, Up: Machine Dependent d5173 1 a5173 1 element prefix for import libraries. This is the old style to generate d5177 2 a5178 3 executables. This option is only valid when linking big-endian objects - ie ones which have been assembled with the `-EB' option. The resulting image will contain big-endian data and little-endian code. d5219 2 a5220 2 clobbers the condition flags, so may cause incorrect program behavior in rare cases. d5261 1 a5261 1 default if you are targeting ARM v6 (excluding ARM v6T2) or earlier. d5265 1 a5265 1 Programmer Advice Notice" available on the ARM documentation website at: a5267 38 The `--fix-stm32l4xx-629360' switch enables a link-time workaround for a bug in the bus matrix / memory controller for some of the STM32 Cortex-M4 based products (STM32L4xx). When accessing off-chip memory via the affected bus for bus reads of 9 words or more, the bus can generate corrupt data and/or abort. These are only core-initiated accesses (not DMA), and might affect any access: integer loads such as LDM, POP and floating-point loads such as VLDM, VPOP. Stores are not affected. The bug can be avoided by splitting memory accesses into the necessary chunks to keep bus reads below 8 words. The workaround is not enabled by default, this is equivalent to use `--fix-stm32l4xx-629360=none'. If you know you are using buggy STM32L4xx hardware, you can enable the workaround by specifying the linker option `--fix-stm32l4xx-629360', or the equivalent `--fix-stm32l4xx-629360=default'. If the workaround is enabled, instructions are scanned for potentially-troublesome sequences, and a veneer is created for each such sequence which may trigger the erratum. The veneer consists in a replacement sequence emulating the behaviour of the original one and a branch back to the subsequent instruction. The original instruction is then replaced with a branch to the veneer. The workaround does not always preserve the memory access order for the LDMDB instruction, when the instruction loads the PC. The workaround is not able to handle problematic instructions when they are in the middle of an IT block, since a branch is not allowed there. In that case, the linker reports a warning and no replacement occurs. The workaround is not able to replace problematic instructions with a PC-relative branch instruction if the `.text' section is too large. In that case, when the branch that replaces the original code cannot be encoded, the linker reports a warning and no replacement occurs. d5292 1 a5292 1 duplicate stubs, increasing the code size. The linker will try to a5312 24 The `--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 `--fix-cortex-a8', or disabled unconditionally by specifying `--no-fix-cortex-a8'. The erratum only affects Thumb-2 code. Please contact ARM for further details. The `--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 `--fix-cortex-a53-835769', or disabled unconditionally by specifying `--no-fix-cortex-a53-835769'. Please contact ARM for further details. The `--no-merge-exidx-entries' switch disables the merging of adjacent exidx entries in debuginfo. The `--long-plt' option enables the use of 16 byte PLT entries which support up to 4Gb of code. The default is to use 12 byte PLT entries which only support 512Mb of code. d5345 1 a5345 1 File: ld.info, Node: M68K, Next: MIPS, Prev: HPPA ELF32, Up: Machine Dependent d5363 1 a5363 14 File: ld.info, Node: MIPS, Next: MMIX, Prev: M68K, Up: Machine Dependent 4.7 `ld' and the MIPS family ============================ The `--insn32' and `--no-insn32' options control the choice of microMIPS instructions used in code generated by the linker, such as that in the PLT or lazy binding stubs, or in relaxation. If `--insn32' is used, then the linker only uses 32-bit instruction encodings. By default or if `--no-insn32' is used, all instruction encodings are used, including 16-bit ones where possible.  File: ld.info, Node: MMIX, Next: MSP430, Prev: MIPS, Up: Machine Dependent d5365 1 a5365 1 4.8 `ld' and MMIX d5391 1 a5391 1 File: ld.info, Node: MSP430, Next: NDS32, Prev: MMIX, Up: Machine Dependent d5393 1 a5393 1 4.9 `ld' and MSP430 d5425 1 a5425 68 File: ld.info, Node: NDS32, Next: Nios II, Prev: MSP430, Up: Machine Dependent 4.10 `ld' and NDS32 =================== For NDS32, there are some options to select relaxation behavior. The linker relaxes objects according to these options. ``--m[no-]fp-as-gp'' Disable/enable fp-as-gp relaxation. ``--mexport-symbols=FILE'' Exporting symbols and their address into FILE as linker script. ``--m[no-]ex9'' Disable/enable link-time EX9 relaxation. ``--mexport-ex9=FILE'' Export the EX9 table after linking. ``--mimport-ex9=FILE'' Import the Ex9 table for EX9 relaxation. ``--mupdate-ex9'' Update the existing EX9 table. ``--mex9-limit=NUM'' Maximum number of entries in the ex9 table. ``--mex9-loop-aware'' Avoid generating the EX9 instruction inside the loop. ``--m[no-]ifc'' Disable/enable the link-time IFC optimization. ``--mifc-loop-aware'' Avoid generating the IFC instruction inside the loop.  File: ld.info, Node: Nios II, Next: PowerPC ELF32, Prev: NDS32, Up: Machine Dependent 4.11 `ld' and the Altera Nios II ================================ Call and immediate jump instructions on Nios II processors are limited to transferring control to addresses in the same 256MB memory segment, which may result in `ld' giving `relocation truncated to fit' errors with very large programs. The command-line option `--relax' enables the generation of trampolines that can access the entire 32-bit address space for calls outside the normal `call' and `jmpi' address range. These trampolines are inserted at section boundaries, so may not themselves be reachable if an input section and its associated call trampolines are larger than 256MB. The `--relax' option is enabled by default unless `-r' is also specified. You can disable trampoline generation by using the `--no-relax' linker option. You can also disable this optimization locally by using the `set .noat' directive in assembly-language source files, as the linker-inserted trampolines use the `at' register as a temporary. Note that the linker `--relax' option is independent of assembler relaxation options, and that using the GNU assembler's `-relax-all' option interferes with the linker's more selective call instruction relaxation.  File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: Nios II, Up: Machine Dependent d5427 2 a5428 2 4.12 `ld' and PowerPC 32-bit ELF Support ======================================== d5483 1 a5483 1 4.13 `ld' and PowerPC64 64-bit ELF Support d5513 1 a5513 2 `--dotsyms' `--no-dotsyms' a5522 8 `--save-restore-funcs' `--no-save-restore-funcs' These two options control whether PowerPC64 `ld' automatically provides out-of-line register save and restore functions used by `-Os' code. The default is to provide any such referenced function for a normal final link, and to not do so for a relocatable link. a5527 14 `--tls-get-addr-optimize' `--no-tls-get-addr-optimize' These options control whether PowerPC64 `ld' uses a special stub to call __tls_get_addr. PowerPC64 glibc 2.22 and later support an optimization that allows the second and subsequent calls to `__tls_get_addr' for a given symbol to be resolved by the special stub without calling in to glibc. By default the linker enables this option when glibc advertises the availability of __tls_get_addr_opt. Forcing this option on when using an older glibc won't do much besides slow down your applications, but may be useful if linking an application against an older glibc with the expectation that it will normally be used on systems having a newer glibc. d5579 3 a5581 4 padded so that they don't cross a 32-byte boundary, or to the specified power of two boundary when using `--plt-align='. Note that this isn't alignment in the usual sense. By default PLT call stubs are packed tightly. d5604 1 a5604 1 4.14 `ld' and SPU ELF Support d5660 1 a5660 1 4.15 `ld''s Support for Various TI COFF Versions d5672 1 a5672 1 4.16 `ld' and WIN32 (cygwin/mingw) a6103 1 d6107 1 a6107 1 4.17 `ld' and Xtensa Processors d7165 6 a7170 6 * -(: Options. (line 804) * --accept-unknown-input-arch: Options. (line 822) * --add-needed: Options. (line 850) * --add-stdcall-alias: Options. (line 1743) * --allow-multiple-definition: Options. (line 1121) * --allow-shlib-undefined: Options. (line 1127) d7172 1 a7172 1 * --as-needed: Options. (line 832) d7175 2 a7176 2 * --bank-window: Options. (line 2197) * --base-file: Options. (line 1748) d7179 10 a7188 14 * --build-id: Options. (line 1705) * --build-id=STYLE: Options. (line 1705) * --check-sections: Options. (line 929) * --compress-debug-sections=none: Options. (line 1675) * --compress-debug-sections=zlib: Options. (line 1675) * --compress-debug-sections=zlib-gabi: Options. (line 1675) * --compress-debug-sections=zlib-gnu: Options. (line 1675) * --copy-dt-needed-entries: Options. (line 941) * --cref: Options. (line 961) * --default-imported-symver: Options. (line 1164) * --default-script=SCRIPT: Options. (line 562) * --default-symver: Options. (line 1160) * --defsym=SYMBOL=EXP: Options. (line 990) * --demangle[=STYLE]: Options. (line 1002) d7190 10 a7199 11 * --disable-auto-image-base: Options. (line 1935) * --disable-auto-import: Options. (line 2070) * --disable-large-address-aware: Options. (line 1874) * --disable-long-section-names: Options. (line 1758) * --disable-new-dtags: Options. (line 1651) * --disable-runtime-pseudo-reloc: Options. (line 2083) * --disable-stdcall-fixup: Options. (line 1780) * --discard-all: Options. (line 647) * --discard-locals: Options. (line 651) * --dll: Options. (line 1753) * --dll-search-prefix: Options. (line 1941) d7201 10 a7210 10 * --dsbt-index: Options. (line 2174) * --dsbt-size: Options. (line 2169) * --dynamic-linker=FILE: Options. (line 1015) * --dynamic-list-cpp-new: Options. (line 921) * --dynamic-list-cpp-typeinfo: Options. (line 925) * --dynamic-list-data: Options. (line 918) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 905) * --dynamicbase: Options. (line 2123) * --eh-frame-hdr: Options. (line 1642) * --emit-relocs: Options. (line 497) d7212 2 a7213 2 * --emit-stub-syms <1>: PowerPC ELF32. (line 47) * --emit-stub-syms <2>: SPU ELF. (line 15) d7215 7 a7221 7 * --enable-auto-image-base: Options. (line 1926) * --enable-auto-import: Options. (line 1950) * --enable-extra-pe-debug: Options. (line 2088) * --enable-long-section-names: Options. (line 1758) * --enable-new-dtags: Options. (line 1651) * --enable-runtime-pseudo-reloc: Options. (line 2075) * --enable-stdcall-fixup: Options. (line 1780) d7223 2 a7224 2 * --error-unresolved-symbols: Options. (line 1595) * --exclude-all-symbols: Options. (line 1834) d7227 2 a7228 2 * --exclude-symbols: Options. (line 1828) * --export-all-symbols: Options. (line 1804) d7231 2 a7232 2 * --fatal-warnings: Options. (line 1028) * --file-alignment: Options. (line 1838) d7234 7 a7240 9 * --fix-arm1176: ARM. (line 112) * --fix-cortex-a53-835769: ARM. (line 213) * --fix-cortex-a8: ARM. (line 204) * --fix-stm32l4xx-629360: ARM. (line 121) * --fix-v4bx: ARM. (line 50) * --fix-v4bx-interworking: ARM. (line 63) * --force-dynamic: Options. (line 506) * --force-exe-suffix: Options. (line 1033) * --forceinteg: Options. (line 2128) d7243 2 a7244 2 * --gc-sections: Options. (line 1043) * --got: Options. (line 2210) d7247 12 a7258 16 * --hash-size=NUMBER: Options. (line 1661) * --hash-style=STYLE: Options. (line 1669) * --heap: Options. (line 1844) * --help: Options. (line 1094) * --high-entropy-va: Options. (line 2119) * --image-base: Options. (line 1851) * --insert-timestamp: Options. (line 2151) * --insn32 <1>: MIPS. (line 6) * --insn32: Options. (line 2222) * --just-symbols=FILE: Options. (line 529) * --kill-at: Options. (line 1860) * --large-address-aware: Options. (line 1865) * --ld-generated-unwind-info: Options. (line 1646) * --leading-underscore: Options. (line 1798) * --library-path=DIR: Options. (line 367) * --library=NAMESPEC: Options. (line 334) d7260 7 a7266 8 * --long-plt: ARM. (line 224) * --major-image-version: Options. (line 1881) * --major-os-version: Options. (line 1886) * --major-subsystem-version: Options. (line 1890) * --merge-exidx-entries: ARM. (line 221) * --minor-image-version: Options. (line 1895) * --minor-os-version: Options. (line 1900) * --minor-subsystem-version: Options. (line 1904) d7270 9 a7278 9 * --no-accept-unknown-input-arch: Options. (line 822) * --no-add-needed: Options. (line 850) * --no-allow-shlib-undefined: Options. (line 1127) * --no-as-needed: Options. (line 832) * --no-bind: Options. (line 2142) * --no-check-sections: Options. (line 929) * --no-copy-dt-needed-entries: Options. (line 941) * --no-define-common: Options. (line 974) * --no-demangle: Options. (line 1002) d7280 1 a7280 2 * --no-dynamic-linker: Options. (line 1022) * --no-enum-size-warning: ARM. (line 159) d7282 10 a7291 13 * --no-fatal-warnings: Options. (line 1028) * --no-fix-arm1176: ARM. (line 112) * --no-fix-cortex-a53-835769: ARM. (line 213) * --no-fix-cortex-a8: ARM. (line 204) * --no-gc-sections: Options. (line 1043) * --no-insn32 <1>: Options. (line 2223) * --no-insn32: MIPS. (line 6) * --no-isolation: Options. (line 2135) * --no-keep-memory: Options. (line 1106) * --no-leading-underscore: Options. (line 1798) * --no-merge-exidx-entries <1>: Options. (line 2181) * --no-merge-exidx-entries: ARM. (line 221) * --no-multi-toc: PowerPC64 ELF64. (line 97) d7293 1 a7293 1 * --no-opd-optimize: PowerPC64 ELF64. (line 71) d7295 20 a7314 22 * --no-plt-align: PowerPC64 ELF64. (line 119) * --no-plt-static-chain: PowerPC64 ELF64. (line 127) * --no-plt-thread-safe: PowerPC64 ELF64. (line 133) * --no-print-gc-sections: Options. (line 1067) * --no-save-restore-funcs: PowerPC64 ELF64. (line 44) * --no-seh: Options. (line 2138) * --no-tls-get-addr-optimize: PowerPC64 ELF64. (line 57) * --no-tls-optimize <1>: PowerPC64 ELF64. (line 52) * --no-tls-optimize: PowerPC ELF32. (line 51) * --no-toc-optimize: PowerPC64 ELF64. (line 83) * --no-toc-sort: PowerPC64 ELF64. (line 109) * --no-trampoline: Options. (line 2191) * --no-undefined: Options. (line 1113) * --no-undefined-version: Options. (line 1155) * --no-warn-mismatch: Options. (line 1168) * --no-warn-search-mismatch: Options. (line 1177) * --no-wchar-size-warning: ARM. (line 166) * --no-whole-archive: Options. (line 1181) * --noinhibit-exec: Options. (line 1185) * --non-overlapping-opd: PowerPC64 ELF64. (line 77) * --nxcompat: Options. (line 2131) * --oformat=OUTPUT-FORMAT: Options. (line 1197) d7316 2 a7317 3 * --orphan-handling=MODE: Options. (line 606) * --out-implib: Options. (line 1917) * --output-def: Options. (line 1909) d7319 5 a7323 5 * --pic-executable: Options. (line 1210) * --pic-veneer: ARM. (line 172) * --plt-align: PowerPC64 ELF64. (line 119) * --plt-static-chain: PowerPC64 ELF64. (line 127) * --plt-thread-safe: PowerPC64 ELF64. (line 133) d7325 1 a7325 2 * --pop-state: Options. (line 494) * --print-gc-sections: Options. (line 1067) d7327 3 a7329 5 * --print-memory-usage: Options. (line 1082) * --print-output-format: Options. (line 1076) * --push-state: Options. (line 476) * --reduce-memory-overheads: Options. (line 1691) * --relax: Options. (line 1226) a7330 1 * --relax on Nios II: Nios II. (line 6) d7333 3 a7335 5 * --relocatable: Options. (line 510) * --require-defined=SYMBOL: Options. (line 588) * --retain-symbols-file=FILENAME: Options. (line 1252) * --save-restore-funcs: PowerPC64 ELF64. (line 44) * --script=SCRIPT: Options. (line 553) d7337 2 a7338 2 * --section-alignment: Options. (line 2093) * --section-start=SECTIONNAME=ORG: Options. (line 1408) d7340 6 a7345 6 * --sort-common: Options. (line 1350) * --sort-section=alignment: Options. (line 1365) * --sort-section=name: Options. (line 1361) * --split-by-file: Options. (line 1369) * --split-by-reloc: Options. (line 1374) * --stack: Options. (line 2099) d7347 3 a7349 3 * --stats: Options. (line 1387) * --strip-all: Options. (line 540) * --strip-debug: Options. (line 544) d7352 2 a7353 2 * --stub-group-size=N: ARM. (line 177) * --subsystem: Options. (line 2106) d7355 5 a7359 5 * --sysroot=DIRECTORY: Options. (line 1391) * --target-help: Options. (line 1098) * --target1-abs: ARM. (line 33) * --target1-rel: ARM. (line 33) * --target2=TYPE: ARM. (line 38) d7361 8 a7368 9 * --tls-get-addr-optimize: PowerPC64 ELF64. (line 57) * --trace: Options. (line 549) * --trace-symbol=SYMBOL: Options. (line 657) * --traditional-format: Options. (line 1396) * --tsaware: Options. (line 2148) * --undefined=SYMBOL: Options. (line 575) * --unique[=SECTION]: Options. (line 632) * --unresolved-symbols: Options. (line 1438) * --use-blx: ARM. (line 75) d7370 15 a7384 15 * --verbose[=NUMBER]: Options. (line 1467) * --version: Options. (line 641) * --version-script=VERSION-SCRIPTFILE: Options. (line 1475) * --vfp11-denorm-fix: ARM. (line 84) * --warn-alternate-em: Options. (line 1587) * --warn-common: Options. (line 1486) * --warn-constructors: Options. (line 1554) * --warn-multiple-gp: Options. (line 1559) * --warn-once: Options. (line 1573) * --warn-section-align: Options. (line 1577) * --warn-shared-textrel: Options. (line 1584) * --warn-unresolved-symbols: Options. (line 1590) * --wdmdriver: Options. (line 2145) * --whole-archive: Options. (line 1599) * --wrap=SYMBOL: Options. (line 1613) d7387 1 a7387 1 * -assert KEYWORD: Options. (line 857) d7389 6 a7394 6 * -Bdynamic: Options. (line 860) * -Bgroup: Options. (line 870) * -Bshareable: Options. (line 1343) * -Bstatic: Options. (line 877) * -Bsymbolic: Options. (line 892) * -Bsymbolic-functions: Options. (line 899) d7396 1 a7396 1 * -call_shared: Options. (line 860) d7399 1 a7399 1 * -dn: Options. (line 877) d7401 2 a7402 2 * -dT SCRIPT: Options. (line 562) * -dy: Options. (line 860) d7412 6 a7417 6 * -h NAME: Options. (line 316) * -i: Options. (line 325) * -IFILE: Options. (line 1015) * -init=NAME: Options. (line 328) * -L DIR: Options. (line 367) * -l NAMESPEC: Options. (line 334) d7420 2 a7421 1 * -Map=MAPFILE: Options. (line 1102) d7423 3 a7425 4 * -N: Options. (line 445) * -no-relax: Options. (line 1226) * -non_shared: Options. (line 877) * -nostdlib: Options. (line 1191) d7429 31 a7459 32 * -pie: Options. (line 1210) * -q: Options. (line 497) * -qmagic: Options. (line 1220) * -Qy: Options. (line 1223) * -r: Options. (line 510) * -R FILE: Options. (line 529) * -rpath-link=DIR: Options. (line 1288) * -rpath=DIR: Options. (line 1266) * -s: Options. (line 540) * -S: Options. (line 544) * -shared: Options. (line 1343) * -soname=NAME: Options. (line 316) * -static: Options. (line 877) * -t: Options. (line 549) * -T SCRIPT: Options. (line 553) * -Tbss=ORG: Options. (line 1417) * -Tdata=ORG: Options. (line 1417) * -Tldata-segment=ORG: Options. (line 1433) * -Trodata-segment=ORG: Options. (line 1427) * -Ttext-segment=ORG: Options. (line 1423) * -Ttext=ORG: Options. (line 1417) * -u SYMBOL: Options. (line 575) * -Ur: Options. (line 596) * -v: Options. (line 641) * -V: Options. (line 641) * -x: Options. (line 647) * -X: Options. (line 651) * -Y PATH: Options. (line 666) * -y SYMBOL: Options. (line 657) * -z defs: Options. (line 1113) * -z KEYWORD: Options. (line 670) * -z muldefs: Options. (line 1121) d7462 1 a7462 2 (line 26) * 32-bit PLT entries: ARM. (line 224) d7490 1 a7490 1 (line 98) d7492 2 a7493 2 * archive files, from cmd line: Options. (line 334) * archive search path in linker script: File Commands. (line 76) d7497 2 a7498 2 * ARM1176 erratum workaround: ARM. (line 112) * AS_NEEDED(FILES): File Commands. (line 56) d7524 1 a7524 1 * combining symbols, warnings on: Options. (line 1486) d7527 1 a7527 1 * common allocation: Options. (line 168) d7529 1 a7529 1 (line 46) d7538 1 a7540 1 * constructors: Options. (line 596) d7543 1 a7543 2 * Cortex-A53 erratum 835769 workaround: ARM. (line 213) * Cortex-A8 erratum workaround: ARM. (line 204) d7548 1 a7548 1 * cross reference table: Options. (line 961) d7550 1 a7550 1 (line 82) d7556 4 a7559 4 * DATA_SEGMENT_END(EXP): Builtin Functions. (line 104) * DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 110) * dbx: Options. (line 1401) * DEF files, creating: Options. (line 1909) d7562 2 a7563 3 * defined symbol: Options. (line 588) * DEFINED(SYMBOL): Builtin Functions. (line 123) * deleting local symbols: Options. (line 647) d7565 1 a7565 1 * demangling, from command line: Options. (line 1002) d7570 2 a7571 2 * DLLs, creating: Options. (line 1917) * DLLs, linking to: Options. (line 1941) d7575 1 a7575 1 * dynamic linker, from command line: Options. (line 1015) d7594 1 a7594 1 (line 39) d7606 1 a7606 1 * first input file: File Commands. (line 84) d7608 2 a7609 2 * FIX_V4BX: ARM. (line 50) * FIX_V4BX_INTERWORKING: ARM. (line 63) d7611 1 a7611 1 (line 46) d7616 1 a7616 1 * forcing the creation of dynamic sections: Options. (line 506) d7619 3 a7621 2 * garbage collection <1>: Options. (line 1043) * garbage collection: Input Section Keep. (line 6) d7625 3 a7627 3 * GROUP(FILES): File Commands. (line 49) * grouping input files: File Commands. (line 49) * groups of archives: Options. (line 804) d7629 3 a7631 3 * header size: Builtin Functions. (line 191) * heap size: Options. (line 1844) * help: Options. (line 1094) d7639 1 a7639 1 * image base: Options. (line 1851) d7645 2 a7646 2 * including an entire archive: Options. (line 1599) * incremental link: Options. (line 325) d7648 2 a7649 2 (line 51) * initialization function: Options. (line 328) d7655 1 a7655 1 * input files, displaying: Options. (line 549) d7667 1 a7667 1 (line 56) d7669 1 a7669 1 (line 56) d7680 1 a7680 2 (line 104) * ldata segment origin, cmd line: Options. (line 1434) d7684 2 a7685 2 * LENGTH(MEMORY): Builtin Functions. (line 140) * library search path in linker script: File Commands. (line 76) d7687 1 a7687 1 * link-time runtime library search path: Options. (line 1288) d7701 1 a7701 1 * LOADADDR(SECTION): Builtin Functions. (line 143) d7704 1 a7704 1 * local symbols, deleting: Options. (line 651) a7705 1 * LOG2CEIL(EXP): Builtin Functions. (line 147) d7711 1 a7711 1 (line 98) d7714 1 a7714 1 * MAX: Builtin Functions. (line 150) d7721 2 a7722 4 * memory usage: Options. (line 1106) * Merging exidx entries: ARM. (line 221) * MIN: Builtin Functions. (line 153) * MIPS microMIPS instruction choice selection: MIPS. (line 6) d7731 1 a7731 2 * NEXT(EXP): Builtin Functions. (line 157) * Nios II call relaxation: Nios II. (line 6) d7733 2 a7734 2 * NO_ENUM_SIZE_WARNING: ARM. (line 159) * NO_WCHAR_SIZE_WARNING: ARM. (line 166) d7736 1 a7736 1 (line 82) d7739 1 a7739 1 * not enough room for program headers: Builtin Functions. (line 196) d7746 1 a7746 1 * OMAGIC: Options. (line 454) d7757 1 a7757 1 * ORIGIN(MEMORY): Builtin Functions. (line 163) d7759 1 a7759 2 * orphan sections: Options. (line 606) * output file after errors: Options. (line 1185) d7761 2 a7762 2 * output file name in linker script: File Commands. (line 66) * output format: Options. (line 1076) d7769 1 a7769 1 * OUTPUT(FILENAME): File Commands. (line 66) d7771 1 a7771 1 (line 98) d7777 1 a7777 1 * partial link: Options. (line 510) d7779 3 a7781 4 * PHDRS: PHDRS. (line 6) * PIC_VENEER: ARM. (line 172) * pop state governing input file handling: Options. (line 494) * position independent executables: Options. (line 1212) a7787 1 * PowerPC64 __tls_get_addr optimization: PowerPC64 ELF64. (line 57) d7790 6 a7795 8 * PowerPC64 multi-TOC: PowerPC64 ELF64. (line 97) * PowerPC64 OPD optimization: PowerPC64 ELF64. (line 71) * PowerPC64 OPD spacing: PowerPC64 ELF64. (line 77) * PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 127) * PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 133) * PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 119) * PowerPC64 register save/restore functions: PowerPC64 ELF64. (line 44) d7798 3 a7800 3 * PowerPC64 TLS optimization: PowerPC64 ELF64. (line 52) * PowerPC64 TOC optimization: PowerPC64 ELF64. (line 83) * PowerPC64 TOC sorting: PowerPC64 ELF64. (line 109) d7807 1 a7807 1 * program headers, not enough room: Builtin Functions. (line 196) a7811 1 * push state governing input file handling: Options. (line 476) d7822 1 a7822 1 * relaxing addressing modes: Options. (line 1226) a7825 1 * relaxing on NDS32: NDS32. (line 6) d7828 1 a7828 1 * relocatable output: Options. (line 510) d7833 3 a7835 3 * retain relocations in final executable: Options. (line 497) * retaining specified symbols: Options. (line 1252) * rodata segment origin, cmd line: Options. (line 1428) d7839 2 a7840 2 * runtime library name: Options. (line 316) * runtime library search path: Options. (line 1266) d7845 1 a7845 1 * script files: Options. (line 562) d7847 3 a7849 3 * search directory, from cmd line: Options. (line 367) * search path in linker script: File Commands. (line 76) * SEARCH_DIR(PATH): File Commands. (line 76) d7855 1 a7855 1 * section alignment, warnings on: Options. (line 1577) d7861 1 a7861 1 * section load address in expression: Builtin Functions. (line 143) d7866 1 a7866 1 * section size: Builtin Functions. (line 175) d7874 2 a7875 3 * sections, orphan: Options. (line 606) * segment origins, cmd line: Options. (line 1417) * SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 166) d7877 1 a7877 1 * shared libraries: Options. (line 1345) d7880 2 a7881 2 * SIZEOF(SECTION): Builtin Functions. (line 175) * SIZEOF_HEADERS: Builtin Functions. (line 191) d7885 1 a7885 1 (line 65) d7889 1 a7889 1 (line 60) d7893 2 a7894 2 (line 106) * SPU: SPU ELF. (line 46) d7903 1 a7903 1 * stack size: Options. (line 2099) d7906 5 a7910 6 * STARTUP(FILENAME): File Commands. (line 84) * STM32L4xx erratum workaround: ARM. (line 121) * strip all symbols: Options. (line 540) * strip debugger symbols: Options. (line 544) * stripping all but some symbols: Options. (line 1252) * STUB_GROUP_SIZE: ARM. (line 177) d7914 1 a7914 1 * symbol defaults: Builtin Functions. (line 123) d7917 1 a7917 1 * symbol tracing: Options. (line 657) d7919 1 a7919 1 * symbol-only input: Options. (line 529) d7921 1 a7921 1 * symbols, from command line: Options. (line 990) d7923 2 a7924 3 * symbols, require defined: Options. (line 588) * symbols, retaining selectively: Options. (line 1252) * synthesizing linker: Options. (line 1226) d7927 3 a7929 3 * TARGET1: ARM. (line 33) * TARGET2: ARM. (line 38) * text segment origin, cmd line: Options. (line 1424) d7932 1 a7932 1 * traditional format: Options. (line 1396) d7935 2 a7936 2 * unallocated address, next: Builtin Functions. (line 157) * undefined symbol: Options. (line 575) d7938 2 a7939 2 (line 39) * undefined symbols, warnings on: Options. (line 1573) d7944 2 a7945 2 * usage: Options. (line 1094) * USE_BLX: ARM. (line 75) d7950 2 a7951 2 * verbose[=NUMBER]: Options. (line 1467) * version: Options. (line 641) d7953 1 a7953 1 * version script, symbol versions: Options. (line 1475) d7956 4 a7959 4 * VFP11_DENORM_FIX: ARM. (line 84) * warnings, on combining symbols: Options. (line 1486) * warnings, on section alignment: Options. (line 1577) * warnings, on undefined symbols: Options. (line 1573) d7970 83 a8052 86 Node: Top710 Node: Overview1493 Node: Invocation2607 Node: Options3015 Node: Environment103651 Node: Scripts105411 Node: Basic Script Concepts107145 Node: Script Format109853 Node: Simple Example110716 Node: Simple Commands113812 Node: Entry Point114318 Node: File Commands115251 Node: Format Commands119371 Node: REGION_ALIAS121327 Node: Miscellaneous Commands126159 Node: Assignments130783 Node: Simple Assignments131294 Node: HIDDEN133029 Node: PROVIDE133659 Node: PROVIDE_HIDDEN134852 Node: Source Code Reference135096 Node: SECTIONS139012 Node: Output Section Description140903 Node: Output Section Name142147 Node: Output Section Address143023 Node: Input Section145258 Node: Input Section Basics146059 Node: Input Section Wildcards149965 Node: Input Section Common155172 Node: Input Section Keep156654 Node: Input Section Example157144 Node: Output Section Data158112 Node: Output Section Keywords160889 Node: Output Section Discarding164458 Node: Output Section Attributes165951 Node: Output Section Type167052 Node: Output Section LMA168123 Node: Forced Output Alignment171194 Node: Forced Input Alignment171624 Node: Output Section Constraint172013 Node: Output Section Region172441 Node: Output Section Phdr172874 Node: Output Section Fill173538 Node: Overlay Description174680 Node: MEMORY179126 Node: PHDRS183503 Node: VERSION188757 Node: Expressions196850 Node: Constants197779 Node: Symbolic Constants198654 Node: Symbols199205 Node: Orphan Sections199952 Node: Location Counter201289 Node: Operators205725 Node: Evaluation206647 Node: Expression Section208011 Node: Builtin Functions211875 Node: Implicit Linker Scripts220115 Node: Machine Dependent220890 Node: H8/300222014 Node: i960224076 Node: M68HC11/68HC12225772 Node: ARM227214 Node: HPPA ELF32238234 Node: M68K239857 Node: MIPS240766 Node: MMIX241290 Node: MSP430242455 Node: NDS32243495 Node: Nios II244461 Node: PowerPC ELF32245777 Node: PowerPC64 ELF64248608 Node: SPU ELF255940 Node: TI COFF258572 Node: WIN32259098 Node: Xtensa279224 Node: BFD282189 Node: BFD outline283644 Node: BFD information loss284930 Node: Canonical format287447 Node: Reporting Bugs291804 Node: Bug Criteria292498 Node: Bug Reporting293197 Node: MRI300236 Node: GNU Free Documentation License304879 Node: LD Index330035 @ 1.1.1.4.2.1 log @Sync with HEAD @ text @d983 2 a984 6 override the definition within the shared library. This option can also be used with the `--export-dynamic' option, when creating a position independent executable, to bind references to global symbols to the definition within the executable. This option is only meaningful on ELF platforms which support shared libraries and position independent executables. d989 2 a990 5 option can also be used with the `--export-dynamic' option, when creating a position independent executable, to bind references to global function symbols to the definition within the executable. This option is only meaningful on ELF platforms which support shared libraries and position independent executables. d7595 3 a7597 3 * --add-stdcall-alias: Options. (line 1750) * --allow-multiple-definition: Options. (line 1128) * --allow-shlib-undefined: Options. (line 1134) d7602 2 a7603 2 * --bank-window: Options. (line 2204) * --base-file: Options. (line 1755) d7606 10 a7615 10 * --build-id: Options. (line 1712) * --build-id=STYLE: Options. (line 1712) * --check-sections: Options. (line 936) * --compress-debug-sections=none: Options. (line 1682) * --compress-debug-sections=zlib: Options. (line 1682) * --compress-debug-sections=zlib-gabi: Options. (line 1682) * --compress-debug-sections=zlib-gnu: Options. (line 1682) * --copy-dt-needed-entries: Options. (line 948) * --cref: Options. (line 968) * --default-imported-symver: Options. (line 1171) d7617 3 a7619 3 * --default-symver: Options. (line 1167) * --defsym=SYMBOL=EXP: Options. (line 997) * --demangle[=STYLE]: Options. (line 1009) d7621 7 a7627 7 * --disable-auto-image-base: Options. (line 1942) * --disable-auto-import: Options. (line 2077) * --disable-large-address-aware: Options. (line 1881) * --disable-long-section-names: Options. (line 1765) * --disable-new-dtags: Options. (line 1658) * --disable-runtime-pseudo-reloc: Options. (line 2090) * --disable-stdcall-fixup: Options. (line 1787) d7630 2 a7631 2 * --dll: Options. (line 1760) * --dll-search-prefix: Options. (line 1948) d7633 9 a7641 9 * --dsbt-index: Options. (line 2181) * --dsbt-size: Options. (line 2176) * --dynamic-linker=FILE: Options. (line 1022) * --dynamic-list-cpp-new: Options. (line 928) * --dynamic-list-cpp-typeinfo: Options. (line 932) * --dynamic-list-data: Options. (line 925) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 912) * --dynamicbase: Options. (line 2130) * --eh-frame-hdr: Options. (line 1649) d7647 7 a7653 7 * --enable-auto-image-base: Options. (line 1933) * --enable-auto-import: Options. (line 1957) * --enable-extra-pe-debug: Options. (line 2095) * --enable-long-section-names: Options. (line 1765) * --enable-new-dtags: Options. (line 1658) * --enable-runtime-pseudo-reloc: Options. (line 2082) * --enable-stdcall-fixup: Options. (line 1787) d7655 2 a7656 2 * --error-unresolved-symbols: Options. (line 1602) * --exclude-all-symbols: Options. (line 1841) d7659 2 a7660 2 * --exclude-symbols: Options. (line 1835) * --export-all-symbols: Options. (line 1811) d7663 2 a7664 2 * --fatal-warnings: Options. (line 1035) * --file-alignment: Options. (line 1845) d7673 2 a7674 2 * --force-exe-suffix: Options. (line 1040) * --forceinteg: Options. (line 2135) d7677 2 a7678 2 * --gc-sections: Options. (line 1050) * --got: Options. (line 2217) d7681 7 a7687 7 * --hash-size=NUMBER: Options. (line 1668) * --hash-style=STYLE: Options. (line 1676) * --heap: Options. (line 1851) * --help: Options. (line 1101) * --high-entropy-va: Options. (line 2126) * --image-base: Options. (line 1858) * --insert-timestamp: Options. (line 2158) d7689 1 a7689 1 * --insn32: Options. (line 2229) d7691 4 a7694 4 * --kill-at: Options. (line 1867) * --large-address-aware: Options. (line 1872) * --ld-generated-unwind-info: Options. (line 1653) * --leading-underscore: Options. (line 1805) d7699 3 a7701 3 * --major-image-version: Options. (line 1888) * --major-os-version: Options. (line 1893) * --major-subsystem-version: Options. (line 1897) d7703 3 a7705 3 * --minor-image-version: Options. (line 1902) * --minor-os-version: Options. (line 1907) * --minor-subsystem-version: Options. (line 1911) d7711 1 a7711 1 * --no-allow-shlib-undefined: Options. (line 1134) d7713 5 a7717 5 * --no-bind: Options. (line 2149) * --no-check-sections: Options. (line 936) * --no-copy-dt-needed-entries: Options. (line 948) * --no-define-common: Options. (line 981) * --no-demangle: Options. (line 1009) d7719 1 a7719 1 * --no-dynamic-linker: Options. (line 1029) d7722 1 a7722 1 * --no-fatal-warnings: Options. (line 1035) d7726 2 a7727 2 * --no-gc-sections: Options. (line 1050) * --no-insn32 <1>: Options. (line 2230) d7729 4 a7732 4 * --no-isolation: Options. (line 2142) * --no-keep-memory: Options. (line 1113) * --no-leading-underscore: Options. (line 1805) * --no-merge-exidx-entries <1>: Options. (line 2188) d7741 1 a7741 1 * --no-print-gc-sections: Options. (line 1074) d7743 1 a7743 1 * --no-seh: Options. (line 2145) d7749 5 a7753 5 * --no-trampoline: Options. (line 2198) * --no-undefined: Options. (line 1120) * --no-undefined-version: Options. (line 1162) * --no-warn-mismatch: Options. (line 1175) * --no-warn-search-mismatch: Options. (line 1184) d7755 2 a7756 2 * --no-whole-archive: Options. (line 1188) * --noinhibit-exec: Options. (line 1192) d7758 2 a7759 2 * --nxcompat: Options. (line 2138) * --oformat=OUTPUT-FORMAT: Options. (line 1204) d7762 2 a7763 2 * --out-implib: Options. (line 1924) * --output-def: Options. (line 1916) d7765 1 a7765 1 * --pic-executable: Options. (line 1217) d7772 1 a7772 1 * --print-gc-sections: Options. (line 1074) d7774 2 a7775 2 * --print-memory-usage: Options. (line 1089) * --print-output-format: Options. (line 1083) d7777 2 a7778 2 * --reduce-memory-overheads: Options. (line 1698) * --relax: Options. (line 1233) d7785 1 a7785 1 * --retain-symbols-file=FILENAME: Options. (line 1259) d7789 2 a7790 2 * --section-alignment: Options. (line 2100) * --section-start=SECTIONNAME=ORG: Options. (line 1415) d7792 6 a7797 6 * --sort-common: Options. (line 1357) * --sort-section=alignment: Options. (line 1372) * --sort-section=name: Options. (line 1368) * --split-by-file: Options. (line 1376) * --split-by-reloc: Options. (line 1381) * --stack: Options. (line 2106) d7799 1 a7799 1 * --stats: Options. (line 1394) d7805 1 a7805 1 * --subsystem: Options. (line 2113) d7807 2 a7808 2 * --sysroot=DIRECTORY: Options. (line 1398) * --target-help: Options. (line 1105) d7816 2 a7817 2 * --traditional-format: Options. (line 1403) * --tsaware: Options. (line 2155) d7820 1 a7820 1 * --unresolved-symbols: Options. (line 1445) d7823 1 a7823 1 * --verbose[=NUMBER]: Options. (line 1474) d7825 1 a7825 1 * --version-script=VERSION-SCRIPTFILE: Options. (line 1482) d7827 11 a7837 11 * --warn-alternate-em: Options. (line 1594) * --warn-common: Options. (line 1493) * --warn-constructors: Options. (line 1561) * --warn-multiple-gp: Options. (line 1566) * --warn-once: Options. (line 1580) * --warn-section-align: Options. (line 1584) * --warn-shared-textrel: Options. (line 1591) * --warn-unresolved-symbols: Options. (line 1597) * --wdmdriver: Options. (line 2152) * --whole-archive: Options. (line 1606) * --wrap=SYMBOL: Options. (line 1620) d7844 1 a7844 1 * -Bshareable: Options. (line 1350) d7847 1 a7847 1 * -Bsymbolic-functions: Options. (line 903) d7867 1 a7867 1 * -IFILE: Options. (line 1022) d7873 1 a7873 1 * -Map=MAPFILE: Options. (line 1109) d7876 1 a7876 1 * -no-relax: Options. (line 1233) d7878 1 a7878 1 * -nostdlib: Options. (line 1198) d7882 1 a7882 1 * -pie: Options. (line 1217) d7884 2 a7885 2 * -qmagic: Options. (line 1227) * -Qy: Options. (line 1230) d7888 2 a7889 2 * -rpath-link=DIR: Options. (line 1295) * -rpath=DIR: Options. (line 1273) d7892 1 a7892 1 * -shared: Options. (line 1350) d7897 6 a7902 6 * -Tbss=ORG: Options. (line 1424) * -Tdata=ORG: Options. (line 1424) * -Tldata-segment=ORG: Options. (line 1440) * -Trodata-segment=ORG: Options. (line 1434) * -Ttext-segment=ORG: Options. (line 1430) * -Ttext=ORG: Options. (line 1424) d7911 1 a7911 1 * -z defs: Options. (line 1120) d7913 1 a7913 1 * -z muldefs: Options. (line 1128) d7979 1 a7979 1 * combining symbols, warnings on: Options. (line 1493) d8004 1 a8004 1 * cross reference table: Options. (line 968) d8014 2 a8015 2 * dbx: Options. (line 1408) * DEF files, creating: Options. (line 1916) d8022 1 a8022 1 * demangling, from command line: Options. (line 1009) d8027 2 a8028 2 * DLLs, creating: Options. (line 1924) * DLLs, linking to: Options. (line 1948) d8032 1 a8032 1 * dynamic linker, from command line: Options. (line 1022) d8076 1 a8076 1 * garbage collection <1>: Options. (line 1050) d8086 2 a8087 2 * heap size: Options. (line 1851) * help: Options. (line 1101) d8095 1 a8095 1 * image base: Options. (line 1858) d8101 1 a8101 1 * including an entire archive: Options. (line 1606) d8137 1 a8137 1 * ldata segment origin, cmd line: Options. (line 1441) d8144 1 a8144 1 * link-time runtime library search path: Options. (line 1295) d8179 1 a8179 1 * memory usage: Options. (line 1113) d8221 1 a8221 1 * output file after errors: Options. (line 1192) d8224 1 a8224 1 * output format: Options. (line 1083) d8244 1 a8244 1 * position independent executables: Options. (line 1219) d8289 1 a8289 1 * relaxing addressing modes: Options. (line 1233) d8302 2 a8303 2 * retaining specified symbols: Options. (line 1259) * rodata segment origin, cmd line: Options. (line 1435) d8308 1 a8308 1 * runtime library search path: Options. (line 1273) d8323 1 a8323 1 * section alignment, warnings on: Options. (line 1584) d8343 1 a8343 1 * segment origins, cmd line: Options. (line 1424) d8346 1 a8346 1 * shared libraries: Options. (line 1352) d8372 1 a8372 1 * stack size: Options. (line 2106) d8379 1 a8379 1 * stripping all but some symbols: Options. (line 1259) d8391 1 a8391 1 * symbols, from command line: Options. (line 997) d8394 2 a8395 2 * symbols, retaining selectively: Options. (line 1259) * synthesizing linker: Options. (line 1233) d8400 1 a8400 1 * text segment origin, cmd line: Options. (line 1431) d8403 1 a8403 1 * traditional format: Options. (line 1403) d8410 1 a8410 1 * undefined symbols, warnings on: Options. (line 1580) d8415 1 a8415 1 * usage: Options. (line 1101) d8421 1 a8421 1 * verbose[=NUMBER]: Options. (line 1474) d8424 1 a8424 1 * version script, symbol versions: Options. (line 1482) d8428 3 a8430 3 * warnings, on combining symbols: Options. (line 1493) * warnings, on section alignment: Options. (line 1584) * warnings, on undefined symbols: Options. (line 1580) d8445 82 a8526 82 Node: Environment104154 Node: Scripts105914 Node: Basic Script Concepts107648 Node: Script Format110356 Node: Simple Example111219 Node: Simple Commands114315 Node: Entry Point114821 Node: File Commands115754 Node: Format Commands119874 Node: REGION_ALIAS121830 Node: Miscellaneous Commands126662 Node: Assignments131286 Node: Simple Assignments131797 Node: HIDDEN133532 Node: PROVIDE134162 Node: PROVIDE_HIDDEN135355 Node: Source Code Reference135599 Node: SECTIONS139515 Node: Output Section Description141406 Node: Output Section Name142650 Node: Output Section Address143526 Node: Input Section145761 Node: Input Section Basics146562 Node: Input Section Wildcards150468 Node: Input Section Common155675 Node: Input Section Keep157157 Node: Input Section Example157647 Node: Output Section Data158615 Node: Output Section Keywords161392 Node: Output Section Discarding164961 Node: Output Section Attributes166454 Node: Output Section Type167555 Node: Output Section LMA168626 Node: Forced Output Alignment171697 Node: Forced Input Alignment172127 Node: Output Section Constraint172516 Node: Output Section Region172944 Node: Output Section Phdr173377 Node: Output Section Fill174041 Node: Overlay Description175183 Node: MEMORY179629 Node: PHDRS184006 Node: VERSION189260 Node: Expressions197353 Node: Constants198282 Node: Symbolic Constants199157 Node: Symbols199708 Node: Orphan Sections200455 Node: Location Counter201792 Node: Operators206228 Node: Evaluation207150 Node: Expression Section208514 Node: Builtin Functions212378 Node: Implicit Linker Scripts220618 Node: Machine Dependent221393 Node: H8/300222517 Node: i960224579 Node: M68HC11/68HC12226275 Node: ARM227717 Node: HPPA ELF32238737 Node: M68K240360 Node: MIPS241269 Node: MMIX241793 Node: MSP430242958 Node: NDS32243998 Node: Nios II244964 Node: PowerPC ELF32246280 Node: PowerPC64 ELF64249111 Node: SPU ELF256443 Node: TI COFF259075 Node: WIN32259601 Node: Xtensa279727 Node: BFD282692 Node: BFD outline284147 Node: BFD information loss285433 Node: Canonical format287950 Node: Reporting Bugs292307 Node: Bug Criteria293001 Node: Bug Reporting293700 Node: MRI300739 Node: GNU Free Documentation License305382 Node: LD Index330538 @ 1.1.1.4.2.2 log @Sync with HEAD @ text @d8 1 a8 1 This file documents the GNU linker LD (GNU Binutils) version 2.27. d10 1 a10 1 Copyright (C) 1991-2016 Free Software Foundation, Inc. d25 1 a25 1 This file documents the GNU linker ld (GNU Binutils) version 2.27. a762 4 `common' Generate common symbols with the STT_COMMON type druing a relocatable link. a802 4 `nocommon' Generate common symbols with the STT_OBJECT type druing a relocatable link. a873 11 `nodynamic-undefined-weak' Don't treat undefined weak symbols as dynamic when building executable. This option overrides linker backend default. It can be used to avoid dynamic relocations against undefined weak symbols in executable. Supported for i386 and x86-64. `noreloc-overflow' Disable relocation overflow check. This can be used to disable relocation overflow check if there will be no dynamic relocation overflow at run-time. Supported for x86_64. a2965 17 `NOCROSSREFS_TO(TOSECTION FROMSECTION ...)' This command may be used to tell `ld' to issue an error about any references to one section from a list of other sections. The `NOCROSSREFS' command is useful when ensuring that two or more output sections are entirely independent but there are situations where a one-way dependency is needed. For example, in a multi-core application there may be shared code that can be called from each core but for safety must never call back. The `NOCROSSREFS_TO' command takes a list of output section names. The first section can not be referenced from any of the other sections. If `ld' detects any references to the first section from any of the other sections, it reports an error and returns a non-zero exit status. Note that the `NOCROSSREFS_TO' command uses output section names, not input section names. a5641 3 The `--no-apply-dynamic-relocs' option makes AArch64 linker do not apply link-time values for dynamic relocations. d7599 6 a7604 6 * -(: Options. (line 823) * --accept-unknown-input-arch: Options. (line 841) * --add-needed: Options. (line 869) * --add-stdcall-alias: Options. (line 1769) * --allow-multiple-definition: Options. (line 1147) * --allow-shlib-undefined: Options. (line 1153) d7606 1 a7606 1 * --as-needed: Options. (line 851) d7609 2 a7610 2 * --bank-window: Options. (line 2223) * --base-file: Options. (line 1774) d7613 10 a7622 10 * --build-id: Options. (line 1731) * --build-id=STYLE: Options. (line 1731) * --check-sections: Options. (line 955) * --compress-debug-sections=none: Options. (line 1701) * --compress-debug-sections=zlib: Options. (line 1701) * --compress-debug-sections=zlib-gabi: Options. (line 1701) * --compress-debug-sections=zlib-gnu: Options. (line 1701) * --copy-dt-needed-entries: Options. (line 967) * --cref: Options. (line 987) * --default-imported-symver: Options. (line 1190) d7624 3 a7626 3 * --default-symver: Options. (line 1186) * --defsym=SYMBOL=EXP: Options. (line 1016) * --demangle[=STYLE]: Options. (line 1028) d7628 7 a7634 7 * --disable-auto-image-base: Options. (line 1961) * --disable-auto-import: Options. (line 2096) * --disable-large-address-aware: Options. (line 1900) * --disable-long-section-names: Options. (line 1784) * --disable-new-dtags: Options. (line 1677) * --disable-runtime-pseudo-reloc: Options. (line 2109) * --disable-stdcall-fixup: Options. (line 1806) d7637 2 a7638 2 * --dll: Options. (line 1779) * --dll-search-prefix: Options. (line 1967) d7640 9 a7648 9 * --dsbt-index: Options. (line 2200) * --dsbt-size: Options. (line 2195) * --dynamic-linker=FILE: Options. (line 1041) * --dynamic-list-cpp-new: Options. (line 947) * --dynamic-list-cpp-typeinfo: Options. (line 951) * --dynamic-list-data: Options. (line 944) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 931) * --dynamicbase: Options. (line 2149) * --eh-frame-hdr: Options. (line 1668) d7652 9 a7660 9 * --emit-stub-syms <2>: PowerPC64 ELF64. (line 29) * --emit-stub-syms: SPU ELF. (line 15) * --enable-auto-image-base: Options. (line 1952) * --enable-auto-import: Options. (line 1976) * --enable-extra-pe-debug: Options. (line 2114) * --enable-long-section-names: Options. (line 1784) * --enable-new-dtags: Options. (line 1677) * --enable-runtime-pseudo-reloc: Options. (line 2101) * --enable-stdcall-fixup: Options. (line 1806) d7662 2 a7663 2 * --error-unresolved-symbols: Options. (line 1621) * --exclude-all-symbols: Options. (line 1860) d7666 2 a7667 2 * --exclude-symbols: Options. (line 1854) * --export-all-symbols: Options. (line 1830) d7670 2 a7671 2 * --fatal-warnings: Options. (line 1054) * --file-alignment: Options. (line 1864) d7680 2 a7681 2 * --force-exe-suffix: Options. (line 1059) * --forceinteg: Options. (line 2154) d7684 2 a7685 2 * --gc-sections: Options. (line 1069) * --got: Options. (line 2236) d7688 9 a7696 9 * --hash-size=NUMBER: Options. (line 1687) * --hash-style=STYLE: Options. (line 1695) * --heap: Options. (line 1870) * --help: Options. (line 1120) * --high-entropy-va: Options. (line 2145) * --image-base: Options. (line 1877) * --insert-timestamp: Options. (line 2177) * --insn32 <1>: Options. (line 2248) * --insn32: MIPS. (line 6) d7698 4 a7701 4 * --kill-at: Options. (line 1886) * --large-address-aware: Options. (line 1891) * --ld-generated-unwind-info: Options. (line 1672) * --leading-underscore: Options. (line 1824) d7706 3 a7708 3 * --major-image-version: Options. (line 1907) * --major-os-version: Options. (line 1912) * --major-subsystem-version: Options. (line 1916) d7710 3 a7712 3 * --minor-image-version: Options. (line 1921) * --minor-os-version: Options. (line 1926) * --minor-subsystem-version: Options. (line 1930) d7716 9 a7724 10 * --no-accept-unknown-input-arch: Options. (line 841) * --no-add-needed: Options. (line 869) * --no-allow-shlib-undefined: Options. (line 1153) * --no-apply-dynamic-relocs: ARM. (line 228) * --no-as-needed: Options. (line 851) * --no-bind: Options. (line 2168) * --no-check-sections: Options. (line 955) * --no-copy-dt-needed-entries: Options. (line 967) * --no-define-common: Options. (line 1000) * --no-demangle: Options. (line 1028) d7726 1 a7726 1 * --no-dynamic-linker: Options. (line 1048) d7729 1 a7729 1 * --no-fatal-warnings: Options. (line 1054) d7733 2 a7734 2 * --no-gc-sections: Options. (line 1069) * --no-insn32 <1>: Options. (line 2249) d7736 4 a7739 4 * --no-isolation: Options. (line 2161) * --no-keep-memory: Options. (line 1132) * --no-leading-underscore: Options. (line 1824) * --no-merge-exidx-entries <1>: Options. (line 2207) d7748 1 a7748 1 * --no-print-gc-sections: Options. (line 1093) d7750 1 a7750 1 * --no-seh: Options. (line 2164) d7756 5 a7760 5 * --no-trampoline: Options. (line 2217) * --no-undefined: Options. (line 1139) * --no-undefined-version: Options. (line 1181) * --no-warn-mismatch: Options. (line 1194) * --no-warn-search-mismatch: Options. (line 1203) d7762 2 a7763 2 * --no-whole-archive: Options. (line 1207) * --noinhibit-exec: Options. (line 1211) d7765 2 a7766 2 * --nxcompat: Options. (line 2157) * --oformat=OUTPUT-FORMAT: Options. (line 1223) d7769 2 a7770 2 * --out-implib: Options. (line 1943) * --output-def: Options. (line 1935) d7772 1 a7772 1 * --pic-executable: Options. (line 1236) d7779 1 a7779 1 * --print-gc-sections: Options. (line 1093) d7781 2 a7782 2 * --print-memory-usage: Options. (line 1108) * --print-output-format: Options. (line 1102) d7784 2 a7785 2 * --reduce-memory-overheads: Options. (line 1717) * --relax: Options. (line 1252) d7792 1 a7792 1 * --retain-symbols-file=FILENAME: Options. (line 1278) d7796 2 a7797 2 * --section-alignment: Options. (line 2119) * --section-start=SECTIONNAME=ORG: Options. (line 1434) d7799 6 a7804 6 * --sort-common: Options. (line 1376) * --sort-section=alignment: Options. (line 1391) * --sort-section=name: Options. (line 1387) * --split-by-file: Options. (line 1395) * --split-by-reloc: Options. (line 1400) * --stack: Options. (line 2125) d7806 1 a7806 1 * --stats: Options. (line 1413) d7810 3 a7812 3 * --stub-group-size=N <1>: ARM. (line 177) * --stub-group-size=N: HPPA ELF32. (line 12) * --subsystem: Options. (line 2132) d7814 2 a7815 2 * --sysroot=DIRECTORY: Options. (line 1417) * --target-help: Options. (line 1124) d7823 2 a7824 2 * --traditional-format: Options. (line 1422) * --tsaware: Options. (line 2174) d7827 1 a7827 1 * --unresolved-symbols: Options. (line 1464) d7830 1 a7830 1 * --verbose[=NUMBER]: Options. (line 1493) d7832 1 a7832 1 * --version-script=VERSION-SCRIPTFILE: Options. (line 1501) d7834 11 a7844 11 * --warn-alternate-em: Options. (line 1613) * --warn-common: Options. (line 1512) * --warn-constructors: Options. (line 1580) * --warn-multiple-gp: Options. (line 1585) * --warn-once: Options. (line 1599) * --warn-section-align: Options. (line 1603) * --warn-shared-textrel: Options. (line 1610) * --warn-unresolved-symbols: Options. (line 1616) * --wdmdriver: Options. (line 2171) * --whole-archive: Options. (line 1625) * --wrap=SYMBOL: Options. (line 1639) d7847 1 a7847 1 * -assert KEYWORD: Options. (line 876) d7849 6 a7854 6 * -Bdynamic: Options. (line 879) * -Bgroup: Options. (line 889) * -Bshareable: Options. (line 1369) * -Bstatic: Options. (line 896) * -Bsymbolic: Options. (line 911) * -Bsymbolic-functions: Options. (line 922) d7856 1 a7856 1 * -call_shared: Options. (line 879) d7859 1 a7859 1 * -dn: Options. (line 896) d7862 1 a7862 1 * -dy: Options. (line 879) d7867 1 a7868 1 * -f NAME: Options. (line 255) d7874 1 a7874 1 * -IFILE: Options. (line 1041) d7880 1 a7880 1 * -Map=MAPFILE: Options. (line 1128) d7883 3 a7885 3 * -no-relax: Options. (line 1252) * -non_shared: Options. (line 896) * -nostdlib: Options. (line 1217) d7889 1 a7889 1 * -pie: Options. (line 1236) d7891 2 a7892 2 * -qmagic: Options. (line 1246) * -Qy: Options. (line 1249) d7895 2 a7896 2 * -rpath-link=DIR: Options. (line 1314) * -rpath=DIR: Options. (line 1292) d7899 1 a7899 1 * -shared: Options. (line 1369) d7901 1 a7901 1 * -static: Options. (line 896) d7904 6 a7909 6 * -Tbss=ORG: Options. (line 1443) * -Tdata=ORG: Options. (line 1443) * -Tldata-segment=ORG: Options. (line 1459) * -Trodata-segment=ORG: Options. (line 1453) * -Ttext-segment=ORG: Options. (line 1449) * -Ttext=ORG: Options. (line 1443) d7912 1 d7914 1 a7914 1 * -v: Options. (line 641) a7915 1 * -x: Options. (line 647) d7918 1 a7918 1 * -z defs: Options. (line 1139) d7920 1 a7920 1 * -z muldefs: Options. (line 1147) a7932 1 * AArch64 rela addend: ARM. (line 228) d7952 1 a7952 1 (line 115) d7986 1 a7986 1 * combining symbols, warnings on: Options. (line 1512) d7989 1 a7989 1 * common allocation: Options. (line 1000) a7999 1 * constructors: Options. (line 596) d8002 1 d8011 1 a8011 1 * cross reference table: Options. (line 987) d8013 1 a8013 1 (line 98) d8021 2 a8022 2 * dbx: Options. (line 1427) * DEF files, creating: Options. (line 1935) d8029 1 a8029 1 * demangling, from command line: Options. (line 1028) d8034 2 a8035 2 * DLLs, creating: Options. (line 1830) * DLLs, linking to: Options. (line 1967) d8039 1 a8039 1 * dynamic linker, from command line: Options. (line 1041) d8083 2 a8084 2 * garbage collection <1>: Input Section Keep. (line 6) * garbage collection: Options. (line 1093) d8090 1 a8090 1 * groups of archives: Options. (line 823) d8093 2 a8094 2 * heap size: Options. (line 1870) * help: Options. (line 1120) d8102 1 a8102 1 * image base: Options. (line 1877) d8108 1 a8108 1 * including an entire archive: Options. (line 1625) d8143 2 a8144 2 (line 121) * ldata segment origin, cmd line: Options. (line 1460) d8151 1 a8151 1 * link-time runtime library search path: Options. (line 1314) d8176 1 a8176 1 (line 115) d8186 1 a8186 1 * memory usage: Options. (line 1108) a8204 2 * NOCROSSREFS_TO(TOSECTION FROMSECTIONS): Miscellaneous Commands. (line 98) d8228 1 a8228 1 * output file after errors: Options. (line 1211) d8231 1 a8231 1 * output format: Options. (line 1102) d8240 1 a8240 1 (line 115) d8251 1 a8251 1 * position independent executables: Options. (line 1238) d8296 1 a8296 1 * relaxing addressing modes: Options. (line 1252) d8309 2 a8310 2 * retaining specified symbols: Options. (line 1278) * rodata segment origin, cmd line: Options. (line 1454) d8315 1 a8315 1 * runtime library search path: Options. (line 1292) d8330 1 a8330 1 * section alignment, warnings on: Options. (line 1603) d8350 1 a8350 1 * segment origins, cmd line: Options. (line 1443) d8353 1 a8353 1 * shared libraries: Options. (line 1371) d8370 1 a8370 1 * SPU: SPU ELF. (line 29) d8379 1 a8379 1 * stack size: Options. (line 2125) d8386 1 a8386 1 * stripping all but some symbols: Options. (line 1278) d8398 1 a8398 1 * symbols, from command line: Options. (line 1016) d8401 2 a8402 2 * symbols, retaining selectively: Options. (line 1278) * synthesizing linker: Options. (line 1252) d8407 1 a8407 1 * text segment origin, cmd line: Options. (line 1450) d8410 1 a8410 1 * traditional format: Options. (line 1422) d8417 1 a8417 1 * undefined symbols, warnings on: Options. (line 1599) d8422 1 a8422 1 * usage: Options. (line 1120) d8428 1 a8428 1 * verbose[=NUMBER]: Options. (line 1493) d8431 1 a8431 1 * version script, symbol versions: Options. (line 1501) d8435 3 a8437 3 * warnings, on combining symbols: Options. (line 1512) * warnings, on section alignment: Options. (line 1603) * warnings, on undefined symbols: Options. (line 1599) d8452 82 a8533 82 Node: Environment104917 Node: Scripts106677 Node: Basic Script Concepts108411 Node: Script Format111119 Node: Simple Example111982 Node: Simple Commands115078 Node: Entry Point115584 Node: File Commands116517 Node: Format Commands120637 Node: REGION_ALIAS122593 Node: Miscellaneous Commands127425 Node: Assignments132964 Node: Simple Assignments133475 Node: HIDDEN135210 Node: PROVIDE135840 Node: PROVIDE_HIDDEN137033 Node: Source Code Reference137277 Node: SECTIONS141193 Node: Output Section Description143084 Node: Output Section Name144328 Node: Output Section Address145204 Node: Input Section147439 Node: Input Section Basics148240 Node: Input Section Wildcards152146 Node: Input Section Common157353 Node: Input Section Keep158835 Node: Input Section Example159325 Node: Output Section Data160293 Node: Output Section Keywords163070 Node: Output Section Discarding166639 Node: Output Section Attributes168132 Node: Output Section Type169233 Node: Output Section LMA170304 Node: Forced Output Alignment173375 Node: Forced Input Alignment173805 Node: Output Section Constraint174194 Node: Output Section Region174622 Node: Output Section Phdr175055 Node: Output Section Fill175719 Node: Overlay Description176861 Node: MEMORY181307 Node: PHDRS185684 Node: VERSION190938 Node: Expressions199031 Node: Constants199960 Node: Symbolic Constants200835 Node: Symbols201386 Node: Orphan Sections202133 Node: Location Counter203470 Node: Operators207906 Node: Evaluation208828 Node: Expression Section210192 Node: Builtin Functions214056 Node: Implicit Linker Scripts222296 Node: Machine Dependent223071 Node: H8/300224195 Node: i960226257 Node: M68HC11/68HC12227953 Node: ARM229395 Node: HPPA ELF32240534 Node: M68K242157 Node: MIPS243066 Node: MMIX243590 Node: MSP430244755 Node: NDS32245795 Node: Nios II246761 Node: PowerPC ELF32248077 Node: PowerPC64 ELF64250908 Node: SPU ELF258240 Node: TI COFF260872 Node: WIN32261398 Node: Xtensa281524 Node: BFD284489 Node: BFD outline285944 Node: BFD information loss287230 Node: Canonical format289747 Node: Reporting Bugs294104 Node: Bug Criteria294798 Node: Bug Reporting295497 Node: MRI302536 Node: GNU Free Documentation License307179 Node: LD Index332335 @ 1.1.1.5 log @Import 2.26.1; please see the individual ChangeLogs for bug fixes. @ text @d983 2 a984 6 override the definition within the shared library. This option can also be used with the `--export-dynamic' option, when creating a position independent executable, to bind references to global symbols to the definition within the executable. This option is only meaningful on ELF platforms which support shared libraries and position independent executables. d989 2 a990 5 option can also be used with the `--export-dynamic' option, when creating a position independent executable, to bind references to global function symbols to the definition within the executable. This option is only meaningful on ELF platforms which support shared libraries and position independent executables. d7595 3 a7597 3 * --add-stdcall-alias: Options. (line 1750) * --allow-multiple-definition: Options. (line 1128) * --allow-shlib-undefined: Options. (line 1134) d7602 2 a7603 2 * --bank-window: Options. (line 2204) * --base-file: Options. (line 1755) d7606 10 a7615 10 * --build-id: Options. (line 1712) * --build-id=STYLE: Options. (line 1712) * --check-sections: Options. (line 936) * --compress-debug-sections=none: Options. (line 1682) * --compress-debug-sections=zlib: Options. (line 1682) * --compress-debug-sections=zlib-gabi: Options. (line 1682) * --compress-debug-sections=zlib-gnu: Options. (line 1682) * --copy-dt-needed-entries: Options. (line 948) * --cref: Options. (line 968) * --default-imported-symver: Options. (line 1171) d7617 3 a7619 3 * --default-symver: Options. (line 1167) * --defsym=SYMBOL=EXP: Options. (line 997) * --demangle[=STYLE]: Options. (line 1009) d7621 7 a7627 7 * --disable-auto-image-base: Options. (line 1942) * --disable-auto-import: Options. (line 2077) * --disable-large-address-aware: Options. (line 1881) * --disable-long-section-names: Options. (line 1765) * --disable-new-dtags: Options. (line 1658) * --disable-runtime-pseudo-reloc: Options. (line 2090) * --disable-stdcall-fixup: Options. (line 1787) d7630 2 a7631 2 * --dll: Options. (line 1760) * --dll-search-prefix: Options. (line 1948) d7633 9 a7641 9 * --dsbt-index: Options. (line 2181) * --dsbt-size: Options. (line 2176) * --dynamic-linker=FILE: Options. (line 1022) * --dynamic-list-cpp-new: Options. (line 928) * --dynamic-list-cpp-typeinfo: Options. (line 932) * --dynamic-list-data: Options. (line 925) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 912) * --dynamicbase: Options. (line 2130) * --eh-frame-hdr: Options. (line 1649) d7647 7 a7653 7 * --enable-auto-image-base: Options. (line 1933) * --enable-auto-import: Options. (line 1957) * --enable-extra-pe-debug: Options. (line 2095) * --enable-long-section-names: Options. (line 1765) * --enable-new-dtags: Options. (line 1658) * --enable-runtime-pseudo-reloc: Options. (line 2082) * --enable-stdcall-fixup: Options. (line 1787) d7655 2 a7656 2 * --error-unresolved-symbols: Options. (line 1602) * --exclude-all-symbols: Options. (line 1841) d7659 2 a7660 2 * --exclude-symbols: Options. (line 1835) * --export-all-symbols: Options. (line 1811) d7663 2 a7664 2 * --fatal-warnings: Options. (line 1035) * --file-alignment: Options. (line 1845) d7673 2 a7674 2 * --force-exe-suffix: Options. (line 1040) * --forceinteg: Options. (line 2135) d7677 2 a7678 2 * --gc-sections: Options. (line 1050) * --got: Options. (line 2217) d7681 7 a7687 7 * --hash-size=NUMBER: Options. (line 1668) * --hash-style=STYLE: Options. (line 1676) * --heap: Options. (line 1851) * --help: Options. (line 1101) * --high-entropy-va: Options. (line 2126) * --image-base: Options. (line 1858) * --insert-timestamp: Options. (line 2158) d7689 1 a7689 1 * --insn32: Options. (line 2229) d7691 4 a7694 4 * --kill-at: Options. (line 1867) * --large-address-aware: Options. (line 1872) * --ld-generated-unwind-info: Options. (line 1653) * --leading-underscore: Options. (line 1805) d7699 3 a7701 3 * --major-image-version: Options. (line 1888) * --major-os-version: Options. (line 1893) * --major-subsystem-version: Options. (line 1897) d7703 3 a7705 3 * --minor-image-version: Options. (line 1902) * --minor-os-version: Options. (line 1907) * --minor-subsystem-version: Options. (line 1911) d7711 1 a7711 1 * --no-allow-shlib-undefined: Options. (line 1134) d7713 5 a7717 5 * --no-bind: Options. (line 2149) * --no-check-sections: Options. (line 936) * --no-copy-dt-needed-entries: Options. (line 948) * --no-define-common: Options. (line 981) * --no-demangle: Options. (line 1009) d7719 1 a7719 1 * --no-dynamic-linker: Options. (line 1029) d7722 1 a7722 1 * --no-fatal-warnings: Options. (line 1035) d7726 2 a7727 2 * --no-gc-sections: Options. (line 1050) * --no-insn32 <1>: Options. (line 2230) d7729 4 a7732 4 * --no-isolation: Options. (line 2142) * --no-keep-memory: Options. (line 1113) * --no-leading-underscore: Options. (line 1805) * --no-merge-exidx-entries <1>: Options. (line 2188) d7741 1 a7741 1 * --no-print-gc-sections: Options. (line 1074) d7743 1 a7743 1 * --no-seh: Options. (line 2145) d7749 5 a7753 5 * --no-trampoline: Options. (line 2198) * --no-undefined: Options. (line 1120) * --no-undefined-version: Options. (line 1162) * --no-warn-mismatch: Options. (line 1175) * --no-warn-search-mismatch: Options. (line 1184) d7755 2 a7756 2 * --no-whole-archive: Options. (line 1188) * --noinhibit-exec: Options. (line 1192) d7758 2 a7759 2 * --nxcompat: Options. (line 2138) * --oformat=OUTPUT-FORMAT: Options. (line 1204) d7762 2 a7763 2 * --out-implib: Options. (line 1924) * --output-def: Options. (line 1916) d7765 1 a7765 1 * --pic-executable: Options. (line 1217) d7772 1 a7772 1 * --print-gc-sections: Options. (line 1074) d7774 2 a7775 2 * --print-memory-usage: Options. (line 1089) * --print-output-format: Options. (line 1083) d7777 2 a7778 2 * --reduce-memory-overheads: Options. (line 1698) * --relax: Options. (line 1233) d7785 1 a7785 1 * --retain-symbols-file=FILENAME: Options. (line 1259) d7789 2 a7790 2 * --section-alignment: Options. (line 2100) * --section-start=SECTIONNAME=ORG: Options. (line 1415) d7792 6 a7797 6 * --sort-common: Options. (line 1357) * --sort-section=alignment: Options. (line 1372) * --sort-section=name: Options. (line 1368) * --split-by-file: Options. (line 1376) * --split-by-reloc: Options. (line 1381) * --stack: Options. (line 2106) d7799 1 a7799 1 * --stats: Options. (line 1394) d7805 1 a7805 1 * --subsystem: Options. (line 2113) d7807 2 a7808 2 * --sysroot=DIRECTORY: Options. (line 1398) * --target-help: Options. (line 1105) d7816 2 a7817 2 * --traditional-format: Options. (line 1403) * --tsaware: Options. (line 2155) d7820 1 a7820 1 * --unresolved-symbols: Options. (line 1445) d7823 1 a7823 1 * --verbose[=NUMBER]: Options. (line 1474) d7825 1 a7825 1 * --version-script=VERSION-SCRIPTFILE: Options. (line 1482) d7827 11 a7837 11 * --warn-alternate-em: Options. (line 1594) * --warn-common: Options. (line 1493) * --warn-constructors: Options. (line 1561) * --warn-multiple-gp: Options. (line 1566) * --warn-once: Options. (line 1580) * --warn-section-align: Options. (line 1584) * --warn-shared-textrel: Options. (line 1591) * --warn-unresolved-symbols: Options. (line 1597) * --wdmdriver: Options. (line 2152) * --whole-archive: Options. (line 1606) * --wrap=SYMBOL: Options. (line 1620) d7844 1 a7844 1 * -Bshareable: Options. (line 1350) d7847 1 a7847 1 * -Bsymbolic-functions: Options. (line 903) d7867 1 a7867 1 * -IFILE: Options. (line 1022) d7873 1 a7873 1 * -Map=MAPFILE: Options. (line 1109) d7876 1 a7876 1 * -no-relax: Options. (line 1233) d7878 1 a7878 1 * -nostdlib: Options. (line 1198) d7882 1 a7882 1 * -pie: Options. (line 1217) d7884 2 a7885 2 * -qmagic: Options. (line 1227) * -Qy: Options. (line 1230) d7888 2 a7889 2 * -rpath-link=DIR: Options. (line 1295) * -rpath=DIR: Options. (line 1273) d7892 1 a7892 1 * -shared: Options. (line 1350) d7897 6 a7902 6 * -Tbss=ORG: Options. (line 1424) * -Tdata=ORG: Options. (line 1424) * -Tldata-segment=ORG: Options. (line 1440) * -Trodata-segment=ORG: Options. (line 1434) * -Ttext-segment=ORG: Options. (line 1430) * -Ttext=ORG: Options. (line 1424) d7911 1 a7911 1 * -z defs: Options. (line 1120) d7913 1 a7913 1 * -z muldefs: Options. (line 1128) d7979 1 a7979 1 * combining symbols, warnings on: Options. (line 1493) d8004 1 a8004 1 * cross reference table: Options. (line 968) d8014 2 a8015 2 * dbx: Options. (line 1408) * DEF files, creating: Options. (line 1916) d8022 1 a8022 1 * demangling, from command line: Options. (line 1009) d8027 2 a8028 2 * DLLs, creating: Options. (line 1924) * DLLs, linking to: Options. (line 1948) d8032 1 a8032 1 * dynamic linker, from command line: Options. (line 1022) d8076 1 a8076 1 * garbage collection <1>: Options. (line 1050) d8086 2 a8087 2 * heap size: Options. (line 1851) * help: Options. (line 1101) d8095 1 a8095 1 * image base: Options. (line 1858) d8101 1 a8101 1 * including an entire archive: Options. (line 1606) d8137 1 a8137 1 * ldata segment origin, cmd line: Options. (line 1441) d8144 1 a8144 1 * link-time runtime library search path: Options. (line 1295) d8179 1 a8179 1 * memory usage: Options. (line 1113) d8221 1 a8221 1 * output file after errors: Options. (line 1192) d8224 1 a8224 1 * output format: Options. (line 1083) d8244 1 a8244 1 * position independent executables: Options. (line 1219) d8289 1 a8289 1 * relaxing addressing modes: Options. (line 1233) d8302 2 a8303 2 * retaining specified symbols: Options. (line 1259) * rodata segment origin, cmd line: Options. (line 1435) d8308 1 a8308 1 * runtime library search path: Options. (line 1273) d8323 1 a8323 1 * section alignment, warnings on: Options. (line 1584) d8343 1 a8343 1 * segment origins, cmd line: Options. (line 1424) d8346 1 a8346 1 * shared libraries: Options. (line 1352) d8372 1 a8372 1 * stack size: Options. (line 2106) d8379 1 a8379 1 * stripping all but some symbols: Options. (line 1259) d8391 1 a8391 1 * symbols, from command line: Options. (line 997) d8394 2 a8395 2 * symbols, retaining selectively: Options. (line 1259) * synthesizing linker: Options. (line 1233) d8400 1 a8400 1 * text segment origin, cmd line: Options. (line 1431) d8403 1 a8403 1 * traditional format: Options. (line 1403) d8410 1 a8410 1 * undefined symbols, warnings on: Options. (line 1580) d8415 1 a8415 1 * usage: Options. (line 1101) d8421 1 a8421 1 * verbose[=NUMBER]: Options. (line 1474) d8424 1 a8424 1 * version script, symbol versions: Options. (line 1482) d8428 3 a8430 3 * warnings, on combining symbols: Options. (line 1493) * warnings, on section alignment: Options. (line 1584) * warnings, on undefined symbols: Options. (line 1580) d8445 82 a8526 82 Node: Environment104154 Node: Scripts105914 Node: Basic Script Concepts107648 Node: Script Format110356 Node: Simple Example111219 Node: Simple Commands114315 Node: Entry Point114821 Node: File Commands115754 Node: Format Commands119874 Node: REGION_ALIAS121830 Node: Miscellaneous Commands126662 Node: Assignments131286 Node: Simple Assignments131797 Node: HIDDEN133532 Node: PROVIDE134162 Node: PROVIDE_HIDDEN135355 Node: Source Code Reference135599 Node: SECTIONS139515 Node: Output Section Description141406 Node: Output Section Name142650 Node: Output Section Address143526 Node: Input Section145761 Node: Input Section Basics146562 Node: Input Section Wildcards150468 Node: Input Section Common155675 Node: Input Section Keep157157 Node: Input Section Example157647 Node: Output Section Data158615 Node: Output Section Keywords161392 Node: Output Section Discarding164961 Node: Output Section Attributes166454 Node: Output Section Type167555 Node: Output Section LMA168626 Node: Forced Output Alignment171697 Node: Forced Input Alignment172127 Node: Output Section Constraint172516 Node: Output Section Region172944 Node: Output Section Phdr173377 Node: Output Section Fill174041 Node: Overlay Description175183 Node: MEMORY179629 Node: PHDRS184006 Node: VERSION189260 Node: Expressions197353 Node: Constants198282 Node: Symbolic Constants199157 Node: Symbols199708 Node: Orphan Sections200455 Node: Location Counter201792 Node: Operators206228 Node: Evaluation207150 Node: Expression Section208514 Node: Builtin Functions212378 Node: Implicit Linker Scripts220618 Node: Machine Dependent221393 Node: H8/300222517 Node: i960224579 Node: M68HC11/68HC12226275 Node: ARM227717 Node: HPPA ELF32238737 Node: M68K240360 Node: MIPS241269 Node: MMIX241793 Node: MSP430242958 Node: NDS32243998 Node: Nios II244964 Node: PowerPC ELF32246280 Node: PowerPC64 ELF64249111 Node: SPU ELF256443 Node: TI COFF259075 Node: WIN32259601 Node: Xtensa279727 Node: BFD282692 Node: BFD outline284147 Node: BFD information loss285433 Node: Canonical format287950 Node: Reporting Bugs292307 Node: Bug Criteria293001 Node: Bug Reporting293700 Node: MRI300739 Node: GNU Free Documentation License305382 Node: LD Index330538 @ 1.1.1.6 log @Import binutils-2.27 minus the testsuites @ text @d8 1 a8 1 This file documents the GNU linker LD (GNU Binutils) version 2.27. d10 1 a10 1 Copyright (C) 1991-2016 Free Software Foundation, Inc. d25 1 a25 1 This file documents the GNU linker ld (GNU Binutils) version 2.27. a762 4 `common' Generate common symbols with the STT_COMMON type druing a relocatable link. a802 4 `nocommon' Generate common symbols with the STT_OBJECT type druing a relocatable link. a873 11 `nodynamic-undefined-weak' Don't treat undefined weak symbols as dynamic when building executable. This option overrides linker backend default. It can be used to avoid dynamic relocations against undefined weak symbols in executable. Supported for i386 and x86-64. `noreloc-overflow' Disable relocation overflow check. This can be used to disable relocation overflow check if there will be no dynamic relocation overflow at run-time. Supported for x86_64. a2965 17 `NOCROSSREFS_TO(TOSECTION FROMSECTION ...)' This command may be used to tell `ld' to issue an error about any references to one section from a list of other sections. The `NOCROSSREFS' command is useful when ensuring that two or more output sections are entirely independent but there are situations where a one-way dependency is needed. For example, in a multi-core application there may be shared code that can be called from each core but for safety must never call back. The `NOCROSSREFS_TO' command takes a list of output section names. The first section can not be referenced from any of the other sections. If `ld' detects any references to the first section from any of the other sections, it reports an error and returns a non-zero exit status. Note that the `NOCROSSREFS_TO' command uses output section names, not input section names. a5641 3 The `--no-apply-dynamic-relocs' option makes AArch64 linker do not apply link-time values for dynamic relocations. d7599 6 a7604 6 * -(: Options. (line 823) * --accept-unknown-input-arch: Options. (line 841) * --add-needed: Options. (line 869) * --add-stdcall-alias: Options. (line 1769) * --allow-multiple-definition: Options. (line 1147) * --allow-shlib-undefined: Options. (line 1153) d7606 1 a7606 1 * --as-needed: Options. (line 851) d7609 2 a7610 2 * --bank-window: Options. (line 2223) * --base-file: Options. (line 1774) d7613 10 a7622 10 * --build-id: Options. (line 1731) * --build-id=STYLE: Options. (line 1731) * --check-sections: Options. (line 955) * --compress-debug-sections=none: Options. (line 1701) * --compress-debug-sections=zlib: Options. (line 1701) * --compress-debug-sections=zlib-gabi: Options. (line 1701) * --compress-debug-sections=zlib-gnu: Options. (line 1701) * --copy-dt-needed-entries: Options. (line 967) * --cref: Options. (line 987) * --default-imported-symver: Options. (line 1190) d7624 3 a7626 3 * --default-symver: Options. (line 1186) * --defsym=SYMBOL=EXP: Options. (line 1016) * --demangle[=STYLE]: Options. (line 1028) d7628 7 a7634 7 * --disable-auto-image-base: Options. (line 1961) * --disable-auto-import: Options. (line 2096) * --disable-large-address-aware: Options. (line 1900) * --disable-long-section-names: Options. (line 1784) * --disable-new-dtags: Options. (line 1677) * --disable-runtime-pseudo-reloc: Options. (line 2109) * --disable-stdcall-fixup: Options. (line 1806) d7637 2 a7638 2 * --dll: Options. (line 1779) * --dll-search-prefix: Options. (line 1967) d7640 9 a7648 9 * --dsbt-index: Options. (line 2200) * --dsbt-size: Options. (line 2195) * --dynamic-linker=FILE: Options. (line 1041) * --dynamic-list-cpp-new: Options. (line 947) * --dynamic-list-cpp-typeinfo: Options. (line 951) * --dynamic-list-data: Options. (line 944) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 931) * --dynamicbase: Options. (line 2149) * --eh-frame-hdr: Options. (line 1668) d7652 9 a7660 9 * --emit-stub-syms <2>: PowerPC64 ELF64. (line 29) * --emit-stub-syms: SPU ELF. (line 15) * --enable-auto-image-base: Options. (line 1952) * --enable-auto-import: Options. (line 1976) * --enable-extra-pe-debug: Options. (line 2114) * --enable-long-section-names: Options. (line 1784) * --enable-new-dtags: Options. (line 1677) * --enable-runtime-pseudo-reloc: Options. (line 2101) * --enable-stdcall-fixup: Options. (line 1806) d7662 2 a7663 2 * --error-unresolved-symbols: Options. (line 1621) * --exclude-all-symbols: Options. (line 1860) d7666 2 a7667 2 * --exclude-symbols: Options. (line 1854) * --export-all-symbols: Options. (line 1830) d7670 2 a7671 2 * --fatal-warnings: Options. (line 1054) * --file-alignment: Options. (line 1864) d7680 2 a7681 2 * --force-exe-suffix: Options. (line 1059) * --forceinteg: Options. (line 2154) d7684 2 a7685 2 * --gc-sections: Options. (line 1069) * --got: Options. (line 2236) d7688 9 a7696 9 * --hash-size=NUMBER: Options. (line 1687) * --hash-style=STYLE: Options. (line 1695) * --heap: Options. (line 1870) * --help: Options. (line 1120) * --high-entropy-va: Options. (line 2145) * --image-base: Options. (line 1877) * --insert-timestamp: Options. (line 2177) * --insn32 <1>: Options. (line 2248) * --insn32: MIPS. (line 6) d7698 4 a7701 4 * --kill-at: Options. (line 1886) * --large-address-aware: Options. (line 1891) * --ld-generated-unwind-info: Options. (line 1672) * --leading-underscore: Options. (line 1824) d7706 3 a7708 3 * --major-image-version: Options. (line 1907) * --major-os-version: Options. (line 1912) * --major-subsystem-version: Options. (line 1916) d7710 3 a7712 3 * --minor-image-version: Options. (line 1921) * --minor-os-version: Options. (line 1926) * --minor-subsystem-version: Options. (line 1930) d7716 9 a7724 10 * --no-accept-unknown-input-arch: Options. (line 841) * --no-add-needed: Options. (line 869) * --no-allow-shlib-undefined: Options. (line 1153) * --no-apply-dynamic-relocs: ARM. (line 228) * --no-as-needed: Options. (line 851) * --no-bind: Options. (line 2168) * --no-check-sections: Options. (line 955) * --no-copy-dt-needed-entries: Options. (line 967) * --no-define-common: Options. (line 1000) * --no-demangle: Options. (line 1028) d7726 1 a7726 1 * --no-dynamic-linker: Options. (line 1048) d7729 1 a7729 1 * --no-fatal-warnings: Options. (line 1054) d7733 2 a7734 2 * --no-gc-sections: Options. (line 1069) * --no-insn32 <1>: Options. (line 2249) d7736 4 a7739 4 * --no-isolation: Options. (line 2161) * --no-keep-memory: Options. (line 1132) * --no-leading-underscore: Options. (line 1824) * --no-merge-exidx-entries <1>: Options. (line 2207) d7748 1 a7748 1 * --no-print-gc-sections: Options. (line 1093) d7750 1 a7750 1 * --no-seh: Options. (line 2164) d7756 5 a7760 5 * --no-trampoline: Options. (line 2217) * --no-undefined: Options. (line 1139) * --no-undefined-version: Options. (line 1181) * --no-warn-mismatch: Options. (line 1194) * --no-warn-search-mismatch: Options. (line 1203) d7762 2 a7763 2 * --no-whole-archive: Options. (line 1207) * --noinhibit-exec: Options. (line 1211) d7765 2 a7766 2 * --nxcompat: Options. (line 2157) * --oformat=OUTPUT-FORMAT: Options. (line 1223) d7769 2 a7770 2 * --out-implib: Options. (line 1943) * --output-def: Options. (line 1935) d7772 1 a7772 1 * --pic-executable: Options. (line 1236) d7779 1 a7779 1 * --print-gc-sections: Options. (line 1093) d7781 2 a7782 2 * --print-memory-usage: Options. (line 1108) * --print-output-format: Options. (line 1102) d7784 2 a7785 2 * --reduce-memory-overheads: Options. (line 1717) * --relax: Options. (line 1252) d7792 1 a7792 1 * --retain-symbols-file=FILENAME: Options. (line 1278) d7796 2 a7797 2 * --section-alignment: Options. (line 2119) * --section-start=SECTIONNAME=ORG: Options. (line 1434) d7799 6 a7804 6 * --sort-common: Options. (line 1376) * --sort-section=alignment: Options. (line 1391) * --sort-section=name: Options. (line 1387) * --split-by-file: Options. (line 1395) * --split-by-reloc: Options. (line 1400) * --stack: Options. (line 2125) d7806 1 a7806 1 * --stats: Options. (line 1413) d7810 3 a7812 3 * --stub-group-size=N <1>: ARM. (line 177) * --stub-group-size=N: HPPA ELF32. (line 12) * --subsystem: Options. (line 2132) d7814 2 a7815 2 * --sysroot=DIRECTORY: Options. (line 1417) * --target-help: Options. (line 1124) d7823 2 a7824 2 * --traditional-format: Options. (line 1422) * --tsaware: Options. (line 2174) d7827 1 a7827 1 * --unresolved-symbols: Options. (line 1464) d7830 1 a7830 1 * --verbose[=NUMBER]: Options. (line 1493) d7832 1 a7832 1 * --version-script=VERSION-SCRIPTFILE: Options. (line 1501) d7834 11 a7844 11 * --warn-alternate-em: Options. (line 1613) * --warn-common: Options. (line 1512) * --warn-constructors: Options. (line 1580) * --warn-multiple-gp: Options. (line 1585) * --warn-once: Options. (line 1599) * --warn-section-align: Options. (line 1603) * --warn-shared-textrel: Options. (line 1610) * --warn-unresolved-symbols: Options. (line 1616) * --wdmdriver: Options. (line 2171) * --whole-archive: Options. (line 1625) * --wrap=SYMBOL: Options. (line 1639) d7847 1 a7847 1 * -assert KEYWORD: Options. (line 876) d7849 6 a7854 6 * -Bdynamic: Options. (line 879) * -Bgroup: Options. (line 889) * -Bshareable: Options. (line 1369) * -Bstatic: Options. (line 896) * -Bsymbolic: Options. (line 911) * -Bsymbolic-functions: Options. (line 922) d7856 1 a7856 1 * -call_shared: Options. (line 879) d7859 1 a7859 1 * -dn: Options. (line 896) d7862 1 a7862 1 * -dy: Options. (line 879) d7867 1 a7868 1 * -f NAME: Options. (line 255) d7874 1 a7874 1 * -IFILE: Options. (line 1041) d7880 1 a7880 1 * -Map=MAPFILE: Options. (line 1128) d7883 3 a7885 3 * -no-relax: Options. (line 1252) * -non_shared: Options. (line 896) * -nostdlib: Options. (line 1217) d7889 1 a7889 1 * -pie: Options. (line 1236) d7891 2 a7892 2 * -qmagic: Options. (line 1246) * -Qy: Options. (line 1249) d7895 2 a7896 2 * -rpath-link=DIR: Options. (line 1314) * -rpath=DIR: Options. (line 1292) d7899 1 a7899 1 * -shared: Options. (line 1369) d7901 1 a7901 1 * -static: Options. (line 896) d7904 6 a7909 6 * -Tbss=ORG: Options. (line 1443) * -Tdata=ORG: Options. (line 1443) * -Tldata-segment=ORG: Options. (line 1459) * -Trodata-segment=ORG: Options. (line 1453) * -Ttext-segment=ORG: Options. (line 1449) * -Ttext=ORG: Options. (line 1443) d7912 1 d7914 1 a7914 1 * -v: Options. (line 641) a7915 1 * -x: Options. (line 647) d7918 1 a7918 1 * -z defs: Options. (line 1139) d7920 1 a7920 1 * -z muldefs: Options. (line 1147) a7932 1 * AArch64 rela addend: ARM. (line 228) d7952 1 a7952 1 (line 115) d7986 1 a7986 1 * combining symbols, warnings on: Options. (line 1512) d7989 1 a7989 1 * common allocation: Options. (line 1000) a7999 1 * constructors: Options. (line 596) d8002 1 d8011 1 a8011 1 * cross reference table: Options. (line 987) d8013 1 a8013 1 (line 98) d8021 2 a8022 2 * dbx: Options. (line 1427) * DEF files, creating: Options. (line 1935) d8029 1 a8029 1 * demangling, from command line: Options. (line 1028) d8034 2 a8035 2 * DLLs, creating: Options. (line 1830) * DLLs, linking to: Options. (line 1967) d8039 1 a8039 1 * dynamic linker, from command line: Options. (line 1041) d8083 2 a8084 2 * garbage collection <1>: Input Section Keep. (line 6) * garbage collection: Options. (line 1093) d8090 1 a8090 1 * groups of archives: Options. (line 823) d8093 2 a8094 2 * heap size: Options. (line 1870) * help: Options. (line 1120) d8102 1 a8102 1 * image base: Options. (line 1877) d8108 1 a8108 1 * including an entire archive: Options. (line 1625) d8143 2 a8144 2 (line 121) * ldata segment origin, cmd line: Options. (line 1460) d8151 1 a8151 1 * link-time runtime library search path: Options. (line 1314) d8176 1 a8176 1 (line 115) d8186 1 a8186 1 * memory usage: Options. (line 1108) a8204 2 * NOCROSSREFS_TO(TOSECTION FROMSECTIONS): Miscellaneous Commands. (line 98) d8228 1 a8228 1 * output file after errors: Options. (line 1211) d8231 1 a8231 1 * output format: Options. (line 1102) d8240 1 a8240 1 (line 115) d8251 1 a8251 1 * position independent executables: Options. (line 1238) d8296 1 a8296 1 * relaxing addressing modes: Options. (line 1252) d8309 2 a8310 2 * retaining specified symbols: Options. (line 1278) * rodata segment origin, cmd line: Options. (line 1454) d8315 1 a8315 1 * runtime library search path: Options. (line 1292) d8330 1 a8330 1 * section alignment, warnings on: Options. (line 1603) d8350 1 a8350 1 * segment origins, cmd line: Options. (line 1443) d8353 1 a8353 1 * shared libraries: Options. (line 1371) d8370 1 a8370 1 * SPU: SPU ELF. (line 29) d8379 1 a8379 1 * stack size: Options. (line 2125) d8386 1 a8386 1 * stripping all but some symbols: Options. (line 1278) d8398 1 a8398 1 * symbols, from command line: Options. (line 1016) d8401 2 a8402 2 * symbols, retaining selectively: Options. (line 1278) * synthesizing linker: Options. (line 1252) d8407 1 a8407 1 * text segment origin, cmd line: Options. (line 1450) d8410 1 a8410 1 * traditional format: Options. (line 1422) d8417 1 a8417 1 * undefined symbols, warnings on: Options. (line 1599) d8422 1 a8422 1 * usage: Options. (line 1120) d8428 1 a8428 1 * verbose[=NUMBER]: Options. (line 1493) d8431 1 a8431 1 * version script, symbol versions: Options. (line 1501) d8435 3 a8437 3 * warnings, on combining symbols: Options. (line 1512) * warnings, on section alignment: Options. (line 1603) * warnings, on undefined symbols: Options. (line 1599) d8452 82 a8533 82 Node: Environment104917 Node: Scripts106677 Node: Basic Script Concepts108411 Node: Script Format111119 Node: Simple Example111982 Node: Simple Commands115078 Node: Entry Point115584 Node: File Commands116517 Node: Format Commands120637 Node: REGION_ALIAS122593 Node: Miscellaneous Commands127425 Node: Assignments132964 Node: Simple Assignments133475 Node: HIDDEN135210 Node: PROVIDE135840 Node: PROVIDE_HIDDEN137033 Node: Source Code Reference137277 Node: SECTIONS141193 Node: Output Section Description143084 Node: Output Section Name144328 Node: Output Section Address145204 Node: Input Section147439 Node: Input Section Basics148240 Node: Input Section Wildcards152146 Node: Input Section Common157353 Node: Input Section Keep158835 Node: Input Section Example159325 Node: Output Section Data160293 Node: Output Section Keywords163070 Node: Output Section Discarding166639 Node: Output Section Attributes168132 Node: Output Section Type169233 Node: Output Section LMA170304 Node: Forced Output Alignment173375 Node: Forced Input Alignment173805 Node: Output Section Constraint174194 Node: Output Section Region174622 Node: Output Section Phdr175055 Node: Output Section Fill175719 Node: Overlay Description176861 Node: MEMORY181307 Node: PHDRS185684 Node: VERSION190938 Node: Expressions199031 Node: Constants199960 Node: Symbolic Constants200835 Node: Symbols201386 Node: Orphan Sections202133 Node: Location Counter203470 Node: Operators207906 Node: Evaluation208828 Node: Expression Section210192 Node: Builtin Functions214056 Node: Implicit Linker Scripts222296 Node: Machine Dependent223071 Node: H8/300224195 Node: i960226257 Node: M68HC11/68HC12227953 Node: ARM229395 Node: HPPA ELF32240534 Node: M68K242157 Node: MIPS243066 Node: MMIX243590 Node: MSP430244755 Node: NDS32245795 Node: Nios II246761 Node: PowerPC ELF32248077 Node: PowerPC64 ELF64250908 Node: SPU ELF258240 Node: TI COFF260872 Node: WIN32261398 Node: Xtensa281524 Node: BFD284489 Node: BFD outline285944 Node: BFD information loss287230 Node: Canonical format289747 Node: Reporting Bugs294104 Node: Bug Criteria294798 Node: Bug Reporting295497 Node: MRI302536 Node: GNU Free Documentation License307179 Node: LD Index332335 @ 1.1.1.6.12.1 log @Sync with HEAD, resolve some conflicts @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 6.3 from ld.texinfo. d3 6 a8 1 This file documents the GNU linker LD (GNU Binutils) version 2.30. d10 1 a10 1 Copyright (C) 1991-2018 Free Software Foundation, Inc. a17 4 INFO-DIR-SECTION Software development START-INFO-DIR-ENTRY * Ld: (ld). The GNU linker. END-INFO-DIR-ENTRY d25 1 a25 1 This file documents the GNU linker ld (GNU Binutils) version 2.30. d28 2 a29 2 Documentation License version 1.3. A copy of the license is included in the section entitled "GNU Free Documentation License". d36 1 d38 1 d52 3 a54 3 'ld' combines a number of object and archive files, relocates their data and ties up symbol references. Usually the last step in compiling a program is to run 'ld'. d56 1 a56 1 'ld' accepts Linker Command Language files written in a superset of d60 3 a62 3 This version of 'ld' uses the general purpose BFD libraries to operate on object files. This allows 'ld' to read, combine, and write object files in many different formats--for example, COFF or 'a.out'. d69 1 a69 1 'ld' continues executing, allowing you to identify other errors (or, in d78 1 a78 1 The GNU linker 'ld' is meant to cover a broad range of situations, and d93 1 a93 1 The linker supports a plethora of command-line options, but in actual d95 1 a95 1 a frequent use of 'ld' is to link standard Unix object files on a d97 1 a97 1 'hello.o': d101 2 a102 2 This tells 'ld' to produce a file called OUTPUT as the result of linking the file '/lib/crt0.o' with 'hello.o' and the library 'libc.a', d104 1 a104 1 discussion of the '-l' option below.) d106 1 a106 1 Some of the command-line options to 'ld' may be specified at any d108 1 a108 1 as '-l' or '-T', cause the file to be read at the point at which the d122 1 a122 1 can specify other forms of binary input files using '-l', '-R', and the d125 1 a125 1 message 'No input files'. d130 8 a137 8 linker script or the one specified by using '-T'). This feature permits the linker to link against a file which appears to be an object or an archive, but actually merely defines some symbol values, or uses 'INPUT' or 'GROUP' to load other objects. Specifying a script in this way merely augments the main linker script, with the extra commands placed after the main script; use the '-T' option to replace the default linker script entirely, but note the effect of the 'INSERT' command. *Note Scripts::. d145 6 a150 6 can precede the option name; for example, '-trace-symbol' and '--trace-symbol' are equivalent. Note--there is one exception to this rule. Multiple letter options that start with a lower case 'o' can only be preceded by two dashes. This is to reduce confusion with the '-o' option. So for example '-omagic' sets the output file name to 'magic' whereas '--omagic' sets the NMAGIC flag on the output. d155 1 a155 1 '--trace-symbol foo' and '--trace-symbol=foo' are equivalent. Unique d159 2 a160 2 driver (e.g. 'gcc') then all the linker command line options should be prefixed by '-Wl,' (or whatever is appropriate for the particular d178 5 a182 5 '@@FILE' Read command-line options from FILE. The options read are inserted in place of the original @@FILE option. If FILE does not exist, or cannot be read, then the option will be treated literally, and not removed. d186 5 a190 4 option in either single or double quotes. Any character (including a backslash) may be included by prefixing the character to be included with a backslash. The FILE may itself contain additional @@FILE options; any such options will be processed recursively. d192 1 a192 1 '-a KEYWORD' d194 2 a195 2 argument must be one of the strings 'archive', 'shared', or 'default'. '-aarchive' is functionally equivalent to '-Bstatic', d197 1 a197 1 '-Bdynamic'. This option may be used any number of times. d199 2 a200 2 '--audit AUDITLIB' Adds AUDITLIB to the 'DT_AUDIT' entry of the dynamic section. d203 2 a204 2 'DT_AUDIT' will contain a colon separated list of audit interfaces to use. If the linker finds an object with an audit entry while d206 1 a206 1 'DT_DEPAUDIT' entry in the output file. This option is only d209 7 a215 7 '-A ARCHITECTURE' '--architecture=ARCHITECTURE' In the current release of 'ld', this option is useful only for the Intel 960 family of architectures. In that 'ld' configuration, the ARCHITECTURE argument identifies the particular architecture in the 960 family, enabling some safeguards and modifying the archive-library search path. *Note 'ld' and the Intel 960 family: d218 2 a219 2 Future releases of 'ld' may support similar functionality for other architecture families. d221 4 a224 4 '-b INPUT-FORMAT' '--format=INPUT-FORMAT' 'ld' may be configured to support more than one kind of object file. If your 'ld' is configured this way, you can use the '-b' d226 7 a232 7 follow this option on the command line. Even when 'ld' is configured to support alternative object formats, you don't usually need to specify this, as 'ld' should be configured to expect as a default input format the most usual format on each machine. INPUT-FORMAT is a text string, the name of a particular format supported by the BFD libraries. (You can list the available binary formats with 'objdump -i'.) *Note BFD::. d235 1 a235 1 unusual binary format. You can also use '-b' to switch formats d237 1 a237 1 including '-b INPUT-FORMAT' before each group of object files in a d241 2 a242 2 'GNUTARGET'. *Note Environment::. You can also define the input format from a script, using the command 'TARGET'; see *note Format d245 3 a247 3 '-c MRI-COMMANDFILE' '--mri-script=MRI-COMMANDFILE' For compatibility with linkers produced by MRI, 'ld' accepts script d249 9 a257 9 described in *note MRI Compatible Script Files: MRI. Introduce MRI script files with the option '-c'; use the '-T' option to run linker scripts written in the general-purpose 'ld' scripting language. If MRI-CMDFILE does not exist, 'ld' looks for it in the directories specified by any '-L' options. '-d' '-dc' '-dp' d260 7 a266 7 symbols even if a relocatable output file is specified (with '-r'). The script command 'FORCE_COMMON_ALLOCATION' has the same effect. *Note Miscellaneous Commands::. '--depaudit AUDITLIB' '-P AUDITLIB' Adds AUDITLIB to the 'DT_DEPAUDIT' entry of the dynamic section. d269 4 a272 4 'DT_DEPAUDIT' will contain a colon separated list of audit interfaces to use. This option is only meaningful on ELF platforms supporting the rtld-audit interface. The -P option is provided for Solaris compatibility. d274 2 a275 2 '-e ENTRY' '--entry=ENTRY' d280 2 a281 2 in base 10; you may use a leading '0x' for base 16, or a leading '0' for base 8). *Note Entry Point::, for a discussion of defaults d284 10 a293 10 '--exclude-libs LIB,LIB,...' Specifies a list of archive libraries from which symbols should not be automatically exported. The library names may be delimited by commas or colons. Specifying '--exclude-libs ALL' excludes symbols in all archive libraries from automatic export. This option is available only for the i386 PE targeted port of the linker and for ELF targeted ports. For i386 PE, symbols explicitly listed in a .def file are still exported, regardless of this option. For ELF targeted ports, symbols affected by this option will be treated as hidden. d295 1 a295 1 '--exclude-modules-for-implib MODULE,MODULE,...' d298 15 a312 15 copied wholesale into the import library being generated during the link. The module names may be delimited by commas or colons, and must match exactly the filenames used by 'ld' to open the files; for archive members, this is simply the member name, but for object files the name listed must include and match precisely any path used to specify the input file on the linker's command-line. This option is available only for the i386 PE targeted port of the linker. Symbols explicitly listed in a .def file are still exported, regardless of this option. '-E' '--export-dynamic' '--no-export-dynamic' When creating a dynamically linked executable, using the '-E' option or the '--export-dynamic' option causes the linker to add d314 2 a315 2 is the set of symbols which are visible from dynamic objects at run time. d318 3 a320 3 '--no-export-dynamic' option to restore the default behavior), the dynamic symbol table will normally contain only those symbols which are referenced by some dynamic object mentioned in the link. d322 1 a322 1 If you use 'dlopen' to load a dynamic object which needs to refer d327 3 a329 3 You can also use the dynamic list to control what symbols should be added to the dynamic symbol table if the output format supports it. See the description of '--dynamic-list'. d332 2 a333 2 targets support a similar function to export all symbols from a DLL or EXE; see the description of '--export-all-symbols' below. d335 1 a335 1 '-EB' d338 1 a338 1 '-EL' d342 2 a343 2 '-f NAME' '--auxiliary=NAME' d363 2 a364 2 '-F NAME' '--filter=NAME' d367 3 a369 2 the symbol table of the shared object which is being created should be used as a filter on the symbol table of the shared object NAME. d379 1 a379 1 Some older linkers used the '-F' option throughout a compilation d381 5 a385 5 output object files. The GNU linker uses other mechanisms for this purpose: the '-b', '--format', '--oformat' options, the 'TARGET' command in linker scripts, and the 'GNUTARGET' environment variable. The GNU linker will ignore the '-F' option when not creating an ELF shared object. d387 1 a387 1 '-fini=NAME' d390 1 a390 1 the address of the function. By default, the linker uses '_fini' d393 1 a393 1 '-g' d396 2 a397 2 '-G VALUE' '--gpsize=VALUE' d403 2 a404 2 '-h NAME' '-soname=NAME' d407 4 a410 4 shared object which has a DT_SONAME field, then when the executable is run the dynamic linker will attempt to load the shared object specified by the DT_SONAME field rather than the using the file name given to the linker. d412 2 a413 2 '-i' Perform an incremental link (same as option '-r'). d415 1 a415 1 '-init=NAME' d418 1 a418 1 the address of the function. By default, the linker uses '_init' d421 15 a435 15 '-l NAMESPEC' '--library=NAMESPEC' Add the archive or object file specified by NAMESPEC to the list of files to link. This option may be used any number of times. If NAMESPEC is of the form ':FILENAME', 'ld' will search the library path for a file called FILENAME, otherwise it will search the library path for a file called 'libNAMESPEC.a'. On systems which support shared libraries, 'ld' may also search for files other than 'libNAMESPEC.a'. Specifically, on ELF and SunOS systems, 'ld' will search a directory for a library called 'libNAMESPEC.so' before searching for one called 'libNAMESPEC.a'. (By convention, a '.so' extension indicates a shared library.) Note that this behavior does not apply to ':FILENAME', which always specifies a file called FILENAME. d439 5 a443 5 symbol which was undefined in some object which appeared before the archive on the command line, the linker will include the appropriate file(s) from the archive. However, an undefined symbol in an object appearing later on the command line will not cause the linker to search the archive again. d445 1 a445 1 See the '-(' option for a way to force the linker to search d451 1 a451 1 However, if you are using 'ld' on AIX, note that it is different d454 4 a457 4 '-L SEARCHDIR' '--library-path=SEARCHDIR' Add path SEARCHDIR to the list of paths that 'ld' will search for archive libraries and 'ld' control scripts. You may use this d459 5 a463 5 order in which they are specified on the command line. Directories specified on the command line are searched before the default directories. All '-L' options apply to all '-l' options, regardless of the order in which the options appear. '-L' options do not affect how 'ld' searches for a linker script unless '-T' d466 3 a468 3 If SEARCHDIR begins with '=' or '$SYSROOT', then this prefix will be replaced by the "sysroot prefix", controlled by the '--sysroot' option, or specified when the linker is configured. d471 1 a471 1 '-L') depends on which emulation mode 'ld' is using, and in some d475 1 a475 1 'SEARCH_DIR' command. Directories specified this way are searched d479 1 a479 1 '-m EMULATION' d481 1 a481 1 emulations with the '--verbose' or '-V' options. d483 2 a484 2 If the '-m' option is not used, the emulation is taken from the 'LDEMULATION' environment variable, if that is defined. d489 2 a490 2 '-M' '--print-map' d495 1 d497 1 d500 1 d508 3 a510 3 circumstances the linker will display the final value enclosed by square brackets. Thus for example a linker script containing: d516 1 a516 1 will produce the following output in the link map if the '-M' d523 2 a524 2 See *note Expressions:: for more information about expressions in linker scripts. d526 2 a527 2 '-n' '--nmagic' d530 1 a530 1 numbers, mark the output as 'NMAGIC'. d532 2 a533 2 '-N' '--omagic' d537 3 a539 3 numbers, mark the output as 'OMAGIC'. Note: Although a writable text section is allowed for PE-COFF targets, it does not conform to the format specification published by Microsoft. d541 2 a542 2 '--no-omagic' This option negates most of the effects of the '-N' option. It d545 1 a545 1 against shared libraries. Use '-Bdynamic' for this. d547 5 a551 5 '-o OUTPUT' '--output=OUTPUT' Use OUTPUT as the name for the program produced by 'ld'; if this option is not specified, the name 'a.out' is used by default. The script command 'OUTPUT' can also specify the output file name. d553 2 a554 2 '-O LEVEL' If LEVEL is a numeric values greater than zero 'ld' optimizes the d559 3 a561 18 Also currently there is no difference in the linker's behaviour for different non-zero values of this option. Again this may change with future releases. '-plugin NAME' Involve a plugin in the linking process. The NAME parameter is the absolute filename of the plugin. Usually this parameter is automatically added by the complier, when using link time optimization, but users can also add their own plugins if they so wish. Note that the location of the compiler originated plugins is different from the place where the 'ar', 'nm' and 'ranlib' programs search for their plugins. In order for those commands to make use of a compiler based plugin it must first be copied into the '${libdir}/bfd-plugins' directory. All gcc based linker plugins are backward compatible, so it is sufficient to just copy in the newest one. d563 2 a564 2 '--push-state' The '--push-state' allows to preserve the current state of the d566 1 a566 1 restored with one corresponding '--pop-state' option. d568 5 a572 5 The option which are covered are: '-Bdynamic', '-Bstatic', '-dn', '-dy', '-call_shared', '-non_shared', '-static', '-N', '-n', '--whole-archive', '--no-whole-archive', '-r', '-Ur', '--copy-dt-needed-entries', '--no-copy-dt-needed-entries', '--as-needed', '--no-as-needed', and '-a'. d574 2 a575 2 One target for this option are specifications for 'pkg-config'. When used with the '--libs' option all possibly needed libraries a580 1 '--pop-state' d584 2 a585 2 '-q' '--emit-relocs' d587 3 a589 3 Post link analysis and optimization tools may need this information in order to perform correct modifications of executables. This results in larger executables. d593 1 a593 1 '--force-dynamic' d597 4 a600 4 '-r' '--relocatable' Generate relocatable output--i.e., generate an output file that can in turn serve as input to 'ld'. This is often called "partial d603 1 a603 1 number to 'OMAGIC'. If this option is not specified, an absolute d605 1 a605 1 not_ resolve references to constructors; to do that, use '-Ur'. d608 5 a612 4 file, partial linking is only supported if that input file does not contain any relocations. Different output formats can have further restrictions; for example some 'a.out'-based formats do not support partial linking with input files in other formats at all. d614 1 a614 1 This option does the same thing as '-i'. d616 2 a617 2 '-R FILENAME' '--just-symbols=FILENAME' d623 1 a623 1 For compatibility with other ELF linkers, if the '-R' option is d625 1 a625 1 treated as the '-rpath' option. d627 2 a628 2 '-s' '--strip-all' d631 2 a632 2 '-S' '--strip-debug' d636 7 a642 12 '--strip-discarded' '--no-strip-discarded' Omit (or do not omit) global symbols defined in discarded sections. Enabled by default. '-t' '--trace' Print the names of the input files as 'ld' processes them. '-T SCRIPTFILE' '--script=SCRIPTFILE' Use SCRIPTFILE as the linker script. This script replaces 'ld''s d646 2 a647 2 directory, 'ld' looks for it in the directories specified by any preceding '-L' options. Multiple '-T' options accumulate. d649 2 a650 2 '-dT SCRIPTFILE' '--default-script=SCRIPTFILE' d653 1 a653 1 This option is similar to the '--script' option except that d656 1 a656 1 the '--default-script' option on the command line to affect the d658 3 a660 3 linker command line cannot be directly controlled by the user. (eg because the command line is being constructed by another tool, such as 'gcc'). d662 2 a663 2 '-u SYMBOL' '--undefined=SYMBOL' d666 1 a666 1 modules from standard libraries. '-u' may be repeated with d668 1 a668 1 This option is equivalent to the 'EXTERN' linker script command. d672 1 a672 1 remain undefined, then the option '--require-defined' should be d675 1 a675 1 '--require-defined=SYMBOL' d677 1 a677 1 the same as option '--undefined' except that if SYMBOL is not d680 2 a681 2 'EXTERN', 'ASSERT' and 'DEFINED' together. This option can be used multiple times to require additional symbols. d683 1 a683 1 '-Ur' d685 7 a691 7 '-r': it generates relocatable output--i.e., an output file that can in turn serve as input to 'ld'. When linking C++ programs, '-Ur' _does_ resolve references to constructors, unlike '-r'. It does not work to use '-Ur' on files that were themselves linked with '-Ur'; once the constructor table has been built, it cannot be added to. Use '-Ur' only for the last partial link, and '-r' for the others. d693 1 a693 1 '--orphan-handling=MODE' d700 1 a700 1 'place' d702 2 a703 2 following the strategy described in *note Orphan Sections::. The option '--unique' also affects how sections are placed. d705 1 a705 1 'discard' d707 1 a707 1 '/DISCARD/' section (*note Output Section Discarding::). d709 2 a710 2 'warn' The linker will place the orphan section as for 'place' and d713 1 a713 1 'error' d717 1 a717 1 The default if '--orphan-handling' is not given is 'place'. d719 1 a719 1 '--unique[=SECTION]' d724 8 a731 8 multiple times on the command line; It prevents the normal merging of input sections with the same name, overriding output section assignments in a linker script. '-v' '--version' '-V' Display the version number for 'ld'. The '-V' option also lists d734 2 a735 2 '-x' '--discard-all' d738 2 a739 2 '-X' '--discard-locals' d741 2 a742 2 system-specific local label prefixes, typically '.L' for ELF systems or 'L' for traditional a.out systems.) d744 2 a745 2 '-y SYMBOL' '--trace-symbol=SYMBOL' d753 1 a753 1 '-Y PATH' d757 1 a757 1 '-z KEYWORD' d759 11 d771 1 a771 48 'bndplt' Always generate BND prefix in PLT entries. Supported for Linux/x86_64. 'call-nop=prefix-addr' 'call-nop=suffix-nop' 'call-nop=prefix-BYTE' 'call-nop=suffix-BYTE' Specify the 1-byte 'NOP' padding when transforming indirect call to a locally defined function, foo, via its GOT slot. 'call-nop=prefix-addr' generates '0x67 call foo'. 'call-nop=suffix-nop' generates 'call foo 0x90'. 'call-nop=prefix-BYTE' generates 'BYTE call foo'. 'call-nop=suffix-BYTE' generates 'call foo BYTE'. Supported for i386 and x86_64. 'combreloc' 'nocombreloc' Combine multiple dynamic relocation sections and sort to improve dynamic symbol lookup caching. Do not do this if 'nocombreloc'. 'common' 'nocommon' Generate common symbols with STT_COMMON type during a relocatable link. Use STT_OBJECT type if 'nocommon'. 'common-page-size=VALUE' Set the page size most commonly used to VALUE. Memory image layout will be optimized to minimize memory pages if the system is using pages of this size. 'defs' Report unresolved symbol references from regular object files. This is done even if the linker is creating a non-symbolic shared library. This option is the inverse of '-z undefs'. 'dynamic-undefined-weak' 'nodynamic-undefined-weak' Make undefined weak symbols dynamic when building a dynamic object, if they are referenced from a regular object file and not forced local by symbol visibility or versioning. Do not make them dynamic if 'nodynamic-undefined-weak'. If neither option is given, a target may default to either option being in force, or make some other selection of undefined weak symbols dynamic. Not all targets support these options. 'execstack' d774 1 a774 1 'global' d779 1 a779 19 'globalaudit' This option is only meaningful when building a dynamic executable. This option marks the executable as requiring global auditing by setting the 'DF_1_GLOBAUDIT' bit in the 'DT_FLAGS_1' dynamic tag. Global auditing requires that any auditing library defined via the '--depaudit' or '-P' command line options be run for all dynamic objects loaded by the application. 'ibtplt' Generate Intel Indirect Branch Tracking (IBT) enabled PLT entries. Supported for Linux/i386 and Linux/x86_64. 'ibt' Generate GNU_PROPERTY_X86_FEATURE_1_IBT in .note.gnu.property section to indicate compatibility with IBT. This also implies 'ibtplt'. Supported for Linux/i386 and Linux/x86_64. 'initfirst' d787 3 a789 4 'interpose' Specify that the dynamic loader should modify its symbol search order so that symbols in this shared library interpose all other shared libraries not so marked. d791 1 a791 1 'lazy' d797 2 a798 2 'loadfltr' Specify that the object's filters be processed immediately at d801 2 a802 2 'max-page-size=VALUE' Set the maximum memory page size supported to VALUE. d804 2 a805 2 'muldefs' Allow multiple definitions. d807 5 a811 1 'nocopyreloc' d816 3 a818 3 'nodefaultlib' Specify that the dynamic loader search for dependencies of this object should ignore any default library search paths. d820 2 a821 2 'nodelete' Specify that the object shouldn't be unloaded at runtime. d823 2 a824 2 'nodlopen' Specify that the object is not available to 'dlopen'. d826 2 a827 2 'nodump' Specify that the object can not be dumped by 'dldump'. d829 1 a829 1 'noexecstack' d832 8 a839 7 'noextern-protected-data' Don't treat protected data symbols as external when building a shared library. This option overrides the linker backend default. It can be used to work around incorrect relocations against protected data symbols generated by compiler. Updates on protected data symbols by another module aren't visible to the resulting shared library. Supported for i386 and x86-64. d841 3 a843 4 'noreloc-overflow' Disable relocation overflow check. This can be used to disable relocation overflow check if there will be no dynamic relocation overflow at run-time. Supported for x86_64. d845 1 a845 1 'now' d848 23 a870 28 program is started, or when the shared library is loaded by dlopen, instead of deferring function call resolution to the point when the function is first called. 'origin' Specify that the object requires '$ORIGIN' handling in paths. 'relro' 'norelro' Create an ELF 'PT_GNU_RELRO' segment header in the object. This specifies a memory segment that should be made read-only after relocation, if supported. Specifying 'common-page-size' smaller than the system page size will render this protection ineffective. Don't create an ELF 'PT_GNU_RELRO' segment if 'norelro'. 'separate-code' 'noseparate-code' Create separate code 'PT_LOAD' segment header in the object. This specifies a memory segment that should contain only instructions and must be in wholly disjoint pages from any other data. Don't create separate code 'PT_LOAD' segment if 'noseparate-code' is used. 'shstk' Generate GNU_PROPERTY_X86_FEATURE_1_SHSTK in .note.gnu.property section to indicate compatibility with Intel Shadow Stack. Supported for Linux/i386 and d873 33 a905 4 'stack-size=VALUE' Specify a stack size for an ELF 'PT_GNU_STACK' segment. Specifying zero will override any default non-zero sized 'PT_GNU_STACK' segment creation. a906 11 'text' 'notext' 'textoff' Report an error if DT_TEXTREL is set, i.e., if the binary has dynamic relocations in read-only sections. Don't report an error if 'notext' or 'textoff'. 'undefs' Do not report unresolved symbol references from regular object files, either when creating an executable, or when creating a shared library. This option is the inverse of '-z defs'. d910 4 a913 4 '-( ARCHIVES -)' '--start-group ARCHIVES --end-group' The ARCHIVES should be a list of archive files. They may be either explicit file names, or '-l' options. d916 7 a922 7 undefined references are created. Normally, an archive is searched only once in the order that it is specified on the command line. If a symbol in that archive is needed to resolve an undefined symbol referred to by an object in an archive that appears later on the command line, the linker would not be able to resolve that reference. By grouping the archives, they all be searched repeatedly until all possible references are resolved. d928 2 a929 2 '--accept-unknown-input-arch' '--no-accept-unknown-input-arch' d933 4 a936 4 This was the default behaviour of the linker, before release 2.14. The default behaviour from release 2.14 onwards is to reject such input files, and so the '--accept-unknown-input-arch' option has been added to restore the old behaviour. d938 2 a939 2 '--as-needed' '--no-as-needed' d941 1 a941 1 mentioned on the command line after the '--as-needed' option. d944 1 a944 1 library is actually needed or not. '--as-needed' causes a d946 2 a947 2 in the link_ satisfies a non-weak undefined symbol reference from a regular object file or, if the library is not found in the d949 6 a954 5 symbol reference from another needed dynamic library. Object files or libraries appearing on the command line _after_ the library in question do not affect whether the library is seen as needed. This is similar to the rules for extraction of object files from archives. '--no-as-needed' restores the default behaviour. d956 2 a957 2 '--add-needed' '--no-add-needed' d959 3 a961 3 their names to the '--as-needed' and '--no-as-needed' options. They have been replaced by '--copy-dt-needed-entries' and '--no-copy-dt-needed-entries'. d963 1 a963 1 '-assert KEYWORD' d966 3 a968 3 '-Bdynamic' '-dy' '-call_shared' d970 5 a974 5 platforms for which shared libraries are supported. This option is normally the default on such platforms. The different variants of this option are for compatibility with various systems. You may use this option multiple times on the command line: it affects library searching for '-l' options which follow it. d976 2 a977 2 '-Bgroup' Set the 'DF_1_GROUP' flag in the 'DT_FLAGS_1' entry in the dynamic d980 1 a980 1 '--unresolved-symbols=report-all' is implied. This option is only d983 4 a986 4 '-Bstatic' '-dn' '-non_shared' '-static' d989 8 a996 7 variants of this option are for compatibility with various systems. You may use this option multiple times on the command line: it affects library searching for '-l' options which follow it. This option also implies '--unresolved-symbols=report-all'. This option can be used with '-shared'. Doing so means that a shared library is being created but that all of the library's external references must be resolved by pulling in entries from static libraries. d998 1 a998 1 '-Bsymbolic' d1002 3 a1004 3 override the definition within the shared library. This option can also be used with the '--export-dynamic' option, when creating a position independent executable, to bind references to global d1006 2 a1007 2 only meaningful on ELF platforms which support shared libraries and position independent executables. d1009 1 a1009 1 '-Bsymbolic-functions' d1012 1 a1012 1 option can also be used with the '--export-dynamic' option, when d1018 1 a1018 1 '--dynamic-list=DYNAMIC-LIST-FILE' d1028 1 a1028 1 without scope and node name. See *note VERSION:: for more d1031 1 a1031 1 '--dynamic-list-data' d1034 1 a1034 1 '--dynamic-list-cpp-new' d1038 1 a1038 1 '--dynamic-list-cpp-typeinfo' d1042 2 a1043 2 '--check-sections' '--no-check-sections' d1050 1 a1050 1 '--check-sections'. Section overlap is not usually checked for d1052 1 a1052 1 the '--check-sections' option. d1054 2 a1055 2 '--copy-dt-needed-entries' '--no-copy-dt-needed-entries' d1060 1 a1060 1 input dynamic library. With '--copy-dt-needed-entries' specified d1062 2 a1063 2 will have their DT_NEEDED entries added. The default behaviour can be restored with '--no-copy-dt-needed-entries'. d1066 1 a1066 1 dynamic libraries. With '--copy-dt-needed-entries' dynamic d1074 1 a1074 1 '--cref' d1080 6 a1085 6 easily processed by a script if necessary. The symbols are printed out, sorted by name. For each symbol, a list of file names is given. If the symbol is defined, the first file listed is the location of the definition. If the symbol is defined as a common value then any files where this happens appear next. Finally any files that reference the symbol are listed. d1087 1 a1087 1 '--no-define-common' d1089 1 a1089 1 The script command 'INHIBIT_COMMON_ALLOCATION' has the same effect. d1092 1 a1092 1 The '--no-define-common' option allows decoupling the decision to d1094 8 a1101 16 file type; otherwise a non-Relocatable output type forces assigning addresses to Common symbols. Using '--no-define-common' allows Common symbols that are referenced from a shared library to be assigned addresses only in the main program. This eliminates the unused duplicate space in the shared library, and also prevents any possible confusion over resolving to the wrong duplicate when there are many dynamic modules with specialized search paths for runtime symbol resolution. '--force-group-allocation' This option causes the linker to place section group members like normal input sections, and to delete the section groups. This is the default behaviour for a final link but this option can be used to change the behaviour of a relocatable link ('-r'). The script command 'FORCE_GROUP_ALLOCATION' has the same effect. *Note Miscellaneous Commands::. d1103 1 a1103 1 '--defsym=SYMBOL=EXPRESSION' d1105 9 a1113 9 address given by EXPRESSION. You may use this option as many times as necessary to define multiple symbols in the command line. A limited form of arithmetic is supported for the EXPRESSION in this context: you may give a hexadecimal constant or the name of an existing symbol, or use '+' and '-' to add or subtract hexadecimal constants or symbols. If you need more elaborate expressions, consider using the linker command language from a script (*note Assignments::). _Note:_ there should be no white space between SYMBOL, the equals sign ("<=>"), and EXPRESSION. d1115 2 a1116 2 '--demangle[=STYLE]' '--no-demangle' d1118 4 a1121 4 messages and other output. When the linker is told to demangle, it tries to present symbol names in a readable fashion: it strips leading underscores if they are used by the object file format, and converts C++ mangled symbol names into user readable names. d1125 1 a1125 1 default unless the environment variable 'COLLECT_NO_DEMANGLE' is d1128 2 a1129 2 '-IFILE' '--dynamic-linker=FILE' d1132 2 a1133 2 linker is normally correct; don't use this unless you know what you are doing. d1135 1 a1135 1 '--no-dynamic-linker' d1141 2 a1142 7 '--embedded-relocs' This option is similar to the '--emit-relocs' option except that the relocs are stored in a target specific section. This option is only supported by the 'BFIN', 'CR16' and _M68K_ targets. '--fatal-warnings' '--no-fatal-warnings' d1144 1 a1144 1 restored with the option '--no-fatal-warnings'. d1146 1 a1146 1 '--force-exe-suffix' d1150 2 a1151 2 '.exe' or '.dll' suffix, this option forces the linker to copy the output file to one of the same name with a '.exe' suffix. This d1153 2 a1154 2 Microsoft Windows host, since some versions of Windows won't run an image unless it ends in a '.exe' suffix. d1156 2 a1157 2 '--gc-sections' '--no-gc-sections' d1161 3 a1163 3 specifying '--no-gc-sections' on the command line. Note that garbage collection for COFF and PE format targets is supported, but the implementation is currently considered to be experimental. d1165 1 a1165 1 '--gc-sections' decides which input sections are used by examining d1173 1 a1173 1 relocations. See '--entry' and '--undefined'. d1176 3 a1178 3 option '-r'). In this case the root of symbols kept must be explicitly specified either by an '--entry' or '--undefined' option or by a 'ENTRY' command in the linker script. d1180 2 a1181 2 '--print-gc-sections' '--no-print-gc-sections' d1184 1 a1184 1 collection has been enabled via the '--gc-sections') option. The d1186 1 a1186 1 can be restored by specifying '--no-print-gc-sections' on the d1189 1 a1189 11 '--gc-keep-exported' When '--gc-sections' is enabled, this option prevents garbage collection of unused input sections that contain global symbols having default or protected visibility. This option is intended to be used for executables where unreferenced sections would otherwise be garbage collected regardless of the external visibility of contained symbols. Note that this option has no effect when linking shared objects since it is already the default behaviour. This option is only supported for ELF format targets. '--print-output-format' d1192 1 a1192 1 in an 'OUTPUT_FORMAT' linker script command (*note File d1195 7 a1201 7 '--print-memory-usage' Print used size, total size and used size of memory regions created with the *note MEMORY:: command. This is useful on embedded targets to have a quick view of amount of free memory. The format of the output has one headline and one line per region. It is both human readable and easily parsable by tools. Here is an example of an output: d1207 1 a1207 1 '--help' d1211 1 a1211 1 '--target-help' d1215 1 a1215 1 '-Map=MAPFILE' d1217 1 a1217 1 '-M' option, above. d1219 3 a1221 3 '--no-keep-memory' 'ld' normally optimizes for speed over memory usage by caching the symbol tables of input files in memory. This option tells 'ld' to d1223 1 a1223 1 as necessary. This may be required if 'ld' runs out of memory d1226 2 a1227 2 '--no-undefined' '-z defs' d1230 1 a1230 1 library. The switch '--[no-]allow-shlib-undefined' controls the d1234 2 a1235 4 The effects of this option can be reverted by using '-z undefs'. '--allow-multiple-definition' '-z muldefs' d1237 1 a1237 1 report a fatal error. These options allow multiple definitions and d1240 2 a1241 2 '--allow-shlib-undefined' '--no-allow-shlib-undefined' d1243 4 a1246 4 switch is similar to '--no-undefined' except that it determines the behaviour when the undefined symbols are in a shared library rather than a regular object file. It does not affect how undefined symbols in regular object files are handled. d1250 2 a1251 2 create an executable, but to allow them if the linker is being used to create a shared library. d1256 4 a1259 3 * A shared library specified at link time may not be the same as the one that is available at load time, so the symbol might actually be resolvable at load time. d1268 1 a1268 1 '--no-undefined-version' d1270 1 a1270 1 ignore it. This option disallows symbols with undefined version d1273 1 a1273 1 '--default-symver' d1277 1 a1277 1 '--default-imported-symver' d1281 2 a1282 2 '--no-warn-mismatch' Normally 'ld' will give an error if you try to link together input d1285 1 a1285 1 endiannesses. This option tells 'ld' that it should silently d1287 2 a1288 2 care, in cases when you have taken some special action that ensures that the linker errors are inappropriate. d1290 2 a1291 2 '--no-warn-search-mismatch' Normally 'ld' will give a warning if it finds an incompatible d1294 2 a1295 2 '--no-whole-archive' Turn off the effect of the '--whole-archive' option for subsequent d1298 1 a1298 1 '--noinhibit-exec' d1301 2 a1302 2 encounters errors during the link process; it exits without writing an output file when it issues any error whatsoever. d1304 12 a1315 11 '-nostdlib' Only search library directories explicitly specified on the command line. Library directories specified in linker scripts (including linker scripts specified on the command line) are ignored. '--oformat=OUTPUT-FORMAT' 'ld' may be configured to support more than one kind of object file. If your 'ld' is configured this way, you can use the '--oformat' option to specify the binary format for the output object file. Even when 'ld' is configured to support alternative object formats, you don't usually need to specify this, as 'ld' d1319 2 a1320 2 can list the available binary formats with 'objdump -i'.) The script command 'OUTPUT_FORMAT' can also specify the output format, d1323 2 a1324 11 '--out-implib FILE' Create an import library in FILE corresponding to the executable the linker is generating (eg. a DLL or ELF program). This import library (which should be called '*.dll.a' or '*.a' for DLLs) may be used to link clients against the generated executable; this behaviour makes it possible to skip a separate import library creation step (eg. 'dlltool' for DLLs). This option is only available for the i386 PE and ELF targetted ports of the linker. '-pie' '--pic-executable' d1333 1 a1333 1 '-qmagic' d1336 1 a1336 1 '-Qy' d1339 2 a1340 2 '--relax' '--no-relax' d1342 5 a1346 5 supported on a few targets. *Note 'ld' and the H8/300: H8/300. *Note 'ld' and the Intel 960 family: i960. *Note 'ld' and Xtensa Processors: Xtensa. *Note 'ld' and the 68HC11 and 68HC12: M68HC11/68HC12. *Note 'ld' and the Altera Nios II: Nios II. *Note 'ld' and PowerPC 32-bit ELF Support: PowerPC ELF32. d1348 1 a1348 1 On some platforms the '--relax' option performs target specific, d1355 3 a1357 3 symbolic debugging of the resulting executable impossible. This is known to be the case for the Matsushita MN10200 and MN10300 family of processors. d1359 1 a1359 1 On platforms where this is not supported, '--relax' is accepted, d1362 1 a1362 1 On platforms where '--relax' is accepted the option '--no-relax' d1365 1 a1365 1 '--retain-symbols-file=FILENAME' d1372 1 a1372 1 '--retain-symbols-file' does _not_ discard undefined symbols, or d1375 2 a1376 2 You may only specify '--retain-symbols-file' once in the command line. It overrides '-s' and '-S'. d1378 1 a1378 1 '-rpath=DIR' d1380 1 a1380 1 when linking an ELF executable with shared objects. All '-rpath' d1382 6 a1387 6 uses them to locate shared objects at runtime. The '-rpath' option is also used when locating shared objects which are needed by shared objects explicitly included in the link; see the description of the '-rpath-link' option. If '-rpath' is not used when linking an ELF executable, the contents of the environment variable 'LD_RUN_PATH' will be used if it is defined. d1389 1 a1389 1 The '-rpath' option may also be used on SunOS. By default, on d1391 4 a1394 4 '-L' options it is given. If a '-rpath' option is used, the runtime search path will be formed exclusively using the '-rpath' options, ignoring the '-L' options. This can be useful when using gcc, which adds many '-L' options which may be on NFS mounted file d1397 1 a1397 1 For compatibility with other ELF linkers, if the '-R' option is d1399 1 a1399 1 treated as the '-rpath' option. d1401 1 a1401 1 '-rpath-link=DIR' d1403 2 a1404 2 This happens when an 'ld -shared' link includes a shared library as one of the input files. d1409 1 a1409 1 it is not included explicitly. In such a case, the '-rpath-link' d1411 1 a1411 1 '-rpath-link' option may specify a sequence of directory names a1414 9 The tokens $ORIGIN and $LIB can appear in these search directories. They will be replaced by the full path to the directory containing the program or shared object in the case of $ORIGIN and either 'lib' - for 32-bit binaries - or 'lib64' - for 64-bit binaries - in the case of $LIB. The alternative form of these tokens - ${ORIGIN} and ${LIB} can also be used. The token $PLATFORM is not supported. d1416 1 a1416 1 path that may have been hard compiled into a shared library. In d1422 7 a1428 6 1. Any directories specified by '-rpath-link' options. 2. Any directories specified by '-rpath' options. The difference between '-rpath' and '-rpath-link' is that directories specified by '-rpath' options are included in the executable and used at runtime, whereas the '-rpath-link' option is only effective at link time. Searching '-rpath' in this way is d1430 9 a1438 6 been configured with the '--with-sysroot' option. 3. On an ELF system, for native linkers, if the '-rpath' and '-rpath-link' options were not used, search the contents of the environment variable 'LD_RUN_PATH'. 4. On SunOS, if the '-rpath' option was not used, search any directories specified using '-L' options. d1440 9 a1448 6 variable 'LD_LIBRARY_PATH'. 6. For a native ELF linker, the directories in 'DT_RUNPATH' or 'DT_RPATH' of a shared library are searched for shared libraries needed by it. The 'DT_RPATH' entries are ignored if 'DT_RUNPATH' entries exist. 7. The default directories, normally '/lib' and '/usr/lib'. d1450 1 a1450 1 '/etc/ld.so.conf' exists, the list of directories found in d1456 2 a1457 2 '-shared' '-Bshareable' d1459 8 a1466 8 XCOFF and SunOS platforms. On SunOS, the linker will automatically create a shared library if the '-e' option is not used and there are undefined symbols in the link. '--sort-common' '--sort-common=ascending' '--sort-common=descending' This option tells 'ld' to sort the common symbols by alignment in d1470 1 a1470 1 one-byte. This is to prevent gaps between symbols due to alignment d1474 2 a1475 2 '--sort-section=name' This option will apply 'SORT_BY_NAME' to all wildcard section d1478 2 a1479 2 '--sort-section=alignment' This option will apply 'SORT_BY_ALIGNMENT' to all wildcard section d1482 4 a1485 9 '--spare-dynamic-tags=COUNT' This option specifies the number of empty slots to leave in the .dynamic section of ELF shared objects. Empty slots may be needed by post processing tools, such as the prelinker. The default is 5. '--split-by-file[=SIZE]' Similar to '--split-by-reloc' but creates a new output section for each input file when SIZE is reached. SIZE defaults to a size of 1 if not given. d1487 1 a1487 1 '--split-by-reloc[=COUNT]' d1490 3 a1492 3 relocations. This is useful when generating huge relocatable files for downloading into certain real time kernels with the COFF object file format; since COFF cannot represent more than 65535 d1500 1 a1500 1 '--stats' d1504 1 a1504 1 '--sysroot=DIRECTORY' d1507 1 a1507 1 that were configured using '--with-sysroot'. d1509 3 a1511 8 '--task-link' This is used by COFF/PE based targets to create a task-linked object file where all of the global symbols have been converted to statics. '--traditional-format' For some targets, the output of 'ld' is different in some ways from the output of some existing linker. This switch requests 'ld' to d1514 1 a1514 1 For example, on SunOS, 'ld' combines duplicate entries in the d1516 4 a1519 4 with full debugging information by over 30 percent. Unfortunately, the SunOS 'dbx' program can not read the resulting program ('gdb' has no trouble). The '--traditional-format' switch tells 'ld' to not combine duplicate entries. d1521 1 a1521 1 '--section-start=SECTIONNAME=ORG' d1524 10 a1533 10 locate multiple sections in the command line. ORG must be a single hexadecimal integer; for compatibility with other linkers, you may omit the leading '0x' usually associated with hexadecimal values. _Note:_ there should be no white space between SECTIONNAME, the equals sign ("<=>"), and ORG. '-Tbss=ORG' '-Tdata=ORG' '-Ttext=ORG' Same as '--section-start', with '.bss', '.data' or '.text' as the d1536 1 a1536 1 '-Ttext-segment=ORG' d1540 1 a1540 1 '-Trodata-segment=ORG' d1546 1 a1546 1 '-Tldata-segment=ORG' d1551 1 a1551 1 '--unresolved-symbols=METHOD' d1553 1 a1553 1 possible values for 'method': d1555 1 a1555 1 'ignore-all' d1558 1 a1558 1 'report-all' d1561 1 a1561 1 'ignore-in-object-files' d1566 6 a1571 6 'ignore-in-shared-libs' Report unresolved symbols that come from regular object files, but ignore them if they come from shared libraries. This can be useful when creating a dynamic binary and it is known that all the shared libraries that it should be referencing are included on the linker's command line. d1574 1 a1574 1 controlled by the '--[no-]allow-shlib-undefined' option. d1578 1 a1578 1 '--warn-unresolved-symbols' can change this to a warning. d1580 3 a1582 3 '--dll-verbose' '--verbose[=NUMBER]' Display the version number for 'ld' and list the linker emulations d1584 1 a1584 1 Display the linker script being used by the linker. If the d1588 1 a1588 1 '--version-script=VERSION-SCRIPTFILE' d1590 17 a1606 16 typically used when creating shared libraries to specify additional information about the version hierarchy for the library being created. This option is only fully supported on ELF platforms which support shared libraries; see *note VERSION::. It is partially supported on PE platforms, which can use version scripts to filter symbol visibility in auto-export mode: any symbols marked 'local' in the version script will not be exported. *Note WIN32::. '--warn-common' Warn when a common symbol is combined with another common symbol or with a symbol definition. Unix linkers allow this somewhat sloppy practice, but linkers on some other operating systems do not. This option allows you to find potential problems from combining global symbols. Unfortunately, some C libraries use this practice, so you may get some warnings about symbols in the libraries as well as in your programs. d1611 1 a1611 1 'int i = 1;' d1615 1 a1615 1 'extern int i;' d1620 1 a1620 1 'int i;' d1622 6 a1627 6 symbols for a variable, it goes in the uninitialized data area of the output file. The linker merges multiple common symbols for the same variable into a single symbol. If they are of different sizes, it picks the largest size. The linker turns a common symbol into a declaration, if there is a definition of the same variable. d1629 1 a1629 1 The '--warn-common' option can produce five kinds of warnings. d1642 3 a1644 3 definition for the symbol is encountered. This is the same as the previous case, except that the symbols are encountered in a different order. d1660 3 a1662 3 5. Merging a common symbol with a previous smaller common symbol. This is the same as the previous case, except that the symbols are encountered in a different order. d1667 1 a1667 1 '--warn-constructors' d1672 1 a1672 1 '--warn-multiple-gp' d1675 10 a1684 10 Alpha. Specifically, some processors put large-valued constants in a special section. A special register (the global pointer) points into the middle of this section, so that constants can be loaded efficiently via a base-register relative addressing mode. Since the offset in base-register relative mode is fixed and relatively small (e.g., 16 bits), this limits the maximum size of the constant pool. Thus, in large programs, it is often necessary to use multiple global pointer values in order to be able to address all possible constants. This option causes a warning to be issued whenever this case occurs. d1686 1 a1686 1 '--warn-once' d1690 1 a1690 1 '--warn-section-align' d1694 1 a1694 1 specified; that is, if the 'SECTIONS' command does not specify a d1697 1 a1697 1 '--warn-shared-textrel' d1700 1 a1700 1 '--warn-alternate-em' d1703 1 a1703 1 '--warn-unresolved-symbols' d1705 1 a1705 1 option '--unresolved-symbols') it will normally generate an error. d1708 1 a1708 1 '--error-unresolved-symbols' d1712 1 a1712 1 '--whole-archive' d1714 1 a1714 1 '--whole-archive' option, include every object file in the archive d1716 2 a1717 2 object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the d1721 4 a1724 4 about this option, so you have to use '-Wl,-whole-archive'. Second, don't forget to use '-Wl,-no-whole-archive' after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well. d1726 1 a1726 1 '--wrap=SYMBOL' d1728 2 a1729 2 SYMBOL will be resolved to '__wrap_SYMBOL'. Any undefined reference to '__real_SYMBOL' will be resolved to SYMBOL. d1732 2 a1733 2 wrapper function should be called '__wrap_SYMBOL'. If it wishes to call the system function, it should call '__real_SYMBOL'. d1744 18 a1761 20 If you link other code with this file using '--wrap malloc', then all calls to 'malloc' will call the function '__wrap_malloc' instead. The call to '__real_malloc' in '__wrap_malloc' will call the real 'malloc' function. You may wish to provide a '__real_malloc' function as well, so that links without the '--wrap' option will succeed. If you do this, you should not put the definition of '__real_malloc' in the same file as '__wrap_malloc'; if you do, the assembler may resolve the call before the linker has a chance to wrap it to 'malloc'. '--eh-frame-hdr' '--no-eh-frame-hdr' Request ('--eh-frame-hdr') or suppress ('--no-eh-frame-hdr') the creation of '.eh_frame_hdr' section and ELF 'PT_GNU_EH_FRAME' segment header. '--no-ld-generated-unwind-info' Request creation of '.eh_frame' unwind info for linker generated code sections like PLT. This option is on by default if linker d1764 2 a1765 2 '--enable-new-dtags' '--disable-new-dtags' d1767 2 a1768 2 ELF systems may not understand them. If you specify '--enable-new-dtags', the new dynamic tags will be created as d1770 2 a1771 2 '--disable-new-dtags', no new dynamic tags will be created. By default, the new dynamic tags are not created. Note that those d1774 1 a1774 1 '--hash-size=NUMBER' d1782 21 a1802 33 '--hash-style=STYLE' Set the type of linker's hash table(s). STYLE can be either 'sysv' for classic ELF '.hash' section, 'gnu' for new style GNU '.gnu.hash' section or 'both' for both the classic ELF '.hash' and new style GNU '.gnu.hash' hash tables. The default is 'sysv'. '--compress-debug-sections=none' '--compress-debug-sections=zlib' '--compress-debug-sections=zlib-gnu' '--compress-debug-sections=zlib-gabi' On ELF platforms, these options control how DWARF debug sections are compressed using zlib. '--compress-debug-sections=none' doesn't compress DWARF debug sections. '--compress-debug-sections=zlib-gnu' compresses DWARF debug sections and renames them to begin with '.zdebug' instead of '.debug'. '--compress-debug-sections=zlib-gabi' also compresses DWARF debug sections, but rather than renaming them it sets the SHF_COMPRESSED flag in the sections' headers. The '--compress-debug-sections=zlib' option is an alias for '--compress-debug-sections=zlib-gabi'. Note that this option overrides any compression in input debug sections, so if a binary is linked with '--compress-debug-sections=none' for example, then any compressed debug sections in input files will be uncompressed before they are copied into the output binary. The default compression behaviour varies depending upon the target involved and the configure options used to build the toolchain. The default can be determined by examining the output from the linker's '--help' option. d1804 1 a1804 1 '--reduce-memory-overheads' d1812 1 a1812 1 linker's run time. This is not done however if the '--hash-size' d1815 1 a1815 1 The '--reduce-memory-overheads' switch may be also be used to d1818 11 a1828 11 '--build-id' '--build-id=STYLE' Request the creation of a '.note.gnu.build-id' ELF note section or a '.buildid' COFF section. The contents of the note are unique bits identifying this linked file. STYLE can be 'uuid' to use 128 random bits, 'sha1' to use a 160-bit SHA1 hash on the normative parts of the output contents, 'md5' to use a 128-bit MD5 hash on the normative parts of the output contents, or '0xHEXSTRING' to use a chosen bit string specified as an even number of hexadecimal digits ('-' and ':' characters between digit pairs are ignored). If STYLE is omitted, 'sha1' is used. d1830 1 a1830 1 The 'md5' and 'sha1' styles produces an identifier that is always d1837 2 a1838 2 Passing 'none' for STYLE disables the setting from any '--build-id' options earlier on the command line. d1843 1 a1843 1 The i386 PE linker supports the '-shared' option, which causes the d1845 2 a1846 2 executable. You should name the output '*.dll' when you use this option. In addition, the linker fully supports the standard '*.def' d1852 3 a1854 3 support additional command line options that are specific to the i386 PE target. Options that take values may be separated from their values by either a space or an equals sign. d1856 1 a1856 1 '--add-stdcall-alias' d1861 1 a1861 1 '--base-file FILE' d1863 1 a1863 1 of all the relocations needed for generating DLLs with 'dlltool'. d1866 1 a1866 1 '--dll' d1868 1 a1868 1 '-shared' or specify a 'LIBRARY' in a given '.def' file. [This d1871 2 a1872 2 '--enable-long-section-names' '--disable-long-section-names' d1875 17 a1891 17 normal limit for COFF. By default, these names are only allowed in object files, as fully-linked executable images do not carry the COFF string table required to support the longer names. As a GNU extension, it is possible to allow their use in executable images as well, or to (probably pointlessly!) disallow it in object files, by using these two options. Executable images generated with these long section names are slightly non-standard, carrying as they do a string table, and may generate confusing output when examined with non-GNU PE-aware tools, such as file viewers and dumpers. However, GDB relies on the use of PE long section names to find Dwarf-2 debug information sections in an executable image at runtime, and so if neither option is specified on the command-line, 'ld' will enable long section names, overriding the default and technically correct behaviour, when it finds the presence of debug information while linking an executable image and not stripping symbols. [This option is valid for all PE targeted ports of the linker] d1893 2 a1894 2 '--enable-stdcall-fixup' '--disable-stdcall-fixup' d1898 10 a1907 9 and will resolve that symbol by linking to the match. For example, the undefined symbol '_foo' might be linked to the function '_foo@@12', or the undefined symbol '_bar@@16' might be linked to the function '_bar'. When the linker does this, it prints a warning, since it normally should have failed to link, but sometimes import libraries generated from third-party dlls may need this feature to be usable. If you specify '--enable-stdcall-fixup', this feature is fully enabled and warnings are not printed. If you specify '--disable-stdcall-fixup', this feature is disabled and such d1911 2 a1912 2 '--leading-underscore' '--no-leading-underscore' d1914 1 a1914 1 defined in target's description. By this option it is possible to d1917 1 a1917 1 '--export-all-symbols' d1919 2 a1920 2 will be exported by the DLL. Note that this is the default if there otherwise wouldn't be any exported symbols. When symbols are d1923 2 a1924 2 unless this option is given. Note that the symbols 'DllMain@@12', 'DllEntryPoint@@0', 'DllMainCRTStartup@@12', and 'impure_ptr' will d1926 13 a1938 13 DLLs will not be re-exported, nor will symbols specifying the DLL's internal layout such as those beginning with '_head_' or ending with '_iname'. In addition, no symbols from 'libgcc', 'libstd++', 'libmingw32', or 'crtX.o' will be exported. Symbols whose names begin with '__rtti_' or '__builtin_' will not be exported, to help with C++ DLLs. Finally, there is an extensive list of cygwin-private symbols that are not exported (obviously, this applies on when building DLLs for cygwin targets). These cygwin-excludes are: '_cygwin_dll_entry@@12', '_cygwin_crt0_common@@8', '_cygwin_noncygwin_dll_entry@@12', '_fmode', '_impure_ptr', 'cygwin_attach_dll', 'cygwin_premain0', 'cygwin_premain1', 'cygwin_premain2', 'cygwin_premain3', and 'environ'. [This option is specific to the i386 PE targeted port d1941 1 a1941 1 '--exclude-symbols SYMBOL,SYMBOL,...' d1947 1 a1947 1 '--exclude-all-symbols' d1951 5 a1955 5 '--file-alignment' Specify the file alignment. Sections in the file will always begin at file offsets which are multiples of this number. This defaults to 512. [This option is specific to the i386 PE targeted port of the linker] d1957 2 a1958 2 '--heap RESERVE' '--heap RESERVE,COMMIT' d1964 1 a1964 1 '--image-base VALUE' d1973 1 a1973 1 '--kill-at' d1978 8 a1985 8 '--large-address-aware' If given, the appropriate bit in the "Characteristics" field of the COFF header is set to indicate that this executable supports virtual addresses greater than 2 gigabytes. This should be used in conjunction with the /3GB or /USERVA=VALUE megabytes switch in the "[operating systems]" section of the BOOT.INI. Otherwise, this bit has no effect. [This option is specific to PE targeted ports of the linker] d1987 4 a1990 4 '--disable-large-address-aware' Reverts the effect of a previous '--large-address-aware' option. This is useful if '--large-address-aware' is always set by the compiler driver (e.g. Cygwin gcc) and the executable does not d1994 1 a1994 1 '--major-image-version VALUE' d1999 1 a1999 1 '--major-os-version VALUE' d2003 1 a2003 1 '--major-subsystem-version VALUE' d2008 1 a2008 1 '--minor-image-version VALUE' d2013 1 a2013 1 '--minor-os-version VALUE' d2017 1 a2017 1 '--minor-subsystem-version VALUE' d2022 1 a2022 1 '--output-def FILE' d2025 2 a2026 2 (which should be called '*.def') may be used to create an import library with 'dlltool' or may be used as a reference to d2030 11 a2040 2 '--enable-auto-image-base' '--enable-auto-image-base=VALUE' d2042 1 a2042 1 with base VALUE, unless one is specified using the '--image-base' d2048 1 a2048 1 '--disable-auto-image-base' d2050 1 a2050 1 user-specified image base ('--image-base') then use the platform d2054 8 a2061 8 '--dll-search-prefix STRING' When linking dynamically to a dll without an import library, search for '.dll' in preference to 'lib.dll'. This behaviour allows easy distinction between DLLs built for the various "subplatforms": native, cygwin, uwin, pw, etc. For instance, cygwin DLLs typically use '--dll-search-prefix=cyg'. [This option is specific to the i386 PE targeted port of the linker] d2063 2 a2064 2 '--enable-auto-import' Do sophisticated linking of '_symbol' to '__imp__symbol' for DATA d2066 1 a2066 1 building the import libraries with those DATA exports. Note: Use d2068 1 a2068 1 image file to be made writable. This does not conform to the d2080 2 a2081 2 "variable '' can't be auto-imported. Please read the documentation for ld's '--enable-auto-import' for details." d2088 1 a2088 1 DLL. Any multiword variable (arrays, structs, long long, etc) may d2090 2 a2091 2 data type of the offending exported variable, ld will always detect it, issue the warning, and exit. d2096 1 a2096 1 One way is to use -enable-runtime-pseudo-reloc switch. This leaves d2133 1 a2133 1 '__declspec(dllimport)'. However, in practice that requires using d2136 4 a2139 3 building/linking to a static library. In making the choice between the various methods of resolving the 'direct address with constant offset' problem, you should consider typical real-world usage: d2179 1 a2179 1 offending variables (e.g. set_foo() and get_foo() accessor d2183 3 a2185 3 '--disable-auto-import' Do not attempt to do sophisticated linking of '_symbol' to '__imp__symbol' for DATA imports from DLLs. [This option is d2188 1 a2188 1 '--enable-runtime-pseudo-reloc' d2196 1 a2196 1 '--disable-runtime-pseudo-reloc' d2201 1 a2201 1 '--enable-extra-pe-debug' d2206 1 a2206 1 '--section-alignment' d2212 2 a2213 2 '--stack RESERVE' '--stack RESERVE,COMMIT' d2219 3 a2221 3 '--subsystem WHICH' '--subsystem WHICH:MAJOR' '--subsystem WHICH:MAJOR.MINOR' d2223 4 a2226 4 legal values for WHICH are 'native', 'windows', 'console', 'posix', and 'xbox'. You may optionally set the subsystem version also. Numeric values are also accepted for WHICH. [This option is specific to the i386 PE targeted port of the linker] d2228 1 a2228 1 The following options set flags in the 'DllCharacteristics' field d2232 1 a2232 1 '--high-entropy-va' d2236 1 a2236 1 '--dynamicbase' d2238 1 a2238 1 randomization (ASLR). This feature was introduced with MS Windows d2241 1 a2241 1 '--forceinteg' d2244 1 a2244 1 '--nxcompat' d2248 1 a2248 1 '--no-isolation' d2251 1 a2251 1 '--no-seh' d2255 1 a2255 1 '--no-bind' d2258 1 a2258 1 '--wdmdriver' d2261 1 a2261 1 '--tsaware' d2264 2 a2265 2 '--insert-timestamp' '--no-insert-timestamp' d2271 1 a2271 1 '--no-insert-timestamp' can be used to insert a zero value for the d2282 1 a2282 1 '--dsbt-size SIZE' d2287 5 a2291 5 '--dsbt-index INDEX' This option sets the DSBT index of the current executable or shared library to INDEX. The default is 0, which is appropriate for generating executables. If a shared library is generated with a DSBT index of 0, the 'R_C6000_DSBT_INDEX' relocs are copied into d2294 1 a2294 1 The '--no-merge-exidx-entries' switch disables the merging of d2297 1 d2304 5 a2308 5 '--no-trampoline' This option disables the generation of trampoline. By default a trampoline is generated for each far function which is called using a 'jsr' instruction (this happens when a pointer to a far function is taken). d2310 1 a2310 1 '--bank-window NAME' d2312 1 a2312 1 in the 'MEMORY' specification that describes the memory bank d2316 1 d2323 1 a2323 1 '--got=TYPE' d2325 3 a2327 2 TYPE should be one of 'single', 'negative', 'multigot' or 'target'. For more information refer to the Info entry for 'ld'. d2333 1 a2333 2 generation and branch relocation checks for ISA mode transitions when linking for MIPS targets. d2335 2 a2336 2 '--insn32' '--no-insn32' d2339 1 a2339 1 binding stubs, or in relaxation. If '--insn32' is used, then the d2341 1 a2341 1 '--no-insn32' is used, all instruction encodings are used, a2343 11 '--ignore-branch-isa' '--no-ignore-branch-isa' These options control branch relocation checks for invalid ISA mode transitions. If '--ignore-branch-isa' is used, then the linker accepts any branch relocations and any ISA mode transition required is lost in relocation calculation, except for some cases of 'BAL' instructions which meet relaxation conditions and are converted to equivalent 'JALX' instructions as the associated relocation is calculated. By default or if '--no-ignore-branch-isa' is used a check is made causing the loss of an ISA mode transition to produce an error. d2351 2 a2352 2 You can change the behaviour of 'ld' with the environment variables 'GNUTARGET', 'LDEMULATION' and 'COLLECT_NO_DEMANGLE'. d2354 5 a2358 5 'GNUTARGET' determines the input-file object format if you don't use '-b' (or its synonym '--format'). Its value should be one of the BFD names for an input format (*note BFD::). If there is no 'GNUTARGET' in the environment, 'ld' uses the natural format of the target. If 'GNUTARGET' is set to 'default' then BFD attempts to discover the input d2366 2 a2367 2 'LDEMULATION' determines the default emulation if you don't use the '-m' option. The emulation can affect various aspects of linker d2369 2 a2370 2 available emulations with the '--verbose' or '-V' options. If the '-m' option is not used, and the 'LDEMULATION' environment variable is not d2375 4 a2378 4 'COLLECT_NO_DEMANGLE' is set in the environment, then it will default to not demangling symbols. This environment variable is used in a similar fashion by the 'gcc' linker wrapper program. The default may be overridden by the '--demangle' and '--no-demangle' options. d2389 6 a2394 6 The main purpose of the linker script is to describe how the sections in the input files should be mapped into the output file, and to control the memory layout of the output file. Most linker scripts do nothing more than this. However, when necessary, the linker script can also direct the linker to perform many other operations, using the commands described below. d2398 1 a2398 1 linker executable. You can use the '--verbose' command line option to d2400 1 a2400 1 as '-r' or '-N', will affect the default linker script. d2402 1 a2402 1 You may supply your own linker script by using the '-T' command line d2435 6 a2440 6 "object file format". Each file is called an "object file". The output file is often called an "executable", but for our purposes we will also call it an object file. Each object file has, among other things, a list of "sections". We sometimes refer to a section in an input file as an "input section"; similarly, a section in the output file is an "output section". d2454 8 a2461 8 section will have when the output file is run. The second is the "LMA", or load memory address. This is the address at which the section will be loaded. In most cases the two addresses will be the same. An example of when they might be different is when a data section is loaded into ROM, and then copied into RAM when the program starts up (this technique is often used to initialize global variables in a ROM based system). In this case the ROM address would be the LMA, and the RAM address would be the VMA. d2463 2 a2464 2 You can see the sections in an object file by using the 'objdump' program with the '-h' option. d2468 5 a2472 5 and each defined symbol has an address, among other information. If you compile a C or C++ program into an object file, you will get a defined symbol for every defined function and global or static variable. Every undefined function or global variable which is referenced in the input file will become an undefined symbol. d2474 2 a2475 2 You can see the symbols in an object file by using the 'nm' program, or by using the 'objdump' program with the '-t' option. d2497 1 a2497 1 '/*' and '*/'. As in C, comments are syntactically equivalent to d2508 3 a2510 3 The simplest possible linker script has just one command: 'SECTIONS'. You use the 'SECTIONS' command to describe the memory layout of the output file. d2512 1 a2512 1 The 'SECTIONS' command is a powerful command. Here we will describe d2514 4 a2517 3 initialized data, and uninitialized data. These will be in the '.text', '.data', and '.bss' sections, respectively. Let's assume further that these are the only sections which appear in your input files. d2531 1 a2531 1 You write the 'SECTIONS' command as the keyword 'SECTIONS', followed d2535 7 a2541 7 The first line inside the 'SECTIONS' command of the above example sets the value of the special symbol '.', which is the location counter. If you do not specify the address of an output section in some other way (other ways are described later), the address is set from the current value of the location counter. The location counter is then incremented by the size of the output section. At the start of the 'SECTIONS' command, the location counter has the value '0'. d2543 1 a2543 1 The second line defines an output section, '.text'. The colon is d2546 14 a2559 14 which should be placed into this output section. The '*' is a wildcard which matches any file name. The expression '*(.text)' means all '.text' input sections in all input files. Since the location counter is '0x10000' when the output section '.text' is defined, the linker will set the address of the '.text' section in the output file to be '0x10000'. The remaining lines define the '.data' and '.bss' sections in the output file. The linker will place the '.data' output section at address '0x8000000'. After the linker places the '.data' output section, the value of the location counter will be '0x8000000' plus the size of the '.data' output section. The effect is that the linker will place the '.bss' output section immediately after the '.data' output d2564 3 a2566 3 example, the specified addresses for the '.text' and '.data' sections will probably satisfy any alignment constraints, but the linker may have to create a small gap between the '.data' and '.bss' sections. d2582 1 d2595 1 a2595 1 point". You can use the 'ENTRY' linker script command to set the entry d2602 6 a2607 4 * the '-e' ENTRY command-line option; * the 'ENTRY(SYMBOL)' command in a linker script; * the value of a target specific symbol, if it is defined; For many targets this is 'start', but PE and BeOS based systems for example d2610 4 a2613 2 * the address of the first byte of the '.text' section, if present; * The address '0'. d2623 12 a2634 12 'INCLUDE FILENAME' Include the linker script FILENAME at this point. The file will be searched for in the current directory, and in any directory specified with the '-L' option. You can nest calls to 'INCLUDE' up to 10 levels deep. You can place 'INCLUDE' directives at the top level, in 'MEMORY' or 'SECTIONS' commands, or in output section descriptions. 'INPUT(FILE, FILE, ...)' 'INPUT(FILE FILE ...)' The 'INPUT' command directs the linker to include the named files d2637 1 a2637 1 For example, if you always want to include 'subr.o' any time you do d2639 1 a2639 1 line, then you can put 'INPUT (subr.o)' in your linker script. d2642 1 a2642 1 linker script, and then invoke the linker with nothing but a '-T' d2646 8 a2653 9 with the '/' character, and the script being processed was located inside the "sysroot prefix", the filename will be looked for in the "sysroot prefix". Otherwise, the linker will try to open the file in the current directory. If it is not found, the linker will search through the archive library search path. The "sysroot prefix" can also be forced by specifying '=' as the first character in the filename path, or prefixing the filename path with '$SYSROOT'. See also the description of '-L' in *note Command Line Options: Options. d2655 2 a2656 2 If you use 'INPUT (-lFILE)', 'ld' will transform the name to 'libFILE.a', as with the command line argument '-l'. d2658 1 a2658 1 When you use the 'INPUT' command in an implicit linker script, the d2662 3 a2664 3 'GROUP(FILE, FILE, ...)' 'GROUP(FILE FILE ...)' The 'GROUP' command is like 'INPUT', except that the named files d2666 2 a2667 2 new undefined references are created. See the description of '-(' in *note Command Line Options: Options. d2669 3 a2671 3 'AS_NEEDED(FILE, FILE, ...)' 'AS_NEEDED(FILE FILE ...)' This construct can appear only inside of the 'INPUT' or 'GROUP' d2673 5 a2677 5 as if they appear directly in the 'INPUT' or 'GROUP' commands, with the exception of ELF shared libraries, that will be added only when they are actually needed. This construct essentially enables '--as-needed' option for all the files listed inside of it and restores previous '--as-needed' resp. '--no-as-needed' setting d2680 3 a2682 3 'OUTPUT(FILENAME)' The 'OUTPUT' command names the output file. Using 'OUTPUT(FILENAME)' in the linker script is exactly like using '-o d2687 2 a2688 2 You can use the 'OUTPUT' command to define a default name for the output file other than the usual default of 'a.out'. d2690 4 a2693 4 'SEARCH_DIR(PATH)' The 'SEARCH_DIR' command adds PATH to the list of paths where 'ld' looks for archive libraries. Using 'SEARCH_DIR(PATH)' is exactly like using '-L PATH' on the command line (*note Command Line d2698 6 a2703 6 'STARTUP(FILENAME)' The 'STARTUP' command is just like the 'INPUT' command, except that FILENAME will become the first input file to be linked, as though it were specified first on the command line. This may be useful when using a system in which the entry point is always the start of the first file. d2713 5 a2717 5 'OUTPUT_FORMAT(BFDNAME)' 'OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)' The 'OUTPUT_FORMAT' command names the BFD format to use for the output file (*note BFD::). Using 'OUTPUT_FORMAT(BFDNAME)' is exactly like using '--oformat BFDNAME' on the command line (*note d2721 2 a2722 2 You can use 'OUTPUT_FORMAT' with three arguments to use different formats based on the '-EB' and '-EL' command line options. This d2726 4 a2729 4 If neither '-EB' nor '-EL' are used, then the output format will be the first argument, DEFAULT. If '-EB' is used, the output format will be the second argument, BIG. If '-EL' is used, the output format will be the third argument, LITTLE. d2731 2 a2732 2 For example, the default linker script for the MIPS ELF target uses this command: d2735 2 a2736 2 'elf32-bigmips', but if the user uses the '-EL' command line option, the output file will be created in the 'elf32-littlemips' d2739 6 a2744 6 'TARGET(BFDNAME)' The 'TARGET' command names the BFD format to use when reading input files. It affects subsequent 'INPUT' and 'GROUP' commands. This command is like using '-b BFDNAME' on the command line (*note Command Line Options: Options.). If the 'TARGET' command is used but 'OUTPUT_FORMAT' is not, then the last 'TARGET' command is also d2754 1 a2754 1 *note MEMORY:: command. Each name corresponds to at most one memory d2759 1 a2759 1 The 'REGION_ALIAS' function creates an alias name ALIAS for the d2765 2 a2766 2 memory 'RAM' that allows code execution or data storage. Some may have a read-only, non-volatile memory 'ROM' that allows code execution and d2768 1 a2768 1 memory 'ROM2' with read-only data access and no code execution d2771 7 a2777 4 * '.text' program code; * '.rodata' read-only data; * '.data' read-write initialized data; * '.bss' read-write zero initialized data. d2783 1 a2783 1 'A', 'B' and 'C': d2789 4 a2792 4 The notation 'RAM/ROM' or 'RAM/ROM2' means that this section is loaded into region 'ROM' or 'ROM2' respectively. Please note that the load address of the '.data' section starts in all three variants at the end of the '.rodata' section. d2795 1 a2795 1 It includes the system dependent 'linkcmds.memory' file that describes d2823 5 a2827 5 Now we need three different 'linkcmds.memory' files to define memory regions and alias names. The content of 'linkcmds.memory' for the three variants 'A', 'B' and 'C': 'A' Here everything goes into the 'RAM'. d2837 6 a2842 5 'B' Program code and read-only data go into the 'ROM'. Read-write data goes into the 'RAM'. An image of the initialized data is loaded into the 'ROM' and will be copied during system start into the 'RAM'. d2853 6 a2858 5 'C' Program code goes into the 'ROM'. Read-only data goes into the 'ROM2'. Read-write data goes into the 'RAM'. An image of the initialized data is loaded into the 'ROM2' and will be copied during system start into the 'RAM'. d2872 1 a2872 1 copy the '.data' section from 'ROM' or 'ROM2' into the 'RAM' if d2896 1 a2896 1 'ASSERT(EXP, MESSAGE)' d2913 1 a2913 1 will fail if '__stack_size' is not defined elsewhere. Symbols d2926 1 a2926 1 'EXTERN(SYMBOL SYMBOL ...)' d2930 2 a2931 2 each 'EXTERN', and you may use 'EXTERN' multiple times. This command has the same effect as the '-u' command-line option. d2933 8 a2940 8 'FORCE_COMMON_ALLOCATION' This command has the same effect as the '-d' command-line option: to make 'ld' assign space to common symbols even if a relocatable output file is specified ('-r'). 'INHIBIT_COMMON_ALLOCATION' This command has the same effect as the '--no-define-common' command-line option: to make 'ld' omit the assignment of addresses d2943 3 a2945 9 'FORCE_GROUP_ALLOCATION' This command has the same effect as the '--force-group-allocation' command-line option: to make 'ld' place section group members like normal input sections, and to delete the section groups even if a relocatable output file is specified ('-r'). 'INSERT [ AFTER | BEFORE ] OUTPUT_SECTION' This command is typically used in a script specified by '-T' to augment the default 'SECTIONS' with, for example, overlays. It d2947 1 a2947 1 OUTPUT_SECTION, and also causes '-T' to not override the default d2951 2 a2952 2 the insertion, since '-T' scripts are parsed before the default linker script, statements in the '-T' script occur before the d2955 3 a2957 3 assignments will be made to '-T' output sections before those in the default script. Here is an example of how a '-T' script using 'INSERT' might look: d2969 2 a2970 2 'NOCROSSREFS(SECTION SECTION ...)' This command may be used to tell 'ld' to issue an error about any d2979 2 a2980 2 The 'NOCROSSREFS' command takes a list of output section names. If 'ld' detects any cross references between the sections, it reports d2982 1 a2982 1 'NOCROSSREFS' command uses output section names, not input section d2985 2 a2986 2 'NOCROSSREFS_TO(TOSECTION FROMSECTION ...)' This command may be used to tell 'ld' to issue an error about any d2989 1 a2989 1 The 'NOCROSSREFS' command is useful when ensuring that two or more d2991 1 a2991 1 where a one-way dependency is needed. For example, in a multi-core d2995 1 a2995 1 The 'NOCROSSREFS_TO' command takes a list of output section names. d2997 3 a2999 3 sections. If 'ld' detects any references to the first section from any of the other sections, it reports an error and returns a non-zero exit status. Note that the 'NOCROSSREFS_TO' command uses d3002 1 a3002 1 'OUTPUT_ARCH(BFDARCH)' d3005 2 a3006 2 see the architecture of an object file by using the 'objdump' program with the '-f' option. d3008 3 a3010 3 'LD_FEATURE(STRING)' This command may be used to modify 'ld' behavior. If STRING is '"SANE_EXPR"' then absolute symbols and numbers in a script are d3038 9 a3046 9 'SYMBOL = EXPRESSION ;' 'SYMBOL += EXPRESSION ;' 'SYMBOL -= EXPRESSION ;' 'SYMBOL *= EXPRESSION ;' 'SYMBOL /= EXPRESSION ;' 'SYMBOL <<= EXPRESSION ;' 'SYMBOL >>= EXPRESSION ;' 'SYMBOL &= EXPRESSION ;' 'SYMBOL |= EXPRESSION ;' d3048 2 a3049 2 The first case will define SYMBOL to the value of EXPRESSION. In the other cases, SYMBOL must already be defined, and the value will be d3052 2 a3053 2 The special symbol name '.' indicates the location counter. You may only use this within a 'SECTIONS' command. *Note Location Counter::. d3057 1 a3057 1 Expressions are defined below; see *note Expressions::. d3060 2 a3061 2 as statements within a 'SECTIONS' command, or as part of an output section description in a 'SECTIONS' command. d3064 1 a3064 1 expression; for more information, see *note Expression Section::. d3080 4 a3083 4 In this example, the symbol 'floating_point' will be defined as zero. The symbol '_etext' will be defined as the address following the last '.text' input section. The symbol '_bdata' will be defined as the address following the '.text' output section aligned upward to a 4 byte d3093 1 a3093 1 exported. The syntax is 'HIDDEN(SYMBOL = EXPRESSION)'. d3095 2 a3096 2 Here is the example from *note Simple Assignments::, rewritten to use 'HIDDEN': d3109 1 a3109 1 In this case none of the three symbols will be visible outside this d3120 5 a3124 5 the link. For example, traditional linkers defined the symbol 'etext'. However, ANSI C requires that the user be able to use 'etext' as a function name without encountering an error. The 'PROVIDE' keyword may be used to define a symbol, such as 'etext', only if it is referenced but not defined. The syntax is 'PROVIDE(SYMBOL = EXPRESSION)'. d3126 1 a3126 1 Here is an example of using 'PROVIDE' to define 'etext': d3137 1 a3137 1 In this example, if the program defines '_etext' (with a leading d3139 1 a3139 1 the other hand, the program defines 'etext' (with no leading d3141 1 a3141 1 If the program references 'etext' but does not define it, the linker d3150 2 a3151 2 Similar to 'PROVIDE'. For ELF targeted ports, the symbol will be hidden and won't be exported. d3167 5 a3171 5 prepend or append an underscore, and C++ performs extensive 'name mangling'. Therefore there might be a discrepancy between the name of a variable as it is used in source code and the name of the same variable as it is defined in a linker script. For example in C a linker script variable might be referred to as: d3192 2 a3193 2 creates an entry called 'foo' in the symbol table. This entry holds the address of an 'int' sized block of memory where the number 1000 is d3203 1 a3203 1 looks up the symbol 'foo' in the symbol table, gets the address d3209 1 a3209 1 looks up the symbol 'foo' in the symbol table, gets its address and d3211 1 a3211 1 variable 'a'. d3214 3 a3216 2 the symbol table but do not assign any memory to them. Thus they are an address without a value. So for example the linker script definition: d3220 1 a3220 1 creates an entry in the symbol table called 'foo' which holds the d3222 3 a3224 3 address 1000. This means that you cannot access the _value_ of a linker script defined symbol - it has no value - all you can do is access the _address_ of a linker script defined symbol. d3227 4 a3230 4 code you should always take the address of the symbol, and never attempt to use its value. For example suppose you want to copy the contents of a section of memory called .ROM into a section called .FLASH and the linker script contains these declarations: d3242 3 a3244 3 Note the use of the '&' operators. These are correct. Alternatively the symbols can be treated as the names of vectors or arrays and then the code will again work as expected: d3250 1 a3250 1 Note how using this method does not require the use of '&' operators. d3258 1 a3258 1 The 'SECTIONS' command tells the linker how to map input sections into d3261 1 a3261 1 The format of the 'SECTIONS' command is: d3271 2 a3272 1 * an 'ENTRY' command (*note Entry command: Entry Point.) d3274 1 d3276 1 d3279 2 a3280 2 The 'ENTRY' command and symbol assignments are permitted inside the 'SECTIONS' command for convenience in using the location counter in d3288 1 a3288 1 If you do not use a 'SECTIONS' command in your linker script, the d3337 1 d3339 1 d3341 1 d3352 3 a3354 3 limited number of sections, such as 'a.out', the name must be one of the names supported by the format ('a.out', for example, allows only '.text', '.data' or '.bss'). If the output format supports any number d3357 2 a3358 2 may consist of any sequence of characters, but a name which contains any unusual characters such as commas must be quoted. d3360 1 a3360 1 The output section name '/DISCARD/' is special; *note Output Section d3369 2 a3370 2 The ADDRESS is an expression for the VMA (the virtual memory address) of the output section. This address is optional, but if it is provided d3388 1 a3388 1 address will be the next free address in that region; *note d3403 9 a3411 9 are subtly different. The first will set the address of the '.text' output section to the current value of the location counter. The second will set it to the current value of the location counter aligned to the strictest alignment of any of the '.text' input sections. The ADDRESS may be an arbitrary expression; *note Expressions::. For example, if you want to align the section on a 0x10 byte boundary, so that the lowest four bits of the section address are zero, you could do something like this: d3413 2 a3414 2 This works because 'ALIGN' returns the current location counter aligned upward to the specified value. d3455 1 a3455 1 include all input '.text' sections, you would write: d3457 4 a3460 8 Here the '*' is a wildcard which matches any file name. To exclude a list of files from matching the file name wildcard, EXCLUDE_FILE may be used to match all files except the ones specified in the EXCLUDE_FILE list. For example: EXCLUDE_FILE (*crtend.o *otherfile.o) *(.ctors) will cause all .ctors sections from all files except 'crtend.o' and 'otherfile.o' to be included. The EXCLUDE_FILE can also be placed inside the section list, for example: d3462 2 a3463 3 The result of this is identically to the previous example. Supporting two syntaxes for EXCLUDE_FILE is useful if the section list contains more than one section, as described below. d3468 6 a3473 19 The difference between these is the order in which the '.text' and '.rdata' input sections will appear in the output section. In the first example, they will be intermingled, appearing in the same order as they are found in the linker input. In the second example, all '.text' input sections will appear first, followed by all '.rdata' input sections. When using EXCLUDE_FILE with more than one section, if the exclusion is within the section list then the exclusion only applies to the immediately following section, for example: *(EXCLUDE_FILE (*somefile.o) .text .rdata) will cause all '.text' sections from all files except 'somefile.o' to be included, while all '.rdata' sections from all files, including 'somefile.o', will be included. To exclude the '.rdata' sections from 'somefile.o' the example could be modified to: *(EXCLUDE_FILE (*somefile.o) .text EXCLUDE_FILE (*somefile.o) .rdata) Alternatively, placing the EXCLUDE_FILE outside of the section list, before the input file selection, will cause the exclusion to apply for all sections. Thus the previous example can be rewritten as: EXCLUDE_FILE (*somefile.o) *(.text .rdata) d3491 1 a3491 1 In this example, the output section '.text' will be comprised of any d3493 3 a3495 3 'SHF_MERGE' and 'SHF_STRINGS' are set. The output section '.text2' will be comprised of any input section matching the name *(.text) whose section header flag 'SHF_WRITE' is clear. d3501 1 a3501 1 'archive:file' d3503 2 a3504 1 'archive:' d3506 2 a3507 1 ':file' d3510 1 a3510 1 Either one or both of 'archive' and 'file' can contain shell d3512 6 a3517 6 single letter followed by a colon is a drive specifier, so 'c:myfile.o' is a simple file specification, not 'myfile.o' within an archive called 'c'. 'archive:file' filespecs may also be used within an 'EXCLUDE_FILE' list, but may not appear in other linker script contexts. For instance, you cannot extract a file from an archive by using 'archive:file' in an 'INPUT' command. d3524 7 a3530 7 When you use a file name which is not an 'archive:file' specifier and does not contain any wild card characters, the linker will first see if you also specified the file name on the linker command line or in an 'INPUT' command. If you did not, the linker will attempt to open the file as an input file, as though it appeared on the command line. Note that this differs from an 'INPUT' command, because the linker will not search for the file in the archive search path. d3541 1 a3541 1 The file name of '*' seen in many examples is a simple wildcard d3546 1 a3546 1 '*' d3548 2 a3549 1 '?' d3551 4 a3554 3 '[CHARS]' matches a single instance of any of the CHARS; the '-' character may be used to specify a range of characters, as in '[a-z]' to d3556 2 a3557 1 '\' d3561 4 a3564 4 will not match a '/' character (used to separate directory names on Unix). A pattern consisting of a single '*' character is an exception; it will always match any file name, whether it contains a '/' or not. In a section name, the wildcard characters will match a '/' character. d3567 2 a3568 2 specified on the command line or in an 'INPUT' command. The linker does not search directories to expand wildcards. d3574 1 a3574 1 'data.o' rule will not be used: d3580 3 a3582 3 change this by using the 'SORT_BY_NAME' keyword, which appears before a wildcard pattern in parentheses (e.g., 'SORT_BY_NAME(.text*)'). When the 'SORT_BY_NAME' keyword is used, the linker will sort the files or d3586 2 a3587 2 'SORT_BY_ALIGNMENT' is very similar to 'SORT_BY_NAME'. The difference is 'SORT_BY_ALIGNMENT' will sort sections into descending d3592 2 a3593 2 'SORT_BY_INIT_PRIORITY' is very similar to 'SORT_BY_NAME'. The difference is 'SORT_BY_INIT_PRIORITY' will sort sections into ascending d3597 1 a3597 1 'SORT' is an alias for 'SORT_BY_NAME'. d3602 13 a3614 10 1. 'SORT_BY_NAME' ('SORT_BY_ALIGNMENT' (wildcard section pattern)). It will sort the input sections by name first, then by alignment if two sections have the same name. 2. 'SORT_BY_ALIGNMENT' ('SORT_BY_NAME' (wildcard section pattern)). It will sort the input sections by alignment first, then by name if two sections have the same alignment. 3. 'SORT_BY_NAME' ('SORT_BY_NAME' (wildcard section pattern)) is treated the same as 'SORT_BY_NAME' (wildcard section pattern). 4. 'SORT_BY_ALIGNMENT' ('SORT_BY_ALIGNMENT' (wildcard section pattern)) is treated the same as 'SORT_BY_ALIGNMENT' (wildcard d3616 1 d3627 2 a3628 5 1. 'SORT_BY_NAME' (wildcard section pattern ) with '--sort-sections alignment' is equivalent to 'SORT_BY_NAME' ('SORT_BY_ALIGNMENT' (wildcard section pattern)). 2. 'SORT_BY_ALIGNMENT' (wildcard section pattern) with '--sort-section name' is equivalent to 'SORT_BY_ALIGNMENT' ('SORT_BY_NAME' d3630 4 d3638 1 a3638 1 'SORT_NONE' disables section sorting by ignoring the command line d3642 1 a3642 1 the '-M' linker option to generate a map file. The map file shows d3646 5 a3650 5 files. This linker script directs the linker to place all '.text' sections in '.text' and all '.bss' sections in '.bss'. The linker will place the '.data' section from all files beginning with an upper case character in '.DATA'; for all other files, the linker will place the '.data' section in '.data'. d3667 1 a3667 1 named 'COMMON'. d3669 1 a3669 1 You may use file names with the 'COMMON' section just as with any d3675 1 a3675 1 '.bss' section in the output file. For example: d3682 2 a3683 2 In the case of MIPS ELF, the linker uses 'COMMON' for standard common symbols and '.scommon' for small common symbols. This permits you to d3687 2 a3688 2 You will sometimes see '[COMMON]' in old linker scripts. This notation is now considered obsolete. It is equivalent to '*(COMMON)'. d3696 1 a3696 1 When link-time garbage collection is in use ('--gc-sections'), it is d3699 1 a3699 1 'KEEP()', as in 'KEEP(*(.init))' or 'KEEP(SORT_BY_NAME(*)(.ctors))'. d3708 7 a3714 7 to read all of the sections from file 'all.o' and place them at the start of output section 'outputa' which starts at location '0x10000'. All of section '.input1' from file 'foo.o' follows immediately, in the same output section. All of section '.input2' from 'foo.o' goes into output section 'outputb', followed by section '.input1' from 'foo1.o'. All of the remaining '.input1' and '.input2' sections from any files are written to output section 'outputc'. a3733 8 If an output section's name is the same as the input section's name and is representable as a C identifier, then the linker will automatically *note PROVIDE:: two symbols: __start_SECNAME and __stop_SECNAME, where SECNAME is the name of the section. These indicate the start address and end address of the output section respectively. Note: most section names are not representable as C identifiers because they contain a '.' character. d3741 1 a3741 1 'BYTE', 'SHORT', 'LONG', 'QUAD', or 'SQUAD' as an output section d3746 1 a3746 1 The 'BYTE', 'SHORT', 'LONG', and 'QUAD' commands store one, two, d3751 1 a3751 1 value of the symbol 'addr': d3755 1 a3755 1 When using a 64 bit host or target, 'QUAD' and 'SQUAD' are the same; d3757 2 a3758 2 are 32 bits, an expression is computed as 32 bits. In this case 'QUAD' stores a 32 bit value zero extended to 64 bits, and 'SQUAD' stores a 32 d3769 1 a3769 1 SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } } d3771 1 a3771 1 SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } } d3773 1 a3773 1 You may use the 'FILL' command to set the fill pattern for the d3777 1 a3777 1 with the value of the expression, repeated as necessary. A 'FILL' d3779 2 a3780 2 the section definition; by including more than one 'FILL' statement, you can have different fill patterns in different parts of an output d3784 1 a3784 1 value '0x90': d3787 1 a3787 1 The 'FILL' command is similar to the '=FILLEXP' output section d3789 2 a3790 2 'FILL' command, rather than the entire section. If both are used, the 'FILL' command takes precedence. *Note Output Section Fill::, for d3802 1 a3802 1 'CREATE_OBJECT_SYMBOLS' d3806 1 a3806 1 output section in which the 'CREATE_OBJECT_SYMBOLS' command d3812 1 a3812 1 'CONSTRUCTORS' d3818 1 a3818 1 name. For these object file formats, the 'CONSTRUCTORS' command d3820 2 a3821 2 section where the 'CONSTRUCTORS' command appears. The 'CONSTRUCTORS' command is ignored for other object file formats. d3823 3 a3825 3 The symbol '__CTOR_LIST__' marks the start of the global constructors, and the symbol '__CTOR_END__' marks the end. Similarly, '__DTOR_LIST__' and '__DTOR_END__' mark the start and d3830 4 a3833 4 normally calls constructors from a subroutine '__main'; a call to '__main' is automatically inserted into the startup code for 'main'. GNU C++ normally runs destructors either by using 'atexit', or directly from the function 'exit'. d3835 1 a3835 1 For object file formats such as 'COFF' or 'ELF' which support d3837 2 a3838 2 addresses of global constructors and destructors into the '.ctors' and '.dtors' sections. Placing the following sequence into your d3857 4 a3860 4 the 'CONSTRUCTORS' command, use 'SORT_BY_NAME(CONSTRUCTORS)' instead. When using the '.ctors' and '.dtors' sections, use '*(SORT_BY_NAME(.ctors))' and '*(SORT_BY_NAME(.dtors))' instead of just '*(.ctors)' and '*(.dtors)'. d3863 4 a3866 3 automatically, and you will not need to concern yourself with them. However, you may need to consider this if you are using C++ and writing your own linker scripts. d3875 2 a3876 2 This is for convenience when referring to input sections that may or may not be present in any of the input files. For example: d3878 4 a3881 4 will only create a '.foo' section in the output file if there is a '.foo' section in at least one input file, and if the input sections are not all empty. Other link script directives that allocate space in an output section will also create the output section. So too will d3883 3 a3885 3 for '. = 0', '. = . + 0', '. = sym', '. = . + sym' and '. = ALIGN (. != 0, expr, 1)' when 'sym' is an absolute symbol of value 0 defined in the script. This allows you to force output of an empty section with '. = d3894 1 a3894 1 The special output section name '/DISCARD/' may be used to discard d3896 1 a3896 1 section named '/DISCARD/' are not included in the output file. d3918 3 a3920 2 We've already described SECTION, ADDRESS, and OUTPUT-SECTION-COMMAND. In this section we will describe the remaining section attributes. d3942 1 a3942 1 'NOLOAD' d3945 5 a3949 4 'DSECT' 'COPY' 'INFO' 'OVERLAY' d3957 2 a3958 2 the section type. For example, in the script sample below, the 'ROM' section is addressed at memory location '0' and does not need to be d3972 1 a3972 1 *note Basic Script Concepts::. The virtual address is specified by the d3974 1 a3974 1 specified by the 'AT' or 'AT>' keywords. Specifying a load address is d3977 5 a3981 5 The 'AT' keyword takes an expression as an argument. This specifies the exact load address of the section. The 'AT>' keyword takes the name of a memory region as an argument. *Note MEMORY::. The load address of the section is set to the next free address in the region, aligned to the section's alignment requirements. d3983 1 a3983 1 If neither 'AT' nor 'AT>' is specified for an allocatable section, d3987 2 a3988 2 * If the section has a specific VMA address, then this is used as the LMA address as well. d3993 4 a3996 4 the current section, and this region contains at least one section, then the LMA is set so the difference between the VMA and LMA is the same as the difference between the VMA and LMA of the last section in the located region. d4006 4 a4009 4 called '.text', which starts at '0x1000', one called '.mdata', which is loaded at the end of the '.text' section even though its VMA is '0x2000', and one called '.bss' to hold uninitialized data at address '0x3000'. The symbol '_data' is defined with the value '0x2000', which d4046 1 a4046 1 You can increase an output section's alignment by using ALIGN. As an d4058 1 a4058 1 SUBALIGN. The value specified overrides any alignment given by input d4069 1 a4069 1 read-write by using the keyword 'ONLY_IF_RO' and 'ONLY_IF_RW' d4079 1 a4079 1 using '>REGION'. *Note MEMORY::. d4092 1 a4092 1 using ':PHDR'. *Note PHDRS::. If a section is assigned to one or more d4094 2 a4095 2 those segments as well, unless they use an explicitly ':PHDR' modifier. You can use ':NONE' to tell the linker to not put the section in any d4108 1 a4108 1 You can set the fill pattern for an entire section by using '=FILLEXP'. d4112 6 a4117 6 filled with the value, repeated as necessary. If the fill expression is a simple hex number, ie. a string of hex digit starting with '0x' and without a trailing 'k' or 'M', then an arbitrarily long sequence of hex digits can be used to specify the fill pattern; Leading zeros become part of the pattern too. For all other cases, including extra parentheses or a unary '+', the fill pattern is the four least d4121 1 a4121 1 You can also change the fill value with a 'FILL' command in the d4141 3 a4143 3 Overlays are described using the 'OVERLAY' command. The 'OVERLAY' command is used within a 'SECTIONS' command, like an output section description. The full syntax of the 'OVERLAY' command is as follows: d4161 6 a4166 5 Everything is optional except 'OVERLAY' (a keyword), and each section must have a name (SECNAME1 and SECNAME2 above). The section definitions within the 'OVERLAY' construct are identical to those within the general 'SECTIONS' construct (*note SECTIONS::), except that no addresses and no memory regions may be defined for sections within an 'OVERLAY'. d4174 1 a4174 1 'OVERLAY' as a whole (as with normal section definitions, the load d4179 5 a4183 5 If the 'NOCROSSREFS' keyword is used, and there are any references among the sections, the linker will report an error. Since the sections all run at the same address, it normally does not make sense for one section to refer directly to another. *Note NOCROSSREFS: Miscellaneous Commands. d4185 2 a4186 2 For each section within the 'OVERLAY', the linker automatically provides two symbols. The symbol '__load_start_SECNAME' is defined as d4188 1 a4188 1 '__load_stop_SECNAME' is defined as the final load address of the d4190 2 a4191 2 identifiers are removed. C (or assembler) code may use these symbols to move the overlaid sections around as necessary. d4198 1 a4198 1 'SECTIONS' construct. d4204 5 a4208 5 This will define both '.text0' and '.text1' to start at address 0x1000. '.text0' will be loaded at address 0x4000, and '.text1' will be loaded immediately after '.text0'. The following symbols will be defined if referenced: '__load_start_text0', '__load_stop_text0', '__load_start_text1', '__load_stop_text1'. d4210 2 a4211 2 C code to copy overlay '.text1' into the overlay area might look like the following. d4217 1 a4217 1 Note that the 'OVERLAY' command is just syntactic sugar, since d4236 1 a4236 1 memory. You can override this by using the 'MEMORY' command. d4238 1 a4238 1 The 'MEMORY' command describes the location and size of blocks of d4246 3 a4248 3 A linker script may contain many uses of the 'MEMORY' command, however, all memory blocks defined are treated as if they were specified inside a single 'MEMORY' command. The syntax for 'MEMORY' is: d4259 2 a4260 2 have a distinct name within the 'MEMORY' command. However you can add later alias names to existing memory regions with the *note d4265 1 a4265 1 not explicitly mapped in the linker script. As described in *note d4272 1 a4272 1 'R' d4274 2 a4275 1 'W' d4277 2 a4278 1 'X' d4280 2 a4281 1 'A' d4283 2 a4284 1 'I' d4286 5 a4290 3 'L' Same as 'I' '!' d4294 3 a4296 3 '!', it will be placed in the memory region. The '!' attribute reverses this test, so that an unmapped section will be placed in the memory region only if it does not match any of the listed attributes. d4299 3 a4301 3 memory region. The expression must evaluate to a constant and it cannot involve any symbols. The keyword 'ORIGIN' may be abbreviated to 'org' or 'o' (but not, for example, 'ORG'). d4304 3 a4306 3 As with the ORIGIN expression, the expression must be numerical only and must evaluate to a constant. The keyword 'LENGTH' may be abbreviated to 'len' or 'l'. d4309 3 a4311 3 regions available for allocation: one starting at '0' for 256 kilobytes, and the other starting at '0x40000000' for four megabytes. The linker will place into the 'rom' memory region every section which is not d4314 1 a4314 1 explicitly mapped into a memory region into the 'ram' memory region. d4323 1 a4323 1 specific output sections into that memory region by using the '>REGION' d4325 1 a4325 1 named 'mem', you would use '>mem' in the output section definition. d4333 1 a4333 1 expression via the 'ORIGIN(MEMORY)' and 'LENGTH(MEMORY)' functions: d4345 2 a4346 2 loaded into memory. You can print them out by using the 'objdump' program with the '-p' option. d4356 7 a4362 7 precisely. You may use the 'PHDRS' command for this purpose. When the linker sees the 'PHDRS' command in the linker script, it will not create any program headers other than the ones specified. The linker only pays attention to the 'PHDRS' command when generating an ELF output file. In other cases, the linker will simply ignore 'PHDRS'. d4364 2 a4365 2 This is the syntax of the 'PHDRS' command. The words 'PHDRS', 'FILEHDR', 'AT', and 'FLAGS' are keywords. d4373 1 a4373 1 The NAME is used only for reference in the 'SECTIONS' command of the d4383 1 a4383 1 sections in the segments. You use the ':PHDR' output section attribute d4389 1 a4389 1 repeat ':PHDR', using it once for each segment which should contain the d4392 1 a4392 1 If you place a section in one or more segments using ':PHDR', then d4394 1 a4394 1 specify ':PHDR' in the same segments. This is for convenience, since d4396 1 a4396 1 segment. You can use ':NONE' to override the default segment and tell d4399 1 a4399 1 You may use the 'FILEHDR' and 'PHDRS' keywords after the program d4401 2 a4402 2 'FILEHDR' keyword means that the segment should include the ELF file header. The 'PHDRS' keyword means that the segment should include the d4404 1 a4404 1 ('PT_LOAD'), all prior loadable segments must have one of these d4407 2 a4408 2 The TYPE may be one of the following. The numbers indicate the value of the keyword. d4410 1 a4410 1 'PT_NULL' (0) d4413 3 a4415 3 'PT_LOAD' (1) Indicates that this program header describes a segment to be loaded from the file. d4417 1 a4417 1 'PT_DYNAMIC' (2) d4420 1 a4420 1 'PT_INTERP' (3) d4424 1 a4424 1 'PT_NOTE' (4) d4427 1 a4427 1 'PT_SHLIB' (5) d4431 1 a4431 1 'PT_PHDR' (6) a4433 3 'PT_TLS' (7) Indicates a segment containing thread local storage. d4439 3 a4441 3 address in memory by using an 'AT' expression. This is identical to the 'AT' command used as an output section attribute (*note Output Section LMA::). The 'AT' command for a program header overrides the output d4445 1 a4445 1 which comprise the segment. You may use the 'FLAGS' keyword to d4447 1 a4447 1 integer. It is used to set the 'p_flags' field of the program header. d4449 1 a4449 1 Here is an example of 'PHDRS'. This shows a typical set of program d4480 1 a4480 1 The linker supports symbol versions when using ELF. Symbol versions are d4488 1 a4488 1 can also use the '--version-script' linker option. d4490 1 a4490 1 The syntax of the 'VERSION' command is simply d4522 1 a4522 1 }; d4526 2 a4527 2 version node defined is 'VERS_1.1'; it has no other dependencies. The script binds the symbol 'foo1' to 'VERS_1.1'. It reduces a number of d4529 14 a4542 14 shared library; this is done using wildcard patterns, so that any symbol whose name begins with 'old', 'original', or 'new' is matched. The wildcard patterns available are the same as those used in the shell when matching filenames (also known as "globbing"). However, if you specify the symbol name inside double quotes, then the name is treated as literal, rather than as a glob pattern. Next, the version script defines node 'VERS_1.2'. This node depends upon 'VERS_1.1'. The script binds the symbol 'foo2' to the version node 'VERS_1.2'. Finally, the version script defines node 'VERS_2.0'. This node depends upon 'VERS_1.2'. The scripts binds the symbols 'bar1' and 'bar2' are bound to the version node 'VERS_2.0'. d4547 1 a4547 1 unspecified symbols to a given version node by using 'global: *;' d4555 2 a4556 2 what they might suggest to the person reading them. The '2.0' version could just as well have appeared in between '1.1' and '1.2'. However, d4559 2 a4560 2 Node name can be omitted, provided it is the only version node in the version script. Such version script doesn't assign any versions to d4593 5 a4597 4 in the C source file. This renames the function 'original_foo' to be an alias for 'foo' bound to the version node 'VERS_1.1'. The 'local:' directive can be used to prevent the symbol 'original_foo' from being exported. A '.symver' directive takes precedence over a version script. d4605 1 a4605 1 To do this, you must use multiple '.symver' directives in the source d4613 1 a4613 1 In this example, 'foo@@' represents the symbol 'foo' bound to the d4615 2 a4616 2 this example would define 4 C functions: 'original_foo', 'old_foo', 'old_foo1', and 'new_foo'. d4620 2 a4621 2 this symbol will be bound. You can do this with the 'foo@@@@VERS_2.0' type of '.symver' directive. You can only declare one version of a d4626 3 a4628 3 within the shared library, you can use the aliases of convenience (i.e., 'old_foo'), or you can use the '.symver' directive to specifically bind to an external version of the function in question. d4634 1 a4634 1 The supported 'lang's are 'C', 'C++', and 'Java'. The linker will d4636 2 a4637 2 according to 'lang' before matching them to the patterns specified in 'version-script-commands'. The default 'lang' is 'C'. d4640 3 a4642 3 described above, you can use a glob pattern to match demangled names, or you can use a double-quoted string to match the string exactly. In the latter case, be aware that minor differences (such as differing d4685 10 a4694 10 As in C, the linker considers an integer beginning with '0' to be octal, and an integer beginning with '0x' or '0X' to be hexadecimal. Alternatively the linker accepts suffixes of 'h' or 'H' for hexadecimal, 'o' or 'O' for octal, 'b' or 'B' for binary and 'd' or 'D' for decimal. Any integer value without a prefix or a suffix is considered to be decimal. In addition, you can use the suffixes 'K' and 'M' to scale a constant by '1024' or '1024*1024' respectively. For example, the following all refer to the same quantity: d4701 1 a4701 1 Note - the 'K' and 'M' suffixes cannot be used in conjunction with d4711 1 a4711 1 'CONSTANT(NAME)' operator, where NAME is one of: d4713 1 a4713 1 'MAXPAGESIZE' d4716 1 a4716 1 'COMMONPAGESIZE' d4741 2 a4742 2 safest to delimit symbols with spaces. For example, 'A-B' is one symbol, whereas 'A - B' is an expression involving subtraction. d4751 10 a4760 22 explicitly placed into the output file by the linker script. The linker will still copy these sections into the output file by either finding, or creating a suitable output section in which to place the orphaned input section. If the name of an orphaned input section exactly matches the name of an existing output section, then the orphaned input section will be placed at the end of that output section. If there is no output section with a matching name then new output sections will be created. Each new output section will have the same name as the orphan section placed within it. If there are multiple orphan sections with the same name, these will all be combined into one new output section. If new output sections are created to hold orphaned input sections, then the linker must decide where to place these new output sections in relation to existing output sections. On most modern targets, the linker attempts to place orphan sections after sections of the same attribute, such as code vs data, loadable vs non-loadable, etc. If no sections with matching attributes are found, or your target lacks this support, the orphan section is placed at the end of the file. d4762 1 a4762 1 The command line options '--orphan-handling' and '--unique' (*note d4766 7 d4779 11 a4789 11 The special linker variable "dot" '.' always contains the current output location counter. Since the '.' always refers to a location in an output section, it may only appear in an expression within a 'SECTIONS' command. The '.' symbol may appear anywhere that an ordinary symbol is allowed in an expression. Assigning a value to '.' will cause the location counter to be moved. This may be used to create holes in the output section. The location counter may not be moved backwards inside an output section, and may not be moved backwards outside of an output section if so doing creates areas with overlapping LMAs. d4802 11 a4812 11 In the previous example, the '.text' section from 'file1' is located at the beginning of the output section 'output'. It is followed by a 1000 byte gap. Then the '.text' section from 'file2' appears, also with a 1000 byte gap following before the '.text' section from 'file3'. The notation '= 0x12345678' specifies what data to write in the gaps (*note Output Section Fill::). Note: '.' actually refers to the byte offset from the start of the current containing object. Normally this is the 'SECTIONS' statement, whose start address is 0, hence '.' can be used as an absolute address. If '.' is used inside a section description however, it refers to the d4830 1 a4830 1 The '.text' section will be assigned a starting address of 0x100 and d4832 6 a4837 6 '.text' input sections to fill this area. (If there is too much data, an error will be produced because this would be an attempt to move '.' backwards). The '.data' section will start at 0x500 and it will have an extra 0x600 bytes worth of space after the end of the values from the '.data' input sections and before the end of the '.data' output section itself. d4854 1 a4854 1 If the linker needs to place some input section, e.g. '.rodata', not d4856 1 a4856 1 '.text' and '.data'. You might think the linker should place '.rodata' d4861 2 a4862 2 output section, except for the special case of an assignment to '.'. I.e., the linker will place the orphan '.rodata' section as if the d4878 1 a4878 1 'start_of_data'. One way to influence the orphan section placement is d4880 1 a4880 1 assignment to '.' is setting the start address of a following output d4896 2 a4897 2 Now, the orphan '.rodata' section will be placed between 'end_of_text' and 'start_of_data'. d4947 1 a4947 1 '.', must be evaluated during section allocation. d4957 1 a4957 1 will cause the error message 'non constant expression for initial d4967 3 a4969 3 relative symbol is relocatable. If you request relocatable output using the '-r' option, a further link operation may change the value of a section relative symbol. On the other hand, an absolute symbol will d4974 1 a4974 1 address, such as 'ADDR', 'LOADADDR', 'ORIGIN' and 'SEGMENT_START'. d4976 2 a4977 2 non-address value, such as 'LENGTH'. One complication is that unless you set 'LD_FEATURE ("SANE_EXPR")' (*note Miscellaneous Commands::), d4979 1 a4979 1 location, for compatibility with older versions of 'ld'. Expressions d4982 1 a4982 1 definition treat absolute symbols as numbers. If 'LD_FEATURE d5001 3 a5003 3 both '.' and '__executable_start' are set to the absolute address 0x100 in the first two assignments, then both '.' and '__data_start' are set to 0x10 relative to the '.data' section in the second two d5012 1 d5017 1 d5026 3 a5028 1 * The result of comparisons, '&&' and '||' is also a number. d5031 2 a5032 3 (after above conversions) is also a number when 'LD_FEATURE ("SANE_EXPR")' or inside an output section definition but an absolute address otherwise. d5036 1 d5040 4 a5043 4 You can use the builtin function 'ABSOLUTE' to force an expression to be absolute when it would otherwise be relative. For example, to create an absolute symbol set to the address of the end of the output section '.data': d5048 2 a5049 2 If 'ABSOLUTE' were not used, '_edata' would be relative to the '.data' section. d5051 1 a5051 1 Using 'LOADADDR' also forces an expression absolute, since this d5063 1 a5063 1 'ABSOLUTE(EXP)' d5070 1 a5070 1 'ADDR(SECTION)' d5073 3 a5075 3 following example, 'start_of_output_1', 'symbol_1' and 'symbol_2' are assigned equivalent values, except that 'symbol_1' will be relative to the '.output1' section while the other two will be d5090 4 a5093 4 'ALIGN(ALIGN)' 'ALIGN(EXP,ALIGN)' Return the location counter ('.') or arbitrary expression aligned to the next ALIGN boundary. The single operand 'ALIGN' doesn't d5095 7 a5101 7 on it. The two operand 'ALIGN' allows an arbitrary expression to be aligned upwards ('ALIGN(ALIGN)' is equivalent to 'ALIGN(ABSOLUTE(.), ALIGN)'). Here is an example which aligns the output '.data' section to the next '0x2000' byte boundary after the preceding section and sets a variable within the section to the next '0x8000' boundary after the d5109 14 a5122 13 The first use of 'ALIGN' in this example specifies the location of a section because it is used as the optional ADDRESS attribute of a section definition (*note Output Section Address::). The second use of 'ALIGN' is used to defines the value of a symbol. The builtin function 'NEXT' is closely related to 'ALIGN'. 'ALIGNOF(SECTION)' Return the alignment in bytes of the named SECTION, if that section has been allocated. If the section has not been allocated when this is evaluated, the linker will report an error. In the following example, the alignment of the '.output' section is stored as the first value in that section. d5130 2 a5131 2 'BLOCK(EXP)' This is a synonym for 'ALIGN', for compatibility with older linker d5135 1 a5135 1 'DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)' d5143 1 a5143 1 expression and 'DATA_SEGMENT_END') than the former or not. If the d5148 1 a5148 1 This expression can only be used directly in 'SECTIONS' commands, d5151 2 a5152 4 should be the system page size the object wants to be optimized for while still running on system page sizes up to MAXPAGESIZE. Note however that '-z relro' protection will not be effective if the system page size is larger than COMMONPAGESIZE. d5157 2 a5158 2 'DATA_SEGMENT_END(EXP)' This defines the end of data segment for 'DATA_SEGMENT_ALIGN' d5163 8 a5170 8 'DATA_SEGMENT_RELRO_END(OFFSET, EXP)' This defines the end of the 'PT_GNU_RELRO' segment when '-z relro' option is used. When '-z relro' option is not present, 'DATA_SEGMENT_RELRO_END' does nothing, otherwise 'DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is aligned to the COMMONPAGESIZE argument given to 'DATA_SEGMENT_ALIGN'. If present in the linker script, it must be placed between 'DATA_SEGMENT_ALIGN' and 'DATA_SEGMENT_END'. Evaluates to the d5172 1 a5172 1 'PT_GNU_RELRO' segment due to section alignment. d5176 1 a5176 1 'DEFINED(SYMBOL)' d5181 2 a5182 2 set a global symbol 'begin' to the first location in the '.text' section--but if a symbol called 'begin' already existed, its value d5193 1 a5193 1 'LENGTH(MEMORY)' d5196 1 a5196 1 'LOADADDR(SECTION)' d5200 1 a5200 1 'LOG2CEIL(EXP)' d5202 1 a5202 1 'LOG2CEIL(0)' returns 0. d5204 1 a5204 1 'MAX(EXP1, EXP2)' d5207 1 a5207 1 'MIN(EXP1, EXP2)' d5210 1 a5210 1 'NEXT(EXP)' d5212 2 a5213 2 This function is closely related to 'ALIGN(EXP)'; unless you use the 'MEMORY' command to define discontinuous memory for the output d5216 1 a5216 1 'ORIGIN(MEMORY)' d5219 8 a5226 7 'SEGMENT_START(SEGMENT, DEFAULT)' Return the base address of the named SEGMENT. If an explicit value has already been given for this segment (with a command-line '-T' option) then that value will be returned otherwise the value will be DEFAULT. At present, the '-T' command-line option can only be used to set the base address for the "text", "data", and "bss" sections, but you can use 'SEGMENT_START' with any segment name. d5228 1 a5228 1 'SIZEOF(SECTION)' d5232 1 a5232 1 example, 'symbol_1' and 'symbol_2' are assigned identical values: d5243 2 a5244 2 'SIZEOF_HEADERS' 'sizeof_headers' d5246 2 a5247 2 information which appears at the start of the output file. You can use this number when setting the start address of the first d5251 1 a5251 1 'SIZEOF_HEADERS' builtin function, the linker must compute the d5254 1 a5254 1 additional program headers, it will report an error 'not enough d5256 1 a5256 1 using the 'SIZEOF_HEADERS' function, or you must rework your linker d5259 1 a5259 1 'PHDRS' command (*note PHDRS::). d5275 1 a5275 1 assignments, or the 'INPUT', 'GROUP', or 'VERSION' commands. d5287 2 a5288 2 'ld' has additional features on some platforms; the following sections describe them. Machines where 'ld' has no additional functionality are d5293 34 a5326 18 * H8/300:: 'ld' and the H8/300 * i960:: 'ld' and the Intel 960 family * M68HC11/68HC12:: 'ld' and the Motorola 68HC11 and 68HC12 families * ARM:: 'ld' and the ARM family * HPPA ELF32:: 'ld' and HPPA 32-bit ELF * M68K:: 'ld' and the Motorola 68K family * MIPS:: 'ld' and the MIPS family * MMIX:: 'ld' and MMIX * MSP430:: 'ld' and MSP430 * NDS32:: 'ld' and NDS32 * Nios II:: 'ld' and the Altera Nios II * PowerPC ELF32:: 'ld' and PowerPC 32-bit ELF Support * PowerPC64 ELF64:: 'ld' and PowerPC64 64-bit ELF Support * S/390 ELF:: 'ld' and S/390 ELF Support * SPU ELF:: 'ld' and SPU ELF Support * TI COFF:: 'ld' and TI COFF * WIN32:: 'ld' and WIN32 (cygwin/mingw) * Xtensa:: 'ld' and Xtensa Processors d5331 1 a5331 1 4.1 'ld' and the H8/300 d5334 2 a5335 2 For the H8/300, 'ld' can perform these global optimizations when you specify the '--relax' command-line option. d5338 1 a5338 1 'ld' finds all 'jsr' and 'jmp' instructions whose targets are d5340 1 a5340 1 relative 'bsr' and 'bra' instructions, respectively. d5343 1 a5343 1 'ld' finds all 'mov.b' instructions which use the sixteen-bit d5346 1 a5346 1 linker turns 'mov.b '@@'AA:16' into 'mov.b '@@'AA:8' whenever the d5349 1 a5349 1 'ld' finds all 'mov' instructions which use the register indirect d5353 2 a5354 2 'mov.b '@@'D:32,ERx' into 'mov.b '@@'D:16,ERx' whenever the displacement D is in the 16 bit signed integer range. Only d5358 1 a5358 1 'ld' finds all bit manipulation instructions like 'band, bclr, d5362 2 a5363 2 address form. (That is: the linker turns 'bset #xx:3,'@@'AA:32' into 'bset #xx:3,'@@'AA:8' whenever the address AA is in the top d5367 1 a5367 1 'ld' finds all 'ldc.w, stc.w' instructions which use the 32 bit d5370 1 a5370 1 turns 'ldc.w '@@'AA:32,ccr' into 'ldc.w '@@'AA:16,ccr' whenever the d5376 1 a5376 1 4.2 'ld' and the Intel 960 Family d5379 1 a5379 1 You can use the '-AARCHITECTURE' command line option to specify one of d5383 7 a5389 7 strategy for archive libraries, to support the use of libraries specific to each particular architecture, by including in the search loop names suffixed with the string identifying the architecture. For example, if your 'ld' command line included '-ACA' as well as '-ltry', the linker would look (in its built-in search paths, and in any paths you specify with '-L') for a library with the names d5397 1 a5397 1 two are due to the use of '-ACA'. d5399 1 a5399 1 You can meaningfully use '-A' more than once on a command line, since d5401 1 a5401 1 each use will add another pair of name variants to search for when '-l' d5404 2 a5405 2 'ld' supports the '--relax' option for the i960 family. If you specify '--relax', 'ld' finds all 'balx' and 'calx' instructions whose d5407 2 a5408 2 relative 'bal' and 'cal' instructions, respectively. 'ld' also turns 'cal' instructions into 'bal' instructions when it determines that the d5415 1 a5415 1 4.3 'ld' and the Motorola 68HC11 and 68HC12 families d5421 2 a5422 2 For the Motorola 68HC11, 'ld' can perform these global optimizations when you specify the '--relax' command-line option. d5425 1 a5425 1 'ld' finds all 'jsr' and 'jmp' instructions whose targets are d5427 1 a5427 1 relative 'bsr' and 'bra' instructions, respectively. d5429 1 a5429 1 'ld' also looks at all 16-bit extended addressing modes and d5434 1 a5434 1 When 'gcc' is called with '-mrelax', it can emit group of d5436 1 a5436 1 addressing mode. These instructions consists of 'bclr' or 'bset' d5439 1 d5443 2 a5444 2 For 68HC11 and 68HC12, 'ld' can generate trampoline code to call a far function using a normal 'jsr' instruction. The linker will also change d5446 2 a5447 2 instead of the function address. This is typically the case when a pointer to a function is taken. The pointer will in fact point to the d5453 1 a5453 1 4.4 'ld' and the ARM family d5456 1 a5456 1 For the ARM, 'ld' will generate code stubs to allow functions calls d5458 1 a5458 1 been compiled and assembled with the '-mthumb-interwork' command line d5461 4 a5464 4 option then the '--support-old-code' command line switch should be given to the linker. This will make it generate larger stub functions which will work with non-interworking aware ARM code. Note, however, the linker does not support generating stubs for function calls to d5467 1 a5467 1 The '--thumb-entry' switch is a duplicate of the generic '--entry' d5473 14 a5486 14 The '--use-nul-prefixed-import-tables' switch is specifying, that the import tables idata4 and idata5 have to be generated with a zero element prefix for import libraries. This is the old style to generate import tables. By default this option is turned off. The '--be8' switch instructs 'ld' to generate BE8 format executables. This option is only valid when linking big-endian objects - ie ones which have been assembled with the '-EB' option. The resulting image will contain big-endian data and little-endian code. The 'R_ARM_TARGET1' relocation is typically used for entries in the '.init_array' section. It is interpreted as either 'R_ARM_REL32' or 'R_ARM_ABS32', depending on the target. The '--target1-rel' and '--target1-abs' switches override the default. d5488 2 a5489 2 The '--target2=type' switch overrides the default definition of the 'R_ARM_TARGET2' relocation. Valid values for 'type', their meanings, d5491 8 a5498 6 'rel' 'R_ARM_REL32' (arm*-*-elf, arm*-*-eabi) 'abs' 'R_ARM_ABS32' (arm*-*-symbianelf) 'got-rel' 'R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd) d5500 1 a5500 1 The 'R_ARM_V4BX' relocation (defined by the ARM AAELF specification) d5506 3 a5508 3 In the latter case, the switch '--fix-v4bx' must be passed to the linker, which causes v4t 'BX rM' instructions to be rewritten as 'MOV PC,rM', since v4 processors do not have a 'BX' instruction. d5510 1 a5510 1 In the former case, the switch should not be used, and 'R_ARM_V4BX' d5513 1 a5513 1 Replace 'BX rM' instructions identified by 'R_ARM_V4BX' relocations d5522 2 a5523 2 clobbers the condition flags, so may cause incorrect program behavior in rare cases. d5525 1 a5525 1 The '--use-blx' switch enables the linker to use ARM/Thumb BLX d5529 1 a5529 1 entry. This should lead to such calls executing slightly faster. d5534 1 a5534 1 The '--vfp11-denorm-fix' switch enables a link-time workaround for a d5543 1 a5543 1 at least two intervening instructions if vector mode is in use. The bug d5545 1 a5545 1 workaround if you are using "runfast" mode. Please contact ARM for d5549 2 a5550 2 workaround by specifying the linker option '--vfp-denorm-fix=scalar' if you are using the VFP11 scalar mode only, or '--vfp-denorm-fix=vector' d5552 1 a5552 1 The default is '--vfp-denorm-fix=none'. d5555 2 a5556 2 potentially-troublesome sequences, and a veneer is created for each such sequence which may trigger the erratum. The veneer consists of the d5558 3 a5560 4 instruction. The original instruction is then replaced with a branch to the veneer. The extra cycles required to call and return from the veneer are sufficient to avoid the erratum in both the scalar and vector cases. d5562 1 a5562 1 The '--fix-arm1176' switch enables a link-time workaround for an d5564 2 a5565 2 default if you are targeting ARM v6 (excluding ARM v6T2) or earlier. It can be disabled unconditionally by specifying '--no-fix-arm1176'. d5571 1 a5571 1 The '--fix-stm32l4xx-629360' switch enables a link-time workaround d5577 1 a5577 1 LDM, POP and floating-point loads such as VLDM, VPOP. Stores are not d5584 1 a5584 1 '--fix-stm32l4xx-629360=none'. If you know you are using buggy d5586 2 a5587 2 linker option '--fix-stm32l4xx-629360', or the equivalent '--fix-stm32l4xx-629360=default'. d5590 2 a5591 2 potentially-troublesome sequences, and a veneer is created for each such sequence which may trigger the erratum. The veneer consists in a d5605 1 a5605 1 PC-relative branch instruction if the '.text' section is too large. In d5609 1 a5609 1 The '--no-enum-size-warning' switch prevents the linker from warning d5616 5 a5620 5 The '--no-wchar-size-warning' switch prevents the linker from warning when linking object files that specify incompatible EABI 'wchar_t' size attributes. For example, with this switch enabled, linking of an object file using 32-bit 'wchar_t' values with another using 16-bit 'wchar_t' values will not be diagnosed. d5622 1 a5622 1 The '--pic-veneer' switch makes the linker use PIC sequences for d5624 1 a5624 1 PIC. This avoids problems on uClinux targets where '--emit-relocs' is d5629 8 a5636 7 perform a function call to a symbol that is too far away. The placement of these sequences of instructions - called stubs - is controlled by the command line option '--stub-group-size=N'. The placement is important because a poor choice can create a need for duplicate stubs, increasing the code size. The linker will try to group stubs together in order to reduce interruptions to the flow of code, but it needs guidance as to how big these groups should be and where they should be placed. d5638 1 a5638 1 The value of 'N', the parameter to the '--stub-group-size=' option d5642 1 a5642 1 branches that need them. If the value of 'N' is 1 (either +1 or -1) d5644 1 a5644 1 using its built in heuristics. A value of 'N' greater than 1 (or d5646 1 a5646 1 service at most 'N' bytes from the input sections. d5648 1 a5648 1 The default, if '--stub-group-size=' is not specified, is 'N = +1'. d5654 1 a5654 1 The '--fix-cortex-a8' switch enables a link-time workaround for an d5657 2 a5658 2 be enabled otherwise by specifying '--fix-cortex-a8', or disabled unconditionally by specifying '--no-fix-cortex-a8'. d5663 1 a5663 1 The '--fix-cortex-a53-835769' switch enables a link-time workaround d5666 2 a5667 2 by specifying '--fix-cortex-a53-835769', or disabled unconditionally by specifying '--no-fix-cortex-a53-835769'. d5671 1 a5671 1 The '--no-merge-exidx-entries' switch disables the merging of d5674 1 a5674 1 The '--long-plt' option enables the use of 16 byte PLT entries which d5678 1 a5678 1 The '--no-apply-dynamic-relocs' option makes AArch64 linker do not a5680 20 All SG veneers are placed in the special output section '.gnu.sgstubs'. Its start address must be set, either with the command line option '--section-start' or in a linker script, to indicate where to place these veneers in memory. The '--cmse-implib' option requests that the import libraries specified by the '--out-implib' and '--in-implib' options are secure gateway import libraries, suitable for linking a non-secure executable against secure code as per ARMv8-M Security Extensions. The '--in-implib=file' specifies an input import library whose symbols must keep the same address in the executable being produced. A warning is given if no '--out-implib' is given but new symbols have been introduced in the executable that should be listed in its import library. Otherwise, if '--out-implib' is specified, the symbols are added to the output import library. A warning is also given if some symbols present in the input import library have disappeared from the executable. This option is only effective for Secure Gateway import libraries, ie. when '--cmse-implib' is specified. d5684 1 a5684 1 4.5 'ld' and HPPA 32-bit ELF Support d5687 1 a5687 1 When generating a shared library, 'ld' will by default generate import d5689 1 a5689 1 '--multi-subspace' switch causes 'ld' to generate export stubs, and d5693 2 a5694 2 Long branch stubs and import/export stubs are placed by 'ld' in stub sections located between groups of input sections. '--stub-group-size' d5696 10 a5705 10 stub section. Since branch offsets are signed, a stub section may serve two groups of input sections, one group before the stub section, and one group after it. However, when using conditional branches that require stubs, it may be better (for branch prediction) that stub sections only serve one group of input sections. A negative value for 'N' chooses this scheme, ensuring that branches to stubs always use a negative offset. Two special values of 'N' are recognized, '1' and '-1'. These both instruct 'ld' to automatically size input section groups for the branch types detected, with the same behaviour regarding stub placement as other positive or negative values of 'N' respectively. d5707 1 a5707 1 Note that '--stub-group-size' does not split input sections. A d5715 1 a5715 1 4.6 'ld' and the Motorola 68K family d5718 5 a5722 5 The '--got=TYPE' option lets you choose the GOT generation scheme. The choices are 'single', 'negative', 'multigot' and 'target'. When 'target' is selected the linker chooses the default GOT generation scheme for the current target. 'single' tells the linker to generate a single GOT with entries only at non-negative offsets. 'negative' d5725 1 a5725 1 'multigot' allows the linker to generate several GOTs in the output d5733 1 a5733 1 4.7 'ld' and the MIPS family d5736 6 a5741 16 The '--insn32' and '--no-insn32' options control the choice of microMIPS instructions used in code generated by the linker, such as that in the PLT or lazy binding stubs, or in relaxation. If '--insn32' is used, then the linker only uses 32-bit instruction encodings. By default or if '--no-insn32' is used, all instruction encodings are used, including 16-bit ones where possible. The '--ignore-branch-isa' and '--no-ignore-branch-isa' options control branch relocation checks for invalid ISA mode transitions. If '--ignore-branch-isa' is used, then the linker accepts any branch relocations and any ISA mode transition required is lost in relocation calculation, except for some cases of 'BAL' instructions which meet relaxation conditions and are converted to equivalent 'JALX' instructions as the associated relocation is calculated. By default or if '--no-ignore-branch-isa' is used a check is made causing the loss of an ISA mode transition to produce an error. d5746 1 a5746 1 4.8 'ld' and MMIX d5749 3 a5751 3 For MMIX, there is a choice of generating 'ELF' object files or 'mmo' object files when linking. The simulator 'mmix' understands the 'mmo' format. The binutils 'objcopy' utility can translate between the two d5754 1 a5754 1 There is one special section, the '.MMIX.reg_contents' section. d5758 2 a5759 2 '.MMIX.reg_contents' section corresponds to the first allocated global register multiplied by 8. Register '$255' is not included in this d5761 1 a5761 1 'Main' for 'mmo' files. d5763 2 a5764 2 Global symbols with the prefix '__.MMIX.start.', for example '__.MMIX.start..text' and '__.MMIX.start..data' are special. The d5774 1 a5774 1 4.9 'ld' and MSP430 d5778 2 a5779 2 '-m [mpu type]' will select an appropriate linker script for selected MPU type. (To get a list of known MPUs just pass '-m help' option to d5785 1 a5785 1 ''.vectors'' d5788 1 a5788 1 ''.bootloader'' d5792 1 a5792 1 ''.infomem'' d5796 2 a5797 2 ''.infomemnobits'' This is the same as the '.infomem' section except that any code in d5800 2 a5801 2 ''.noinit'' Denotes a portion of RAM located above '.bss' section. a5804 18 '--code-region=[either,lower,upper,none]' This will transform .text* sections to [either,lower,upper].text* sections. The argument passed to GCC for -mcode-region is propagated to the linker using this option. '--data-region=[either,lower,upper,none]' This will transform .data*, .bss* and .rodata* sections to [either,lower,upper].[data,bss,rodata]* sections. The argument passed to GCC for -mdata-region is propagated to the linker using this option. '--disable-sec-transformation' Prevent the transformation of sections as specified by the '--code-region' and '--data-region' options. This is useful if you are compiling and linking using a single call to the GCC wrapper, and want to compile the source files using -m[code,data]-region but not transform the sections for prebuilt libraries and objects. d5808 1 a5808 1 4.10 'ld' and NDS32 d5814 1 a5814 1 ''--m[no-]fp-as-gp'' d5817 1 a5817 1 ''--mexport-symbols=FILE'' d5820 1 a5820 1 ''--m[no-]ex9'' d5823 1 a5823 1 ''--mexport-ex9=FILE'' d5826 1 a5826 1 ''--mimport-ex9=FILE'' d5829 1 a5829 1 ''--mupdate-ex9'' d5832 1 a5832 1 ''--mex9-limit=NUM'' d5835 1 a5835 1 ''--mex9-loop-aware'' d5838 1 a5838 1 ''--m[no-]ifc'' d5841 1 a5841 1 ''--mifc-loop-aware'' d5847 1 a5847 1 4.11 'ld' and the Altera Nios II d5852 4 a5855 4 which may result in 'ld' giving 'relocation truncated to fit' errors with very large programs. The command-line option '--relax' enables the generation of trampolines that can access the entire 32-bit address space for calls outside the normal 'call' and 'jmpi' address range. d5860 1 a5860 1 The '--relax' option is enabled by default unless '-r' is also d5862 3 a5864 3 '--no-relax' linker option. You can also disable this optimization locally by using the 'set .noat' directive in assembly-language source files, as the linker-inserted trampolines use the 'at' register as a d5867 2 a5868 2 Note that the linker '--relax' option is independent of assembler relaxation options, and that using the GNU assembler's '-relax-all' d5875 1 a5875 1 4.12 'ld' and PowerPC 32-bit ELF Support d5879 2 a5880 2 displacement, which may result in 'ld' giving 'relocation truncated to fit' errors with very large programs. '--relax' enables the generation d5882 4 a5885 4 trampolines are inserted at section boundaries, so may not themselves be reachable if an input section exceeds 33M in size. You may combine '-r' and '--relax' to add trampolines in a partial link. In that case both branches to undefined symbols and inter-section branches are also d5888 2 a5889 2 '--bss-plt' Current PowerPC GCC accepts a '-msecure-plt' option that generates d5893 1 a5893 1 'ld' will generate this layout, including stubs to access the PLT, d5895 1 a5895 1 compiled with '-msecure-plt'. '--bss-plt' forces the old BSS PLT d5898 3 a5900 3 '--secure-plt' 'ld' will use the new PLT and GOT layout if it is linking new '-fpic' or '-fPIC' code, but does not do so automatically when d5905 1 a5905 1 '--sdata-got' d5907 11 a5917 11 sections compared to older BSS PLT and GOT placement. The location of '.plt' must change because the new secure PLT is an initialized section while the old PLT is uninitialized. The reason for the '.got' change is more subtle: The new placement allows '.got' to be read-only in applications linked with '-z relro -z now'. However, this placement means that '.sdata' cannot always be used in shared libraries, because the PowerPC ABI accesses '.sdata' in shared libraries from the GOT pointer. '--sdata-got' forces the old GOT placement. PowerPC GCC doesn't use '.sdata' in shared libraries, so this option is really only useful for other compilers that may do so. d5919 2 a5920 2 '--emit-stub-syms' This option causes 'ld' to label linker stubs with a local symbol d5923 2 a5924 2 '--no-tls-optimize' PowerPC 'ld' normally performs some optimization of code sequences d5929 1 a5929 1 File: ld.info, Node: PowerPC64 ELF64, Next: S/390 ELF, Prev: PowerPC ELF32, Up: Machine Dependent d5931 1 a5931 1 4.13 'ld' and PowerPC64 64-bit ELF Support d5934 4 a5937 4 '--stub-group-size' Long branch stubs, PLT call stubs and TOC adjusting stubs are placed by 'ld' in stub sections located between groups of input sections. '--stub-group-size' specifies the maximum size of a d5943 1 a5943 1 serve one group of input sections. A negative value for 'N' d5945 5 a5949 5 negative offset. Two special values of 'N' are recognized, '1' and '-1'. These both instruct 'ld' to automatically size input section groups for the branch types detected, with the same behaviour regarding stub placement as other positive or negative values of 'N' respectively. d5951 1 a5951 1 Note that '--stub-group-size' does not split input sections. A d5957 2 a5958 2 '--emit-stub-syms' This option causes 'ld' to label linker stubs with a local symbol d5961 14 a5974 14 '--dotsyms' '--no-dotsyms' These two options control how 'ld' interprets version patterns in a version script. Older PowerPC64 compilers emitted both a function descriptor symbol with the same name as the function, and a code entry symbol with the name prefixed by a dot ('.'). To properly version a function 'foo', the version script thus needs to control both 'foo' and '.foo'. The option '--dotsyms', on by default, automatically adds the required dot-prefixed patterns. Use '--no-dotsyms' to disable this feature. '--save-restore-funcs' '--no-save-restore-funcs' These two options control whether PowerPC64 'ld' automatically d5976 3 a5978 2 '-Os' code. The default is to provide any such referenced function for a normal final link, and to not do so for a relocatable link. d5980 2 a5981 2 '--no-tls-optimize' PowerPC64 'ld' normally performs some optimization of code d5985 4 a5988 4 '--tls-get-addr-optimize' '--no-tls-get-addr-optimize' These options control whether PowerPC64 'ld' uses a special stub to call __tls_get_addr. PowerPC64 glibc 2.22 and later support an d5990 1 a5990 1 '__tls_get_addr' for a given symbol to be resolved by the special d5994 4 a5997 4 glibc won't do much besides slow down your applications, but may be useful if linking an application against an older glibc with the expectation that it will normally be used on systems having a newer glibc. d5999 2 a6000 2 '--no-opd-optimize' PowerPC64 'ld' normally removes '.opd' section entries d6002 2 a6003 2 by the action of '--gc-sections' or linker script '/DISCARD/'. Use this option to disable '.opd' optimization. d6005 1 a6005 1 '--non-overlapping-opd' d6007 1 a6007 1 '.opd' entries spaced 16 bytes apart, overlapping the third word, d6011 2 a6012 2 '--no-toc-optimize' PowerPC64 'ld' normally removes unused '.toc' section entries. d6025 3 a6027 3 '--no-multi-toc' If given any toc option besides '-mcmodel=medium' or '-mcmodel=large', PowerPC64 GCC generates code for a TOC model d6029 11 a6039 11 limits the total TOC size to 64K. PowerPC64 'ld' extends this limit by grouping code sections such that each group uses less than 64K for its TOC entries, then inserts r2 adjusting stubs between inter-group calls. 'ld' does not split apart input sections, so cannot help if a single input file has a '.toc' section that exceeds 64K, most likely from linking multiple files with 'ld -r'. Use this option to turn off this feature. '--no-toc-sort' By default, 'ld' sorts TOC sections so that those whose file happens to have a section called '.init' or '.fini' are placed d6041 1 a6041 1 PowerPC64 gcc's '-mcmodel=small', and lastly TOC sections d6043 2 a6044 2 '-mcmodel=medium' or '-mcmodel=large' options. Doing this results in better TOC grouping for multi-TOC. Use this option to turn off d6047 2 a6048 2 '--plt-align' '--no-plt-align' d6050 4 a6053 7 aligned to a 32-byte boundary, or to the specified power of two boundary when using '--plt-align='. A negative value may be specified to pad PLT call stubs so that they do not cross the specified power of two boundary (or the minimum number of boundaries if a PLT stub is so large that it must cross a boundary). By default PLT call stubs are aligned to 32-byte boundaries. d6055 2 a6056 2 '--plt-static-chain' '--no-plt-static-chain' d6058 2 a6059 2 chain pointer (r11). 'ld' defaults to not loading the static chain since there is never any need to do so on a PLT call. d6061 2 a6062 2 '--plt-thread-safe' '--no-plt-thread-safe' d6069 1 a6069 1 default, 'ld' looks for calls to commonly used functions that a6072 34 '--speculate-indirect-jumps' '--no-speculate-indirect-jumps' Use these options to control whether all indirect branch instructions emitted by 'ld', such as those in the PLT, have a speculative execution barrier to mitigate Spectre variant 2 attacks. '--plt-localentry' '--no-localentry' ELFv2 functions with localentry:0 are those with a single entry point, ie. global entry == local entry, and that have no requirement on r2 (the TOC/GOT pointer) or r12, and guarantee r2 is unchanged on return. Such an external function can be called via the PLT without saving r2 or restoring it on return, avoiding a common load-hit-store for small functions. The optimization is attractive, with up to 40% reduction in execution time for a small function, but can result in symbol interposition failures. Also, minor changes in a shared library, including system libraries, can cause a function that was localentry:0 to become localentry:8. This will result in a dynamic loader complaint and failure to run. The option is experimental, use with care. '--no-plt-localentry' is the default.  File: ld.info, Node: S/390 ELF, Next: SPU ELF, Prev: PowerPC64 ELF64, Up: Machine Dependent 4.14 'ld' and S/390 ELF Support =============================== '--s390-pgste' This option marks the result file with a 'PT_S390_PGSTE' segment. The Linux kernel is supposed to allocate 4k page tables for binaries marked that way. d6074 1 a6074 1 File: ld.info, Node: SPU ELF, Next: TI COFF, Prev: S/390 ELF, Up: Machine Dependent d6076 1 a6076 1 4.15 'ld' and SPU ELF Support d6079 1 a6079 1 '--plugin' d6082 2 a6083 2 '--no-overlays' Normally, 'ld' recognizes calls to functions within overlay d6085 1 a6085 1 'ld' also provides a built-in overlay manager. This option turns d6088 2 a6089 2 '--emit-stub-syms' This option causes 'ld' to label overlay stubs with a local symbol d6092 2 a6093 2 '--extra-overlay-stubs' This option causes 'ld' to add overlay call stubs on all function d6097 2 a6098 2 '--local-store=lo:hi' 'ld' usually checks that a final executable for SPU fits in the d6100 1 a6100 1 range. Disable the check entirely with '--local-store=0:0'. d6102 1 a6102 1 '--stack-analysis' d6106 6 a6111 6 option, 'ld' will provide an estimate of maximum stack usage. 'ld' does this by examining symbols in code sections to determine the extents of functions, and looking at function prologues for stack adjusting instructions. A call-graph is created by looking for relocations on branch instructions. The graph is then searched for the maximum stack usage path. Note that this analysis does not d6115 1 a6115 1 for dynamic allocation, e.g. alloca, will not be detected. If a d6119 6 a6124 6 '--emit-stack-syms' This option, if given along with '--stack-analysis' will result in 'ld' emitting stack sizing symbols for each function. These take the form '__stack_' for global functions, and '__stack__' for static functions. '' is the section id in hex. The value of such symbols is d6126 2 a6127 2 size will be zero, type 'STT_NOTYPE', binding 'STB_LOCAL', and section 'SHN_ABS'. d6132 1 a6132 1 4.16 'ld''s Support for Various TI COFF Versions d6135 1 a6135 1 The '--format' switch allows selection of one of the various TI COFF d6138 1 a6138 1 'ld' will read any version or byte order, but the output header format d6144 1 a6144 1 4.17 'ld' and WIN32 (cygwin/mingw) d6147 2 a6148 2 This section describes some of the win32 specific 'ld' issues. See *note Command Line Options: Options. for detailed description of the d6155 2 a6156 2 archive. The cygwin and mingw ports of 'ld' have specific support for creating such libraries provided with the '--out-implib' d6160 1 a6160 1 The cygwin/mingw 'ld' has several ways to export symbols for dll's. d6162 2 a6163 2 _using auto-export functionality_ By default 'ld' exports symbols with the auto-export d6167 2 a6168 1 * -export-all-symbols [This is the default] d6170 1 d6172 1 d6174 1 d6177 1 a6177 1 When auto-export is in operation, 'ld' will export all the d6179 6 a6184 6 the exception of a few symbols known to belong to the system's runtime and libraries. As it will often not be desirable to export all of a DLL's symbols, which may include private functions that are not part of any public interface, the command-line options listed above may be used to filter symbols out from the list for exporting. The '--output-def' d6188 1 a6188 1 If '--export-all-symbols' is not given explicitly on the d6193 1 d6197 1 a6197 1 _using a DEF file_ d6200 4 a6203 4 should be exported when a dll is created. Usually it is named '.def' and is added as any other object file to the linker's command line. The file's name must end in '.def' or '.DEF'. d6208 1 a6208 1 unless the '--export-all-symbols' option is also used. d6211 1 a6211 1 'xyz.dll': d6224 14 a6237 14 This example defines a DLL with a non-default base address and seven symbols in the export table. The third exported symbol '_bar' is an alias for the second. The fourth symbol, 'another_foo' is resolved by "forwarding" to another module and treating it as an alias for 'afoo' exported from the DLL 'abc.dll'. The final symbol 'var1' is declared to be a data object. The 'doo' symbol in export library is an alias of 'foo', which gets the string name in export table 'foo2'. The 'eoo' symbol is an data export symbol, which gets in export table the name 'var1'. The optional 'LIBRARY ' command indicates the _internal_ name of the output DLL. If '' does not include a suffix, the default library suffix, '.DLL' is appended. d6240 3 a6242 3 than a library, the 'NAME ' command should be used instead of 'LIBRARY'. If '' does not include a suffix, the default executable suffix, '.EXE' is appended. d6244 2 a6245 2 With either 'LIBRARY ' or 'NAME ' the optional specification 'BASE = ' may be used to specify a d6248 3 a6250 3 If neither 'LIBRARY ' nor 'NAME ' is specified, or they specify an empty string, the internal name is the same as the filename specified on the command line. d6259 7 a6265 7 Declares '' as an exported symbol from the DLL, or declares '' as an exported alias for ''; or declares '' as a "forward" alias for the symbol '' in the DLL ''. Optionally, the symbol may be exported by the specified ordinal '' alias. The optional '' is the to be used string in import/export table for the symbol. d6269 6 a6274 6 'NONAME': Do not put the symbol name in the DLL's export table. It will still be exported by its ordinal alias (either the value specified by the .def specification or, otherwise, the value assigned by the linker). The symbol name, however, does remain visible in the import library (if any), unless 'PRIVATE' is also specified. d6276 1 a6276 1 'DATA': The symbol is a variable or object, rather than a d6278 2 a6279 2 reference to 'foo' as the symbol '_imp__foo' (ie, 'foo' must be resolved as '*_imp__foo'). d6281 2 a6282 2 'CONSTANT': Like 'DATA', but put the undecorated 'foo' as well as '_imp__foo' into the import library. Both refer to the d6284 2 a6285 2 to the variable itself. This can be dangerous. If the user code fails to add the 'dllimport' attribute and also fails to d6289 1 a6289 1 'PRIVATE': Put the symbol in the DLL's export table, but do d6291 4 a6294 4 imports at link time. The symbol can still be imported using the 'LoadLibrary/GetProcAddress' API at runtime or by using the GNU ld extension of linking directly to the DLL without an import library. d6299 2 a6300 2 While linking a shared dll, 'ld' is able to create a DEF file with the '--output-def ' command line option. d6302 1 a6302 1 _Using decorations_ d6310 1 a6310 1 All such symbols will be exported from the DLL. If, however, d6312 3 a6314 2 in this way, then the normal auto-export behavior is disabled, unless the '--export-all-symbols' option is also used. d6329 2 a6330 2 declaration completely. See '--enable-auto-import' and 'automatic data imports' for more information. d6334 12 a6345 12 only by adding special decorations (dllimport/dllexport), which let the compiler produce specific assembler instructions to deal with this issue. This increases the effort necessary to port existing Un*x code to these platforms, especially for large c++ libraries and applications. The auto-import feature, which was initially provided by Paul Sokolovsky, allows one to omit the decorations to achieve a behavior that conforms to that on POSIX/Un*x platforms. This feature is enabled with the '--enable-auto-import' command-line option, although it is enabled by default on cygwin/mingw. The '--enable-auto-import' option itself now serves mainly to suppress any warnings that are ordinarily emitted when linked objects trigger the feature's use. d6350 2 a6351 2 "variable '' can't be auto-imported. Please read the documentation for ld's '--enable-auto-import' for details." d6353 1 a6353 1 The '--enable-auto-import' documentation explains why this error d6368 8 a6375 8 The '--enable-runtime-pseudo-relocs' switch allows these references to be resolved without error, while leaving the task of adjusting the references themselves (with their non-zero addends) to specialized code provided by the runtime environment. Recent versions of the cygwin and mingw environments and compilers provide this runtime support; older versions do not. However, the support is only necessary on the developer's platform; the compiled result will run without error on an older system. d6377 1 a6377 1 '--enable-runtime-pseudo-relocs' is not the default; it must be d6381 1 a6381 1 The cygwin/mingw ports of 'ld' support the direct linking, d6383 14 a6396 14 libraries. This is much faster and uses much less memory than does the traditional import library method, especially when linking large libraries or applications. When 'ld' creates an import lib, each function or variable exported from the dll is stored in its own bfd, even though a single bfd could contain many exports. The overhead involved in storing, loading, and processing so many bfd's is quite large, and explains the tremendous time, memory, and storage needed to link against particularly large or complex libraries when using import libs. Linking directly to a dll uses no extra command-line switches other than '-L' and '-l', because 'ld' already searches for a number of names to match each library. All that is needed from the developer's perspective is an understanding of this search, in d6399 1 a6399 1 For instance, when ld is called with the argument '-lxxx' it will d6412 9 a6420 9 (*) Actually, this is not 'cygxxx.dll' but in fact is 'xxx.dll', where '' is set by the 'ld' option '--dll-search-prefix='. In the case of cygwin, the standard gcc spec file includes '--dll-search-prefix=cyg', so in effect we actually search for 'cygxxx.dll'. Other win32-based unix environments, such as mingw or pw32, may use other ''es, although at present only cygwin makes use of this feature. It was originally intended to help avoid name d6425 2 a6426 2 The generic cygwin/mingw path layout uses a 'bin' directory for applications and dll's and a 'lib' directory for the import d6438 1 a6438 1 1. Use the dll directly by adding the 'bin' path to the link line d6442 2 a6443 2 names ('cygncurses-5.dll') this will often fail, unless one specifies '-L../bin -lncurses-5' to include the version. Import d6446 1 a6446 1 2. Create a symbolic link from the dll to a file in the 'lib' d6457 2 a6458 2 This technique also avoids the version number problems, because the following is perfectly legal d6467 1 a6467 1 '--enable-runtime-pseudo-relocs' is used. d6470 2 a6471 2 justifiably wonder why import libraries are used at all. There are three reasons: d6473 2 a6474 2 1. Until recently, the link-directly-to-dll functionality did _not_ work with auto-imported data. d6476 1 a6476 1 2. Sometimes it is necessary to include pure static objects within d6479 2 a6480 2 the import lib for the cygwin kernel makes use of this ability, and it is not possible to do this without an import lib. d6482 1 a6482 1 3. Symbol aliases can only be resolved using an import lib. This d6490 2 a6491 2 binutils makes available to the win32 developer. Given the massive improvements in memory requirements during linking, storage d6496 2 a6497 1 _adding additional names_ d6499 2 a6500 2 names. A symbol 'foo' will be exported as 'foo', but it can also be exported as '_foo' by using special directives in the d6511 1 a6511 1 The line '_foo = foo' maps the symbol 'foo' to '_foo'. d6522 1 a6522 1 _renaming symbols_ d6524 3 a6526 3 cygwin kernel does this regularly. A symbol '_foo' can be exported as 'foo' but not as '_foo' by using special directives in the DEF file. (This will also affect the import d6534 2 a6535 2 The line '_foo = foo' maps the exported symbol 'foo' to '_foo'. d6538 2 a6539 2 unless the '--export-all-symbols' command line option is used. If, however, you are trying to rename symbols, then you should list d6541 1 a6541 1 are not being renamed, and do _not_ use the '--export-all-symbols' d6543 4 a6546 4 use '--export-all-symbols' to handle the other symbols, then the both the new names _and_ the original names for the renamed symbols will be exported. In effect, you'd be aliasing those symbols, not renaming them, which is probably not what you wanted. d6550 3 a6552 3 called weak externals. When a weak symbol is linked and the symbol is not defined, the weak symbol becomes an alias for some other symbol. There are three variants of weak externals: d6555 1 d6558 1 d6562 2 a6563 2 symbol are supported. If the symbol is undefined when linking, the symbol uses a default value. d6566 10 a6575 9 As a GNU extension to the PE file format, it is possible to specify the desired alignment for a common symbol. This information is conveyed from the assembler or compiler to the linker by means of GNU-specific commands carried in the object file's '.drectve' section, which are recognized by 'ld' and respected when laying out the common symbols. Native tools will be able to process object files employing this GNU extension, but will fail to respect the alignment instructions, and may issue noisy warnings about unknown linker directives. d6580 1 a6580 1 4.18 'ld' and Xtensa Processors d6583 2 a6584 2 The default 'ld' behavior for Xtensa processors is to interpret 'SECTIONS' commands so that lists of explicitly named sections in a d6596 1 a6596 1 'ld' may interleave some of the '.literal' and '.text' sections from d6598 5 a6602 5 range of PC-relative load offsets. A valid interleaving might place the '.literal' sections from an initial group of files followed by the '.text' sections of that group of files. Then, the '.literal' sections from the rest of the files and the '.text' sections from the rest of the files would follow. d6604 1 a6604 1 Relaxation is enabled by default for the Xtensa version of 'ld' and d6607 7 a6613 6 literal will be removed and all the 'L32R' instructions that use it will be changed to reference an identical literal, as long as the location of the replacement literal is within the offset range of all the 'L32R' instructions. The second optimization is to remove unnecessary overhead from assembler-generated "longcall" sequences of 'L32R'/'CALLXN' when the target functions are within range of direct 'CALLN' instructions. d6616 13 a6628 13 optimized to a direct call, the linker will change the 'CALLXN' instruction to a 'CALLN' instruction, remove the 'L32R' instruction, and remove the literal referenced by the 'L32R' instruction if it is not used for anything else. Removing the 'L32R' instruction always reduces code size but can potentially hurt performance by changing the alignment of subsequent branch targets. By default, the linker will always preserve alignments, either by switching some instructions between 24-bit encodings and the equivalent density instructions or by inserting a no-op in place of the 'L32R' instruction that was removed. If code size is more important than performance, the '--size-opt' option can be used to prevent the linker from widening density instructions or inserting no-ops, except in a few cases where no-ops are required for correctness. d6633 1 a6633 1 '--size-opt' d6652 3 a6654 3 object file formats available. You can use 'objdump -i' (*note objdump: (binutils.info)objdump.) to list all the formats available for your configuration. d6657 6 a6662 6 conflicting requirements. The major factor influencing BFD design was efficiency: any time used converting between formats is time which would not have been spent had BFD not been involved. This is partly offset by abstraction payback; since BFD simplifies applications and back ends, more time and care may be spent optimizing algorithms for a greater speed. d6667 1 a6667 1 conversion and during output. *Note BFD information loss::. d6684 12 a6695 12 As different information from the object files is required, BFD reads from different sections of the file and processes them. For example, a very common operation for the linker is processing symbol tables. Each BFD back end provides a routine for converting between the object file's representation of symbols and an internal canonical format. When the linker asks for the symbol table of an object file, it calls through a memory pointer to the routine from the relevant BFD back end which reads and converts the table into a canonical form. The linker then operates upon the canonical form. When the link is finished and the linker writes the output file's symbol table, another BFD back end routine is called to take the newly created symbol table and convert it into the chosen output format. d6708 9 a6716 9 _Information can be lost during output._ The output formats supported by BFD do not provide identical facilities, and information which can be described in one form has nowhere to go in another format. One example of this is alignment information in 'b.out'. There is nowhere in an 'a.out' format file to store alignment information on the contained data, so when a file is linked from 'b.out' and an 'a.out' image is produced, alignment information will not propagate to the output file. (The linker will still use the alignment information internally, so the link is performed correctly). d6718 2 a6719 2 Another example is COFF section names. COFF files may contain an unlimited number of sections, each one with a textual section name. If d6721 2 a6722 2 (e.g., 'a.out') or has sections without names (e.g., the Oasys format), the link cannot be done simply. You can circumvent this problem by d6726 1 a6726 1 _Information can be lost during canonicalization._ The BFD internal d6737 3 a6739 3 to the back ends. When a file is read in one format, the canonical form is generated for BFD and the application. At the same time, the back end saves away any information which may otherwise be lost. If the data d6743 4 a6746 4 commonality between back ends, there is no information lost when linking or copying big endian COFF to little endian COFF, or 'a.out' to 'b.out'. When a mixture of formats is linked, the information is only lost from the files whose format differs from the destination. d6757 1 a6757 1 format. A brief description of the canonical form may help you d6759 1 a6759 1 conversions. d6766 1 a6766 1 so a 'ZMAGIC' file would have both the demand pageable bit and the d6785 8 a6792 8 the symbol points to the original file, the private data format for that symbol is accessible. 'ld' can operate on a collection of symbols of wildly different formats without problems. Normal global and simple local symbols are maintained on output, so an output file (no matter its format) will retain symbols pointing to functions and to global, static, and common variables. Some symbol information is not worth retaining; in 'a.out', type d6800 2 a6801 2 within one word (nearly everything but aggregates), the information will be preserved. d6807 2 a6808 2 descriptor. Relocation is performed by passing messages through the relocation type descriptor and the symbol pointer. Therefore, d6810 1 a6810 1 method that is only available in one of the input formats. For d6822 7 a6828 7 number records points to the first record of the list. The head of a line number list consists of a pointer to the symbol, which allows finding out the address of the function whose line number is being described. The rest of the list is made up of pairs: offsets into the section and line numbers. Any format which can simply derive this information can pass it successfully between formats (COFF, IEEE and Oasys). d6836 1 a6836 1 Your bug reports play an essential role in making 'ld' reliable. d6840 2 a6841 2 is to help the entire community by making the next version of 'ld' work better. Bug reports are your contribution to the maintenance of 'ld'. d6861 1 a6861 1 a 'ld' bug. Reliable linkers never crash. d6863 1 a6863 1 * If 'ld' produces an error message for valid input, that is a bug. d6865 1 a6865 1 * If 'ld' does not produce an error message for invalid input, that d6870 1 a6870 1 improvement of 'ld' are welcome in any case. d6879 1 a6879 1 If you obtained 'ld' from a support organization, we recommend you d6883 1 a6883 1 individuals in the file 'etc/SERVICE' in the GNU Emacs distribution. d6885 2 a6886 2 Otherwise, send bug reports for 'ld' to . d6888 3 a6890 3 The fundamental principle of reporting bugs usefully is this: *report all the facts*. If you are not sure whether to state a fact or leave it out, state it! d6895 7 a6901 6 Well, probably it does not, but one cannot be sure. Perhaps the bug is a stray memory reference which happens to fetch from the location where that name is stored in memory; perhaps, if the name were different, the contents of that location would fool the linker into doing the right thing despite the bug. Play it safe and give a specific, complete example. That is the easiest thing for you to do, and the most helpful. d6904 2 a6905 2 the bug if it is new to us. Therefore, always write your bug reports on the assumption that the bug has not been reported previously. d6914 2 a6915 2 * The version of 'ld'. 'ld' announces it if you start it with the '--version' argument. d6918 1 a6918 1 looking for the bug in the current version of 'ld'. d6920 2 a6921 2 * Any patches you may have applied to the 'ld' source, including any patches made to the 'BFD' library. d6926 2 a6927 2 * What compiler (and its version) was used to compile 'ld'--e.g. "'gcc-2.7'". d6940 5 a6944 5 10K. For bigger files you can either make them available by FTP or HTTP or else state that you are willing to send the object file(s) to whomever requests them. (Note - your email will be going to a mailing list, so we do not want to clog it up with large attachments). But small attachments are best. d6946 2 a6947 2 If the source files were assembled using 'gas' or compiled using 'gcc', then it may be OK to send the source files rather than the d6949 2 a6950 2 'gas' or 'gcc' was used to produce the object files. Also say how 'gas' or 'gcc' were configured. d6955 1 a6955 1 Of course, if the bug is that 'ld' gets a fatal signal, then we d6962 1 a6962 1 such as, your copy of 'ld' is out of sync, or you have encountered d6970 2 a6971 2 * If you wish to suggest changes to the 'ld' source, send us context diffs, as generated by 'diff' with the '-u', '-c', or '-p' option. d6973 1 a6973 1 discuss something in the 'ld' source, refer to it by context, not d6976 3 a6978 3 The line numbers in our development sources will not match those in your sources. Your line numbers would convey no useful information to us. d6993 2 a6994 2 Of course, if you can find a simpler example to report _instead_ of the original one, that is a convenience for us. Errors in the d7006 3 a7008 3 assumption that a patch is all we need. We might see problems with your patch and decide to fix the problem another way, or we might not understand it at all. d7010 1 a7010 1 Sometimes with a program as complicated as 'ld' it is very hard to d7013 2 a7014 2 not be able to construct one, so we will not be able to verify that the bug is fixed. d7031 7 a7037 6 To aid users making the transition to GNU 'ld' from the MRI linker, 'ld' can use MRI compatible linker scripts as an alternative to the more general-purpose linker scripting language described in *note Scripts::. MRI compatible linker scripts have a much simpler command set than the scripting language otherwise used with 'ld'. GNU 'ld' supports the most commonly used MRI linker commands; these commands are described here. d7039 1 a7039 1 In general, MRI scripts aren't of much use with the 'a.out' object d7044 1 a7044 1 '-c' command-line option. d7049 2 a7050 2 MRI-compatible script begins with an unrecognized keyword, 'ld' issues a warning message, but continues processing the script. d7052 1 a7052 1 Lines beginning with '*' are comments. d7055 1 a7055 1 lower case; for example, 'chip' is the same as 'CHIP'. The following d7058 6 a7063 6 'ABSOLUTE SECNAME' 'ABSOLUTE SECNAME, SECNAME, ... SECNAME' Normally, 'ld' includes in the output file all sections from all the input files. However, in an MRI-compatible script, you can use the 'ABSOLUTE' command to restrict the sections that will be present in your output program. If the 'ABSOLUTE' command is used d7065 1 a7065 1 'ABSOLUTE' commands will appear in the linker output. You can d7067 1 a7067 1 line, or using 'LOAD') to resolve addresses in the output file. d7069 3 a7071 3 'ALIAS OUT-SECNAME, IN-SECNAME' Use this command to place the data from input section IN-SECNAME in a section called OUT-SECNAME in the linker output file. d7075 1 a7075 1 'ALIGN SECNAME = EXPRESSION' d7079 1 a7079 1 'BASE EXPRESSION' d7083 2 a7084 2 'CHIP EXPRESSION' 'CHIP EXPRESSION, EXPRESSION' d7087 1 a7087 1 'END' d7091 2 a7092 2 'FORMAT OUTPUT-FORMAT' Similar to the 'OUTPUT_FORMAT' command in the more general linker d7095 1 a7095 1 1. S-records, if OUTPUT-FORMAT is 'S' d7097 1 a7097 1 2. IEEE, if OUTPUT-FORMAT is 'IEEE' d7099 2 a7100 2 3. COFF (the 'coff-m68k' variant in BFD), if OUTPUT-FORMAT is 'COFF' d7102 1 a7102 1 'LIST ANYTHING...' d7104 1 a7104 1 'ld' command-line option '-M'. d7106 1 a7106 1 The keyword 'LIST' may be followed by anything on the same line, d7109 2 a7110 2 'LOAD FILENAME' 'LOAD FILENAME, FILENAME, ... FILENAME' d7112 1 a7112 1 same effect as specifying FILENAME directly on the 'ld' command d7115 8 a7122 8 'NAME OUTPUT-NAME' OUTPUT-NAME is the name for the program produced by 'ld'; the MRI-compatible command 'NAME' is equivalent to the command-line option '-o' or the general script language command 'OUTPUT'. 'ORDER SECNAME, SECNAME, ... SECNAME' 'ORDER SECNAME SECNAME SECNAME' Normally, 'ld' orders the sections in its output file in the order d7125 1 a7125 1 'ORDER' command. The sections you list with 'ORDER' will appear d7128 3 a7130 3 'PUBLIC NAME=EXPRESSION' 'PUBLIC NAME,EXPRESSION' 'PUBLIC NAME EXPRESSION' d7134 7 a7140 7 'SECT SECNAME, EXPRESSION' 'SECT SECNAME=EXPRESSION' 'SECT SECNAME EXPRESSION' You can use any of these three forms of the 'SECT' command to specify the start address (EXPRESSION) for section SECNAME. If you have more than one 'SECT' statement for the same SECNAME, only the _first_ sets the start address. d7151 1 a7151 1 d7176 2 a7177 2 of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is d7183 2 a7184 2 that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice d7188 3 a7190 3 of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. d7208 6 a7213 6 titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. d7224 10 a7233 10 straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". d7237 8 a7244 8 SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. d7282 2 a7283 2 distribute a large enough number of copies you must also follow the conditions in section 3. d7297 6 a7302 5 front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. d7310 12 a7321 11 numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. d7324 3 a7326 3 the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. d7332 5 a7336 5 release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: d7339 5 a7343 5 distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. d7373 6 a7378 6 authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. d7383 5 a7387 5 previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. d7390 2 a7391 2 Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor d7394 4 a7397 3 L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. d7410 5 a7414 5 material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. d7423 9 a7431 9 and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. d7441 2 a7442 2 modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, d7469 2 a7470 2 rules of this License for verbatim copying of each of the documents in all other respects. d7474 3 a7476 3 a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. d7481 2 a7482 2 separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the d7527 2 a7528 2 provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the d7540 4 a7543 4 the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. d7545 1 a7545 1 10. FUTURE REVISIONS OF THIS LICENSE d7551 1 a7551 1 . d7558 5 a7562 5 published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that d7566 1 a7566 1 11. RELICENSING d7596 1 d7613 1 a7613 1 Texts, replace the "with...Texts." line with this: d7624 3 a7626 3 recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. d7638 12 a7649 12 * -(: Options. (line 876) * --accept-unknown-input-arch: Options. (line 894) * --add-needed: Options. (line 921) * --add-stdcall-alias: Options. (line 1877) * --allow-multiple-definition: Options. (line 1223) * --allow-shlib-undefined: Options. (line 1229) * --architecture=ARCH: Options. (line 122) * --as-needed: Options. (line 904) * --audit AUDITLIB: Options. (line 111) * --auxiliary=NAME: Options. (line 254) * --bank-window: Options. (line 2319) * --base-file: Options. (line 1882) d7652 26 a7677 30 * --build-id: Options. (line 1839) * --build-id=STYLE: Options. (line 1839) * --check-sections: Options. (line 1006) * --cmse-implib: ARM. (line 234) * --code-region: MSP430. (line 34) * --compress-debug-sections=none: Options. (line 1797) * --compress-debug-sections=zlib: Options. (line 1797) * --compress-debug-sections=zlib-gabi: Options. (line 1797) * --compress-debug-sections=zlib-gnu: Options. (line 1797) * --copy-dt-needed-entries: Options. (line 1018) * --cref: Options. (line 1038) * --data-region: MSP430. (line 39) * --default-imported-symver: Options. (line 1265) * --default-script=SCRIPT: Options. (line 577) * --default-symver: Options. (line 1261) * --defsym=SYMBOL=EXP: Options. (line 1075) * --demangle[=STYLE]: Options. (line 1087) * --depaudit AUDITLIB: Options. (line 176) * --disable-auto-image-base: Options. (line 2059) * --disable-auto-import: Options. (line 2193) * --disable-large-address-aware: Options. (line 2007) * --disable-long-section-names: Options. (line 1892) * --disable-new-dtags: Options. (line 1773) * --disable-runtime-pseudo-reloc: Options. (line 2206) * --disable-sec-transformation: MSP430. (line 45) * --disable-stdcall-fixup: Options. (line 1914) * --discard-all: Options. (line 662) * --discard-locals: Options. (line 666) * --dll: Options. (line 1887) * --dll-search-prefix: Options. (line 2065) d7679 10 a7688 11 * --dsbt-index: Options. (line 2297) * --dsbt-size: Options. (line 2292) * --dynamic-linker=FILE: Options. (line 1100) * --dynamic-list-cpp-new: Options. (line 998) * --dynamic-list-cpp-typeinfo: Options. (line 1002) * --dynamic-list-data: Options. (line 995) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 982) * --dynamicbase: Options. (line 2246) * --eh-frame-hdr: Options. (line 1762) * --embedded-relocs: Options. (line 1113) * --emit-relocs: Options. (line 508) d7690 18 a7707 18 * --emit-stub-syms: PowerPC ELF32. (line 47) * --emit-stub-syms <1>: PowerPC64 ELF64. (line 29) * --emit-stub-syms <2>: SPU ELF. (line 15) * --enable-auto-image-base: Options. (line 2050) * --enable-auto-import: Options. (line 2074) * --enable-extra-pe-debug: Options. (line 2211) * --enable-long-section-names: Options. (line 1892) * --enable-new-dtags: Options. (line 1773) * --enable-runtime-pseudo-reloc: Options. (line 2198) * --enable-stdcall-fixup: Options. (line 1914) * --entry=ENTRY: Options. (line 186) * --error-unresolved-symbols: Options. (line 1715) * --exclude-all-symbols: Options. (line 1967) * --exclude-libs: Options. (line 196) * --exclude-modules-for-implib: Options. (line 207) * --exclude-symbols: Options. (line 1961) * --export-all-symbols: Options. (line 1937) * --export-dynamic: Options. (line 220) d7709 13 a7721 14 * --fatal-warnings: Options. (line 1118) * --file-alignment: Options. (line 1971) * --filter=NAME: Options. (line 275) * --fix-arm1176: ARM. (line 111) * --fix-cortex-a53-835769: ARM. (line 211) * --fix-cortex-a8: ARM. (line 202) * --fix-stm32l4xx-629360: ARM. (line 120) * --fix-v4bx: ARM. (line 48) * --fix-v4bx-interworking: ARM. (line 61) * --force-dynamic: Options. (line 517) * --force-exe-suffix: Options. (line 1123) * --force-group-allocation: Options. (line 1067) * --forceinteg: Options. (line 2251) * --format=FORMAT: Options. (line 133) d7723 2 a7724 3 * --gc-keep-exported: Options. (line 1166) * --gc-sections: Options. (line 1133) * --got: Options. (line 2331) d7726 17 a7742 20 * --gpsize=VALUE: Options. (line 307) * --hash-size=NUMBER: Options. (line 1783) * --hash-style=STYLE: Options. (line 1791) * --heap: Options. (line 1977) * --help: Options. (line 1194) * --high-entropy-va: Options. (line 2242) * --ignore-branch-isa: Options. (line 2352) * --ignore-branch-isa <1>: MIPS. (line 13) * --image-base: Options. (line 1984) * --in-implib=FILE: ARM. (line 239) * --insert-timestamp: Options. (line 2274) * --insn32: Options. (line 2343) * --insn32 <1>: MIPS. (line 6) * --just-symbols=FILE: Options. (line 539) * --kill-at: Options. (line 1993) * --large-address-aware: Options. (line 1998) * --ld-generated-unwind-info: Options. (line 1768) * --leading-underscore: Options. (line 1931) * --library-path=DIR: Options. (line 365) * --library=NAMESPEC: Options. (line 332) d7744 9 a7752 9 * --long-plt: ARM. (line 222) * --major-image-version: Options. (line 2014) * --major-os-version: Options. (line 2019) * --major-subsystem-version: Options. (line 2023) * --merge-exidx-entries: ARM. (line 219) * --minor-image-version: Options. (line 2028) * --minor-os-version: Options. (line 2033) * --minor-subsystem-version: Options. (line 2037) * --mri-script=MRI-CMDFILE: Options. (line 157) d7754 11 a7764 11 * --nmagic: Options. (line 434) * --no-accept-unknown-input-arch: Options. (line 894) * --no-add-needed: Options. (line 921) * --no-allow-shlib-undefined: Options. (line 1229) * --no-apply-dynamic-relocs: ARM. (line 226) * --no-as-needed: Options. (line 904) * --no-bind: Options. (line 2265) * --no-check-sections: Options. (line 1006) * --no-copy-dt-needed-entries: Options. (line 1018) * --no-define-common: Options. (line 1051) * --no-demangle: Options. (line 1087) d7766 18 a7783 21 * --no-dynamic-linker: Options. (line 1107) * --no-eh-frame-hdr: Options. (line 1762) * --no-enum-size-warning: ARM. (line 158) * --no-export-dynamic: Options. (line 220) * --no-fatal-warnings: Options. (line 1118) * --no-fix-arm1176: ARM. (line 111) * --no-fix-cortex-a53-835769: ARM. (line 211) * --no-fix-cortex-a8: ARM. (line 202) * --no-gc-sections: Options. (line 1133) * --no-ignore-branch-isa: Options. (line 2353) * --no-ignore-branch-isa <1>: MIPS. (line 13) * --no-insn32: Options. (line 2344) * --no-insn32 <1>: MIPS. (line 6) * --no-isolation: Options. (line 2258) * --no-keep-memory: Options. (line 1206) * --no-leading-underscore: Options. (line 1931) * --no-merge-exidx-entries: Options. (line 2304) * --no-merge-exidx-entries <1>: ARM. (line 219) * --no-multi-toc: PowerPC64 ELF64. (line 96) * --no-omagic: Options. (line 449) * --no-opd-optimize: PowerPC64 ELF64. (line 70) d7785 4 a7788 5 * --no-plt-align: PowerPC64 ELF64. (line 118) * --no-plt-localentry: PowerPC64 ELF64. (line 154) * --no-plt-static-chain: PowerPC64 ELF64. (line 129) * --no-plt-thread-safe: PowerPC64 ELF64. (line 135) * --no-print-gc-sections: Options. (line 1157) d7790 3 a7792 4 * --no-seh: Options. (line 2261) * --no-speculate-indirect-jumps: PowerPC64 ELF64. (line 147) * --no-strip-discarded: Options. (line 559) * --no-tls-get-addr-optimize: PowerPC64 ELF64. (line 56) d7794 23 a7816 25 * --no-tls-optimize <1>: PowerPC64 ELF64. (line 51) * --no-toc-optimize: PowerPC64 ELF64. (line 82) * --no-toc-sort: PowerPC64 ELF64. (line 108) * --no-trampoline: Options. (line 2313) * --no-undefined: Options. (line 1213) * --no-undefined-version: Options. (line 1256) * --no-warn-mismatch: Options. (line 1269) * --no-warn-search-mismatch: Options. (line 1278) * --no-wchar-size-warning: ARM. (line 165) * --no-whole-archive: Options. (line 1282) * --noinhibit-exec: Options. (line 1286) * --non-overlapping-opd: PowerPC64 ELF64. (line 76) * --nxcompat: Options. (line 2254) * --oformat=OUTPUT-FORMAT: Options. (line 1297) * --omagic: Options. (line 440) * --orphan-handling=MODE: Options. (line 621) * --out-implib: Options. (line 1310) * --output-def: Options. (line 2042) * --output=OUTPUT: Options. (line 455) * --pic-executable: Options. (line 1319) * --pic-veneer: ARM. (line 171) * --plt-align: PowerPC64 ELF64. (line 118) * --plt-localentry: PowerPC64 ELF64. (line 154) * --plt-static-chain: PowerPC64 ELF64. (line 129) * --plt-thread-safe: PowerPC64 ELF64. (line 135) d7818 9 a7826 9 * --pop-state: Options. (line 504) * --print-gc-sections: Options. (line 1157) * --print-map: Options. (line 400) * --print-memory-usage: Options. (line 1182) * --print-output-format: Options. (line 1176) * --push-state: Options. (line 486) * --reduce-memory-overheads: Options. (line 1825) * --relax: Options. (line 1335) * --relax on i960: i960. (line 32) d7830 3 a7832 4 * --relocatable: Options. (line 521) * --require-defined=SYMBOL: Options. (line 603) * --retain-symbols-file=FILENAME: Options. (line 1361) * --s390-pgste: S/390 ELF. (line 6) d7834 1 a7834 1 * --script=SCRIPT: Options. (line 568) d7836 2 a7837 2 * --section-alignment: Options. (line 2216) * --section-start=SECTIONNAME=ORG: Options. (line 1529) d7839 6 a7844 8 * --sort-common: Options. (line 1461) * --sort-section=alignment: Options. (line 1476) * --sort-section=name: Options. (line 1472) * --spare-dynamic-tags: Options. (line 1480) * --speculate-indirect-jumps: PowerPC64 ELF64. (line 147) * --split-by-file: Options. (line 1485) * --split-by-reloc: Options. (line 1490) * --stack: Options. (line 2222) d7846 3 a7848 4 * --stats: Options. (line 1503) * --strip-all: Options. (line 550) * --strip-debug: Options. (line 554) * --strip-discarded: Options. (line 559) d7850 3 a7852 3 * --stub-group-size=N: ARM. (line 176) * --stub-group-size=N <1>: HPPA ELF32. (line 12) * --subsystem: Options. (line 2229) d7854 2 a7855 2 * --sysroot=DIRECTORY: Options. (line 1507) * --target-help: Options. (line 1198) a7858 1 * --task-link: Options. (line 1512) d7860 9 a7868 9 * --tls-get-addr-optimize: PowerPC64 ELF64. (line 56) * --trace: Options. (line 564) * --trace-symbol=SYMBOL: Options. (line 672) * --traditional-format: Options. (line 1517) * --tsaware: Options. (line 2271) * --undefined=SYMBOL: Options. (line 590) * --unique[=SECTION]: Options. (line 647) * --unresolved-symbols: Options. (line 1559) * --use-blx: ARM. (line 73) d7870 91 a7960 93 * --verbose[=NUMBER]: Options. (line 1588) * --version: Options. (line 656) * --version-script=VERSION-SCRIPTFILE: Options. (line 1596) * --vfp11-denorm-fix: ARM. (line 82) * --warn-alternate-em: Options. (line 1707) * --warn-common: Options. (line 1606) * --warn-constructors: Options. (line 1674) * --warn-multiple-gp: Options. (line 1679) * --warn-once: Options. (line 1693) * --warn-section-align: Options. (line 1697) * --warn-shared-textrel: Options. (line 1704) * --warn-unresolved-symbols: Options. (line 1710) * --wdmdriver: Options. (line 2268) * --whole-archive: Options. (line 1719) * --wrap=SYMBOL: Options. (line 1733) * -A ARCH: Options. (line 121) * -a KEYWORD: Options. (line 104) * -assert KEYWORD: Options. (line 928) * -b FORMAT: Options. (line 133) * -Bdynamic: Options. (line 931) * -Bgroup: Options. (line 941) * -Bshareable: Options. (line 1454) * -Bstatic: Options. (line 948) * -Bsymbolic: Options. (line 962) * -Bsymbolic-functions: Options. (line 973) * -c MRI-CMDFILE: Options. (line 157) * -call_shared: Options. (line 931) * -d: Options. (line 167) * -dc: Options. (line 167) * -dn: Options. (line 948) * -dp: Options. (line 167) * -dT SCRIPT: Options. (line 577) * -dy: Options. (line 931) * -E: Options. (line 220) * -e ENTRY: Options. (line 186) * -EB: Options. (line 247) * -EL: Options. (line 250) * -f NAME: Options. (line 254) * -F NAME: Options. (line 275) * -fini=NAME: Options. (line 298) * -g: Options. (line 304) * -G VALUE: Options. (line 307) * -h NAME: Options. (line 314) * -i: Options. (line 323) * -IFILE: Options. (line 1100) * -init=NAME: Options. (line 326) * -L DIR: Options. (line 365) * -l NAMESPEC: Options. (line 332) * -M: Options. (line 400) * -m EMULATION: Options. (line 390) * -Map=MAPFILE: Options. (line 1202) * -n: Options. (line 434) * -N: Options. (line 440) * -no-relax: Options. (line 1335) * -non_shared: Options. (line 948) * -nostdlib: Options. (line 1292) * -O LEVEL: Options. (line 461) * -o OUTPUT: Options. (line 455) * -P AUDITLIB: Options. (line 176) * -pie: Options. (line 1319) * -plugin NAME: Options. (line 471) * -q: Options. (line 508) * -qmagic: Options. (line 1329) * -Qy: Options. (line 1332) * -r: Options. (line 521) * -R FILE: Options. (line 539) * -rpath-link=DIR: Options. (line 1397) * -rpath=DIR: Options. (line 1375) * -s: Options. (line 550) * -S: Options. (line 554) * -shared: Options. (line 1454) * -soname=NAME: Options. (line 314) * -static: Options. (line 948) * -t: Options. (line 564) * -T SCRIPT: Options. (line 568) * -Tbss=ORG: Options. (line 1538) * -Tdata=ORG: Options. (line 1538) * -Tldata-segment=ORG: Options. (line 1554) * -Trodata-segment=ORG: Options. (line 1548) * -Ttext-segment=ORG: Options. (line 1544) * -Ttext=ORG: Options. (line 1538) * -u SYMBOL: Options. (line 590) * -Ur: Options. (line 611) * -v: Options. (line 656) * -V: Options. (line 656) * -x: Options. (line 662) * -X: Options. (line 666) * -Y PATH: Options. (line 681) * -y SYMBOL: Options. (line 672) * -z defs: Options. (line 1213) * -z KEYWORD: Options. (line 685) * -z muldefs: Options. (line 1223) * -z undefs: Options. (line 1213) d7964 1 a7964 1 * 32-bit PLT entries: ARM. (line 222) d7973 2 a7974 2 * AArch64 rela addend: ARM. (line 226) * ABSOLUTE (MRI): MRI. (line 32) d7981 2 a7982 2 * ALIAS (MRI): MRI. (line 43) * ALIGN (MRI): MRI. (line 49) d7989 2 a7990 2 * aligned common symbols: WIN32. (line 415) * ALIGNOF(SECTION): Builtin Functions. (line 63) d7993 4 a7996 4 (line 121) * architectures: Options. (line 121) * archive files, from cmd line: Options. (line 332) * archive search path in linker script: File Commands. (line 77) d8000 2 a8001 1 * ARM1176 erratum workaround: ARM. (line 111) a8006 1 * AS_NEEDED(FILES): File Commands. (line 57) d8009 1 a8009 1 * automatic data imports: WIN32. (line 185) d8011 1 a8011 1 * BASE (MRI): MRI. (line 53) d8015 3 a8017 3 * big-endian objects: Options. (line 247) * binary input format: Options. (line 133) * BLOCK(EXP): Builtin Functions. (line 76) d8025 1 a8025 1 * CHIP (MRI): MRI. (line 57) d8027 1 a8027 4 * combining symbols, warnings on: Options. (line 1606) * COMDAT: Options. (line 1067) * COMDAT <1>: Miscellaneous Commands. (line 56) d8030 1 a8030 2 * common allocation: Options. (line 167) * common allocation <1>: Options. (line 1051) a8032 2 * common allocation in linker script <1>: Miscellaneous Commands. (line 51) d8036 1 a8036 1 * compatibility, MRI: Options. (line 157) d8041 1 a8041 1 * constructors: Options. (line 611) d8046 2 a8047 2 * Cortex-A53 erratum 835769 workaround: ARM. (line 211) * Cortex-A8 erratum workaround: ARM. (line 202) d8051 2 a8052 2 * creating a DEF file: WIN32. (line 153) * cross reference table: Options. (line 1038) d8054 1 a8054 3 (line 88) * cross references <1>: Miscellaneous Commands. (line 104) d8059 5 a8063 5 (line 81) * DATA_SEGMENT_END(EXP): Builtin Functions. (line 105) * DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 111) * dbx: Options. (line 1522) * DEF files, creating: Options. (line 2042) d8066 3 a8068 3 * defined symbol: Options. (line 603) * DEFINED(SYMBOL): Builtin Functions. (line 124) * deleting local symbols: Options. (line 662) d8070 2 a8071 2 * demangling, from command line: Options. (line 1087) * direct linking to a dll: WIN32. (line 233) d8075 2 a8076 4 * DLLs, creating: Options. (line 1937) * DLLs, creating <1>: Options. (line 2042) * DLLs, creating <2>: Options. (line 2050) * DLLs, linking to: Options. (line 2065) d8080 2 a8081 2 * dynamic linker, from command line: Options. (line 1100) * dynamic symbol table: Options. (line 220) d8083 1 a8083 1 * emulation: Options. (line 390) d8085 2 a8086 2 * END (MRI): MRI. (line 61) * endianness: Options. (line 247) d8088 1 a8088 1 * entry point, from command line: Options. (line 186) a8092 2 * EXCLUDE_FILE: Input Section Basics. (line 17) d8110 2 a8111 2 * finalization function: Options. (line 298) * first input file: File Commands. (line 85) d8113 2 a8114 2 * FIX_V4BX: ARM. (line 48) * FIX_V4BX_INTERWORKING: ARM. (line 61) a8116 2 * FORCE_GROUP_ALLOCATION: Miscellaneous Commands. (line 56) d8121 2 a8122 2 * forcing the creation of dynamic sections: Options. (line 517) * FORMAT (MRI): MRI. (line 65) d8124 3 a8126 5 * garbage collection: Options. (line 1133) * garbage collection <1>: Options. (line 1157) * garbage collection <2>: Options. (line 1166) * garbage collection <3>: Input Section Keep. (line 6) * generating optimized output: Options. (line 461) d8129 3 a8131 6 * group allocation in linker script: Options. (line 1067) * group allocation in linker script <1>: Miscellaneous Commands. (line 56) * GROUP(FILES): File Commands. (line 50) * grouping input files: File Commands. (line 50) * groups of archives: Options. (line 876) d8134 2 a8135 2 * heap size: Options. (line 1977) * help: Options. (line 1194) d8143 1 a8143 1 * image base: Options. (line 1984) d8149 2 a8150 2 * including an entire archive: Options. (line 1719) * incremental link: Options. (line 323) d8153 1 a8153 1 * initialization function: Options. (line 326) d8159 2 a8160 4 * input files, displaying: Options. (line 564) * input format: Options. (line 133) * input format <1>: Options. (line 133) * Input import library: ARM. (line 239) d8171 1 a8171 1 (line 62) d8173 1 a8173 1 (line 62) d8180 1 a8180 1 * l =: MEMORY. (line 68) d8183 3 a8185 1 * ldata segment origin, cmd line: Options. (line 1555) d8187 6 a8192 8 * LD_FEATURE(STRING): Miscellaneous Commands. (line 127) * len =: MEMORY. (line 68) * LENGTH =: MEMORY. (line 68) * LENGTH(MEMORY): Builtin Functions. (line 141) * library search path in linker script: File Commands. (line 77) * link map: Options. (line 400) * link-time runtime library search path: Options. (line 1397) d8202 3 a8204 3 * LIST (MRI): MRI. (line 76) * little-endian objects: Options. (line 250) * LOAD (MRI): MRI. (line 83) d8206 1 a8206 1 * LOADADDR(SECTION): Builtin Functions. (line 144) d8208 2 a8209 2 (line 21) * local symbols, deleting: Options. (line 666) d8211 1 a8211 1 * LOG2CEIL(EXP): Builtin Functions. (line 148) d8215 1 a8215 1 * M68HC11 and 68HC12 support: M68HC11/68HC12. (line 5) d8217 1 a8217 1 (line 121) d8220 1 a8220 1 * MAX: Builtin Functions. (line 151) d8227 3 a8229 5 * memory usage: Options. (line 1182) * memory usage <1>: Options. (line 1206) * Merging exidx entries: ARM. (line 219) * MIN: Builtin Functions. (line 154) * MIPS branch relocation check control: MIPS. (line 13) d8234 1 a8234 2 * MSP430 Options: MSP430. (line 34) * NAME (MRI): MRI. (line 89) d8238 2 a8239 2 * naming the output file: Options. (line 455) * NEXT(EXP): Builtin Functions. (line 158) d8241 3 a8243 1 * NMAGIC: Options. (line 434) d8245 1 a8245 1 (line 88) d8247 1 a8247 1 (line 104) d8249 1 a8249 1 (line 21) d8251 1 a8251 3 * NO_ENUM_SIZE_WARNING: ARM. (line 158) * NO_WCHAR_SIZE_WARNING: ARM. (line 165) * o =: MEMORY. (line 63) d8256 2 a8257 3 * object size: Options. (line 307) * OMAGIC: Options. (line 440) * OMAGIC <1>: Options. (line 449) d8265 4 a8268 4 * ORDER (MRI): MRI. (line 94) * org =: MEMORY. (line 63) * ORIGIN =: MEMORY. (line 63) * ORIGIN(MEMORY): Builtin Functions. (line 164) d8270 2 a8271 2 * orphan sections: Options. (line 621) * output file after errors: Options. (line 1286) d8273 2 a8274 2 * output file name in linker script: File Commands. (line 67) * output format: Options. (line 1176) d8281 1 a8281 1 * OUTPUT(FILENAME): File Commands. (line 67) d8283 1 a8283 1 (line 121) d8289 1 a8289 1 * partial link: Options. (line 521) d8292 3 a8294 5 * PHDRS <1>: PHDRS. (line 62) * PIC_VENEER: ARM. (line 171) * Placement of SG veneers: ARM. (line 229) * pop state governing input file handling: Options. (line 504) * position independent executables: Options. (line 1321) d8301 1 d8304 6 a8309 10 * PowerPC64 ELFv2 PLT localentry optimization: PowerPC64 ELF64. (line 154) * PowerPC64 multi-TOC: PowerPC64 ELF64. (line 96) * PowerPC64 OPD optimization: PowerPC64 ELF64. (line 70) * PowerPC64 OPD spacing: PowerPC64 ELF64. (line 76) * PowerPC64 PLT call stub speculative execution barrier: PowerPC64 ELF64. (line 147) * PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 129) * PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 135) * PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 118) d8314 3 a8316 4 * PowerPC64 TLS optimization: PowerPC64 ELF64. (line 51) * PowerPC64 TOC optimization: PowerPC64 ELF64. (line 82) * PowerPC64 TOC sorting: PowerPC64 ELF64. (line 108) * PowerPC64 __tls_get_addr optimization: PowerPC64 ELF64. (line 56) d8319 1 a8319 1 (line 21) d8327 2 a8328 2 * PUBLIC (MRI): MRI. (line 102) * push state governing input file handling: Options. (line 486) d8332 2 a8333 2 * read-only text: Options. (line 434) * read/write from cmd line: Options. (line 440) d8336 1 a8337 1 * REGION_ALIAS(ALIAS, REGION): REGION_ALIAS. (line 6) d8339 1 a8339 1 * relaxing addressing modes: Options. (line 1335) d8341 1 a8341 1 * relaxing on i960: i960. (line 32) d8346 1 a8346 1 * relocatable output: Options. (line 521) d8351 3 a8353 3 * retain relocations in final executable: Options. (line 508) * retaining specified symbols: Options. (line 1361) * rodata segment origin, cmd line: Options. (line 1549) d8357 3 a8359 5 * runtime library name: Options. (line 314) * runtime library search path: Options. (line 1375) * runtime pseudo-relocation: WIN32. (line 211) * S/390: S/390 ELF. (line 6) * S/390 ELF options: S/390 ELF. (line 6) d8363 1 a8363 2 * script files: Options. (line 568) * script files <1>: Options. (line 577) d8365 4 a8368 4 * search directory, from cmd line: Options. (line 365) * search path in linker script: File Commands. (line 77) * SEARCH_DIR(PATH): File Commands. (line 77) * SECT (MRI): MRI. (line 108) d8372 2 a8373 2 * section alignment: Builtin Functions. (line 63) * section alignment, warnings on: Options. (line 1697) a8377 3 * section groups: Options. (line 1067) * section groups <1>: Miscellaneous Commands. (line 56) d8379 1 a8379 1 * section load address in expression: Builtin Functions. (line 144) d8392 3 a8394 3 * sections, orphan: Options. (line 621) * Secure gateway import library: ARM. (line 234) * segment origins, cmd line: Options. (line 1538) d8396 1 a8396 2 * SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 167) * shared libraries: Options. (line 1456) d8404 1 a8404 1 (line 62) d8406 1 a8406 1 (line 51) d8408 1 a8408 1 (line 57) d8410 1 a8410 1 (line 43) d8412 1 a8412 1 (line 98) a8413 1 * SPU <1>: SPU ELF. (line 46) d8422 1 a8422 1 * stack size: Options. (line 2222) d8425 6 a8430 6 * STARTUP(FILENAME): File Commands. (line 85) * STM32L4xx erratum workaround: ARM. (line 120) * strip all symbols: Options. (line 550) * strip debugger symbols: Options. (line 554) * stripping all but some symbols: Options. (line 1361) * STUB_GROUP_SIZE: ARM. (line 176) d8434 1 a8434 1 * symbol defaults: Builtin Functions. (line 124) d8437 1 a8437 1 * symbol tracing: Options. (line 672) d8439 1 a8439 1 * symbol-only input: Options. (line 539) d8441 1 a8441 1 * symbols, from command line: Options. (line 1075) d8443 3 a8445 3 * symbols, require defined: Options. (line 603) * symbols, retaining selectively: Options. (line 1361) * synthesizing linker: Options. (line 1335) d8450 1 a8450 1 * text segment origin, cmd line: Options. (line 1545) d8453 5 a8457 5 * traditional format: Options. (line 1517) * trampoline generation on M68HC11: M68HC11/68HC12. (line 30) * trampoline generation on M68HC12: M68HC11/68HC12. (line 30) * unallocated address, next: Builtin Functions. (line 158) * undefined symbol: Options. (line 590) d8460 1 a8460 1 * undefined symbols, warnings on: Options. (line 1693) d8465 3 a8467 3 * usage: Options. (line 1194) * USE_BLX: ARM. (line 73) * using a DEF file: WIN32. (line 52) d8469 1 a8469 1 * Using decorations: WIN32. (line 157) d8471 2 a8472 2 * verbose[=NUMBER]: Options. (line 1588) * version: Options. (line 656) d8474 1 a8474 1 * version script, symbol versions: Options. (line 1596) d8477 5 a8481 5 * VFP11_DENORM_FIX: ARM. (line 82) * warnings, on combining symbols: Options. (line 1606) * warnings, on section alignment: Options. (line 1697) * warnings, on undefined symbols: Options. (line 1693) * weak externals: WIN32. (line 400) d8485 1 a8485 1 * Xtensa options: Xtensa. (line 55) d8491 86 a8576 87 Node: Top706 Node: Overview1487 Node: Invocation2603 Node: Options3011 Node: Environment111472 Node: Scripts113233 Node: Basic Script Concepts114967 Node: Script Format117675 Node: Simple Example118538 Node: Simple Commands121632 Node: Entry Point122137 Node: File Commands123065 Node: Format Commands127239 Node: REGION_ALIAS129195 Node: Miscellaneous Commands134022 Node: Assignments139853 Node: Simple Assignments140364 Node: HIDDEN142095 Node: PROVIDE142722 Node: PROVIDE_HIDDEN143915 Node: Source Code Reference144159 Node: SECTIONS148076 Node: Output Section Description149964 Node: Output Section Name151205 Node: Output Section Address152082 Node: Input Section154315 Node: Input Section Basics155116 Node: Input Section Wildcards160134 Node: Input Section Common165335 Node: Input Section Keep166817 Node: Input Section Example167307 Node: Output Section Data168718 Node: Output Section Keywords171497 Node: Output Section Discarding175064 Node: Output Section Attributes176554 Node: Output Section Type177654 Node: Output Section LMA178724 Node: Forced Output Alignment181795 Node: Forced Input Alignment182224 Node: Output Section Constraint182612 Node: Output Section Region183040 Node: Output Section Phdr183473 Node: Output Section Fill184137 Node: Overlay Description185279 Node: MEMORY189724 Node: PHDRS194095 Node: VERSION199421 Node: Expressions207512 Node: Constants208441 Node: Symbolic Constants209315 Node: Symbols209866 Node: Orphan Sections210613 Node: Location Counter212198 Node: Operators216632 Node: Evaluation217554 Node: Expression Section218918 Node: Builtin Functions222888 Node: Implicit Linker Scripts231239 Node: Machine Dependent232014 Node: H8/300233164 Node: i960235227 Node: M68HC11/68HC12236923 Node: ARM238368 Node: HPPA ELF32250615 Node: M68K252238 Node: MIPS253147 Node: MMIX254263 Node: MSP430255428 Node: NDS32257341 Node: Nios II258307 Node: PowerPC ELF32259623 Node: PowerPC64 ELF64262454 Node: S/390 ELF271126 Node: SPU ELF271473 Node: TI COFF274101 Node: WIN32274627 Node: Xtensa294753 Node: BFD297719 Node: BFD outline299177 Node: BFD information loss300465 Node: Canonical format302991 Node: Reporting Bugs307353 Node: Bug Criteria308047 Node: Bug Reporting308746 Node: MRI315784 Node: GNU Free Documentation License320426 Node: LD Index345563 @ 1.1.1.6.12.2 log @Sync with HEAD, resolve a couple of conflicts @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 6.4 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.30.90. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.30.90. d205 12 a1201 4 '--disable-multiple-abs-defs' Do not allow multiple definitions with symbols included in filename invoked by -R or -just-symbols d1423 4 a1426 4 *Note 'ld' and Xtensa Processors: Xtensa. *Note 'ld' and the 68HC11 and 68HC12: M68HC11/68HC12. *Note 'ld' and the Altera Nios II: Nios II. *Note 'ld' and PowerPC 32-bit ELF Support: PowerPC ELF32. d2160 5 a2164 11 imports from DLLs, thus making it possible to bypass the dllimport mechanism on the user side and to reference unmangled symbol names. [This option is specific to the i386 PE targeted port of the linker] The following remarks pertain to the original implementation of the feature and are obsolete nowadays for Cygwin and MinGW targets. Note: Use of the 'auto-import' extension will cause the text section of the image file to be made writable. This does not conform to the PE-COFF format specification published by Microsoft. d2274 2 a2275 1 functions). a3242 6 Note - the 'PROVIDE' directive considers a common symbol to be defined, even though such a symbol could be combined with the symbol that the 'PROVIDE' would create. This is particularly important when considering constructor and destructor list symbols such as '__CTOR_LIST__' as these are often defined as common symbols. d4623 1 a4623 1 }; d5395 1 d5414 1 a5414 1 File: ld.info, Node: H8/300, Next: M68HC11/68HC12, Up: Machine Dependent d5459 40 a5498 1 File: ld.info, Node: M68HC11/68HC12, Next: ARM, Prev: H8/300, Up: Machine Dependent d5500 1 a5500 1 4.2 'ld' and the Motorola 68HC11 and 68HC12 families d5503 1 a5503 1 4.2.1 Linker Relaxation d5524 1 a5524 1 4.2.2 Trampoline Generation d5537 1 a5537 1 4.3 'ld' and the ARM family d5786 1 a5786 1 4.4 'ld' and HPPA 32-bit ELF Support d5817 1 a5817 1 4.5 'ld' and the Motorola 68K family d5835 1 a5835 1 4.6 'ld' and the MIPS family d5858 1 a5858 1 4.7 'ld' and MMIX d5886 1 a5886 1 4.8 'ld' and MSP430 d5938 2 a5939 2 4.9 'ld' and NDS32 ================== d5977 1 a5977 1 4.10 'ld' and the Altera Nios II d6005 1 a6005 1 4.11 'ld' and PowerPC 32-bit ELF Support d6061 1 a6061 1 4.12 'ld' and PowerPC64 64-bit ELF Support d6205 7 d6231 1 a6231 1 4.13 'ld' and S/390 ELF Support d6242 1 a6242 1 4.14 'ld' and SPU ELF Support d6298 1 a6298 1 4.15 'ld''s Support for Various TI COFF Versions d6310 1 a6310 1 4.16 'ld' and WIN32 (cygwin/mingw) a6565 1 libxxx.lib d6736 1 a6736 1 4.17 'ld' and Xtensa Processors d6954 3 a6956 3 example, COFF, Oasys) and the type is simple enough to fit within one word (nearly everything but aggregates), the information will be preserved. d6982 2 a6983 1 derive this information can pass it successfully between formats. d7246 8 a7253 1 language, but restricted to S-records, if OUTPUT-FORMAT is 'S' d7787 8 a7794 7 * -(: Options. (line 864) * --accept-unknown-input-arch: Options. (line 882) * --add-needed: Options. (line 909) * --add-stdcall-alias: Options. (line 1869) * --allow-multiple-definition: Options. (line 1215) * --allow-shlib-undefined: Options. (line 1221) * --as-needed: Options. (line 892) d7796 3 a7798 3 * --auxiliary=NAME: Options. (line 242) * --bank-window: Options. (line 2316) * --base-file: Options. (line 1874) d7801 3 a7803 3 * --build-id: Options. (line 1831) * --build-id=STYLE: Options. (line 1831) * --check-sections: Options. (line 994) d7806 6 a7811 6 * --compress-debug-sections=none: Options. (line 1789) * --compress-debug-sections=zlib: Options. (line 1789) * --compress-debug-sections=zlib-gabi: Options. (line 1789) * --compress-debug-sections=zlib-gnu: Options. (line 1789) * --copy-dt-needed-entries: Options. (line 1006) * --cref: Options. (line 1026) d7813 12 a7824 13 * --default-imported-symver: Options. (line 1257) * --default-script=SCRIPT: Options. (line 565) * --default-symver: Options. (line 1253) * --defsym=SYMBOL=EXP: Options. (line 1063) * --demangle[=STYLE]: Options. (line 1075) * --depaudit AUDITLIB: Options. (line 164) * --disable-auto-image-base: Options. (line 2051) * --disable-auto-import: Options. (line 2190) * --disable-large-address-aware: Options. (line 1999) * --disable-long-section-names: Options. (line 1884) * --disable-multiple-abs-defs: Options. (line 1106) * --disable-new-dtags: Options. (line 1765) * --disable-runtime-pseudo-reloc: Options. (line 2203) d7826 5 a7830 5 * --disable-stdcall-fixup: Options. (line 1906) * --discard-all: Options. (line 650) * --discard-locals: Options. (line 654) * --dll: Options. (line 1879) * --dll-search-prefix: Options. (line 2057) d7832 11 a7842 11 * --dsbt-index: Options. (line 2294) * --dsbt-size: Options. (line 2289) * --dynamic-linker=FILE: Options. (line 1088) * --dynamic-list-cpp-new: Options. (line 986) * --dynamic-list-cpp-typeinfo: Options. (line 990) * --dynamic-list-data: Options. (line 983) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 970) * --dynamicbase: Options. (line 2243) * --eh-frame-hdr: Options. (line 1754) * --embedded-relocs: Options. (line 1101) * --emit-relocs: Options. (line 496) d7847 15 a7861 15 * --enable-auto-image-base: Options. (line 2042) * --enable-auto-import: Options. (line 2066) * --enable-extra-pe-debug: Options. (line 2208) * --enable-long-section-names: Options. (line 1884) * --enable-new-dtags: Options. (line 1765) * --enable-runtime-pseudo-reloc: Options. (line 2195) * --enable-stdcall-fixup: Options. (line 1906) * --entry=ENTRY: Options. (line 174) * --error-unresolved-symbols: Options. (line 1707) * --exclude-all-symbols: Options. (line 1959) * --exclude-libs: Options. (line 184) * --exclude-modules-for-implib: Options. (line 195) * --exclude-symbols: Options. (line 1953) * --export-all-symbols: Options. (line 1929) * --export-dynamic: Options. (line 208) d7863 3 a7865 3 * --fatal-warnings: Options. (line 1110) * --file-alignment: Options. (line 1963) * --filter=NAME: Options. (line 263) d7872 5 a7876 5 * --force-dynamic: Options. (line 505) * --force-exe-suffix: Options. (line 1115) * --force-group-allocation: Options. (line 1055) * --forceinteg: Options. (line 2248) * --format=FORMAT: Options. (line 121) d7878 3 a7880 3 * --gc-keep-exported: Options. (line 1158) * --gc-sections: Options. (line 1125) * --got: Options. (line 2328) d7882 7 a7888 7 * --gpsize=VALUE: Options. (line 295) * --hash-size=NUMBER: Options. (line 1775) * --hash-style=STYLE: Options. (line 1783) * --heap: Options. (line 1969) * --help: Options. (line 1186) * --high-entropy-va: Options. (line 2239) * --ignore-branch-isa: Options. (line 2349) d7890 1 a7890 1 * --image-base: Options. (line 1976) d7892 2 a7893 2 * --insert-timestamp: Options. (line 2271) * --insn32: Options. (line 2340) d7895 7 a7901 7 * --just-symbols=FILE: Options. (line 527) * --kill-at: Options. (line 1985) * --large-address-aware: Options. (line 1990) * --ld-generated-unwind-info: Options. (line 1760) * --leading-underscore: Options. (line 1923) * --library-path=DIR: Options. (line 353) * --library=NAMESPEC: Options. (line 320) d7904 3 a7906 3 * --major-image-version: Options. (line 2006) * --major-os-version: Options. (line 2011) * --major-subsystem-version: Options. (line 2015) d7908 4 a7911 4 * --minor-image-version: Options. (line 2020) * --minor-os-version: Options. (line 2025) * --minor-subsystem-version: Options. (line 2029) * --mri-script=MRI-CMDFILE: Options. (line 145) d7913 4 a7916 4 * --nmagic: Options. (line 422) * --no-accept-unknown-input-arch: Options. (line 882) * --no-add-needed: Options. (line 909) * --no-allow-shlib-undefined: Options. (line 1221) d7918 6 a7923 6 * --no-as-needed: Options. (line 892) * --no-bind: Options. (line 2262) * --no-check-sections: Options. (line 994) * --no-copy-dt-needed-entries: Options. (line 1006) * --no-define-common: Options. (line 1039) * --no-demangle: Options. (line 1075) d7925 2 a7926 2 * --no-dynamic-linker: Options. (line 1095) * --no-eh-frame-hdr: Options. (line 1754) d7928 2 a7929 2 * --no-export-dynamic: Options. (line 208) * --no-fatal-warnings: Options. (line 1110) d7933 2 a7934 2 * --no-gc-sections: Options. (line 1125) * --no-ignore-branch-isa: Options. (line 2350) d7936 1 a7936 1 * --no-insn32: Options. (line 2341) d7938 4 a7941 4 * --no-isolation: Options. (line 2255) * --no-keep-memory: Options. (line 1198) * --no-leading-underscore: Options. (line 1923) * --no-merge-exidx-entries: Options. (line 2301) d7944 1 a7944 1 * --no-omagic: Options. (line 437) d7948 1 a7948 1 * --no-plt-localentry: PowerPC64 ELF64. (line 147) d7951 1 a7951 1 * --no-print-gc-sections: Options. (line 1149) d7953 3 a7955 2 * --no-seh: Options. (line 2258) * --no-strip-discarded: Options. (line 547) d7961 5 a7965 5 * --no-trampoline: Options. (line 2310) * --no-undefined: Options. (line 1205) * --no-undefined-version: Options. (line 1248) * --no-warn-mismatch: Options. (line 1261) * --no-warn-search-mismatch: Options. (line 1270) d7967 2 a7968 2 * --no-whole-archive: Options. (line 1274) * --noinhibit-exec: Options. (line 1278) d7970 8 a7977 8 * --nxcompat: Options. (line 2251) * --oformat=OUTPUT-FORMAT: Options. (line 1289) * --omagic: Options. (line 428) * --orphan-handling=MODE: Options. (line 609) * --out-implib: Options. (line 1302) * --output-def: Options. (line 2034) * --output=OUTPUT: Options. (line 443) * --pic-executable: Options. (line 1311) d7980 1 a7980 1 * --plt-localentry: PowerPC64 ELF64. (line 147) d7984 9 a7992 8 * --pop-state: Options. (line 492) * --print-gc-sections: Options. (line 1149) * --print-map: Options. (line 388) * --print-memory-usage: Options. (line 1174) * --print-output-format: Options. (line 1168) * --push-state: Options. (line 474) * --reduce-memory-overheads: Options. (line 1817) * --relax: Options. (line 1327) d7996 3 a7998 3 * --relocatable: Options. (line 509) * --require-defined=SYMBOL: Options. (line 591) * --retain-symbols-file=FILENAME: Options. (line 1353) d8001 1 a8001 1 * --script=SCRIPT: Options. (line 556) d8003 2 a8004 2 * --section-alignment: Options. (line 2213) * --section-start=SECTIONNAME=ORG: Options. (line 1521) d8006 8 a8013 7 * --sort-common: Options. (line 1453) * --sort-section=alignment: Options. (line 1468) * --sort-section=name: Options. (line 1464) * --spare-dynamic-tags: Options. (line 1472) * --split-by-file: Options. (line 1477) * --split-by-reloc: Options. (line 1482) * --stack: Options. (line 2219) d8015 4 a8018 4 * --stats: Options. (line 1495) * --strip-all: Options. (line 538) * --strip-debug: Options. (line 542) * --strip-discarded: Options. (line 547) d8022 1 a8022 1 * --subsystem: Options. (line 2226) d8024 2 a8025 2 * --sysroot=DIRECTORY: Options. (line 1499) * --target-help: Options. (line 1190) d8029 1 a8029 1 * --task-link: Options. (line 1504) d8032 7 a8038 7 * --trace: Options. (line 552) * --trace-symbol=SYMBOL: Options. (line 660) * --traditional-format: Options. (line 1509) * --tsaware: Options. (line 2268) * --undefined=SYMBOL: Options. (line 578) * --unique[=SECTION]: Options. (line 635) * --unresolved-symbols: Options. (line 1551) d8041 3 a8043 3 * --verbose[=NUMBER]: Options. (line 1580) * --version: Options. (line 644) * --version-script=VERSION-SCRIPTFILE: Options. (line 1588) d8045 12 a8056 11 * --warn-alternate-em: Options. (line 1699) * --warn-common: Options. (line 1598) * --warn-constructors: Options. (line 1666) * --warn-multiple-gp: Options. (line 1671) * --warn-once: Options. (line 1685) * --warn-section-align: Options. (line 1689) * --warn-shared-textrel: Options. (line 1696) * --warn-unresolved-symbols: Options. (line 1702) * --wdmdriver: Options. (line 2265) * --whole-archive: Options. (line 1711) * --wrap=SYMBOL: Options. (line 1725) d8058 76 a8133 76 * -assert KEYWORD: Options. (line 916) * -b FORMAT: Options. (line 121) * -Bdynamic: Options. (line 919) * -Bgroup: Options. (line 929) * -Bshareable: Options. (line 1446) * -Bstatic: Options. (line 936) * -Bsymbolic: Options. (line 950) * -Bsymbolic-functions: Options. (line 961) * -c MRI-CMDFILE: Options. (line 145) * -call_shared: Options. (line 919) * -d: Options. (line 155) * -dc: Options. (line 155) * -dn: Options. (line 936) * -dp: Options. (line 155) * -dT SCRIPT: Options. (line 565) * -dy: Options. (line 919) * -E: Options. (line 208) * -e ENTRY: Options. (line 174) * -EB: Options. (line 235) * -EL: Options. (line 238) * -f NAME: Options. (line 242) * -F NAME: Options. (line 263) * -fini=NAME: Options. (line 286) * -g: Options. (line 292) * -G VALUE: Options. (line 295) * -h NAME: Options. (line 302) * -i: Options. (line 311) * -IFILE: Options. (line 1088) * -init=NAME: Options. (line 314) * -L DIR: Options. (line 353) * -l NAMESPEC: Options. (line 320) * -M: Options. (line 388) * -m EMULATION: Options. (line 378) * -Map=MAPFILE: Options. (line 1194) * -n: Options. (line 422) * -N: Options. (line 428) * -no-relax: Options. (line 1327) * -non_shared: Options. (line 936) * -nostdlib: Options. (line 1284) * -O LEVEL: Options. (line 449) * -o OUTPUT: Options. (line 443) * -P AUDITLIB: Options. (line 164) * -pie: Options. (line 1311) * -plugin NAME: Options. (line 459) * -q: Options. (line 496) * -qmagic: Options. (line 1321) * -Qy: Options. (line 1324) * -r: Options. (line 509) * -R FILE: Options. (line 527) * -rpath-link=DIR: Options. (line 1389) * -rpath=DIR: Options. (line 1367) * -s: Options. (line 538) * -S: Options. (line 542) * -shared: Options. (line 1446) * -soname=NAME: Options. (line 302) * -static: Options. (line 936) * -t: Options. (line 552) * -T SCRIPT: Options. (line 556) * -Tbss=ORG: Options. (line 1530) * -Tdata=ORG: Options. (line 1530) * -Tldata-segment=ORG: Options. (line 1546) * -Trodata-segment=ORG: Options. (line 1540) * -Ttext-segment=ORG: Options. (line 1536) * -Ttext=ORG: Options. (line 1530) * -u SYMBOL: Options. (line 578) * -Ur: Options. (line 599) * -v: Options. (line 644) * -V: Options. (line 644) * -x: Options. (line 650) * -X: Options. (line 654) * -Y PATH: Options. (line 669) * -y SYMBOL: Options. (line 660) * -z defs: Options. (line 1205) * -z KEYWORD: Options. (line 673) * -z muldefs: Options. (line 1215) * -z undefs: Options. (line 1205) d8162 1 a8162 1 * aligned common symbols: WIN32. (line 416) d8167 2 a8168 1 * archive files, from cmd line: Options. (line 320) d8188 2 a8189 2 * big-endian objects: Options. (line 235) * binary input format: Options. (line 121) d8200 2 a8201 2 * combining symbols, warnings on: Options. (line 1598) * COMDAT: Options. (line 1055) d8206 2 a8207 2 * common allocation: Options. (line 155) * common allocation <1>: Options. (line 1039) d8215 1 a8215 1 * compatibility, MRI: Options. (line 145) d8220 1 a8220 1 * constructors: Options. (line 599) d8231 1 a8231 1 * cross reference table: Options. (line 1026) d8243 2 a8244 2 * dbx: Options. (line 1514) * DEF files, creating: Options. (line 2034) d8247 1 a8247 1 * defined symbol: Options. (line 591) d8249 1 a8249 1 * deleting local symbols: Options. (line 650) d8251 1 a8251 1 * demangling, from command line: Options. (line 1075) d8256 4 a8259 4 * DLLs, creating: Options. (line 1929) * DLLs, creating <1>: Options. (line 2034) * DLLs, creating <2>: Options. (line 2042) * DLLs, linking to: Options. (line 2057) d8263 2 a8264 2 * dynamic linker, from command line: Options. (line 1088) * dynamic symbol table: Options. (line 208) d8266 1 a8266 1 * emulation: Options. (line 378) d8269 1 a8269 1 * endianness: Options. (line 235) d8271 1 a8271 1 * entry point, from command line: Options. (line 174) d8295 1 a8295 1 * finalization function: Options. (line 286) d8308 1 a8308 1 * forcing the creation of dynamic sections: Options. (line 505) d8311 3 a8313 3 * garbage collection: Options. (line 1125) * garbage collection <1>: Options. (line 1149) * garbage collection <2>: Options. (line 1158) d8315 1 a8315 1 * generating optimized output: Options. (line 449) d8318 1 a8318 1 * group allocation in linker script: Options. (line 1055) d8323 1 a8323 1 * groups of archives: Options. (line 864) d8326 2 a8327 2 * heap size: Options. (line 1969) * help: Options. (line 1186) d8334 2 a8335 1 * image base: Options. (line 1976) d8341 2 a8342 2 * including an entire archive: Options. (line 1711) * incremental link: Options. (line 311) d8345 1 a8345 1 * initialization function: Options. (line 314) d8351 3 a8353 3 * input files, displaying: Options. (line 552) * input format: Options. (line 121) * input format <1>: Options. (line 121) d8377 1 a8377 1 * ldata segment origin, cmd line: Options. (line 1547) d8385 2 a8386 2 * link map: Options. (line 388) * link-time runtime library search path: Options. (line 1389) d8396 3 a8398 3 * LIST (MRI): MRI. (line 69) * little-endian objects: Options. (line 238) * LOAD (MRI): MRI. (line 76) d8403 1 a8403 1 * local symbols, deleting: Options. (line 654) d8421 2 a8422 2 * memory usage: Options. (line 1174) * memory usage <1>: Options. (line 1198) d8431 1 a8431 1 * NAME (MRI): MRI. (line 82) d8435 1 a8435 1 * naming the output file: Options. (line 443) d8438 1 a8438 1 * NMAGIC: Options. (line 422) d8453 3 a8455 3 * object size: Options. (line 295) * OMAGIC: Options. (line 428) * OMAGIC <1>: Options. (line 437) d8463 1 a8463 1 * ORDER (MRI): MRI. (line 87) d8468 2 a8469 2 * orphan sections: Options. (line 609) * output file after errors: Options. (line 1278) d8472 1 a8472 1 * output format: Options. (line 1168) d8487 1 a8487 1 * partial link: Options. (line 509) d8493 2 a8494 2 * pop state governing input file handling: Options. (line 492) * position independent executables: Options. (line 1313) d8504 1 a8504 1 (line 147) d8508 2 d8531 2 a8532 2 * PUBLIC (MRI): MRI. (line 95) * push state governing input file handling: Options. (line 474) d8536 2 a8537 2 * read-only text: Options. (line 422) * read/write from cmd line: Options. (line 428) d8543 1 a8543 1 * relaxing addressing modes: Options. (line 1327) d8545 1 d8550 1 a8550 1 * relocatable output: Options. (line 509) d8555 3 a8557 3 * retain relocations in final executable: Options. (line 496) * retaining specified symbols: Options. (line 1353) * rodata segment origin, cmd line: Options. (line 1541) d8561 2 a8562 2 * runtime library name: Options. (line 302) * runtime library search path: Options. (line 1367) d8569 2 a8570 2 * script files: Options. (line 556) * script files <1>: Options. (line 565) d8572 1 a8572 1 * search directory, from cmd line: Options. (line 353) d8575 1 a8575 1 * SECT (MRI): MRI. (line 101) d8580 1 a8580 1 * section alignment, warnings on: Options. (line 1689) d8585 1 a8585 1 * section groups: Options. (line 1055) d8602 1 a8602 1 * sections, orphan: Options. (line 609) d8604 1 a8604 1 * segment origins, cmd line: Options. (line 1530) d8607 1 a8607 1 * shared libraries: Options. (line 1448) d8634 1 a8634 1 * stack size: Options. (line 2219) d8639 3 a8641 3 * strip all symbols: Options. (line 538) * strip debugger symbols: Options. (line 542) * stripping all but some symbols: Options. (line 1353) d8649 1 a8649 1 * symbol tracing: Options. (line 660) d8651 1 a8651 1 * symbol-only input: Options. (line 527) d8653 1 a8653 1 * symbols, from command line: Options. (line 1063) d8655 3 a8657 3 * symbols, require defined: Options. (line 591) * symbols, retaining selectively: Options. (line 1353) * synthesizing linker: Options. (line 1327) d8662 1 a8662 1 * text segment origin, cmd line: Options. (line 1537) d8665 1 a8665 1 * traditional format: Options. (line 1509) d8669 1 a8669 1 * undefined symbol: Options. (line 578) d8672 1 a8672 1 * undefined symbols, warnings on: Options. (line 1685) d8677 1 a8677 1 * usage: Options. (line 1186) d8683 2 a8684 2 * verbose[=NUMBER]: Options. (line 1580) * version: Options. (line 644) d8686 1 a8686 1 * version script, symbol versions: Options. (line 1588) d8690 4 a8693 4 * warnings, on combining symbols: Options. (line 1598) * warnings, on section alignment: Options. (line 1689) * warnings, on undefined symbols: Options. (line 1685) * weak externals: WIN32. (line 401) d8704 86 a8789 85 Node: Overview1490 Node: Invocation2606 Node: Options3014 Node: Environment111207 Node: Scripts112968 Node: Basic Script Concepts114702 Node: Script Format117410 Node: Simple Example118273 Node: Simple Commands121367 Node: Entry Point121872 Node: File Commands122800 Node: Format Commands126974 Node: REGION_ALIAS128930 Node: Miscellaneous Commands133757 Node: Assignments139588 Node: Simple Assignments140099 Node: HIDDEN141830 Node: PROVIDE142457 Node: PROVIDE_HIDDEN143978 Node: Source Code Reference144222 Node: SECTIONS148139 Node: Output Section Description150027 Node: Output Section Name151268 Node: Output Section Address152145 Node: Input Section154378 Node: Input Section Basics155179 Node: Input Section Wildcards160197 Node: Input Section Common165398 Node: Input Section Keep166880 Node: Input Section Example167370 Node: Output Section Data168781 Node: Output Section Keywords171560 Node: Output Section Discarding175127 Node: Output Section Attributes176617 Node: Output Section Type177717 Node: Output Section LMA178787 Node: Forced Output Alignment181858 Node: Forced Input Alignment182287 Node: Output Section Constraint182675 Node: Output Section Region183103 Node: Output Section Phdr183536 Node: Output Section Fill184200 Node: Overlay Description185342 Node: MEMORY189787 Node: PHDRS194158 Node: VERSION199484 Node: Expressions207575 Node: Constants208504 Node: Symbolic Constants209378 Node: Symbols209929 Node: Orphan Sections210676 Node: Location Counter212261 Node: Operators216695 Node: Evaluation217617 Node: Expression Section218981 Node: Builtin Functions222951 Node: Implicit Linker Scripts231302 Node: Machine Dependent232077 Node: H8/300233165 Node: M68HC11/68HC12235238 Node: ARM236685 Node: HPPA ELF32248932 Node: M68K250555 Node: MIPS251464 Node: MMIX252580 Node: MSP430253745 Node: NDS32255658 Node: Nios II256622 Node: PowerPC ELF32257938 Node: PowerPC64 ELF64260769 Node: S/390 ELF269170 Node: SPU ELF269517 Node: TI COFF272145 Node: WIN32272671 Node: Xtensa292818 Node: BFD295784 Node: BFD outline297242 Node: BFD information loss298530 Node: Canonical format301056 Node: Reporting Bugs305384 Node: Bug Criteria306078 Node: Bug Reporting306777 Node: MRI313815 Node: GNU Free Documentation License318286 Node: LD Index343423 @ 1.1.1.7 log @2018-01-10 Nick Clifton * config-ml.in: Sync with gcc sources. * config.guess: Likewise. * config.sub: Likewise. * configure.ac: Likewise. * configure: Regenerate. 2017-12-14 Nick Clifton * COPYING.LIBGLOSS: Update address of FSF in copyright notice. 2017-12-12 Stafford Horne * configure.ac: Remove logic adding gdb to noconfigsdirs for or1k. * configure: Regenerate. 2017-09-15 Nick Clifton * src-release.sh (LZIPPROG): New define. Provides the name of the lzip program. (do_lz): New function. Compresses a tarball using the lzip program. (do_compress): Add support for lzip compression. (usage): Mention -l option. (build_release): Support -l option to invoke lzip compression. 2017-09-15 Alan Modra * src-release.sh (do_proto_toplev): Revert last patch. Enable or disable binutils, gas, gdb, gold, gprof, ld, libdecnumber, readline, and sim depending on $tool and $support_files. Echo configure line. 2017-09-14 Matt Rice * src-release.sh (do_proto_toplev): Enable gold during release process. 2017-04-13 Andrew Jenner * config.sub: Sync with master version in config project. 2017-04-03 Andrew Jenner * config.sub: Handle ia16 in $basic_machine. bfd/ * config.bfd: Handle ia16. gas/ * configure.tgt: Handle ia16. ld/ * configure.tgt: Handle ia16. 2017-03-22 Nick Clifton * config.sub: Sync with master version in config project. * config.guess: Likewise. 2017-01-23 Nick Clifton * configure.ac: Update year in copyright notice. Sync from FSF GCC mainline, bringing in the following patches. * Makefile.def: Likewise. * Makefile.tpl: Likewise. * configure: Regenerate. * Makefile.in: Regenerate. 2016-12-21 Jakub Jelinek * configure.ac: Don't bootstrap libmpx unless --with-build-config includes bootstrap-mpx. 2016-12-01 Matthias Klose * configure.ac: Don't use pkg-config to check for bdw-gc. 2016-11-30 Matthias Klose * Makefile.def: Remove reference to boehm-gc target module. * configure.ac: Include pkg.m4, check for --with-target-bdw-gc options and for the bdw-gc pkg-config module. 2016-11-15 Matthias Klose * config-ml.in: Remove references to GCJ. * configure.ac: Likewise. 2016-09-30 Jakub Jelinek * configure.ac: Add target-libffi to target_libraries. Readd libgcj target disablings, modified to only target-libffi. Readd target addition of go to unsupported languages. 2016-09-30 Andrew Haley * Makefile.def: Remove libjava. * Makefile.tpl: Likewise. * configure.ac: Likewise. 2016-09-26 Anton Kolesov * configure.ac: Disable "sim" directory for arc*-*-*. 2016-09-12 Maciej W. Rozycki * configure.ac: Check for the minimum in-tree MPFR version handled. 2016-12-31 Alan Modra * config.sub: Import from upstream. 2016-12-08 Alan Modra * configure: Regenerate. 2016-12-02 Josh Conner * configure.ac: Add fuchsia to targets that use ELF. * configure: Regenerated. 2016-11-07 Doug Evans * config.sub: Sync with upstream version 2016-11-03. git://git.sv.gnu.org/config.git * config.guess: Sync with upstream version 2016-10-02. 2016-09-27 Simon Marchi * .gitignore: Add archives and make stamps. 2016-07-20 Yan-Ting Lin * configure.ac (nds32*-*-*): Remove entry to enable gdb. * configure: Regenerated. @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 6.3 from ld.texinfo. d3 6 a8 1 This file documents the GNU linker LD (GNU Binutils) version 2.30. d10 1 a10 1 Copyright (C) 1991-2018 Free Software Foundation, Inc. a17 4 INFO-DIR-SECTION Software development START-INFO-DIR-ENTRY * Ld: (ld). The GNU linker. END-INFO-DIR-ENTRY d25 1 a25 1 This file documents the GNU linker ld (GNU Binutils) version 2.30. d28 2 a29 2 Documentation License version 1.3. A copy of the license is included in the section entitled "GNU Free Documentation License". d36 1 d38 1 d52 3 a54 3 'ld' combines a number of object and archive files, relocates their data and ties up symbol references. Usually the last step in compiling a program is to run 'ld'. d56 1 a56 1 'ld' accepts Linker Command Language files written in a superset of d60 3 a62 3 This version of 'ld' uses the general purpose BFD libraries to operate on object files. This allows 'ld' to read, combine, and write object files in many different formats--for example, COFF or 'a.out'. d69 1 a69 1 'ld' continues executing, allowing you to identify other errors (or, in d78 1 a78 1 The GNU linker 'ld' is meant to cover a broad range of situations, and d93 1 a93 1 The linker supports a plethora of command-line options, but in actual d95 1 a95 1 a frequent use of 'ld' is to link standard Unix object files on a d97 1 a97 1 'hello.o': d101 2 a102 2 This tells 'ld' to produce a file called OUTPUT as the result of linking the file '/lib/crt0.o' with 'hello.o' and the library 'libc.a', d104 1 a104 1 discussion of the '-l' option below.) d106 1 a106 1 Some of the command-line options to 'ld' may be specified at any d108 1 a108 1 as '-l' or '-T', cause the file to be read at the point at which the d122 1 a122 1 can specify other forms of binary input files using '-l', '-R', and the d125 1 a125 1 message 'No input files'. d130 8 a137 8 linker script or the one specified by using '-T'). This feature permits the linker to link against a file which appears to be an object or an archive, but actually merely defines some symbol values, or uses 'INPUT' or 'GROUP' to load other objects. Specifying a script in this way merely augments the main linker script, with the extra commands placed after the main script; use the '-T' option to replace the default linker script entirely, but note the effect of the 'INSERT' command. *Note Scripts::. d145 6 a150 6 can precede the option name; for example, '-trace-symbol' and '--trace-symbol' are equivalent. Note--there is one exception to this rule. Multiple letter options that start with a lower case 'o' can only be preceded by two dashes. This is to reduce confusion with the '-o' option. So for example '-omagic' sets the output file name to 'magic' whereas '--omagic' sets the NMAGIC flag on the output. d155 1 a155 1 '--trace-symbol foo' and '--trace-symbol=foo' are equivalent. Unique d159 2 a160 2 driver (e.g. 'gcc') then all the linker command line options should be prefixed by '-Wl,' (or whatever is appropriate for the particular d178 5 a182 5 '@@FILE' Read command-line options from FILE. The options read are inserted in place of the original @@FILE option. If FILE does not exist, or cannot be read, then the option will be treated literally, and not removed. d186 5 a190 4 option in either single or double quotes. Any character (including a backslash) may be included by prefixing the character to be included with a backslash. The FILE may itself contain additional @@FILE options; any such options will be processed recursively. d192 1 a192 1 '-a KEYWORD' d194 2 a195 2 argument must be one of the strings 'archive', 'shared', or 'default'. '-aarchive' is functionally equivalent to '-Bstatic', d197 1 a197 1 '-Bdynamic'. This option may be used any number of times. d199 2 a200 2 '--audit AUDITLIB' Adds AUDITLIB to the 'DT_AUDIT' entry of the dynamic section. d203 2 a204 2 'DT_AUDIT' will contain a colon separated list of audit interfaces to use. If the linker finds an object with an audit entry while d206 1 a206 1 'DT_DEPAUDIT' entry in the output file. This option is only d209 7 a215 7 '-A ARCHITECTURE' '--architecture=ARCHITECTURE' In the current release of 'ld', this option is useful only for the Intel 960 family of architectures. In that 'ld' configuration, the ARCHITECTURE argument identifies the particular architecture in the 960 family, enabling some safeguards and modifying the archive-library search path. *Note 'ld' and the Intel 960 family: d218 2 a219 2 Future releases of 'ld' may support similar functionality for other architecture families. d221 4 a224 4 '-b INPUT-FORMAT' '--format=INPUT-FORMAT' 'ld' may be configured to support more than one kind of object file. If your 'ld' is configured this way, you can use the '-b' d226 7 a232 7 follow this option on the command line. Even when 'ld' is configured to support alternative object formats, you don't usually need to specify this, as 'ld' should be configured to expect as a default input format the most usual format on each machine. INPUT-FORMAT is a text string, the name of a particular format supported by the BFD libraries. (You can list the available binary formats with 'objdump -i'.) *Note BFD::. d235 1 a235 1 unusual binary format. You can also use '-b' to switch formats d237 1 a237 1 including '-b INPUT-FORMAT' before each group of object files in a d241 2 a242 2 'GNUTARGET'. *Note Environment::. You can also define the input format from a script, using the command 'TARGET'; see *note Format d245 3 a247 3 '-c MRI-COMMANDFILE' '--mri-script=MRI-COMMANDFILE' For compatibility with linkers produced by MRI, 'ld' accepts script d249 9 a257 9 described in *note MRI Compatible Script Files: MRI. Introduce MRI script files with the option '-c'; use the '-T' option to run linker scripts written in the general-purpose 'ld' scripting language. If MRI-CMDFILE does not exist, 'ld' looks for it in the directories specified by any '-L' options. '-d' '-dc' '-dp' d260 7 a266 7 symbols even if a relocatable output file is specified (with '-r'). The script command 'FORCE_COMMON_ALLOCATION' has the same effect. *Note Miscellaneous Commands::. '--depaudit AUDITLIB' '-P AUDITLIB' Adds AUDITLIB to the 'DT_DEPAUDIT' entry of the dynamic section. d269 4 a272 4 'DT_DEPAUDIT' will contain a colon separated list of audit interfaces to use. This option is only meaningful on ELF platforms supporting the rtld-audit interface. The -P option is provided for Solaris compatibility. d274 2 a275 2 '-e ENTRY' '--entry=ENTRY' d280 2 a281 2 in base 10; you may use a leading '0x' for base 16, or a leading '0' for base 8). *Note Entry Point::, for a discussion of defaults d284 10 a293 10 '--exclude-libs LIB,LIB,...' Specifies a list of archive libraries from which symbols should not be automatically exported. The library names may be delimited by commas or colons. Specifying '--exclude-libs ALL' excludes symbols in all archive libraries from automatic export. This option is available only for the i386 PE targeted port of the linker and for ELF targeted ports. For i386 PE, symbols explicitly listed in a .def file are still exported, regardless of this option. For ELF targeted ports, symbols affected by this option will be treated as hidden. d295 1 a295 1 '--exclude-modules-for-implib MODULE,MODULE,...' d298 15 a312 15 copied wholesale into the import library being generated during the link. The module names may be delimited by commas or colons, and must match exactly the filenames used by 'ld' to open the files; for archive members, this is simply the member name, but for object files the name listed must include and match precisely any path used to specify the input file on the linker's command-line. This option is available only for the i386 PE targeted port of the linker. Symbols explicitly listed in a .def file are still exported, regardless of this option. '-E' '--export-dynamic' '--no-export-dynamic' When creating a dynamically linked executable, using the '-E' option or the '--export-dynamic' option causes the linker to add d314 2 a315 2 is the set of symbols which are visible from dynamic objects at run time. d318 3 a320 3 '--no-export-dynamic' option to restore the default behavior), the dynamic symbol table will normally contain only those symbols which are referenced by some dynamic object mentioned in the link. d322 1 a322 1 If you use 'dlopen' to load a dynamic object which needs to refer d327 3 a329 3 You can also use the dynamic list to control what symbols should be added to the dynamic symbol table if the output format supports it. See the description of '--dynamic-list'. d332 2 a333 2 targets support a similar function to export all symbols from a DLL or EXE; see the description of '--export-all-symbols' below. d335 1 a335 1 '-EB' d338 1 a338 1 '-EL' d342 2 a343 2 '-f NAME' '--auxiliary=NAME' d363 2 a364 2 '-F NAME' '--filter=NAME' d367 3 a369 2 the symbol table of the shared object which is being created should be used as a filter on the symbol table of the shared object NAME. d379 1 a379 1 Some older linkers used the '-F' option throughout a compilation d381 5 a385 5 output object files. The GNU linker uses other mechanisms for this purpose: the '-b', '--format', '--oformat' options, the 'TARGET' command in linker scripts, and the 'GNUTARGET' environment variable. The GNU linker will ignore the '-F' option when not creating an ELF shared object. d387 1 a387 1 '-fini=NAME' d390 1 a390 1 the address of the function. By default, the linker uses '_fini' d393 1 a393 1 '-g' d396 2 a397 2 '-G VALUE' '--gpsize=VALUE' d403 2 a404 2 '-h NAME' '-soname=NAME' d407 4 a410 4 shared object which has a DT_SONAME field, then when the executable is run the dynamic linker will attempt to load the shared object specified by the DT_SONAME field rather than the using the file name given to the linker. d412 2 a413 2 '-i' Perform an incremental link (same as option '-r'). d415 1 a415 1 '-init=NAME' d418 1 a418 1 the address of the function. By default, the linker uses '_init' d421 15 a435 15 '-l NAMESPEC' '--library=NAMESPEC' Add the archive or object file specified by NAMESPEC to the list of files to link. This option may be used any number of times. If NAMESPEC is of the form ':FILENAME', 'ld' will search the library path for a file called FILENAME, otherwise it will search the library path for a file called 'libNAMESPEC.a'. On systems which support shared libraries, 'ld' may also search for files other than 'libNAMESPEC.a'. Specifically, on ELF and SunOS systems, 'ld' will search a directory for a library called 'libNAMESPEC.so' before searching for one called 'libNAMESPEC.a'. (By convention, a '.so' extension indicates a shared library.) Note that this behavior does not apply to ':FILENAME', which always specifies a file called FILENAME. d439 5 a443 5 symbol which was undefined in some object which appeared before the archive on the command line, the linker will include the appropriate file(s) from the archive. However, an undefined symbol in an object appearing later on the command line will not cause the linker to search the archive again. d445 1 a445 1 See the '-(' option for a way to force the linker to search d451 1 a451 1 However, if you are using 'ld' on AIX, note that it is different d454 4 a457 4 '-L SEARCHDIR' '--library-path=SEARCHDIR' Add path SEARCHDIR to the list of paths that 'ld' will search for archive libraries and 'ld' control scripts. You may use this d459 5 a463 5 order in which they are specified on the command line. Directories specified on the command line are searched before the default directories. All '-L' options apply to all '-l' options, regardless of the order in which the options appear. '-L' options do not affect how 'ld' searches for a linker script unless '-T' d466 3 a468 3 If SEARCHDIR begins with '=' or '$SYSROOT', then this prefix will be replaced by the "sysroot prefix", controlled by the '--sysroot' option, or specified when the linker is configured. d471 1 a471 1 '-L') depends on which emulation mode 'ld' is using, and in some d475 1 a475 1 'SEARCH_DIR' command. Directories specified this way are searched d479 1 a479 1 '-m EMULATION' d481 1 a481 1 emulations with the '--verbose' or '-V' options. d483 2 a484 2 If the '-m' option is not used, the emulation is taken from the 'LDEMULATION' environment variable, if that is defined. d489 2 a490 2 '-M' '--print-map' d495 1 d497 1 d500 1 d508 3 a510 3 circumstances the linker will display the final value enclosed by square brackets. Thus for example a linker script containing: d516 1 a516 1 will produce the following output in the link map if the '-M' d523 2 a524 2 See *note Expressions:: for more information about expressions in linker scripts. d526 2 a527 2 '-n' '--nmagic' d530 1 a530 1 numbers, mark the output as 'NMAGIC'. d532 2 a533 2 '-N' '--omagic' d537 3 a539 3 numbers, mark the output as 'OMAGIC'. Note: Although a writable text section is allowed for PE-COFF targets, it does not conform to the format specification published by Microsoft. d541 2 a542 2 '--no-omagic' This option negates most of the effects of the '-N' option. It d545 1 a545 1 against shared libraries. Use '-Bdynamic' for this. d547 5 a551 5 '-o OUTPUT' '--output=OUTPUT' Use OUTPUT as the name for the program produced by 'ld'; if this option is not specified, the name 'a.out' is used by default. The script command 'OUTPUT' can also specify the output file name. d553 2 a554 2 '-O LEVEL' If LEVEL is a numeric values greater than zero 'ld' optimizes the d559 3 a561 18 Also currently there is no difference in the linker's behaviour for different non-zero values of this option. Again this may change with future releases. '-plugin NAME' Involve a plugin in the linking process. The NAME parameter is the absolute filename of the plugin. Usually this parameter is automatically added by the complier, when using link time optimization, but users can also add their own plugins if they so wish. Note that the location of the compiler originated plugins is different from the place where the 'ar', 'nm' and 'ranlib' programs search for their plugins. In order for those commands to make use of a compiler based plugin it must first be copied into the '${libdir}/bfd-plugins' directory. All gcc based linker plugins are backward compatible, so it is sufficient to just copy in the newest one. d563 2 a564 2 '--push-state' The '--push-state' allows to preserve the current state of the d566 1 a566 1 restored with one corresponding '--pop-state' option. d568 5 a572 5 The option which are covered are: '-Bdynamic', '-Bstatic', '-dn', '-dy', '-call_shared', '-non_shared', '-static', '-N', '-n', '--whole-archive', '--no-whole-archive', '-r', '-Ur', '--copy-dt-needed-entries', '--no-copy-dt-needed-entries', '--as-needed', '--no-as-needed', and '-a'. d574 2 a575 2 One target for this option are specifications for 'pkg-config'. When used with the '--libs' option all possibly needed libraries a580 1 '--pop-state' d584 2 a585 2 '-q' '--emit-relocs' d587 3 a589 3 Post link analysis and optimization tools may need this information in order to perform correct modifications of executables. This results in larger executables. d593 1 a593 1 '--force-dynamic' d597 4 a600 4 '-r' '--relocatable' Generate relocatable output--i.e., generate an output file that can in turn serve as input to 'ld'. This is often called "partial d603 1 a603 1 number to 'OMAGIC'. If this option is not specified, an absolute d605 1 a605 1 not_ resolve references to constructors; to do that, use '-Ur'. d608 5 a612 4 file, partial linking is only supported if that input file does not contain any relocations. Different output formats can have further restrictions; for example some 'a.out'-based formats do not support partial linking with input files in other formats at all. d614 1 a614 1 This option does the same thing as '-i'. d616 2 a617 2 '-R FILENAME' '--just-symbols=FILENAME' d623 1 a623 1 For compatibility with other ELF linkers, if the '-R' option is d625 1 a625 1 treated as the '-rpath' option. d627 2 a628 2 '-s' '--strip-all' d631 2 a632 2 '-S' '--strip-debug' d636 7 a642 12 '--strip-discarded' '--no-strip-discarded' Omit (or do not omit) global symbols defined in discarded sections. Enabled by default. '-t' '--trace' Print the names of the input files as 'ld' processes them. '-T SCRIPTFILE' '--script=SCRIPTFILE' Use SCRIPTFILE as the linker script. This script replaces 'ld''s d646 2 a647 2 directory, 'ld' looks for it in the directories specified by any preceding '-L' options. Multiple '-T' options accumulate. d649 2 a650 2 '-dT SCRIPTFILE' '--default-script=SCRIPTFILE' d653 1 a653 1 This option is similar to the '--script' option except that d656 1 a656 1 the '--default-script' option on the command line to affect the d658 3 a660 3 linker command line cannot be directly controlled by the user. (eg because the command line is being constructed by another tool, such as 'gcc'). d662 2 a663 2 '-u SYMBOL' '--undefined=SYMBOL' d666 1 a666 1 modules from standard libraries. '-u' may be repeated with d668 1 a668 1 This option is equivalent to the 'EXTERN' linker script command. d672 1 a672 1 remain undefined, then the option '--require-defined' should be d675 1 a675 1 '--require-defined=SYMBOL' d677 1 a677 1 the same as option '--undefined' except that if SYMBOL is not d680 2 a681 2 'EXTERN', 'ASSERT' and 'DEFINED' together. This option can be used multiple times to require additional symbols. d683 1 a683 1 '-Ur' d685 7 a691 7 '-r': it generates relocatable output--i.e., an output file that can in turn serve as input to 'ld'. When linking C++ programs, '-Ur' _does_ resolve references to constructors, unlike '-r'. It does not work to use '-Ur' on files that were themselves linked with '-Ur'; once the constructor table has been built, it cannot be added to. Use '-Ur' only for the last partial link, and '-r' for the others. d693 1 a693 1 '--orphan-handling=MODE' d700 1 a700 1 'place' d702 2 a703 2 following the strategy described in *note Orphan Sections::. The option '--unique' also affects how sections are placed. d705 1 a705 1 'discard' d707 1 a707 1 '/DISCARD/' section (*note Output Section Discarding::). d709 2 a710 2 'warn' The linker will place the orphan section as for 'place' and d713 1 a713 1 'error' d717 1 a717 1 The default if '--orphan-handling' is not given is 'place'. d719 1 a719 1 '--unique[=SECTION]' d724 8 a731 8 multiple times on the command line; It prevents the normal merging of input sections with the same name, overriding output section assignments in a linker script. '-v' '--version' '-V' Display the version number for 'ld'. The '-V' option also lists d734 2 a735 2 '-x' '--discard-all' d738 2 a739 2 '-X' '--discard-locals' d741 2 a742 2 system-specific local label prefixes, typically '.L' for ELF systems or 'L' for traditional a.out systems.) d744 2 a745 2 '-y SYMBOL' '--trace-symbol=SYMBOL' d753 1 a753 1 '-Y PATH' d757 1 a757 1 '-z KEYWORD' d759 11 d771 1 a771 48 'bndplt' Always generate BND prefix in PLT entries. Supported for Linux/x86_64. 'call-nop=prefix-addr' 'call-nop=suffix-nop' 'call-nop=prefix-BYTE' 'call-nop=suffix-BYTE' Specify the 1-byte 'NOP' padding when transforming indirect call to a locally defined function, foo, via its GOT slot. 'call-nop=prefix-addr' generates '0x67 call foo'. 'call-nop=suffix-nop' generates 'call foo 0x90'. 'call-nop=prefix-BYTE' generates 'BYTE call foo'. 'call-nop=suffix-BYTE' generates 'call foo BYTE'. Supported for i386 and x86_64. 'combreloc' 'nocombreloc' Combine multiple dynamic relocation sections and sort to improve dynamic symbol lookup caching. Do not do this if 'nocombreloc'. 'common' 'nocommon' Generate common symbols with STT_COMMON type during a relocatable link. Use STT_OBJECT type if 'nocommon'. 'common-page-size=VALUE' Set the page size most commonly used to VALUE. Memory image layout will be optimized to minimize memory pages if the system is using pages of this size. 'defs' Report unresolved symbol references from regular object files. This is done even if the linker is creating a non-symbolic shared library. This option is the inverse of '-z undefs'. 'dynamic-undefined-weak' 'nodynamic-undefined-weak' Make undefined weak symbols dynamic when building a dynamic object, if they are referenced from a regular object file and not forced local by symbol visibility or versioning. Do not make them dynamic if 'nodynamic-undefined-weak'. If neither option is given, a target may default to either option being in force, or make some other selection of undefined weak symbols dynamic. Not all targets support these options. 'execstack' d774 1 a774 1 'global' d779 1 a779 19 'globalaudit' This option is only meaningful when building a dynamic executable. This option marks the executable as requiring global auditing by setting the 'DF_1_GLOBAUDIT' bit in the 'DT_FLAGS_1' dynamic tag. Global auditing requires that any auditing library defined via the '--depaudit' or '-P' command line options be run for all dynamic objects loaded by the application. 'ibtplt' Generate Intel Indirect Branch Tracking (IBT) enabled PLT entries. Supported for Linux/i386 and Linux/x86_64. 'ibt' Generate GNU_PROPERTY_X86_FEATURE_1_IBT in .note.gnu.property section to indicate compatibility with IBT. This also implies 'ibtplt'. Supported for Linux/i386 and Linux/x86_64. 'initfirst' d787 3 a789 4 'interpose' Specify that the dynamic loader should modify its symbol search order so that symbols in this shared library interpose all other shared libraries not so marked. d791 1 a791 1 'lazy' d797 2 a798 2 'loadfltr' Specify that the object's filters be processed immediately at d801 2 a802 2 'max-page-size=VALUE' Set the maximum memory page size supported to VALUE. d804 2 a805 2 'muldefs' Allow multiple definitions. d807 5 a811 1 'nocopyreloc' d816 3 a818 3 'nodefaultlib' Specify that the dynamic loader search for dependencies of this object should ignore any default library search paths. d820 2 a821 2 'nodelete' Specify that the object shouldn't be unloaded at runtime. d823 2 a824 2 'nodlopen' Specify that the object is not available to 'dlopen'. d826 2 a827 2 'nodump' Specify that the object can not be dumped by 'dldump'. d829 1 a829 1 'noexecstack' d832 8 a839 7 'noextern-protected-data' Don't treat protected data symbols as external when building a shared library. This option overrides the linker backend default. It can be used to work around incorrect relocations against protected data symbols generated by compiler. Updates on protected data symbols by another module aren't visible to the resulting shared library. Supported for i386 and x86-64. d841 3 a843 4 'noreloc-overflow' Disable relocation overflow check. This can be used to disable relocation overflow check if there will be no dynamic relocation overflow at run-time. Supported for x86_64. d845 1 a845 1 'now' d848 23 a870 28 program is started, or when the shared library is loaded by dlopen, instead of deferring function call resolution to the point when the function is first called. 'origin' Specify that the object requires '$ORIGIN' handling in paths. 'relro' 'norelro' Create an ELF 'PT_GNU_RELRO' segment header in the object. This specifies a memory segment that should be made read-only after relocation, if supported. Specifying 'common-page-size' smaller than the system page size will render this protection ineffective. Don't create an ELF 'PT_GNU_RELRO' segment if 'norelro'. 'separate-code' 'noseparate-code' Create separate code 'PT_LOAD' segment header in the object. This specifies a memory segment that should contain only instructions and must be in wholly disjoint pages from any other data. Don't create separate code 'PT_LOAD' segment if 'noseparate-code' is used. 'shstk' Generate GNU_PROPERTY_X86_FEATURE_1_SHSTK in .note.gnu.property section to indicate compatibility with Intel Shadow Stack. Supported for Linux/i386 and d873 33 a905 4 'stack-size=VALUE' Specify a stack size for an ELF 'PT_GNU_STACK' segment. Specifying zero will override any default non-zero sized 'PT_GNU_STACK' segment creation. a906 11 'text' 'notext' 'textoff' Report an error if DT_TEXTREL is set, i.e., if the binary has dynamic relocations in read-only sections. Don't report an error if 'notext' or 'textoff'. 'undefs' Do not report unresolved symbol references from regular object files, either when creating an executable, or when creating a shared library. This option is the inverse of '-z defs'. d910 4 a913 4 '-( ARCHIVES -)' '--start-group ARCHIVES --end-group' The ARCHIVES should be a list of archive files. They may be either explicit file names, or '-l' options. d916 7 a922 7 undefined references are created. Normally, an archive is searched only once in the order that it is specified on the command line. If a symbol in that archive is needed to resolve an undefined symbol referred to by an object in an archive that appears later on the command line, the linker would not be able to resolve that reference. By grouping the archives, they all be searched repeatedly until all possible references are resolved. d928 2 a929 2 '--accept-unknown-input-arch' '--no-accept-unknown-input-arch' d933 4 a936 4 This was the default behaviour of the linker, before release 2.14. The default behaviour from release 2.14 onwards is to reject such input files, and so the '--accept-unknown-input-arch' option has been added to restore the old behaviour. d938 2 a939 2 '--as-needed' '--no-as-needed' d941 1 a941 1 mentioned on the command line after the '--as-needed' option. d944 1 a944 1 library is actually needed or not. '--as-needed' causes a d946 2 a947 2 in the link_ satisfies a non-weak undefined symbol reference from a regular object file or, if the library is not found in the d949 6 a954 5 symbol reference from another needed dynamic library. Object files or libraries appearing on the command line _after_ the library in question do not affect whether the library is seen as needed. This is similar to the rules for extraction of object files from archives. '--no-as-needed' restores the default behaviour. d956 2 a957 2 '--add-needed' '--no-add-needed' d959 3 a961 3 their names to the '--as-needed' and '--no-as-needed' options. They have been replaced by '--copy-dt-needed-entries' and '--no-copy-dt-needed-entries'. d963 1 a963 1 '-assert KEYWORD' d966 3 a968 3 '-Bdynamic' '-dy' '-call_shared' d970 5 a974 5 platforms for which shared libraries are supported. This option is normally the default on such platforms. The different variants of this option are for compatibility with various systems. You may use this option multiple times on the command line: it affects library searching for '-l' options which follow it. d976 2 a977 2 '-Bgroup' Set the 'DF_1_GROUP' flag in the 'DT_FLAGS_1' entry in the dynamic d980 1 a980 1 '--unresolved-symbols=report-all' is implied. This option is only d983 4 a986 4 '-Bstatic' '-dn' '-non_shared' '-static' d989 8 a996 7 variants of this option are for compatibility with various systems. You may use this option multiple times on the command line: it affects library searching for '-l' options which follow it. This option also implies '--unresolved-symbols=report-all'. This option can be used with '-shared'. Doing so means that a shared library is being created but that all of the library's external references must be resolved by pulling in entries from static libraries. d998 1 a998 1 '-Bsymbolic' d1002 3 a1004 3 override the definition within the shared library. This option can also be used with the '--export-dynamic' option, when creating a position independent executable, to bind references to global d1006 2 a1007 2 only meaningful on ELF platforms which support shared libraries and position independent executables. d1009 1 a1009 1 '-Bsymbolic-functions' d1012 1 a1012 1 option can also be used with the '--export-dynamic' option, when d1018 1 a1018 1 '--dynamic-list=DYNAMIC-LIST-FILE' d1028 1 a1028 1 without scope and node name. See *note VERSION:: for more d1031 1 a1031 1 '--dynamic-list-data' d1034 1 a1034 1 '--dynamic-list-cpp-new' d1038 1 a1038 1 '--dynamic-list-cpp-typeinfo' d1042 2 a1043 2 '--check-sections' '--no-check-sections' d1050 1 a1050 1 '--check-sections'. Section overlap is not usually checked for d1052 1 a1052 1 the '--check-sections' option. d1054 2 a1055 2 '--copy-dt-needed-entries' '--no-copy-dt-needed-entries' d1060 1 a1060 1 input dynamic library. With '--copy-dt-needed-entries' specified d1062 2 a1063 2 will have their DT_NEEDED entries added. The default behaviour can be restored with '--no-copy-dt-needed-entries'. d1066 1 a1066 1 dynamic libraries. With '--copy-dt-needed-entries' dynamic d1074 1 a1074 1 '--cref' d1080 6 a1085 6 easily processed by a script if necessary. The symbols are printed out, sorted by name. For each symbol, a list of file names is given. If the symbol is defined, the first file listed is the location of the definition. If the symbol is defined as a common value then any files where this happens appear next. Finally any files that reference the symbol are listed. d1087 1 a1087 1 '--no-define-common' d1089 1 a1089 1 The script command 'INHIBIT_COMMON_ALLOCATION' has the same effect. d1092 1 a1092 1 The '--no-define-common' option allows decoupling the decision to d1094 8 a1101 16 file type; otherwise a non-Relocatable output type forces assigning addresses to Common symbols. Using '--no-define-common' allows Common symbols that are referenced from a shared library to be assigned addresses only in the main program. This eliminates the unused duplicate space in the shared library, and also prevents any possible confusion over resolving to the wrong duplicate when there are many dynamic modules with specialized search paths for runtime symbol resolution. '--force-group-allocation' This option causes the linker to place section group members like normal input sections, and to delete the section groups. This is the default behaviour for a final link but this option can be used to change the behaviour of a relocatable link ('-r'). The script command 'FORCE_GROUP_ALLOCATION' has the same effect. *Note Miscellaneous Commands::. d1103 1 a1103 1 '--defsym=SYMBOL=EXPRESSION' d1105 9 a1113 9 address given by EXPRESSION. You may use this option as many times as necessary to define multiple symbols in the command line. A limited form of arithmetic is supported for the EXPRESSION in this context: you may give a hexadecimal constant or the name of an existing symbol, or use '+' and '-' to add or subtract hexadecimal constants or symbols. If you need more elaborate expressions, consider using the linker command language from a script (*note Assignments::). _Note:_ there should be no white space between SYMBOL, the equals sign ("<=>"), and EXPRESSION. d1115 2 a1116 2 '--demangle[=STYLE]' '--no-demangle' d1118 4 a1121 4 messages and other output. When the linker is told to demangle, it tries to present symbol names in a readable fashion: it strips leading underscores if they are used by the object file format, and converts C++ mangled symbol names into user readable names. d1125 1 a1125 1 default unless the environment variable 'COLLECT_NO_DEMANGLE' is d1128 2 a1129 2 '-IFILE' '--dynamic-linker=FILE' d1132 2 a1133 2 linker is normally correct; don't use this unless you know what you are doing. d1135 1 a1135 1 '--no-dynamic-linker' d1141 2 a1142 7 '--embedded-relocs' This option is similar to the '--emit-relocs' option except that the relocs are stored in a target specific section. This option is only supported by the 'BFIN', 'CR16' and _M68K_ targets. '--fatal-warnings' '--no-fatal-warnings' d1144 1 a1144 1 restored with the option '--no-fatal-warnings'. d1146 1 a1146 1 '--force-exe-suffix' d1150 2 a1151 2 '.exe' or '.dll' suffix, this option forces the linker to copy the output file to one of the same name with a '.exe' suffix. This d1153 2 a1154 2 Microsoft Windows host, since some versions of Windows won't run an image unless it ends in a '.exe' suffix. d1156 2 a1157 2 '--gc-sections' '--no-gc-sections' d1161 3 a1163 3 specifying '--no-gc-sections' on the command line. Note that garbage collection for COFF and PE format targets is supported, but the implementation is currently considered to be experimental. d1165 1 a1165 1 '--gc-sections' decides which input sections are used by examining d1173 1 a1173 1 relocations. See '--entry' and '--undefined'. d1176 3 a1178 3 option '-r'). In this case the root of symbols kept must be explicitly specified either by an '--entry' or '--undefined' option or by a 'ENTRY' command in the linker script. d1180 2 a1181 2 '--print-gc-sections' '--no-print-gc-sections' d1184 1 a1184 1 collection has been enabled via the '--gc-sections') option. The d1186 1 a1186 1 can be restored by specifying '--no-print-gc-sections' on the d1189 1 a1189 11 '--gc-keep-exported' When '--gc-sections' is enabled, this option prevents garbage collection of unused input sections that contain global symbols having default or protected visibility. This option is intended to be used for executables where unreferenced sections would otherwise be garbage collected regardless of the external visibility of contained symbols. Note that this option has no effect when linking shared objects since it is already the default behaviour. This option is only supported for ELF format targets. '--print-output-format' d1192 1 a1192 1 in an 'OUTPUT_FORMAT' linker script command (*note File d1195 7 a1201 7 '--print-memory-usage' Print used size, total size and used size of memory regions created with the *note MEMORY:: command. This is useful on embedded targets to have a quick view of amount of free memory. The format of the output has one headline and one line per region. It is both human readable and easily parsable by tools. Here is an example of an output: d1207 1 a1207 1 '--help' d1211 1 a1211 1 '--target-help' d1215 1 a1215 1 '-Map=MAPFILE' d1217 1 a1217 1 '-M' option, above. d1219 3 a1221 3 '--no-keep-memory' 'ld' normally optimizes for speed over memory usage by caching the symbol tables of input files in memory. This option tells 'ld' to d1223 1 a1223 1 as necessary. This may be required if 'ld' runs out of memory d1226 2 a1227 2 '--no-undefined' '-z defs' d1230 1 a1230 1 library. The switch '--[no-]allow-shlib-undefined' controls the d1234 2 a1235 4 The effects of this option can be reverted by using '-z undefs'. '--allow-multiple-definition' '-z muldefs' d1237 1 a1237 1 report a fatal error. These options allow multiple definitions and d1240 2 a1241 2 '--allow-shlib-undefined' '--no-allow-shlib-undefined' d1243 4 a1246 4 switch is similar to '--no-undefined' except that it determines the behaviour when the undefined symbols are in a shared library rather than a regular object file. It does not affect how undefined symbols in regular object files are handled. d1250 2 a1251 2 create an executable, but to allow them if the linker is being used to create a shared library. d1256 4 a1259 3 * A shared library specified at link time may not be the same as the one that is available at load time, so the symbol might actually be resolvable at load time. d1268 1 a1268 1 '--no-undefined-version' d1270 1 a1270 1 ignore it. This option disallows symbols with undefined version d1273 1 a1273 1 '--default-symver' d1277 1 a1277 1 '--default-imported-symver' d1281 2 a1282 2 '--no-warn-mismatch' Normally 'ld' will give an error if you try to link together input d1285 1 a1285 1 endiannesses. This option tells 'ld' that it should silently d1287 2 a1288 2 care, in cases when you have taken some special action that ensures that the linker errors are inappropriate. d1290 2 a1291 2 '--no-warn-search-mismatch' Normally 'ld' will give a warning if it finds an incompatible d1294 2 a1295 2 '--no-whole-archive' Turn off the effect of the '--whole-archive' option for subsequent d1298 1 a1298 1 '--noinhibit-exec' d1301 2 a1302 2 encounters errors during the link process; it exits without writing an output file when it issues any error whatsoever. d1304 12 a1315 11 '-nostdlib' Only search library directories explicitly specified on the command line. Library directories specified in linker scripts (including linker scripts specified on the command line) are ignored. '--oformat=OUTPUT-FORMAT' 'ld' may be configured to support more than one kind of object file. If your 'ld' is configured this way, you can use the '--oformat' option to specify the binary format for the output object file. Even when 'ld' is configured to support alternative object formats, you don't usually need to specify this, as 'ld' d1319 2 a1320 2 can list the available binary formats with 'objdump -i'.) The script command 'OUTPUT_FORMAT' can also specify the output format, d1323 2 a1324 11 '--out-implib FILE' Create an import library in FILE corresponding to the executable the linker is generating (eg. a DLL or ELF program). This import library (which should be called '*.dll.a' or '*.a' for DLLs) may be used to link clients against the generated executable; this behaviour makes it possible to skip a separate import library creation step (eg. 'dlltool' for DLLs). This option is only available for the i386 PE and ELF targetted ports of the linker. '-pie' '--pic-executable' d1333 1 a1333 1 '-qmagic' d1336 1 a1336 1 '-Qy' d1339 2 a1340 2 '--relax' '--no-relax' d1342 5 a1346 5 supported on a few targets. *Note 'ld' and the H8/300: H8/300. *Note 'ld' and the Intel 960 family: i960. *Note 'ld' and Xtensa Processors: Xtensa. *Note 'ld' and the 68HC11 and 68HC12: M68HC11/68HC12. *Note 'ld' and the Altera Nios II: Nios II. *Note 'ld' and PowerPC 32-bit ELF Support: PowerPC ELF32. d1348 1 a1348 1 On some platforms the '--relax' option performs target specific, d1355 3 a1357 3 symbolic debugging of the resulting executable impossible. This is known to be the case for the Matsushita MN10200 and MN10300 family of processors. d1359 1 a1359 1 On platforms where this is not supported, '--relax' is accepted, d1362 1 a1362 1 On platforms where '--relax' is accepted the option '--no-relax' d1365 1 a1365 1 '--retain-symbols-file=FILENAME' d1372 1 a1372 1 '--retain-symbols-file' does _not_ discard undefined symbols, or d1375 2 a1376 2 You may only specify '--retain-symbols-file' once in the command line. It overrides '-s' and '-S'. d1378 1 a1378 1 '-rpath=DIR' d1380 1 a1380 1 when linking an ELF executable with shared objects. All '-rpath' d1382 6 a1387 6 uses them to locate shared objects at runtime. The '-rpath' option is also used when locating shared objects which are needed by shared objects explicitly included in the link; see the description of the '-rpath-link' option. If '-rpath' is not used when linking an ELF executable, the contents of the environment variable 'LD_RUN_PATH' will be used if it is defined. d1389 1 a1389 1 The '-rpath' option may also be used on SunOS. By default, on d1391 4 a1394 4 '-L' options it is given. If a '-rpath' option is used, the runtime search path will be formed exclusively using the '-rpath' options, ignoring the '-L' options. This can be useful when using gcc, which adds many '-L' options which may be on NFS mounted file d1397 1 a1397 1 For compatibility with other ELF linkers, if the '-R' option is d1399 1 a1399 1 treated as the '-rpath' option. d1401 1 a1401 1 '-rpath-link=DIR' d1403 2 a1404 2 This happens when an 'ld -shared' link includes a shared library as one of the input files. d1409 1 a1409 1 it is not included explicitly. In such a case, the '-rpath-link' d1411 1 a1411 1 '-rpath-link' option may specify a sequence of directory names a1414 9 The tokens $ORIGIN and $LIB can appear in these search directories. They will be replaced by the full path to the directory containing the program or shared object in the case of $ORIGIN and either 'lib' - for 32-bit binaries - or 'lib64' - for 64-bit binaries - in the case of $LIB. The alternative form of these tokens - ${ORIGIN} and ${LIB} can also be used. The token $PLATFORM is not supported. d1416 1 a1416 1 path that may have been hard compiled into a shared library. In d1422 7 a1428 6 1. Any directories specified by '-rpath-link' options. 2. Any directories specified by '-rpath' options. The difference between '-rpath' and '-rpath-link' is that directories specified by '-rpath' options are included in the executable and used at runtime, whereas the '-rpath-link' option is only effective at link time. Searching '-rpath' in this way is d1430 9 a1438 6 been configured with the '--with-sysroot' option. 3. On an ELF system, for native linkers, if the '-rpath' and '-rpath-link' options were not used, search the contents of the environment variable 'LD_RUN_PATH'. 4. On SunOS, if the '-rpath' option was not used, search any directories specified using '-L' options. d1440 9 a1448 6 variable 'LD_LIBRARY_PATH'. 6. For a native ELF linker, the directories in 'DT_RUNPATH' or 'DT_RPATH' of a shared library are searched for shared libraries needed by it. The 'DT_RPATH' entries are ignored if 'DT_RUNPATH' entries exist. 7. The default directories, normally '/lib' and '/usr/lib'. d1450 1 a1450 1 '/etc/ld.so.conf' exists, the list of directories found in d1456 2 a1457 2 '-shared' '-Bshareable' d1459 8 a1466 8 XCOFF and SunOS platforms. On SunOS, the linker will automatically create a shared library if the '-e' option is not used and there are undefined symbols in the link. '--sort-common' '--sort-common=ascending' '--sort-common=descending' This option tells 'ld' to sort the common symbols by alignment in d1470 1 a1470 1 one-byte. This is to prevent gaps between symbols due to alignment d1474 2 a1475 2 '--sort-section=name' This option will apply 'SORT_BY_NAME' to all wildcard section d1478 2 a1479 2 '--sort-section=alignment' This option will apply 'SORT_BY_ALIGNMENT' to all wildcard section d1482 4 a1485 9 '--spare-dynamic-tags=COUNT' This option specifies the number of empty slots to leave in the .dynamic section of ELF shared objects. Empty slots may be needed by post processing tools, such as the prelinker. The default is 5. '--split-by-file[=SIZE]' Similar to '--split-by-reloc' but creates a new output section for each input file when SIZE is reached. SIZE defaults to a size of 1 if not given. d1487 1 a1487 1 '--split-by-reloc[=COUNT]' d1490 3 a1492 3 relocations. This is useful when generating huge relocatable files for downloading into certain real time kernels with the COFF object file format; since COFF cannot represent more than 65535 d1500 1 a1500 1 '--stats' d1504 1 a1504 1 '--sysroot=DIRECTORY' d1507 1 a1507 1 that were configured using '--with-sysroot'. d1509 3 a1511 8 '--task-link' This is used by COFF/PE based targets to create a task-linked object file where all of the global symbols have been converted to statics. '--traditional-format' For some targets, the output of 'ld' is different in some ways from the output of some existing linker. This switch requests 'ld' to d1514 1 a1514 1 For example, on SunOS, 'ld' combines duplicate entries in the d1516 4 a1519 4 with full debugging information by over 30 percent. Unfortunately, the SunOS 'dbx' program can not read the resulting program ('gdb' has no trouble). The '--traditional-format' switch tells 'ld' to not combine duplicate entries. d1521 1 a1521 1 '--section-start=SECTIONNAME=ORG' d1524 10 a1533 10 locate multiple sections in the command line. ORG must be a single hexadecimal integer; for compatibility with other linkers, you may omit the leading '0x' usually associated with hexadecimal values. _Note:_ there should be no white space between SECTIONNAME, the equals sign ("<=>"), and ORG. '-Tbss=ORG' '-Tdata=ORG' '-Ttext=ORG' Same as '--section-start', with '.bss', '.data' or '.text' as the d1536 1 a1536 1 '-Ttext-segment=ORG' d1540 1 a1540 1 '-Trodata-segment=ORG' d1546 1 a1546 1 '-Tldata-segment=ORG' d1551 1 a1551 1 '--unresolved-symbols=METHOD' d1553 1 a1553 1 possible values for 'method': d1555 1 a1555 1 'ignore-all' d1558 1 a1558 1 'report-all' d1561 1 a1561 1 'ignore-in-object-files' d1566 6 a1571 6 'ignore-in-shared-libs' Report unresolved symbols that come from regular object files, but ignore them if they come from shared libraries. This can be useful when creating a dynamic binary and it is known that all the shared libraries that it should be referencing are included on the linker's command line. d1574 1 a1574 1 controlled by the '--[no-]allow-shlib-undefined' option. d1578 1 a1578 1 '--warn-unresolved-symbols' can change this to a warning. d1580 3 a1582 3 '--dll-verbose' '--verbose[=NUMBER]' Display the version number for 'ld' and list the linker emulations d1584 1 a1584 1 Display the linker script being used by the linker. If the d1588 1 a1588 1 '--version-script=VERSION-SCRIPTFILE' d1590 17 a1606 16 typically used when creating shared libraries to specify additional information about the version hierarchy for the library being created. This option is only fully supported on ELF platforms which support shared libraries; see *note VERSION::. It is partially supported on PE platforms, which can use version scripts to filter symbol visibility in auto-export mode: any symbols marked 'local' in the version script will not be exported. *Note WIN32::. '--warn-common' Warn when a common symbol is combined with another common symbol or with a symbol definition. Unix linkers allow this somewhat sloppy practice, but linkers on some other operating systems do not. This option allows you to find potential problems from combining global symbols. Unfortunately, some C libraries use this practice, so you may get some warnings about symbols in the libraries as well as in your programs. d1611 1 a1611 1 'int i = 1;' d1615 1 a1615 1 'extern int i;' d1620 1 a1620 1 'int i;' d1622 6 a1627 6 symbols for a variable, it goes in the uninitialized data area of the output file. The linker merges multiple common symbols for the same variable into a single symbol. If they are of different sizes, it picks the largest size. The linker turns a common symbol into a declaration, if there is a definition of the same variable. d1629 1 a1629 1 The '--warn-common' option can produce five kinds of warnings. d1642 3 a1644 3 definition for the symbol is encountered. This is the same as the previous case, except that the symbols are encountered in a different order. d1660 3 a1662 3 5. Merging a common symbol with a previous smaller common symbol. This is the same as the previous case, except that the symbols are encountered in a different order. d1667 1 a1667 1 '--warn-constructors' d1672 1 a1672 1 '--warn-multiple-gp' d1675 10 a1684 10 Alpha. Specifically, some processors put large-valued constants in a special section. A special register (the global pointer) points into the middle of this section, so that constants can be loaded efficiently via a base-register relative addressing mode. Since the offset in base-register relative mode is fixed and relatively small (e.g., 16 bits), this limits the maximum size of the constant pool. Thus, in large programs, it is often necessary to use multiple global pointer values in order to be able to address all possible constants. This option causes a warning to be issued whenever this case occurs. d1686 1 a1686 1 '--warn-once' d1690 1 a1690 1 '--warn-section-align' d1694 1 a1694 1 specified; that is, if the 'SECTIONS' command does not specify a d1697 1 a1697 1 '--warn-shared-textrel' d1700 1 a1700 1 '--warn-alternate-em' d1703 1 a1703 1 '--warn-unresolved-symbols' d1705 1 a1705 1 option '--unresolved-symbols') it will normally generate an error. d1708 1 a1708 1 '--error-unresolved-symbols' d1712 1 a1712 1 '--whole-archive' d1714 1 a1714 1 '--whole-archive' option, include every object file in the archive d1716 2 a1717 2 object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the d1721 4 a1724 4 about this option, so you have to use '-Wl,-whole-archive'. Second, don't forget to use '-Wl,-no-whole-archive' after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well. d1726 1 a1726 1 '--wrap=SYMBOL' d1728 2 a1729 2 SYMBOL will be resolved to '__wrap_SYMBOL'. Any undefined reference to '__real_SYMBOL' will be resolved to SYMBOL. d1732 2 a1733 2 wrapper function should be called '__wrap_SYMBOL'. If it wishes to call the system function, it should call '__real_SYMBOL'. d1744 18 a1761 20 If you link other code with this file using '--wrap malloc', then all calls to 'malloc' will call the function '__wrap_malloc' instead. The call to '__real_malloc' in '__wrap_malloc' will call the real 'malloc' function. You may wish to provide a '__real_malloc' function as well, so that links without the '--wrap' option will succeed. If you do this, you should not put the definition of '__real_malloc' in the same file as '__wrap_malloc'; if you do, the assembler may resolve the call before the linker has a chance to wrap it to 'malloc'. '--eh-frame-hdr' '--no-eh-frame-hdr' Request ('--eh-frame-hdr') or suppress ('--no-eh-frame-hdr') the creation of '.eh_frame_hdr' section and ELF 'PT_GNU_EH_FRAME' segment header. '--no-ld-generated-unwind-info' Request creation of '.eh_frame' unwind info for linker generated code sections like PLT. This option is on by default if linker d1764 2 a1765 2 '--enable-new-dtags' '--disable-new-dtags' d1767 2 a1768 2 ELF systems may not understand them. If you specify '--enable-new-dtags', the new dynamic tags will be created as d1770 2 a1771 2 '--disable-new-dtags', no new dynamic tags will be created. By default, the new dynamic tags are not created. Note that those d1774 1 a1774 1 '--hash-size=NUMBER' d1782 21 a1802 33 '--hash-style=STYLE' Set the type of linker's hash table(s). STYLE can be either 'sysv' for classic ELF '.hash' section, 'gnu' for new style GNU '.gnu.hash' section or 'both' for both the classic ELF '.hash' and new style GNU '.gnu.hash' hash tables. The default is 'sysv'. '--compress-debug-sections=none' '--compress-debug-sections=zlib' '--compress-debug-sections=zlib-gnu' '--compress-debug-sections=zlib-gabi' On ELF platforms, these options control how DWARF debug sections are compressed using zlib. '--compress-debug-sections=none' doesn't compress DWARF debug sections. '--compress-debug-sections=zlib-gnu' compresses DWARF debug sections and renames them to begin with '.zdebug' instead of '.debug'. '--compress-debug-sections=zlib-gabi' also compresses DWARF debug sections, but rather than renaming them it sets the SHF_COMPRESSED flag in the sections' headers. The '--compress-debug-sections=zlib' option is an alias for '--compress-debug-sections=zlib-gabi'. Note that this option overrides any compression in input debug sections, so if a binary is linked with '--compress-debug-sections=none' for example, then any compressed debug sections in input files will be uncompressed before they are copied into the output binary. The default compression behaviour varies depending upon the target involved and the configure options used to build the toolchain. The default can be determined by examining the output from the linker's '--help' option. d1804 1 a1804 1 '--reduce-memory-overheads' d1812 1 a1812 1 linker's run time. This is not done however if the '--hash-size' d1815 1 a1815 1 The '--reduce-memory-overheads' switch may be also be used to d1818 11 a1828 11 '--build-id' '--build-id=STYLE' Request the creation of a '.note.gnu.build-id' ELF note section or a '.buildid' COFF section. The contents of the note are unique bits identifying this linked file. STYLE can be 'uuid' to use 128 random bits, 'sha1' to use a 160-bit SHA1 hash on the normative parts of the output contents, 'md5' to use a 128-bit MD5 hash on the normative parts of the output contents, or '0xHEXSTRING' to use a chosen bit string specified as an even number of hexadecimal digits ('-' and ':' characters between digit pairs are ignored). If STYLE is omitted, 'sha1' is used. d1830 1 a1830 1 The 'md5' and 'sha1' styles produces an identifier that is always d1837 2 a1838 2 Passing 'none' for STYLE disables the setting from any '--build-id' options earlier on the command line. d1843 1 a1843 1 The i386 PE linker supports the '-shared' option, which causes the d1845 2 a1846 2 executable. You should name the output '*.dll' when you use this option. In addition, the linker fully supports the standard '*.def' d1852 3 a1854 3 support additional command line options that are specific to the i386 PE target. Options that take values may be separated from their values by either a space or an equals sign. d1856 1 a1856 1 '--add-stdcall-alias' d1861 1 a1861 1 '--base-file FILE' d1863 1 a1863 1 of all the relocations needed for generating DLLs with 'dlltool'. d1866 1 a1866 1 '--dll' d1868 1 a1868 1 '-shared' or specify a 'LIBRARY' in a given '.def' file. [This d1871 2 a1872 2 '--enable-long-section-names' '--disable-long-section-names' d1875 17 a1891 17 normal limit for COFF. By default, these names are only allowed in object files, as fully-linked executable images do not carry the COFF string table required to support the longer names. As a GNU extension, it is possible to allow their use in executable images as well, or to (probably pointlessly!) disallow it in object files, by using these two options. Executable images generated with these long section names are slightly non-standard, carrying as they do a string table, and may generate confusing output when examined with non-GNU PE-aware tools, such as file viewers and dumpers. However, GDB relies on the use of PE long section names to find Dwarf-2 debug information sections in an executable image at runtime, and so if neither option is specified on the command-line, 'ld' will enable long section names, overriding the default and technically correct behaviour, when it finds the presence of debug information while linking an executable image and not stripping symbols. [This option is valid for all PE targeted ports of the linker] d1893 2 a1894 2 '--enable-stdcall-fixup' '--disable-stdcall-fixup' d1898 10 a1907 9 and will resolve that symbol by linking to the match. For example, the undefined symbol '_foo' might be linked to the function '_foo@@12', or the undefined symbol '_bar@@16' might be linked to the function '_bar'. When the linker does this, it prints a warning, since it normally should have failed to link, but sometimes import libraries generated from third-party dlls may need this feature to be usable. If you specify '--enable-stdcall-fixup', this feature is fully enabled and warnings are not printed. If you specify '--disable-stdcall-fixup', this feature is disabled and such d1911 2 a1912 2 '--leading-underscore' '--no-leading-underscore' d1914 1 a1914 1 defined in target's description. By this option it is possible to d1917 1 a1917 1 '--export-all-symbols' d1919 2 a1920 2 will be exported by the DLL. Note that this is the default if there otherwise wouldn't be any exported symbols. When symbols are d1923 2 a1924 2 unless this option is given. Note that the symbols 'DllMain@@12', 'DllEntryPoint@@0', 'DllMainCRTStartup@@12', and 'impure_ptr' will d1926 13 a1938 13 DLLs will not be re-exported, nor will symbols specifying the DLL's internal layout such as those beginning with '_head_' or ending with '_iname'. In addition, no symbols from 'libgcc', 'libstd++', 'libmingw32', or 'crtX.o' will be exported. Symbols whose names begin with '__rtti_' or '__builtin_' will not be exported, to help with C++ DLLs. Finally, there is an extensive list of cygwin-private symbols that are not exported (obviously, this applies on when building DLLs for cygwin targets). These cygwin-excludes are: '_cygwin_dll_entry@@12', '_cygwin_crt0_common@@8', '_cygwin_noncygwin_dll_entry@@12', '_fmode', '_impure_ptr', 'cygwin_attach_dll', 'cygwin_premain0', 'cygwin_premain1', 'cygwin_premain2', 'cygwin_premain3', and 'environ'. [This option is specific to the i386 PE targeted port d1941 1 a1941 1 '--exclude-symbols SYMBOL,SYMBOL,...' d1947 1 a1947 1 '--exclude-all-symbols' d1951 5 a1955 5 '--file-alignment' Specify the file alignment. Sections in the file will always begin at file offsets which are multiples of this number. This defaults to 512. [This option is specific to the i386 PE targeted port of the linker] d1957 2 a1958 2 '--heap RESERVE' '--heap RESERVE,COMMIT' d1964 1 a1964 1 '--image-base VALUE' d1973 1 a1973 1 '--kill-at' d1978 8 a1985 8 '--large-address-aware' If given, the appropriate bit in the "Characteristics" field of the COFF header is set to indicate that this executable supports virtual addresses greater than 2 gigabytes. This should be used in conjunction with the /3GB or /USERVA=VALUE megabytes switch in the "[operating systems]" section of the BOOT.INI. Otherwise, this bit has no effect. [This option is specific to PE targeted ports of the linker] d1987 4 a1990 4 '--disable-large-address-aware' Reverts the effect of a previous '--large-address-aware' option. This is useful if '--large-address-aware' is always set by the compiler driver (e.g. Cygwin gcc) and the executable does not d1994 1 a1994 1 '--major-image-version VALUE' d1999 1 a1999 1 '--major-os-version VALUE' d2003 1 a2003 1 '--major-subsystem-version VALUE' d2008 1 a2008 1 '--minor-image-version VALUE' d2013 1 a2013 1 '--minor-os-version VALUE' d2017 1 a2017 1 '--minor-subsystem-version VALUE' d2022 1 a2022 1 '--output-def FILE' d2025 2 a2026 2 (which should be called '*.def') may be used to create an import library with 'dlltool' or may be used as a reference to d2030 11 a2040 2 '--enable-auto-image-base' '--enable-auto-image-base=VALUE' d2042 1 a2042 1 with base VALUE, unless one is specified using the '--image-base' d2048 1 a2048 1 '--disable-auto-image-base' d2050 1 a2050 1 user-specified image base ('--image-base') then use the platform d2054 8 a2061 8 '--dll-search-prefix STRING' When linking dynamically to a dll without an import library, search for '.dll' in preference to 'lib.dll'. This behaviour allows easy distinction between DLLs built for the various "subplatforms": native, cygwin, uwin, pw, etc. For instance, cygwin DLLs typically use '--dll-search-prefix=cyg'. [This option is specific to the i386 PE targeted port of the linker] d2063 2 a2064 2 '--enable-auto-import' Do sophisticated linking of '_symbol' to '__imp__symbol' for DATA d2066 1 a2066 1 building the import libraries with those DATA exports. Note: Use d2068 1 a2068 1 image file to be made writable. This does not conform to the d2080 2 a2081 2 "variable '' can't be auto-imported. Please read the documentation for ld's '--enable-auto-import' for details." d2088 1 a2088 1 DLL. Any multiword variable (arrays, structs, long long, etc) may d2090 2 a2091 2 data type of the offending exported variable, ld will always detect it, issue the warning, and exit. d2096 1 a2096 1 One way is to use -enable-runtime-pseudo-reloc switch. This leaves d2133 1 a2133 1 '__declspec(dllimport)'. However, in practice that requires using d2136 4 a2139 3 building/linking to a static library. In making the choice between the various methods of resolving the 'direct address with constant offset' problem, you should consider typical real-world usage: d2179 1 a2179 1 offending variables (e.g. set_foo() and get_foo() accessor d2183 3 a2185 3 '--disable-auto-import' Do not attempt to do sophisticated linking of '_symbol' to '__imp__symbol' for DATA imports from DLLs. [This option is d2188 1 a2188 1 '--enable-runtime-pseudo-reloc' d2196 1 a2196 1 '--disable-runtime-pseudo-reloc' d2201 1 a2201 1 '--enable-extra-pe-debug' d2206 1 a2206 1 '--section-alignment' d2212 2 a2213 2 '--stack RESERVE' '--stack RESERVE,COMMIT' d2219 3 a2221 3 '--subsystem WHICH' '--subsystem WHICH:MAJOR' '--subsystem WHICH:MAJOR.MINOR' d2223 4 a2226 4 legal values for WHICH are 'native', 'windows', 'console', 'posix', and 'xbox'. You may optionally set the subsystem version also. Numeric values are also accepted for WHICH. [This option is specific to the i386 PE targeted port of the linker] d2228 1 a2228 1 The following options set flags in the 'DllCharacteristics' field d2232 1 a2232 1 '--high-entropy-va' d2236 1 a2236 1 '--dynamicbase' d2238 1 a2238 1 randomization (ASLR). This feature was introduced with MS Windows d2241 1 a2241 1 '--forceinteg' d2244 1 a2244 1 '--nxcompat' d2248 1 a2248 1 '--no-isolation' d2251 1 a2251 1 '--no-seh' d2255 1 a2255 1 '--no-bind' d2258 1 a2258 1 '--wdmdriver' d2261 1 a2261 1 '--tsaware' d2264 2 a2265 2 '--insert-timestamp' '--no-insert-timestamp' d2271 1 a2271 1 '--no-insert-timestamp' can be used to insert a zero value for the d2282 1 a2282 1 '--dsbt-size SIZE' d2287 5 a2291 5 '--dsbt-index INDEX' This option sets the DSBT index of the current executable or shared library to INDEX. The default is 0, which is appropriate for generating executables. If a shared library is generated with a DSBT index of 0, the 'R_C6000_DSBT_INDEX' relocs are copied into d2294 1 a2294 1 The '--no-merge-exidx-entries' switch disables the merging of d2297 1 d2304 5 a2308 5 '--no-trampoline' This option disables the generation of trampoline. By default a trampoline is generated for each far function which is called using a 'jsr' instruction (this happens when a pointer to a far function is taken). d2310 1 a2310 1 '--bank-window NAME' d2312 1 a2312 1 in the 'MEMORY' specification that describes the memory bank d2316 1 d2323 1 a2323 1 '--got=TYPE' d2325 3 a2327 2 TYPE should be one of 'single', 'negative', 'multigot' or 'target'. For more information refer to the Info entry for 'ld'. d2333 1 a2333 2 generation and branch relocation checks for ISA mode transitions when linking for MIPS targets. d2335 2 a2336 2 '--insn32' '--no-insn32' d2339 1 a2339 1 binding stubs, or in relaxation. If '--insn32' is used, then the d2341 1 a2341 1 '--no-insn32' is used, all instruction encodings are used, a2343 11 '--ignore-branch-isa' '--no-ignore-branch-isa' These options control branch relocation checks for invalid ISA mode transitions. If '--ignore-branch-isa' is used, then the linker accepts any branch relocations and any ISA mode transition required is lost in relocation calculation, except for some cases of 'BAL' instructions which meet relaxation conditions and are converted to equivalent 'JALX' instructions as the associated relocation is calculated. By default or if '--no-ignore-branch-isa' is used a check is made causing the loss of an ISA mode transition to produce an error. d2351 2 a2352 2 You can change the behaviour of 'ld' with the environment variables 'GNUTARGET', 'LDEMULATION' and 'COLLECT_NO_DEMANGLE'. d2354 5 a2358 5 'GNUTARGET' determines the input-file object format if you don't use '-b' (or its synonym '--format'). Its value should be one of the BFD names for an input format (*note BFD::). If there is no 'GNUTARGET' in the environment, 'ld' uses the natural format of the target. If 'GNUTARGET' is set to 'default' then BFD attempts to discover the input d2366 2 a2367 2 'LDEMULATION' determines the default emulation if you don't use the '-m' option. The emulation can affect various aspects of linker d2369 2 a2370 2 available emulations with the '--verbose' or '-V' options. If the '-m' option is not used, and the 'LDEMULATION' environment variable is not d2375 4 a2378 4 'COLLECT_NO_DEMANGLE' is set in the environment, then it will default to not demangling symbols. This environment variable is used in a similar fashion by the 'gcc' linker wrapper program. The default may be overridden by the '--demangle' and '--no-demangle' options. d2389 6 a2394 6 The main purpose of the linker script is to describe how the sections in the input files should be mapped into the output file, and to control the memory layout of the output file. Most linker scripts do nothing more than this. However, when necessary, the linker script can also direct the linker to perform many other operations, using the commands described below. d2398 1 a2398 1 linker executable. You can use the '--verbose' command line option to d2400 1 a2400 1 as '-r' or '-N', will affect the default linker script. d2402 1 a2402 1 You may supply your own linker script by using the '-T' command line d2435 6 a2440 6 "object file format". Each file is called an "object file". The output file is often called an "executable", but for our purposes we will also call it an object file. Each object file has, among other things, a list of "sections". We sometimes refer to a section in an input file as an "input section"; similarly, a section in the output file is an "output section". d2454 8 a2461 8 section will have when the output file is run. The second is the "LMA", or load memory address. This is the address at which the section will be loaded. In most cases the two addresses will be the same. An example of when they might be different is when a data section is loaded into ROM, and then copied into RAM when the program starts up (this technique is often used to initialize global variables in a ROM based system). In this case the ROM address would be the LMA, and the RAM address would be the VMA. d2463 2 a2464 2 You can see the sections in an object file by using the 'objdump' program with the '-h' option. d2468 5 a2472 5 and each defined symbol has an address, among other information. If you compile a C or C++ program into an object file, you will get a defined symbol for every defined function and global or static variable. Every undefined function or global variable which is referenced in the input file will become an undefined symbol. d2474 2 a2475 2 You can see the symbols in an object file by using the 'nm' program, or by using the 'objdump' program with the '-t' option. d2497 1 a2497 1 '/*' and '*/'. As in C, comments are syntactically equivalent to d2508 3 a2510 3 The simplest possible linker script has just one command: 'SECTIONS'. You use the 'SECTIONS' command to describe the memory layout of the output file. d2512 1 a2512 1 The 'SECTIONS' command is a powerful command. Here we will describe d2514 4 a2517 3 initialized data, and uninitialized data. These will be in the '.text', '.data', and '.bss' sections, respectively. Let's assume further that these are the only sections which appear in your input files. d2531 1 a2531 1 You write the 'SECTIONS' command as the keyword 'SECTIONS', followed d2535 7 a2541 7 The first line inside the 'SECTIONS' command of the above example sets the value of the special symbol '.', which is the location counter. If you do not specify the address of an output section in some other way (other ways are described later), the address is set from the current value of the location counter. The location counter is then incremented by the size of the output section. At the start of the 'SECTIONS' command, the location counter has the value '0'. d2543 1 a2543 1 The second line defines an output section, '.text'. The colon is d2546 14 a2559 14 which should be placed into this output section. The '*' is a wildcard which matches any file name. The expression '*(.text)' means all '.text' input sections in all input files. Since the location counter is '0x10000' when the output section '.text' is defined, the linker will set the address of the '.text' section in the output file to be '0x10000'. The remaining lines define the '.data' and '.bss' sections in the output file. The linker will place the '.data' output section at address '0x8000000'. After the linker places the '.data' output section, the value of the location counter will be '0x8000000' plus the size of the '.data' output section. The effect is that the linker will place the '.bss' output section immediately after the '.data' output d2564 3 a2566 3 example, the specified addresses for the '.text' and '.data' sections will probably satisfy any alignment constraints, but the linker may have to create a small gap between the '.data' and '.bss' sections. d2582 1 d2595 1 a2595 1 point". You can use the 'ENTRY' linker script command to set the entry d2602 6 a2607 4 * the '-e' ENTRY command-line option; * the 'ENTRY(SYMBOL)' command in a linker script; * the value of a target specific symbol, if it is defined; For many targets this is 'start', but PE and BeOS based systems for example d2610 4 a2613 2 * the address of the first byte of the '.text' section, if present; * The address '0'. d2623 12 a2634 12 'INCLUDE FILENAME' Include the linker script FILENAME at this point. The file will be searched for in the current directory, and in any directory specified with the '-L' option. You can nest calls to 'INCLUDE' up to 10 levels deep. You can place 'INCLUDE' directives at the top level, in 'MEMORY' or 'SECTIONS' commands, or in output section descriptions. 'INPUT(FILE, FILE, ...)' 'INPUT(FILE FILE ...)' The 'INPUT' command directs the linker to include the named files d2637 1 a2637 1 For example, if you always want to include 'subr.o' any time you do d2639 1 a2639 1 line, then you can put 'INPUT (subr.o)' in your linker script. d2642 1 a2642 1 linker script, and then invoke the linker with nothing but a '-T' d2646 8 a2653 9 with the '/' character, and the script being processed was located inside the "sysroot prefix", the filename will be looked for in the "sysroot prefix". Otherwise, the linker will try to open the file in the current directory. If it is not found, the linker will search through the archive library search path. The "sysroot prefix" can also be forced by specifying '=' as the first character in the filename path, or prefixing the filename path with '$SYSROOT'. See also the description of '-L' in *note Command Line Options: Options. d2655 2 a2656 2 If you use 'INPUT (-lFILE)', 'ld' will transform the name to 'libFILE.a', as with the command line argument '-l'. d2658 1 a2658 1 When you use the 'INPUT' command in an implicit linker script, the d2662 3 a2664 3 'GROUP(FILE, FILE, ...)' 'GROUP(FILE FILE ...)' The 'GROUP' command is like 'INPUT', except that the named files d2666 2 a2667 2 new undefined references are created. See the description of '-(' in *note Command Line Options: Options. d2669 3 a2671 3 'AS_NEEDED(FILE, FILE, ...)' 'AS_NEEDED(FILE FILE ...)' This construct can appear only inside of the 'INPUT' or 'GROUP' d2673 5 a2677 5 as if they appear directly in the 'INPUT' or 'GROUP' commands, with the exception of ELF shared libraries, that will be added only when they are actually needed. This construct essentially enables '--as-needed' option for all the files listed inside of it and restores previous '--as-needed' resp. '--no-as-needed' setting d2680 3 a2682 3 'OUTPUT(FILENAME)' The 'OUTPUT' command names the output file. Using 'OUTPUT(FILENAME)' in the linker script is exactly like using '-o d2687 2 a2688 2 You can use the 'OUTPUT' command to define a default name for the output file other than the usual default of 'a.out'. d2690 4 a2693 4 'SEARCH_DIR(PATH)' The 'SEARCH_DIR' command adds PATH to the list of paths where 'ld' looks for archive libraries. Using 'SEARCH_DIR(PATH)' is exactly like using '-L PATH' on the command line (*note Command Line d2698 6 a2703 6 'STARTUP(FILENAME)' The 'STARTUP' command is just like the 'INPUT' command, except that FILENAME will become the first input file to be linked, as though it were specified first on the command line. This may be useful when using a system in which the entry point is always the start of the first file. d2713 5 a2717 5 'OUTPUT_FORMAT(BFDNAME)' 'OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)' The 'OUTPUT_FORMAT' command names the BFD format to use for the output file (*note BFD::). Using 'OUTPUT_FORMAT(BFDNAME)' is exactly like using '--oformat BFDNAME' on the command line (*note d2721 2 a2722 2 You can use 'OUTPUT_FORMAT' with three arguments to use different formats based on the '-EB' and '-EL' command line options. This d2726 4 a2729 4 If neither '-EB' nor '-EL' are used, then the output format will be the first argument, DEFAULT. If '-EB' is used, the output format will be the second argument, BIG. If '-EL' is used, the output format will be the third argument, LITTLE. d2731 2 a2732 2 For example, the default linker script for the MIPS ELF target uses this command: d2735 2 a2736 2 'elf32-bigmips', but if the user uses the '-EL' command line option, the output file will be created in the 'elf32-littlemips' d2739 6 a2744 6 'TARGET(BFDNAME)' The 'TARGET' command names the BFD format to use when reading input files. It affects subsequent 'INPUT' and 'GROUP' commands. This command is like using '-b BFDNAME' on the command line (*note Command Line Options: Options.). If the 'TARGET' command is used but 'OUTPUT_FORMAT' is not, then the last 'TARGET' command is also d2754 1 a2754 1 *note MEMORY:: command. Each name corresponds to at most one memory d2759 1 a2759 1 The 'REGION_ALIAS' function creates an alias name ALIAS for the d2765 2 a2766 2 memory 'RAM' that allows code execution or data storage. Some may have a read-only, non-volatile memory 'ROM' that allows code execution and d2768 1 a2768 1 memory 'ROM2' with read-only data access and no code execution d2771 7 a2777 4 * '.text' program code; * '.rodata' read-only data; * '.data' read-write initialized data; * '.bss' read-write zero initialized data. d2783 1 a2783 1 'A', 'B' and 'C': d2789 4 a2792 4 The notation 'RAM/ROM' or 'RAM/ROM2' means that this section is loaded into region 'ROM' or 'ROM2' respectively. Please note that the load address of the '.data' section starts in all three variants at the end of the '.rodata' section. d2795 1 a2795 1 It includes the system dependent 'linkcmds.memory' file that describes d2823 5 a2827 5 Now we need three different 'linkcmds.memory' files to define memory regions and alias names. The content of 'linkcmds.memory' for the three variants 'A', 'B' and 'C': 'A' Here everything goes into the 'RAM'. d2837 6 a2842 5 'B' Program code and read-only data go into the 'ROM'. Read-write data goes into the 'RAM'. An image of the initialized data is loaded into the 'ROM' and will be copied during system start into the 'RAM'. d2853 6 a2858 5 'C' Program code goes into the 'ROM'. Read-only data goes into the 'ROM2'. Read-write data goes into the 'RAM'. An image of the initialized data is loaded into the 'ROM2' and will be copied during system start into the 'RAM'. d2872 1 a2872 1 copy the '.data' section from 'ROM' or 'ROM2' into the 'RAM' if d2896 1 a2896 1 'ASSERT(EXP, MESSAGE)' d2913 1 a2913 1 will fail if '__stack_size' is not defined elsewhere. Symbols d2926 1 a2926 1 'EXTERN(SYMBOL SYMBOL ...)' d2930 2 a2931 2 each 'EXTERN', and you may use 'EXTERN' multiple times. This command has the same effect as the '-u' command-line option. d2933 8 a2940 8 'FORCE_COMMON_ALLOCATION' This command has the same effect as the '-d' command-line option: to make 'ld' assign space to common symbols even if a relocatable output file is specified ('-r'). 'INHIBIT_COMMON_ALLOCATION' This command has the same effect as the '--no-define-common' command-line option: to make 'ld' omit the assignment of addresses d2943 3 a2945 9 'FORCE_GROUP_ALLOCATION' This command has the same effect as the '--force-group-allocation' command-line option: to make 'ld' place section group members like normal input sections, and to delete the section groups even if a relocatable output file is specified ('-r'). 'INSERT [ AFTER | BEFORE ] OUTPUT_SECTION' This command is typically used in a script specified by '-T' to augment the default 'SECTIONS' with, for example, overlays. It d2947 1 a2947 1 OUTPUT_SECTION, and also causes '-T' to not override the default d2951 2 a2952 2 the insertion, since '-T' scripts are parsed before the default linker script, statements in the '-T' script occur before the d2955 3 a2957 3 assignments will be made to '-T' output sections before those in the default script. Here is an example of how a '-T' script using 'INSERT' might look: d2969 2 a2970 2 'NOCROSSREFS(SECTION SECTION ...)' This command may be used to tell 'ld' to issue an error about any d2979 2 a2980 2 The 'NOCROSSREFS' command takes a list of output section names. If 'ld' detects any cross references between the sections, it reports d2982 1 a2982 1 'NOCROSSREFS' command uses output section names, not input section d2985 2 a2986 2 'NOCROSSREFS_TO(TOSECTION FROMSECTION ...)' This command may be used to tell 'ld' to issue an error about any d2989 1 a2989 1 The 'NOCROSSREFS' command is useful when ensuring that two or more d2991 1 a2991 1 where a one-way dependency is needed. For example, in a multi-core d2995 1 a2995 1 The 'NOCROSSREFS_TO' command takes a list of output section names. d2997 3 a2999 3 sections. If 'ld' detects any references to the first section from any of the other sections, it reports an error and returns a non-zero exit status. Note that the 'NOCROSSREFS_TO' command uses d3002 1 a3002 1 'OUTPUT_ARCH(BFDARCH)' d3005 2 a3006 2 see the architecture of an object file by using the 'objdump' program with the '-f' option. d3008 3 a3010 3 'LD_FEATURE(STRING)' This command may be used to modify 'ld' behavior. If STRING is '"SANE_EXPR"' then absolute symbols and numbers in a script are d3038 9 a3046 9 'SYMBOL = EXPRESSION ;' 'SYMBOL += EXPRESSION ;' 'SYMBOL -= EXPRESSION ;' 'SYMBOL *= EXPRESSION ;' 'SYMBOL /= EXPRESSION ;' 'SYMBOL <<= EXPRESSION ;' 'SYMBOL >>= EXPRESSION ;' 'SYMBOL &= EXPRESSION ;' 'SYMBOL |= EXPRESSION ;' d3048 2 a3049 2 The first case will define SYMBOL to the value of EXPRESSION. In the other cases, SYMBOL must already be defined, and the value will be d3052 2 a3053 2 The special symbol name '.' indicates the location counter. You may only use this within a 'SECTIONS' command. *Note Location Counter::. d3057 1 a3057 1 Expressions are defined below; see *note Expressions::. d3060 2 a3061 2 as statements within a 'SECTIONS' command, or as part of an output section description in a 'SECTIONS' command. d3064 1 a3064 1 expression; for more information, see *note Expression Section::. d3080 4 a3083 4 In this example, the symbol 'floating_point' will be defined as zero. The symbol '_etext' will be defined as the address following the last '.text' input section. The symbol '_bdata' will be defined as the address following the '.text' output section aligned upward to a 4 byte d3093 1 a3093 1 exported. The syntax is 'HIDDEN(SYMBOL = EXPRESSION)'. d3095 2 a3096 2 Here is the example from *note Simple Assignments::, rewritten to use 'HIDDEN': d3109 1 a3109 1 In this case none of the three symbols will be visible outside this d3120 5 a3124 5 the link. For example, traditional linkers defined the symbol 'etext'. However, ANSI C requires that the user be able to use 'etext' as a function name without encountering an error. The 'PROVIDE' keyword may be used to define a symbol, such as 'etext', only if it is referenced but not defined. The syntax is 'PROVIDE(SYMBOL = EXPRESSION)'. d3126 1 a3126 1 Here is an example of using 'PROVIDE' to define 'etext': d3137 1 a3137 1 In this example, if the program defines '_etext' (with a leading d3139 1 a3139 1 the other hand, the program defines 'etext' (with no leading d3141 1 a3141 1 If the program references 'etext' but does not define it, the linker d3150 2 a3151 2 Similar to 'PROVIDE'. For ELF targeted ports, the symbol will be hidden and won't be exported. d3167 5 a3171 5 prepend or append an underscore, and C++ performs extensive 'name mangling'. Therefore there might be a discrepancy between the name of a variable as it is used in source code and the name of the same variable as it is defined in a linker script. For example in C a linker script variable might be referred to as: d3192 2 a3193 2 creates an entry called 'foo' in the symbol table. This entry holds the address of an 'int' sized block of memory where the number 1000 is d3203 1 a3203 1 looks up the symbol 'foo' in the symbol table, gets the address d3209 1 a3209 1 looks up the symbol 'foo' in the symbol table, gets its address and d3211 1 a3211 1 variable 'a'. d3214 3 a3216 2 the symbol table but do not assign any memory to them. Thus they are an address without a value. So for example the linker script definition: d3220 1 a3220 1 creates an entry in the symbol table called 'foo' which holds the d3222 3 a3224 3 address 1000. This means that you cannot access the _value_ of a linker script defined symbol - it has no value - all you can do is access the _address_ of a linker script defined symbol. d3227 4 a3230 4 code you should always take the address of the symbol, and never attempt to use its value. For example suppose you want to copy the contents of a section of memory called .ROM into a section called .FLASH and the linker script contains these declarations: d3242 3 a3244 3 Note the use of the '&' operators. These are correct. Alternatively the symbols can be treated as the names of vectors or arrays and then the code will again work as expected: d3250 1 a3250 1 Note how using this method does not require the use of '&' operators. d3258 1 a3258 1 The 'SECTIONS' command tells the linker how to map input sections into d3261 1 a3261 1 The format of the 'SECTIONS' command is: d3271 2 a3272 1 * an 'ENTRY' command (*note Entry command: Entry Point.) d3274 1 d3276 1 d3279 2 a3280 2 The 'ENTRY' command and symbol assignments are permitted inside the 'SECTIONS' command for convenience in using the location counter in d3288 1 a3288 1 If you do not use a 'SECTIONS' command in your linker script, the d3337 1 d3339 1 d3341 1 d3352 3 a3354 3 limited number of sections, such as 'a.out', the name must be one of the names supported by the format ('a.out', for example, allows only '.text', '.data' or '.bss'). If the output format supports any number d3357 2 a3358 2 may consist of any sequence of characters, but a name which contains any unusual characters such as commas must be quoted. d3360 1 a3360 1 The output section name '/DISCARD/' is special; *note Output Section d3369 2 a3370 2 The ADDRESS is an expression for the VMA (the virtual memory address) of the output section. This address is optional, but if it is provided d3388 1 a3388 1 address will be the next free address in that region; *note d3403 9 a3411 9 are subtly different. The first will set the address of the '.text' output section to the current value of the location counter. The second will set it to the current value of the location counter aligned to the strictest alignment of any of the '.text' input sections. The ADDRESS may be an arbitrary expression; *note Expressions::. For example, if you want to align the section on a 0x10 byte boundary, so that the lowest four bits of the section address are zero, you could do something like this: d3413 2 a3414 2 This works because 'ALIGN' returns the current location counter aligned upward to the specified value. d3455 1 a3455 1 include all input '.text' sections, you would write: d3457 4 a3460 8 Here the '*' is a wildcard which matches any file name. To exclude a list of files from matching the file name wildcard, EXCLUDE_FILE may be used to match all files except the ones specified in the EXCLUDE_FILE list. For example: EXCLUDE_FILE (*crtend.o *otherfile.o) *(.ctors) will cause all .ctors sections from all files except 'crtend.o' and 'otherfile.o' to be included. The EXCLUDE_FILE can also be placed inside the section list, for example: d3462 2 a3463 3 The result of this is identically to the previous example. Supporting two syntaxes for EXCLUDE_FILE is useful if the section list contains more than one section, as described below. d3468 6 a3473 19 The difference between these is the order in which the '.text' and '.rdata' input sections will appear in the output section. In the first example, they will be intermingled, appearing in the same order as they are found in the linker input. In the second example, all '.text' input sections will appear first, followed by all '.rdata' input sections. When using EXCLUDE_FILE with more than one section, if the exclusion is within the section list then the exclusion only applies to the immediately following section, for example: *(EXCLUDE_FILE (*somefile.o) .text .rdata) will cause all '.text' sections from all files except 'somefile.o' to be included, while all '.rdata' sections from all files, including 'somefile.o', will be included. To exclude the '.rdata' sections from 'somefile.o' the example could be modified to: *(EXCLUDE_FILE (*somefile.o) .text EXCLUDE_FILE (*somefile.o) .rdata) Alternatively, placing the EXCLUDE_FILE outside of the section list, before the input file selection, will cause the exclusion to apply for all sections. Thus the previous example can be rewritten as: EXCLUDE_FILE (*somefile.o) *(.text .rdata) d3491 1 a3491 1 In this example, the output section '.text' will be comprised of any d3493 3 a3495 3 'SHF_MERGE' and 'SHF_STRINGS' are set. The output section '.text2' will be comprised of any input section matching the name *(.text) whose section header flag 'SHF_WRITE' is clear. d3501 1 a3501 1 'archive:file' d3503 2 a3504 1 'archive:' d3506 2 a3507 1 ':file' d3510 1 a3510 1 Either one or both of 'archive' and 'file' can contain shell d3512 6 a3517 6 single letter followed by a colon is a drive specifier, so 'c:myfile.o' is a simple file specification, not 'myfile.o' within an archive called 'c'. 'archive:file' filespecs may also be used within an 'EXCLUDE_FILE' list, but may not appear in other linker script contexts. For instance, you cannot extract a file from an archive by using 'archive:file' in an 'INPUT' command. d3524 7 a3530 7 When you use a file name which is not an 'archive:file' specifier and does not contain any wild card characters, the linker will first see if you also specified the file name on the linker command line or in an 'INPUT' command. If you did not, the linker will attempt to open the file as an input file, as though it appeared on the command line. Note that this differs from an 'INPUT' command, because the linker will not search for the file in the archive search path. d3541 1 a3541 1 The file name of '*' seen in many examples is a simple wildcard d3546 1 a3546 1 '*' d3548 2 a3549 1 '?' d3551 4 a3554 3 '[CHARS]' matches a single instance of any of the CHARS; the '-' character may be used to specify a range of characters, as in '[a-z]' to d3556 2 a3557 1 '\' d3561 4 a3564 4 will not match a '/' character (used to separate directory names on Unix). A pattern consisting of a single '*' character is an exception; it will always match any file name, whether it contains a '/' or not. In a section name, the wildcard characters will match a '/' character. d3567 2 a3568 2 specified on the command line or in an 'INPUT' command. The linker does not search directories to expand wildcards. d3574 1 a3574 1 'data.o' rule will not be used: d3580 3 a3582 3 change this by using the 'SORT_BY_NAME' keyword, which appears before a wildcard pattern in parentheses (e.g., 'SORT_BY_NAME(.text*)'). When the 'SORT_BY_NAME' keyword is used, the linker will sort the files or d3586 2 a3587 2 'SORT_BY_ALIGNMENT' is very similar to 'SORT_BY_NAME'. The difference is 'SORT_BY_ALIGNMENT' will sort sections into descending d3592 2 a3593 2 'SORT_BY_INIT_PRIORITY' is very similar to 'SORT_BY_NAME'. The difference is 'SORT_BY_INIT_PRIORITY' will sort sections into ascending d3597 1 a3597 1 'SORT' is an alias for 'SORT_BY_NAME'. d3602 13 a3614 10 1. 'SORT_BY_NAME' ('SORT_BY_ALIGNMENT' (wildcard section pattern)). It will sort the input sections by name first, then by alignment if two sections have the same name. 2. 'SORT_BY_ALIGNMENT' ('SORT_BY_NAME' (wildcard section pattern)). It will sort the input sections by alignment first, then by name if two sections have the same alignment. 3. 'SORT_BY_NAME' ('SORT_BY_NAME' (wildcard section pattern)) is treated the same as 'SORT_BY_NAME' (wildcard section pattern). 4. 'SORT_BY_ALIGNMENT' ('SORT_BY_ALIGNMENT' (wildcard section pattern)) is treated the same as 'SORT_BY_ALIGNMENT' (wildcard d3616 1 d3627 2 a3628 5 1. 'SORT_BY_NAME' (wildcard section pattern ) with '--sort-sections alignment' is equivalent to 'SORT_BY_NAME' ('SORT_BY_ALIGNMENT' (wildcard section pattern)). 2. 'SORT_BY_ALIGNMENT' (wildcard section pattern) with '--sort-section name' is equivalent to 'SORT_BY_ALIGNMENT' ('SORT_BY_NAME' d3630 4 d3638 1 a3638 1 'SORT_NONE' disables section sorting by ignoring the command line d3642 1 a3642 1 the '-M' linker option to generate a map file. The map file shows d3646 5 a3650 5 files. This linker script directs the linker to place all '.text' sections in '.text' and all '.bss' sections in '.bss'. The linker will place the '.data' section from all files beginning with an upper case character in '.DATA'; for all other files, the linker will place the '.data' section in '.data'. d3667 1 a3667 1 named 'COMMON'. d3669 1 a3669 1 You may use file names with the 'COMMON' section just as with any d3675 1 a3675 1 '.bss' section in the output file. For example: d3682 2 a3683 2 In the case of MIPS ELF, the linker uses 'COMMON' for standard common symbols and '.scommon' for small common symbols. This permits you to d3687 2 a3688 2 You will sometimes see '[COMMON]' in old linker scripts. This notation is now considered obsolete. It is equivalent to '*(COMMON)'. d3696 1 a3696 1 When link-time garbage collection is in use ('--gc-sections'), it is d3699 1 a3699 1 'KEEP()', as in 'KEEP(*(.init))' or 'KEEP(SORT_BY_NAME(*)(.ctors))'. d3708 7 a3714 7 to read all of the sections from file 'all.o' and place them at the start of output section 'outputa' which starts at location '0x10000'. All of section '.input1' from file 'foo.o' follows immediately, in the same output section. All of section '.input2' from 'foo.o' goes into output section 'outputb', followed by section '.input1' from 'foo1.o'. All of the remaining '.input1' and '.input2' sections from any files are written to output section 'outputc'. a3733 8 If an output section's name is the same as the input section's name and is representable as a C identifier, then the linker will automatically *note PROVIDE:: two symbols: __start_SECNAME and __stop_SECNAME, where SECNAME is the name of the section. These indicate the start address and end address of the output section respectively. Note: most section names are not representable as C identifiers because they contain a '.' character. d3741 1 a3741 1 'BYTE', 'SHORT', 'LONG', 'QUAD', or 'SQUAD' as an output section d3746 1 a3746 1 The 'BYTE', 'SHORT', 'LONG', and 'QUAD' commands store one, two, d3751 1 a3751 1 value of the symbol 'addr': d3755 1 a3755 1 When using a 64 bit host or target, 'QUAD' and 'SQUAD' are the same; d3757 2 a3758 2 are 32 bits, an expression is computed as 32 bits. In this case 'QUAD' stores a 32 bit value zero extended to 64 bits, and 'SQUAD' stores a 32 d3769 1 a3769 1 SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } } d3771 1 a3771 1 SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } } d3773 1 a3773 1 You may use the 'FILL' command to set the fill pattern for the d3777 1 a3777 1 with the value of the expression, repeated as necessary. A 'FILL' d3779 2 a3780 2 the section definition; by including more than one 'FILL' statement, you can have different fill patterns in different parts of an output d3784 1 a3784 1 value '0x90': d3787 1 a3787 1 The 'FILL' command is similar to the '=FILLEXP' output section d3789 2 a3790 2 'FILL' command, rather than the entire section. If both are used, the 'FILL' command takes precedence. *Note Output Section Fill::, for d3802 1 a3802 1 'CREATE_OBJECT_SYMBOLS' d3806 1 a3806 1 output section in which the 'CREATE_OBJECT_SYMBOLS' command d3812 1 a3812 1 'CONSTRUCTORS' d3818 1 a3818 1 name. For these object file formats, the 'CONSTRUCTORS' command d3820 2 a3821 2 section where the 'CONSTRUCTORS' command appears. The 'CONSTRUCTORS' command is ignored for other object file formats. d3823 3 a3825 3 The symbol '__CTOR_LIST__' marks the start of the global constructors, and the symbol '__CTOR_END__' marks the end. Similarly, '__DTOR_LIST__' and '__DTOR_END__' mark the start and d3830 4 a3833 4 normally calls constructors from a subroutine '__main'; a call to '__main' is automatically inserted into the startup code for 'main'. GNU C++ normally runs destructors either by using 'atexit', or directly from the function 'exit'. d3835 1 a3835 1 For object file formats such as 'COFF' or 'ELF' which support d3837 2 a3838 2 addresses of global constructors and destructors into the '.ctors' and '.dtors' sections. Placing the following sequence into your d3857 4 a3860 4 the 'CONSTRUCTORS' command, use 'SORT_BY_NAME(CONSTRUCTORS)' instead. When using the '.ctors' and '.dtors' sections, use '*(SORT_BY_NAME(.ctors))' and '*(SORT_BY_NAME(.dtors))' instead of just '*(.ctors)' and '*(.dtors)'. d3863 4 a3866 3 automatically, and you will not need to concern yourself with them. However, you may need to consider this if you are using C++ and writing your own linker scripts. d3875 2 a3876 2 This is for convenience when referring to input sections that may or may not be present in any of the input files. For example: d3878 4 a3881 4 will only create a '.foo' section in the output file if there is a '.foo' section in at least one input file, and if the input sections are not all empty. Other link script directives that allocate space in an output section will also create the output section. So too will d3883 3 a3885 3 for '. = 0', '. = . + 0', '. = sym', '. = . + sym' and '. = ALIGN (. != 0, expr, 1)' when 'sym' is an absolute symbol of value 0 defined in the script. This allows you to force output of an empty section with '. = d3894 1 a3894 1 The special output section name '/DISCARD/' may be used to discard d3896 1 a3896 1 section named '/DISCARD/' are not included in the output file. d3918 3 a3920 2 We've already described SECTION, ADDRESS, and OUTPUT-SECTION-COMMAND. In this section we will describe the remaining section attributes. d3942 1 a3942 1 'NOLOAD' d3945 5 a3949 4 'DSECT' 'COPY' 'INFO' 'OVERLAY' d3957 2 a3958 2 the section type. For example, in the script sample below, the 'ROM' section is addressed at memory location '0' and does not need to be d3972 1 a3972 1 *note Basic Script Concepts::. The virtual address is specified by the d3974 1 a3974 1 specified by the 'AT' or 'AT>' keywords. Specifying a load address is d3977 5 a3981 5 The 'AT' keyword takes an expression as an argument. This specifies the exact load address of the section. The 'AT>' keyword takes the name of a memory region as an argument. *Note MEMORY::. The load address of the section is set to the next free address in the region, aligned to the section's alignment requirements. d3983 1 a3983 1 If neither 'AT' nor 'AT>' is specified for an allocatable section, d3987 2 a3988 2 * If the section has a specific VMA address, then this is used as the LMA address as well. d3993 4 a3996 4 the current section, and this region contains at least one section, then the LMA is set so the difference between the VMA and LMA is the same as the difference between the VMA and LMA of the last section in the located region. d4006 4 a4009 4 called '.text', which starts at '0x1000', one called '.mdata', which is loaded at the end of the '.text' section even though its VMA is '0x2000', and one called '.bss' to hold uninitialized data at address '0x3000'. The symbol '_data' is defined with the value '0x2000', which d4046 1 a4046 1 You can increase an output section's alignment by using ALIGN. As an d4058 1 a4058 1 SUBALIGN. The value specified overrides any alignment given by input d4069 1 a4069 1 read-write by using the keyword 'ONLY_IF_RO' and 'ONLY_IF_RW' d4079 1 a4079 1 using '>REGION'. *Note MEMORY::. d4092 1 a4092 1 using ':PHDR'. *Note PHDRS::. If a section is assigned to one or more d4094 2 a4095 2 those segments as well, unless they use an explicitly ':PHDR' modifier. You can use ':NONE' to tell the linker to not put the section in any d4108 1 a4108 1 You can set the fill pattern for an entire section by using '=FILLEXP'. d4112 6 a4117 6 filled with the value, repeated as necessary. If the fill expression is a simple hex number, ie. a string of hex digit starting with '0x' and without a trailing 'k' or 'M', then an arbitrarily long sequence of hex digits can be used to specify the fill pattern; Leading zeros become part of the pattern too. For all other cases, including extra parentheses or a unary '+', the fill pattern is the four least d4121 1 a4121 1 You can also change the fill value with a 'FILL' command in the d4141 3 a4143 3 Overlays are described using the 'OVERLAY' command. The 'OVERLAY' command is used within a 'SECTIONS' command, like an output section description. The full syntax of the 'OVERLAY' command is as follows: d4161 6 a4166 5 Everything is optional except 'OVERLAY' (a keyword), and each section must have a name (SECNAME1 and SECNAME2 above). The section definitions within the 'OVERLAY' construct are identical to those within the general 'SECTIONS' construct (*note SECTIONS::), except that no addresses and no memory regions may be defined for sections within an 'OVERLAY'. d4174 1 a4174 1 'OVERLAY' as a whole (as with normal section definitions, the load d4179 5 a4183 5 If the 'NOCROSSREFS' keyword is used, and there are any references among the sections, the linker will report an error. Since the sections all run at the same address, it normally does not make sense for one section to refer directly to another. *Note NOCROSSREFS: Miscellaneous Commands. d4185 2 a4186 2 For each section within the 'OVERLAY', the linker automatically provides two symbols. The symbol '__load_start_SECNAME' is defined as d4188 1 a4188 1 '__load_stop_SECNAME' is defined as the final load address of the d4190 2 a4191 2 identifiers are removed. C (or assembler) code may use these symbols to move the overlaid sections around as necessary. d4198 1 a4198 1 'SECTIONS' construct. d4204 5 a4208 5 This will define both '.text0' and '.text1' to start at address 0x1000. '.text0' will be loaded at address 0x4000, and '.text1' will be loaded immediately after '.text0'. The following symbols will be defined if referenced: '__load_start_text0', '__load_stop_text0', '__load_start_text1', '__load_stop_text1'. d4210 2 a4211 2 C code to copy overlay '.text1' into the overlay area might look like the following. d4217 1 a4217 1 Note that the 'OVERLAY' command is just syntactic sugar, since d4236 1 a4236 1 memory. You can override this by using the 'MEMORY' command. d4238 1 a4238 1 The 'MEMORY' command describes the location and size of blocks of d4246 3 a4248 3 A linker script may contain many uses of the 'MEMORY' command, however, all memory blocks defined are treated as if they were specified inside a single 'MEMORY' command. The syntax for 'MEMORY' is: d4259 2 a4260 2 have a distinct name within the 'MEMORY' command. However you can add later alias names to existing memory regions with the *note d4265 1 a4265 1 not explicitly mapped in the linker script. As described in *note d4272 1 a4272 1 'R' d4274 2 a4275 1 'W' d4277 2 a4278 1 'X' d4280 2 a4281 1 'A' d4283 2 a4284 1 'I' d4286 5 a4290 3 'L' Same as 'I' '!' d4294 3 a4296 3 '!', it will be placed in the memory region. The '!' attribute reverses this test, so that an unmapped section will be placed in the memory region only if it does not match any of the listed attributes. d4299 3 a4301 3 memory region. The expression must evaluate to a constant and it cannot involve any symbols. The keyword 'ORIGIN' may be abbreviated to 'org' or 'o' (but not, for example, 'ORG'). d4304 3 a4306 3 As with the ORIGIN expression, the expression must be numerical only and must evaluate to a constant. The keyword 'LENGTH' may be abbreviated to 'len' or 'l'. d4309 3 a4311 3 regions available for allocation: one starting at '0' for 256 kilobytes, and the other starting at '0x40000000' for four megabytes. The linker will place into the 'rom' memory region every section which is not d4314 1 a4314 1 explicitly mapped into a memory region into the 'ram' memory region. d4323 1 a4323 1 specific output sections into that memory region by using the '>REGION' d4325 1 a4325 1 named 'mem', you would use '>mem' in the output section definition. d4333 1 a4333 1 expression via the 'ORIGIN(MEMORY)' and 'LENGTH(MEMORY)' functions: d4345 2 a4346 2 loaded into memory. You can print them out by using the 'objdump' program with the '-p' option. d4356 7 a4362 7 precisely. You may use the 'PHDRS' command for this purpose. When the linker sees the 'PHDRS' command in the linker script, it will not create any program headers other than the ones specified. The linker only pays attention to the 'PHDRS' command when generating an ELF output file. In other cases, the linker will simply ignore 'PHDRS'. d4364 2 a4365 2 This is the syntax of the 'PHDRS' command. The words 'PHDRS', 'FILEHDR', 'AT', and 'FLAGS' are keywords. d4373 1 a4373 1 The NAME is used only for reference in the 'SECTIONS' command of the d4383 1 a4383 1 sections in the segments. You use the ':PHDR' output section attribute d4389 1 a4389 1 repeat ':PHDR', using it once for each segment which should contain the d4392 1 a4392 1 If you place a section in one or more segments using ':PHDR', then d4394 1 a4394 1 specify ':PHDR' in the same segments. This is for convenience, since d4396 1 a4396 1 segment. You can use ':NONE' to override the default segment and tell d4399 1 a4399 1 You may use the 'FILEHDR' and 'PHDRS' keywords after the program d4401 2 a4402 2 'FILEHDR' keyword means that the segment should include the ELF file header. The 'PHDRS' keyword means that the segment should include the d4404 1 a4404 1 ('PT_LOAD'), all prior loadable segments must have one of these d4407 2 a4408 2 The TYPE may be one of the following. The numbers indicate the value of the keyword. d4410 1 a4410 1 'PT_NULL' (0) d4413 3 a4415 3 'PT_LOAD' (1) Indicates that this program header describes a segment to be loaded from the file. d4417 1 a4417 1 'PT_DYNAMIC' (2) d4420 1 a4420 1 'PT_INTERP' (3) d4424 1 a4424 1 'PT_NOTE' (4) d4427 1 a4427 1 'PT_SHLIB' (5) d4431 1 a4431 1 'PT_PHDR' (6) a4433 3 'PT_TLS' (7) Indicates a segment containing thread local storage. d4439 3 a4441 3 address in memory by using an 'AT' expression. This is identical to the 'AT' command used as an output section attribute (*note Output Section LMA::). The 'AT' command for a program header overrides the output d4445 1 a4445 1 which comprise the segment. You may use the 'FLAGS' keyword to d4447 1 a4447 1 integer. It is used to set the 'p_flags' field of the program header. d4449 1 a4449 1 Here is an example of 'PHDRS'. This shows a typical set of program d4480 1 a4480 1 The linker supports symbol versions when using ELF. Symbol versions are d4488 1 a4488 1 can also use the '--version-script' linker option. d4490 1 a4490 1 The syntax of the 'VERSION' command is simply d4522 1 a4522 1 }; d4526 2 a4527 2 version node defined is 'VERS_1.1'; it has no other dependencies. The script binds the symbol 'foo1' to 'VERS_1.1'. It reduces a number of d4529 14 a4542 14 shared library; this is done using wildcard patterns, so that any symbol whose name begins with 'old', 'original', or 'new' is matched. The wildcard patterns available are the same as those used in the shell when matching filenames (also known as "globbing"). However, if you specify the symbol name inside double quotes, then the name is treated as literal, rather than as a glob pattern. Next, the version script defines node 'VERS_1.2'. This node depends upon 'VERS_1.1'. The script binds the symbol 'foo2' to the version node 'VERS_1.2'. Finally, the version script defines node 'VERS_2.0'. This node depends upon 'VERS_1.2'. The scripts binds the symbols 'bar1' and 'bar2' are bound to the version node 'VERS_2.0'. d4547 1 a4547 1 unspecified symbols to a given version node by using 'global: *;' d4555 2 a4556 2 what they might suggest to the person reading them. The '2.0' version could just as well have appeared in between '1.1' and '1.2'. However, d4559 2 a4560 2 Node name can be omitted, provided it is the only version node in the version script. Such version script doesn't assign any versions to d4593 5 a4597 4 in the C source file. This renames the function 'original_foo' to be an alias for 'foo' bound to the version node 'VERS_1.1'. The 'local:' directive can be used to prevent the symbol 'original_foo' from being exported. A '.symver' directive takes precedence over a version script. d4605 1 a4605 1 To do this, you must use multiple '.symver' directives in the source d4613 1 a4613 1 In this example, 'foo@@' represents the symbol 'foo' bound to the d4615 2 a4616 2 this example would define 4 C functions: 'original_foo', 'old_foo', 'old_foo1', and 'new_foo'. d4620 2 a4621 2 this symbol will be bound. You can do this with the 'foo@@@@VERS_2.0' type of '.symver' directive. You can only declare one version of a d4626 3 a4628 3 within the shared library, you can use the aliases of convenience (i.e., 'old_foo'), or you can use the '.symver' directive to specifically bind to an external version of the function in question. d4634 1 a4634 1 The supported 'lang's are 'C', 'C++', and 'Java'. The linker will d4636 2 a4637 2 according to 'lang' before matching them to the patterns specified in 'version-script-commands'. The default 'lang' is 'C'. d4640 3 a4642 3 described above, you can use a glob pattern to match demangled names, or you can use a double-quoted string to match the string exactly. In the latter case, be aware that minor differences (such as differing d4685 10 a4694 10 As in C, the linker considers an integer beginning with '0' to be octal, and an integer beginning with '0x' or '0X' to be hexadecimal. Alternatively the linker accepts suffixes of 'h' or 'H' for hexadecimal, 'o' or 'O' for octal, 'b' or 'B' for binary and 'd' or 'D' for decimal. Any integer value without a prefix or a suffix is considered to be decimal. In addition, you can use the suffixes 'K' and 'M' to scale a constant by '1024' or '1024*1024' respectively. For example, the following all refer to the same quantity: d4701 1 a4701 1 Note - the 'K' and 'M' suffixes cannot be used in conjunction with d4711 1 a4711 1 'CONSTANT(NAME)' operator, where NAME is one of: d4713 1 a4713 1 'MAXPAGESIZE' d4716 1 a4716 1 'COMMONPAGESIZE' d4741 2 a4742 2 safest to delimit symbols with spaces. For example, 'A-B' is one symbol, whereas 'A - B' is an expression involving subtraction. d4751 10 a4760 22 explicitly placed into the output file by the linker script. The linker will still copy these sections into the output file by either finding, or creating a suitable output section in which to place the orphaned input section. If the name of an orphaned input section exactly matches the name of an existing output section, then the orphaned input section will be placed at the end of that output section. If there is no output section with a matching name then new output sections will be created. Each new output section will have the same name as the orphan section placed within it. If there are multiple orphan sections with the same name, these will all be combined into one new output section. If new output sections are created to hold orphaned input sections, then the linker must decide where to place these new output sections in relation to existing output sections. On most modern targets, the linker attempts to place orphan sections after sections of the same attribute, such as code vs data, loadable vs non-loadable, etc. If no sections with matching attributes are found, or your target lacks this support, the orphan section is placed at the end of the file. d4762 1 a4762 1 The command line options '--orphan-handling' and '--unique' (*note d4766 7 d4779 11 a4789 11 The special linker variable "dot" '.' always contains the current output location counter. Since the '.' always refers to a location in an output section, it may only appear in an expression within a 'SECTIONS' command. The '.' symbol may appear anywhere that an ordinary symbol is allowed in an expression. Assigning a value to '.' will cause the location counter to be moved. This may be used to create holes in the output section. The location counter may not be moved backwards inside an output section, and may not be moved backwards outside of an output section if so doing creates areas with overlapping LMAs. d4802 11 a4812 11 In the previous example, the '.text' section from 'file1' is located at the beginning of the output section 'output'. It is followed by a 1000 byte gap. Then the '.text' section from 'file2' appears, also with a 1000 byte gap following before the '.text' section from 'file3'. The notation '= 0x12345678' specifies what data to write in the gaps (*note Output Section Fill::). Note: '.' actually refers to the byte offset from the start of the current containing object. Normally this is the 'SECTIONS' statement, whose start address is 0, hence '.' can be used as an absolute address. If '.' is used inside a section description however, it refers to the d4830 1 a4830 1 The '.text' section will be assigned a starting address of 0x100 and d4832 6 a4837 6 '.text' input sections to fill this area. (If there is too much data, an error will be produced because this would be an attempt to move '.' backwards). The '.data' section will start at 0x500 and it will have an extra 0x600 bytes worth of space after the end of the values from the '.data' input sections and before the end of the '.data' output section itself. d4854 1 a4854 1 If the linker needs to place some input section, e.g. '.rodata', not d4856 1 a4856 1 '.text' and '.data'. You might think the linker should place '.rodata' d4861 2 a4862 2 output section, except for the special case of an assignment to '.'. I.e., the linker will place the orphan '.rodata' section as if the d4878 1 a4878 1 'start_of_data'. One way to influence the orphan section placement is d4880 1 a4880 1 assignment to '.' is setting the start address of a following output d4896 2 a4897 2 Now, the orphan '.rodata' section will be placed between 'end_of_text' and 'start_of_data'. d4947 1 a4947 1 '.', must be evaluated during section allocation. d4957 1 a4957 1 will cause the error message 'non constant expression for initial d4967 3 a4969 3 relative symbol is relocatable. If you request relocatable output using the '-r' option, a further link operation may change the value of a section relative symbol. On the other hand, an absolute symbol will d4974 1 a4974 1 address, such as 'ADDR', 'LOADADDR', 'ORIGIN' and 'SEGMENT_START'. d4976 2 a4977 2 non-address value, such as 'LENGTH'. One complication is that unless you set 'LD_FEATURE ("SANE_EXPR")' (*note Miscellaneous Commands::), d4979 1 a4979 1 location, for compatibility with older versions of 'ld'. Expressions d4982 1 a4982 1 definition treat absolute symbols as numbers. If 'LD_FEATURE d5001 3 a5003 3 both '.' and '__executable_start' are set to the absolute address 0x100 in the first two assignments, then both '.' and '__data_start' are set to 0x10 relative to the '.data' section in the second two d5012 1 d5017 1 d5026 3 a5028 1 * The result of comparisons, '&&' and '||' is also a number. d5031 2 a5032 3 (after above conversions) is also a number when 'LD_FEATURE ("SANE_EXPR")' or inside an output section definition but an absolute address otherwise. d5036 1 d5040 4 a5043 4 You can use the builtin function 'ABSOLUTE' to force an expression to be absolute when it would otherwise be relative. For example, to create an absolute symbol set to the address of the end of the output section '.data': d5048 2 a5049 2 If 'ABSOLUTE' were not used, '_edata' would be relative to the '.data' section. d5051 1 a5051 1 Using 'LOADADDR' also forces an expression absolute, since this d5063 1 a5063 1 'ABSOLUTE(EXP)' d5070 1 a5070 1 'ADDR(SECTION)' d5073 3 a5075 3 following example, 'start_of_output_1', 'symbol_1' and 'symbol_2' are assigned equivalent values, except that 'symbol_1' will be relative to the '.output1' section while the other two will be d5090 4 a5093 4 'ALIGN(ALIGN)' 'ALIGN(EXP,ALIGN)' Return the location counter ('.') or arbitrary expression aligned to the next ALIGN boundary. The single operand 'ALIGN' doesn't d5095 7 a5101 7 on it. The two operand 'ALIGN' allows an arbitrary expression to be aligned upwards ('ALIGN(ALIGN)' is equivalent to 'ALIGN(ABSOLUTE(.), ALIGN)'). Here is an example which aligns the output '.data' section to the next '0x2000' byte boundary after the preceding section and sets a variable within the section to the next '0x8000' boundary after the d5109 14 a5122 13 The first use of 'ALIGN' in this example specifies the location of a section because it is used as the optional ADDRESS attribute of a section definition (*note Output Section Address::). The second use of 'ALIGN' is used to defines the value of a symbol. The builtin function 'NEXT' is closely related to 'ALIGN'. 'ALIGNOF(SECTION)' Return the alignment in bytes of the named SECTION, if that section has been allocated. If the section has not been allocated when this is evaluated, the linker will report an error. In the following example, the alignment of the '.output' section is stored as the first value in that section. d5130 2 a5131 2 'BLOCK(EXP)' This is a synonym for 'ALIGN', for compatibility with older linker d5135 1 a5135 1 'DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)' d5143 1 a5143 1 expression and 'DATA_SEGMENT_END') than the former or not. If the d5148 1 a5148 1 This expression can only be used directly in 'SECTIONS' commands, d5151 2 a5152 4 should be the system page size the object wants to be optimized for while still running on system page sizes up to MAXPAGESIZE. Note however that '-z relro' protection will not be effective if the system page size is larger than COMMONPAGESIZE. d5157 2 a5158 2 'DATA_SEGMENT_END(EXP)' This defines the end of data segment for 'DATA_SEGMENT_ALIGN' d5163 8 a5170 8 'DATA_SEGMENT_RELRO_END(OFFSET, EXP)' This defines the end of the 'PT_GNU_RELRO' segment when '-z relro' option is used. When '-z relro' option is not present, 'DATA_SEGMENT_RELRO_END' does nothing, otherwise 'DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is aligned to the COMMONPAGESIZE argument given to 'DATA_SEGMENT_ALIGN'. If present in the linker script, it must be placed between 'DATA_SEGMENT_ALIGN' and 'DATA_SEGMENT_END'. Evaluates to the d5172 1 a5172 1 'PT_GNU_RELRO' segment due to section alignment. d5176 1 a5176 1 'DEFINED(SYMBOL)' d5181 2 a5182 2 set a global symbol 'begin' to the first location in the '.text' section--but if a symbol called 'begin' already existed, its value d5193 1 a5193 1 'LENGTH(MEMORY)' d5196 1 a5196 1 'LOADADDR(SECTION)' d5200 1 a5200 1 'LOG2CEIL(EXP)' d5202 1 a5202 1 'LOG2CEIL(0)' returns 0. d5204 1 a5204 1 'MAX(EXP1, EXP2)' d5207 1 a5207 1 'MIN(EXP1, EXP2)' d5210 1 a5210 1 'NEXT(EXP)' d5212 2 a5213 2 This function is closely related to 'ALIGN(EXP)'; unless you use the 'MEMORY' command to define discontinuous memory for the output d5216 1 a5216 1 'ORIGIN(MEMORY)' d5219 8 a5226 7 'SEGMENT_START(SEGMENT, DEFAULT)' Return the base address of the named SEGMENT. If an explicit value has already been given for this segment (with a command-line '-T' option) then that value will be returned otherwise the value will be DEFAULT. At present, the '-T' command-line option can only be used to set the base address for the "text", "data", and "bss" sections, but you can use 'SEGMENT_START' with any segment name. d5228 1 a5228 1 'SIZEOF(SECTION)' d5232 1 a5232 1 example, 'symbol_1' and 'symbol_2' are assigned identical values: d5243 2 a5244 2 'SIZEOF_HEADERS' 'sizeof_headers' d5246 2 a5247 2 information which appears at the start of the output file. You can use this number when setting the start address of the first d5251 1 a5251 1 'SIZEOF_HEADERS' builtin function, the linker must compute the d5254 1 a5254 1 additional program headers, it will report an error 'not enough d5256 1 a5256 1 using the 'SIZEOF_HEADERS' function, or you must rework your linker d5259 1 a5259 1 'PHDRS' command (*note PHDRS::). d5275 1 a5275 1 assignments, or the 'INPUT', 'GROUP', or 'VERSION' commands. d5287 2 a5288 2 'ld' has additional features on some platforms; the following sections describe them. Machines where 'ld' has no additional functionality are d5293 34 a5326 18 * H8/300:: 'ld' and the H8/300 * i960:: 'ld' and the Intel 960 family * M68HC11/68HC12:: 'ld' and the Motorola 68HC11 and 68HC12 families * ARM:: 'ld' and the ARM family * HPPA ELF32:: 'ld' and HPPA 32-bit ELF * M68K:: 'ld' and the Motorola 68K family * MIPS:: 'ld' and the MIPS family * MMIX:: 'ld' and MMIX * MSP430:: 'ld' and MSP430 * NDS32:: 'ld' and NDS32 * Nios II:: 'ld' and the Altera Nios II * PowerPC ELF32:: 'ld' and PowerPC 32-bit ELF Support * PowerPC64 ELF64:: 'ld' and PowerPC64 64-bit ELF Support * S/390 ELF:: 'ld' and S/390 ELF Support * SPU ELF:: 'ld' and SPU ELF Support * TI COFF:: 'ld' and TI COFF * WIN32:: 'ld' and WIN32 (cygwin/mingw) * Xtensa:: 'ld' and Xtensa Processors d5331 1 a5331 1 4.1 'ld' and the H8/300 d5334 2 a5335 2 For the H8/300, 'ld' can perform these global optimizations when you specify the '--relax' command-line option. d5338 1 a5338 1 'ld' finds all 'jsr' and 'jmp' instructions whose targets are d5340 1 a5340 1 relative 'bsr' and 'bra' instructions, respectively. d5343 1 a5343 1 'ld' finds all 'mov.b' instructions which use the sixteen-bit d5346 1 a5346 1 linker turns 'mov.b '@@'AA:16' into 'mov.b '@@'AA:8' whenever the d5349 1 a5349 1 'ld' finds all 'mov' instructions which use the register indirect d5353 2 a5354 2 'mov.b '@@'D:32,ERx' into 'mov.b '@@'D:16,ERx' whenever the displacement D is in the 16 bit signed integer range. Only d5358 1 a5358 1 'ld' finds all bit manipulation instructions like 'band, bclr, d5362 2 a5363 2 address form. (That is: the linker turns 'bset #xx:3,'@@'AA:32' into 'bset #xx:3,'@@'AA:8' whenever the address AA is in the top d5367 1 a5367 1 'ld' finds all 'ldc.w, stc.w' instructions which use the 32 bit d5370 1 a5370 1 turns 'ldc.w '@@'AA:32,ccr' into 'ldc.w '@@'AA:16,ccr' whenever the d5376 1 a5376 1 4.2 'ld' and the Intel 960 Family d5379 1 a5379 1 You can use the '-AARCHITECTURE' command line option to specify one of d5383 7 a5389 7 strategy for archive libraries, to support the use of libraries specific to each particular architecture, by including in the search loop names suffixed with the string identifying the architecture. For example, if your 'ld' command line included '-ACA' as well as '-ltry', the linker would look (in its built-in search paths, and in any paths you specify with '-L') for a library with the names d5397 1 a5397 1 two are due to the use of '-ACA'. d5399 1 a5399 1 You can meaningfully use '-A' more than once on a command line, since d5401 1 a5401 1 each use will add another pair of name variants to search for when '-l' d5404 2 a5405 2 'ld' supports the '--relax' option for the i960 family. If you specify '--relax', 'ld' finds all 'balx' and 'calx' instructions whose d5407 2 a5408 2 relative 'bal' and 'cal' instructions, respectively. 'ld' also turns 'cal' instructions into 'bal' instructions when it determines that the d5415 1 a5415 1 4.3 'ld' and the Motorola 68HC11 and 68HC12 families d5421 2 a5422 2 For the Motorola 68HC11, 'ld' can perform these global optimizations when you specify the '--relax' command-line option. d5425 1 a5425 1 'ld' finds all 'jsr' and 'jmp' instructions whose targets are d5427 1 a5427 1 relative 'bsr' and 'bra' instructions, respectively. d5429 1 a5429 1 'ld' also looks at all 16-bit extended addressing modes and d5434 1 a5434 1 When 'gcc' is called with '-mrelax', it can emit group of d5436 1 a5436 1 addressing mode. These instructions consists of 'bclr' or 'bset' d5439 1 d5443 2 a5444 2 For 68HC11 and 68HC12, 'ld' can generate trampoline code to call a far function using a normal 'jsr' instruction. The linker will also change d5446 2 a5447 2 instead of the function address. This is typically the case when a pointer to a function is taken. The pointer will in fact point to the d5453 1 a5453 1 4.4 'ld' and the ARM family d5456 1 a5456 1 For the ARM, 'ld' will generate code stubs to allow functions calls d5458 1 a5458 1 been compiled and assembled with the '-mthumb-interwork' command line d5461 4 a5464 4 option then the '--support-old-code' command line switch should be given to the linker. This will make it generate larger stub functions which will work with non-interworking aware ARM code. Note, however, the linker does not support generating stubs for function calls to d5467 1 a5467 1 The '--thumb-entry' switch is a duplicate of the generic '--entry' d5473 14 a5486 14 The '--use-nul-prefixed-import-tables' switch is specifying, that the import tables idata4 and idata5 have to be generated with a zero element prefix for import libraries. This is the old style to generate import tables. By default this option is turned off. The '--be8' switch instructs 'ld' to generate BE8 format executables. This option is only valid when linking big-endian objects - ie ones which have been assembled with the '-EB' option. The resulting image will contain big-endian data and little-endian code. The 'R_ARM_TARGET1' relocation is typically used for entries in the '.init_array' section. It is interpreted as either 'R_ARM_REL32' or 'R_ARM_ABS32', depending on the target. The '--target1-rel' and '--target1-abs' switches override the default. d5488 2 a5489 2 The '--target2=type' switch overrides the default definition of the 'R_ARM_TARGET2' relocation. Valid values for 'type', their meanings, d5491 8 a5498 6 'rel' 'R_ARM_REL32' (arm*-*-elf, arm*-*-eabi) 'abs' 'R_ARM_ABS32' (arm*-*-symbianelf) 'got-rel' 'R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd) d5500 1 a5500 1 The 'R_ARM_V4BX' relocation (defined by the ARM AAELF specification) d5506 3 a5508 3 In the latter case, the switch '--fix-v4bx' must be passed to the linker, which causes v4t 'BX rM' instructions to be rewritten as 'MOV PC,rM', since v4 processors do not have a 'BX' instruction. d5510 1 a5510 1 In the former case, the switch should not be used, and 'R_ARM_V4BX' d5513 1 a5513 1 Replace 'BX rM' instructions identified by 'R_ARM_V4BX' relocations d5522 2 a5523 2 clobbers the condition flags, so may cause incorrect program behavior in rare cases. d5525 1 a5525 1 The '--use-blx' switch enables the linker to use ARM/Thumb BLX d5529 1 a5529 1 entry. This should lead to such calls executing slightly faster. d5534 1 a5534 1 The '--vfp11-denorm-fix' switch enables a link-time workaround for a d5543 1 a5543 1 at least two intervening instructions if vector mode is in use. The bug d5545 1 a5545 1 workaround if you are using "runfast" mode. Please contact ARM for d5549 2 a5550 2 workaround by specifying the linker option '--vfp-denorm-fix=scalar' if you are using the VFP11 scalar mode only, or '--vfp-denorm-fix=vector' d5552 1 a5552 1 The default is '--vfp-denorm-fix=none'. d5555 2 a5556 2 potentially-troublesome sequences, and a veneer is created for each such sequence which may trigger the erratum. The veneer consists of the d5558 3 a5560 4 instruction. The original instruction is then replaced with a branch to the veneer. The extra cycles required to call and return from the veneer are sufficient to avoid the erratum in both the scalar and vector cases. d5562 1 a5562 1 The '--fix-arm1176' switch enables a link-time workaround for an d5564 2 a5565 2 default if you are targeting ARM v6 (excluding ARM v6T2) or earlier. It can be disabled unconditionally by specifying '--no-fix-arm1176'. d5571 1 a5571 1 The '--fix-stm32l4xx-629360' switch enables a link-time workaround d5577 1 a5577 1 LDM, POP and floating-point loads such as VLDM, VPOP. Stores are not d5584 1 a5584 1 '--fix-stm32l4xx-629360=none'. If you know you are using buggy d5586 2 a5587 2 linker option '--fix-stm32l4xx-629360', or the equivalent '--fix-stm32l4xx-629360=default'. d5590 2 a5591 2 potentially-troublesome sequences, and a veneer is created for each such sequence which may trigger the erratum. The veneer consists in a d5605 1 a5605 1 PC-relative branch instruction if the '.text' section is too large. In d5609 1 a5609 1 The '--no-enum-size-warning' switch prevents the linker from warning d5616 5 a5620 5 The '--no-wchar-size-warning' switch prevents the linker from warning when linking object files that specify incompatible EABI 'wchar_t' size attributes. For example, with this switch enabled, linking of an object file using 32-bit 'wchar_t' values with another using 16-bit 'wchar_t' values will not be diagnosed. d5622 1 a5622 1 The '--pic-veneer' switch makes the linker use PIC sequences for d5624 1 a5624 1 PIC. This avoids problems on uClinux targets where '--emit-relocs' is d5629 8 a5636 7 perform a function call to a symbol that is too far away. The placement of these sequences of instructions - called stubs - is controlled by the command line option '--stub-group-size=N'. The placement is important because a poor choice can create a need for duplicate stubs, increasing the code size. The linker will try to group stubs together in order to reduce interruptions to the flow of code, but it needs guidance as to how big these groups should be and where they should be placed. d5638 1 a5638 1 The value of 'N', the parameter to the '--stub-group-size=' option d5642 1 a5642 1 branches that need them. If the value of 'N' is 1 (either +1 or -1) d5644 1 a5644 1 using its built in heuristics. A value of 'N' greater than 1 (or d5646 1 a5646 1 service at most 'N' bytes from the input sections. d5648 1 a5648 1 The default, if '--stub-group-size=' is not specified, is 'N = +1'. d5654 1 a5654 1 The '--fix-cortex-a8' switch enables a link-time workaround for an d5657 2 a5658 2 be enabled otherwise by specifying '--fix-cortex-a8', or disabled unconditionally by specifying '--no-fix-cortex-a8'. d5663 1 a5663 1 The '--fix-cortex-a53-835769' switch enables a link-time workaround d5666 2 a5667 2 by specifying '--fix-cortex-a53-835769', or disabled unconditionally by specifying '--no-fix-cortex-a53-835769'. d5671 1 a5671 1 The '--no-merge-exidx-entries' switch disables the merging of d5674 1 a5674 1 The '--long-plt' option enables the use of 16 byte PLT entries which d5678 1 a5678 1 The '--no-apply-dynamic-relocs' option makes AArch64 linker do not a5680 20 All SG veneers are placed in the special output section '.gnu.sgstubs'. Its start address must be set, either with the command line option '--section-start' or in a linker script, to indicate where to place these veneers in memory. The '--cmse-implib' option requests that the import libraries specified by the '--out-implib' and '--in-implib' options are secure gateway import libraries, suitable for linking a non-secure executable against secure code as per ARMv8-M Security Extensions. The '--in-implib=file' specifies an input import library whose symbols must keep the same address in the executable being produced. A warning is given if no '--out-implib' is given but new symbols have been introduced in the executable that should be listed in its import library. Otherwise, if '--out-implib' is specified, the symbols are added to the output import library. A warning is also given if some symbols present in the input import library have disappeared from the executable. This option is only effective for Secure Gateway import libraries, ie. when '--cmse-implib' is specified. d5684 1 a5684 1 4.5 'ld' and HPPA 32-bit ELF Support d5687 1 a5687 1 When generating a shared library, 'ld' will by default generate import d5689 1 a5689 1 '--multi-subspace' switch causes 'ld' to generate export stubs, and d5693 2 a5694 2 Long branch stubs and import/export stubs are placed by 'ld' in stub sections located between groups of input sections. '--stub-group-size' d5696 10 a5705 10 stub section. Since branch offsets are signed, a stub section may serve two groups of input sections, one group before the stub section, and one group after it. However, when using conditional branches that require stubs, it may be better (for branch prediction) that stub sections only serve one group of input sections. A negative value for 'N' chooses this scheme, ensuring that branches to stubs always use a negative offset. Two special values of 'N' are recognized, '1' and '-1'. These both instruct 'ld' to automatically size input section groups for the branch types detected, with the same behaviour regarding stub placement as other positive or negative values of 'N' respectively. d5707 1 a5707 1 Note that '--stub-group-size' does not split input sections. A d5715 1 a5715 1 4.6 'ld' and the Motorola 68K family d5718 5 a5722 5 The '--got=TYPE' option lets you choose the GOT generation scheme. The choices are 'single', 'negative', 'multigot' and 'target'. When 'target' is selected the linker chooses the default GOT generation scheme for the current target. 'single' tells the linker to generate a single GOT with entries only at non-negative offsets. 'negative' d5725 1 a5725 1 'multigot' allows the linker to generate several GOTs in the output d5733 1 a5733 1 4.7 'ld' and the MIPS family d5736 6 a5741 16 The '--insn32' and '--no-insn32' options control the choice of microMIPS instructions used in code generated by the linker, such as that in the PLT or lazy binding stubs, or in relaxation. If '--insn32' is used, then the linker only uses 32-bit instruction encodings. By default or if '--no-insn32' is used, all instruction encodings are used, including 16-bit ones where possible. The '--ignore-branch-isa' and '--no-ignore-branch-isa' options control branch relocation checks for invalid ISA mode transitions. If '--ignore-branch-isa' is used, then the linker accepts any branch relocations and any ISA mode transition required is lost in relocation calculation, except for some cases of 'BAL' instructions which meet relaxation conditions and are converted to equivalent 'JALX' instructions as the associated relocation is calculated. By default or if '--no-ignore-branch-isa' is used a check is made causing the loss of an ISA mode transition to produce an error. d5746 1 a5746 1 4.8 'ld' and MMIX d5749 3 a5751 3 For MMIX, there is a choice of generating 'ELF' object files or 'mmo' object files when linking. The simulator 'mmix' understands the 'mmo' format. The binutils 'objcopy' utility can translate between the two d5754 1 a5754 1 There is one special section, the '.MMIX.reg_contents' section. d5758 2 a5759 2 '.MMIX.reg_contents' section corresponds to the first allocated global register multiplied by 8. Register '$255' is not included in this d5761 1 a5761 1 'Main' for 'mmo' files. d5763 2 a5764 2 Global symbols with the prefix '__.MMIX.start.', for example '__.MMIX.start..text' and '__.MMIX.start..data' are special. The d5774 1 a5774 1 4.9 'ld' and MSP430 d5778 2 a5779 2 '-m [mpu type]' will select an appropriate linker script for selected MPU type. (To get a list of known MPUs just pass '-m help' option to d5785 1 a5785 1 ''.vectors'' d5788 1 a5788 1 ''.bootloader'' d5792 1 a5792 1 ''.infomem'' d5796 2 a5797 2 ''.infomemnobits'' This is the same as the '.infomem' section except that any code in d5800 2 a5801 2 ''.noinit'' Denotes a portion of RAM located above '.bss' section. a5804 18 '--code-region=[either,lower,upper,none]' This will transform .text* sections to [either,lower,upper].text* sections. The argument passed to GCC for -mcode-region is propagated to the linker using this option. '--data-region=[either,lower,upper,none]' This will transform .data*, .bss* and .rodata* sections to [either,lower,upper].[data,bss,rodata]* sections. The argument passed to GCC for -mdata-region is propagated to the linker using this option. '--disable-sec-transformation' Prevent the transformation of sections as specified by the '--code-region' and '--data-region' options. This is useful if you are compiling and linking using a single call to the GCC wrapper, and want to compile the source files using -m[code,data]-region but not transform the sections for prebuilt libraries and objects. d5808 1 a5808 1 4.10 'ld' and NDS32 d5814 1 a5814 1 ''--m[no-]fp-as-gp'' d5817 1 a5817 1 ''--mexport-symbols=FILE'' d5820 1 a5820 1 ''--m[no-]ex9'' d5823 1 a5823 1 ''--mexport-ex9=FILE'' d5826 1 a5826 1 ''--mimport-ex9=FILE'' d5829 1 a5829 1 ''--mupdate-ex9'' d5832 1 a5832 1 ''--mex9-limit=NUM'' d5835 1 a5835 1 ''--mex9-loop-aware'' d5838 1 a5838 1 ''--m[no-]ifc'' d5841 1 a5841 1 ''--mifc-loop-aware'' d5847 1 a5847 1 4.11 'ld' and the Altera Nios II d5852 4 a5855 4 which may result in 'ld' giving 'relocation truncated to fit' errors with very large programs. The command-line option '--relax' enables the generation of trampolines that can access the entire 32-bit address space for calls outside the normal 'call' and 'jmpi' address range. d5860 1 a5860 1 The '--relax' option is enabled by default unless '-r' is also d5862 3 a5864 3 '--no-relax' linker option. You can also disable this optimization locally by using the 'set .noat' directive in assembly-language source files, as the linker-inserted trampolines use the 'at' register as a d5867 2 a5868 2 Note that the linker '--relax' option is independent of assembler relaxation options, and that using the GNU assembler's '-relax-all' d5875 1 a5875 1 4.12 'ld' and PowerPC 32-bit ELF Support d5879 2 a5880 2 displacement, which may result in 'ld' giving 'relocation truncated to fit' errors with very large programs. '--relax' enables the generation d5882 4 a5885 4 trampolines are inserted at section boundaries, so may not themselves be reachable if an input section exceeds 33M in size. You may combine '-r' and '--relax' to add trampolines in a partial link. In that case both branches to undefined symbols and inter-section branches are also d5888 2 a5889 2 '--bss-plt' Current PowerPC GCC accepts a '-msecure-plt' option that generates d5893 1 a5893 1 'ld' will generate this layout, including stubs to access the PLT, d5895 1 a5895 1 compiled with '-msecure-plt'. '--bss-plt' forces the old BSS PLT d5898 3 a5900 3 '--secure-plt' 'ld' will use the new PLT and GOT layout if it is linking new '-fpic' or '-fPIC' code, but does not do so automatically when d5905 1 a5905 1 '--sdata-got' d5907 11 a5917 11 sections compared to older BSS PLT and GOT placement. The location of '.plt' must change because the new secure PLT is an initialized section while the old PLT is uninitialized. The reason for the '.got' change is more subtle: The new placement allows '.got' to be read-only in applications linked with '-z relro -z now'. However, this placement means that '.sdata' cannot always be used in shared libraries, because the PowerPC ABI accesses '.sdata' in shared libraries from the GOT pointer. '--sdata-got' forces the old GOT placement. PowerPC GCC doesn't use '.sdata' in shared libraries, so this option is really only useful for other compilers that may do so. d5919 2 a5920 2 '--emit-stub-syms' This option causes 'ld' to label linker stubs with a local symbol d5923 2 a5924 2 '--no-tls-optimize' PowerPC 'ld' normally performs some optimization of code sequences d5929 1 a5929 1 File: ld.info, Node: PowerPC64 ELF64, Next: S/390 ELF, Prev: PowerPC ELF32, Up: Machine Dependent d5931 1 a5931 1 4.13 'ld' and PowerPC64 64-bit ELF Support d5934 4 a5937 4 '--stub-group-size' Long branch stubs, PLT call stubs and TOC adjusting stubs are placed by 'ld' in stub sections located between groups of input sections. '--stub-group-size' specifies the maximum size of a d5943 1 a5943 1 serve one group of input sections. A negative value for 'N' d5945 5 a5949 5 negative offset. Two special values of 'N' are recognized, '1' and '-1'. These both instruct 'ld' to automatically size input section groups for the branch types detected, with the same behaviour regarding stub placement as other positive or negative values of 'N' respectively. d5951 1 a5951 1 Note that '--stub-group-size' does not split input sections. A d5957 2 a5958 2 '--emit-stub-syms' This option causes 'ld' to label linker stubs with a local symbol d5961 14 a5974 14 '--dotsyms' '--no-dotsyms' These two options control how 'ld' interprets version patterns in a version script. Older PowerPC64 compilers emitted both a function descriptor symbol with the same name as the function, and a code entry symbol with the name prefixed by a dot ('.'). To properly version a function 'foo', the version script thus needs to control both 'foo' and '.foo'. The option '--dotsyms', on by default, automatically adds the required dot-prefixed patterns. Use '--no-dotsyms' to disable this feature. '--save-restore-funcs' '--no-save-restore-funcs' These two options control whether PowerPC64 'ld' automatically d5976 3 a5978 2 '-Os' code. The default is to provide any such referenced function for a normal final link, and to not do so for a relocatable link. d5980 2 a5981 2 '--no-tls-optimize' PowerPC64 'ld' normally performs some optimization of code d5985 4 a5988 4 '--tls-get-addr-optimize' '--no-tls-get-addr-optimize' These options control whether PowerPC64 'ld' uses a special stub to call __tls_get_addr. PowerPC64 glibc 2.22 and later support an d5990 1 a5990 1 '__tls_get_addr' for a given symbol to be resolved by the special d5994 4 a5997 4 glibc won't do much besides slow down your applications, but may be useful if linking an application against an older glibc with the expectation that it will normally be used on systems having a newer glibc. d5999 2 a6000 2 '--no-opd-optimize' PowerPC64 'ld' normally removes '.opd' section entries d6002 2 a6003 2 by the action of '--gc-sections' or linker script '/DISCARD/'. Use this option to disable '.opd' optimization. d6005 1 a6005 1 '--non-overlapping-opd' d6007 1 a6007 1 '.opd' entries spaced 16 bytes apart, overlapping the third word, d6011 2 a6012 2 '--no-toc-optimize' PowerPC64 'ld' normally removes unused '.toc' section entries. d6025 3 a6027 3 '--no-multi-toc' If given any toc option besides '-mcmodel=medium' or '-mcmodel=large', PowerPC64 GCC generates code for a TOC model d6029 11 a6039 11 limits the total TOC size to 64K. PowerPC64 'ld' extends this limit by grouping code sections such that each group uses less than 64K for its TOC entries, then inserts r2 adjusting stubs between inter-group calls. 'ld' does not split apart input sections, so cannot help if a single input file has a '.toc' section that exceeds 64K, most likely from linking multiple files with 'ld -r'. Use this option to turn off this feature. '--no-toc-sort' By default, 'ld' sorts TOC sections so that those whose file happens to have a section called '.init' or '.fini' are placed d6041 1 a6041 1 PowerPC64 gcc's '-mcmodel=small', and lastly TOC sections d6043 2 a6044 2 '-mcmodel=medium' or '-mcmodel=large' options. Doing this results in better TOC grouping for multi-TOC. Use this option to turn off d6047 2 a6048 2 '--plt-align' '--no-plt-align' d6050 4 a6053 7 aligned to a 32-byte boundary, or to the specified power of two boundary when using '--plt-align='. A negative value may be specified to pad PLT call stubs so that they do not cross the specified power of two boundary (or the minimum number of boundaries if a PLT stub is so large that it must cross a boundary). By default PLT call stubs are aligned to 32-byte boundaries. d6055 2 a6056 2 '--plt-static-chain' '--no-plt-static-chain' d6058 2 a6059 2 chain pointer (r11). 'ld' defaults to not loading the static chain since there is never any need to do so on a PLT call. d6061 2 a6062 2 '--plt-thread-safe' '--no-plt-thread-safe' d6069 1 a6069 1 default, 'ld' looks for calls to commonly used functions that a6072 34 '--speculate-indirect-jumps' '--no-speculate-indirect-jumps' Use these options to control whether all indirect branch instructions emitted by 'ld', such as those in the PLT, have a speculative execution barrier to mitigate Spectre variant 2 attacks. '--plt-localentry' '--no-localentry' ELFv2 functions with localentry:0 are those with a single entry point, ie. global entry == local entry, and that have no requirement on r2 (the TOC/GOT pointer) or r12, and guarantee r2 is unchanged on return. Such an external function can be called via the PLT without saving r2 or restoring it on return, avoiding a common load-hit-store for small functions. The optimization is attractive, with up to 40% reduction in execution time for a small function, but can result in symbol interposition failures. Also, minor changes in a shared library, including system libraries, can cause a function that was localentry:0 to become localentry:8. This will result in a dynamic loader complaint and failure to run. The option is experimental, use with care. '--no-plt-localentry' is the default.  File: ld.info, Node: S/390 ELF, Next: SPU ELF, Prev: PowerPC64 ELF64, Up: Machine Dependent 4.14 'ld' and S/390 ELF Support =============================== '--s390-pgste' This option marks the result file with a 'PT_S390_PGSTE' segment. The Linux kernel is supposed to allocate 4k page tables for binaries marked that way. d6074 1 a6074 1 File: ld.info, Node: SPU ELF, Next: TI COFF, Prev: S/390 ELF, Up: Machine Dependent d6076 1 a6076 1 4.15 'ld' and SPU ELF Support d6079 1 a6079 1 '--plugin' d6082 2 a6083 2 '--no-overlays' Normally, 'ld' recognizes calls to functions within overlay d6085 1 a6085 1 'ld' also provides a built-in overlay manager. This option turns d6088 2 a6089 2 '--emit-stub-syms' This option causes 'ld' to label overlay stubs with a local symbol d6092 2 a6093 2 '--extra-overlay-stubs' This option causes 'ld' to add overlay call stubs on all function d6097 2 a6098 2 '--local-store=lo:hi' 'ld' usually checks that a final executable for SPU fits in the d6100 1 a6100 1 range. Disable the check entirely with '--local-store=0:0'. d6102 1 a6102 1 '--stack-analysis' d6106 6 a6111 6 option, 'ld' will provide an estimate of maximum stack usage. 'ld' does this by examining symbols in code sections to determine the extents of functions, and looking at function prologues for stack adjusting instructions. A call-graph is created by looking for relocations on branch instructions. The graph is then searched for the maximum stack usage path. Note that this analysis does not d6115 1 a6115 1 for dynamic allocation, e.g. alloca, will not be detected. If a d6119 6 a6124 6 '--emit-stack-syms' This option, if given along with '--stack-analysis' will result in 'ld' emitting stack sizing symbols for each function. These take the form '__stack_' for global functions, and '__stack__' for static functions. '' is the section id in hex. The value of such symbols is d6126 2 a6127 2 size will be zero, type 'STT_NOTYPE', binding 'STB_LOCAL', and section 'SHN_ABS'. d6132 1 a6132 1 4.16 'ld''s Support for Various TI COFF Versions d6135 1 a6135 1 The '--format' switch allows selection of one of the various TI COFF d6138 1 a6138 1 'ld' will read any version or byte order, but the output header format d6144 1 a6144 1 4.17 'ld' and WIN32 (cygwin/mingw) d6147 2 a6148 2 This section describes some of the win32 specific 'ld' issues. See *note Command Line Options: Options. for detailed description of the d6155 2 a6156 2 archive. The cygwin and mingw ports of 'ld' have specific support for creating such libraries provided with the '--out-implib' d6160 1 a6160 1 The cygwin/mingw 'ld' has several ways to export symbols for dll's. d6162 2 a6163 2 _using auto-export functionality_ By default 'ld' exports symbols with the auto-export d6167 2 a6168 1 * -export-all-symbols [This is the default] d6170 1 d6172 1 d6174 1 d6177 1 a6177 1 When auto-export is in operation, 'ld' will export all the d6179 6 a6184 6 the exception of a few symbols known to belong to the system's runtime and libraries. As it will often not be desirable to export all of a DLL's symbols, which may include private functions that are not part of any public interface, the command-line options listed above may be used to filter symbols out from the list for exporting. The '--output-def' d6188 1 a6188 1 If '--export-all-symbols' is not given explicitly on the d6193 1 d6197 1 a6197 1 _using a DEF file_ d6200 4 a6203 4 should be exported when a dll is created. Usually it is named '.def' and is added as any other object file to the linker's command line. The file's name must end in '.def' or '.DEF'. d6208 1 a6208 1 unless the '--export-all-symbols' option is also used. d6211 1 a6211 1 'xyz.dll': d6224 14 a6237 14 This example defines a DLL with a non-default base address and seven symbols in the export table. The third exported symbol '_bar' is an alias for the second. The fourth symbol, 'another_foo' is resolved by "forwarding" to another module and treating it as an alias for 'afoo' exported from the DLL 'abc.dll'. The final symbol 'var1' is declared to be a data object. The 'doo' symbol in export library is an alias of 'foo', which gets the string name in export table 'foo2'. The 'eoo' symbol is an data export symbol, which gets in export table the name 'var1'. The optional 'LIBRARY ' command indicates the _internal_ name of the output DLL. If '' does not include a suffix, the default library suffix, '.DLL' is appended. d6240 3 a6242 3 than a library, the 'NAME ' command should be used instead of 'LIBRARY'. If '' does not include a suffix, the default executable suffix, '.EXE' is appended. d6244 2 a6245 2 With either 'LIBRARY ' or 'NAME ' the optional specification 'BASE = ' may be used to specify a d6248 3 a6250 3 If neither 'LIBRARY ' nor 'NAME ' is specified, or they specify an empty string, the internal name is the same as the filename specified on the command line. d6259 7 a6265 7 Declares '' as an exported symbol from the DLL, or declares '' as an exported alias for ''; or declares '' as a "forward" alias for the symbol '' in the DLL ''. Optionally, the symbol may be exported by the specified ordinal '' alias. The optional '' is the to be used string in import/export table for the symbol. d6269 6 a6274 6 'NONAME': Do not put the symbol name in the DLL's export table. It will still be exported by its ordinal alias (either the value specified by the .def specification or, otherwise, the value assigned by the linker). The symbol name, however, does remain visible in the import library (if any), unless 'PRIVATE' is also specified. d6276 1 a6276 1 'DATA': The symbol is a variable or object, rather than a d6278 2 a6279 2 reference to 'foo' as the symbol '_imp__foo' (ie, 'foo' must be resolved as '*_imp__foo'). d6281 2 a6282 2 'CONSTANT': Like 'DATA', but put the undecorated 'foo' as well as '_imp__foo' into the import library. Both refer to the d6284 2 a6285 2 to the variable itself. This can be dangerous. If the user code fails to add the 'dllimport' attribute and also fails to d6289 1 a6289 1 'PRIVATE': Put the symbol in the DLL's export table, but do d6291 4 a6294 4 imports at link time. The symbol can still be imported using the 'LoadLibrary/GetProcAddress' API at runtime or by using the GNU ld extension of linking directly to the DLL without an import library. d6299 2 a6300 2 While linking a shared dll, 'ld' is able to create a DEF file with the '--output-def ' command line option. d6302 1 a6302 1 _Using decorations_ d6310 1 a6310 1 All such symbols will be exported from the DLL. If, however, d6312 3 a6314 2 in this way, then the normal auto-export behavior is disabled, unless the '--export-all-symbols' option is also used. d6329 2 a6330 2 declaration completely. See '--enable-auto-import' and 'automatic data imports' for more information. d6334 12 a6345 12 only by adding special decorations (dllimport/dllexport), which let the compiler produce specific assembler instructions to deal with this issue. This increases the effort necessary to port existing Un*x code to these platforms, especially for large c++ libraries and applications. The auto-import feature, which was initially provided by Paul Sokolovsky, allows one to omit the decorations to achieve a behavior that conforms to that on POSIX/Un*x platforms. This feature is enabled with the '--enable-auto-import' command-line option, although it is enabled by default on cygwin/mingw. The '--enable-auto-import' option itself now serves mainly to suppress any warnings that are ordinarily emitted when linked objects trigger the feature's use. d6350 2 a6351 2 "variable '' can't be auto-imported. Please read the documentation for ld's '--enable-auto-import' for details." d6353 1 a6353 1 The '--enable-auto-import' documentation explains why this error d6368 8 a6375 8 The '--enable-runtime-pseudo-relocs' switch allows these references to be resolved without error, while leaving the task of adjusting the references themselves (with their non-zero addends) to specialized code provided by the runtime environment. Recent versions of the cygwin and mingw environments and compilers provide this runtime support; older versions do not. However, the support is only necessary on the developer's platform; the compiled result will run without error on an older system. d6377 1 a6377 1 '--enable-runtime-pseudo-relocs' is not the default; it must be d6381 1 a6381 1 The cygwin/mingw ports of 'ld' support the direct linking, d6383 14 a6396 14 libraries. This is much faster and uses much less memory than does the traditional import library method, especially when linking large libraries or applications. When 'ld' creates an import lib, each function or variable exported from the dll is stored in its own bfd, even though a single bfd could contain many exports. The overhead involved in storing, loading, and processing so many bfd's is quite large, and explains the tremendous time, memory, and storage needed to link against particularly large or complex libraries when using import libs. Linking directly to a dll uses no extra command-line switches other than '-L' and '-l', because 'ld' already searches for a number of names to match each library. All that is needed from the developer's perspective is an understanding of this search, in d6399 1 a6399 1 For instance, when ld is called with the argument '-lxxx' it will d6412 9 a6420 9 (*) Actually, this is not 'cygxxx.dll' but in fact is 'xxx.dll', where '' is set by the 'ld' option '--dll-search-prefix='. In the case of cygwin, the standard gcc spec file includes '--dll-search-prefix=cyg', so in effect we actually search for 'cygxxx.dll'. Other win32-based unix environments, such as mingw or pw32, may use other ''es, although at present only cygwin makes use of this feature. It was originally intended to help avoid name d6425 2 a6426 2 The generic cygwin/mingw path layout uses a 'bin' directory for applications and dll's and a 'lib' directory for the import d6438 1 a6438 1 1. Use the dll directly by adding the 'bin' path to the link line d6442 2 a6443 2 names ('cygncurses-5.dll') this will often fail, unless one specifies '-L../bin -lncurses-5' to include the version. Import d6446 1 a6446 1 2. Create a symbolic link from the dll to a file in the 'lib' d6457 2 a6458 2 This technique also avoids the version number problems, because the following is perfectly legal d6467 1 a6467 1 '--enable-runtime-pseudo-relocs' is used. d6470 2 a6471 2 justifiably wonder why import libraries are used at all. There are three reasons: d6473 2 a6474 2 1. Until recently, the link-directly-to-dll functionality did _not_ work with auto-imported data. d6476 1 a6476 1 2. Sometimes it is necessary to include pure static objects within d6479 2 a6480 2 the import lib for the cygwin kernel makes use of this ability, and it is not possible to do this without an import lib. d6482 1 a6482 1 3. Symbol aliases can only be resolved using an import lib. This d6490 2 a6491 2 binutils makes available to the win32 developer. Given the massive improvements in memory requirements during linking, storage d6496 2 a6497 1 _adding additional names_ d6499 2 a6500 2 names. A symbol 'foo' will be exported as 'foo', but it can also be exported as '_foo' by using special directives in the d6511 1 a6511 1 The line '_foo = foo' maps the symbol 'foo' to '_foo'. d6522 1 a6522 1 _renaming symbols_ d6524 3 a6526 3 cygwin kernel does this regularly. A symbol '_foo' can be exported as 'foo' but not as '_foo' by using special directives in the DEF file. (This will also affect the import d6534 2 a6535 2 The line '_foo = foo' maps the exported symbol 'foo' to '_foo'. d6538 2 a6539 2 unless the '--export-all-symbols' command line option is used. If, however, you are trying to rename symbols, then you should list d6541 1 a6541 1 are not being renamed, and do _not_ use the '--export-all-symbols' d6543 4 a6546 4 use '--export-all-symbols' to handle the other symbols, then the both the new names _and_ the original names for the renamed symbols will be exported. In effect, you'd be aliasing those symbols, not renaming them, which is probably not what you wanted. d6550 3 a6552 3 called weak externals. When a weak symbol is linked and the symbol is not defined, the weak symbol becomes an alias for some other symbol. There are three variants of weak externals: d6555 1 d6558 1 d6562 2 a6563 2 symbol are supported. If the symbol is undefined when linking, the symbol uses a default value. d6566 10 a6575 9 As a GNU extension to the PE file format, it is possible to specify the desired alignment for a common symbol. This information is conveyed from the assembler or compiler to the linker by means of GNU-specific commands carried in the object file's '.drectve' section, which are recognized by 'ld' and respected when laying out the common symbols. Native tools will be able to process object files employing this GNU extension, but will fail to respect the alignment instructions, and may issue noisy warnings about unknown linker directives. d6580 1 a6580 1 4.18 'ld' and Xtensa Processors d6583 2 a6584 2 The default 'ld' behavior for Xtensa processors is to interpret 'SECTIONS' commands so that lists of explicitly named sections in a d6596 1 a6596 1 'ld' may interleave some of the '.literal' and '.text' sections from d6598 5 a6602 5 range of PC-relative load offsets. A valid interleaving might place the '.literal' sections from an initial group of files followed by the '.text' sections of that group of files. Then, the '.literal' sections from the rest of the files and the '.text' sections from the rest of the files would follow. d6604 1 a6604 1 Relaxation is enabled by default for the Xtensa version of 'ld' and d6607 7 a6613 6 literal will be removed and all the 'L32R' instructions that use it will be changed to reference an identical literal, as long as the location of the replacement literal is within the offset range of all the 'L32R' instructions. The second optimization is to remove unnecessary overhead from assembler-generated "longcall" sequences of 'L32R'/'CALLXN' when the target functions are within range of direct 'CALLN' instructions. d6616 13 a6628 13 optimized to a direct call, the linker will change the 'CALLXN' instruction to a 'CALLN' instruction, remove the 'L32R' instruction, and remove the literal referenced by the 'L32R' instruction if it is not used for anything else. Removing the 'L32R' instruction always reduces code size but can potentially hurt performance by changing the alignment of subsequent branch targets. By default, the linker will always preserve alignments, either by switching some instructions between 24-bit encodings and the equivalent density instructions or by inserting a no-op in place of the 'L32R' instruction that was removed. If code size is more important than performance, the '--size-opt' option can be used to prevent the linker from widening density instructions or inserting no-ops, except in a few cases where no-ops are required for correctness. d6633 1 a6633 1 '--size-opt' d6652 3 a6654 3 object file formats available. You can use 'objdump -i' (*note objdump: (binutils.info)objdump.) to list all the formats available for your configuration. d6657 6 a6662 6 conflicting requirements. The major factor influencing BFD design was efficiency: any time used converting between formats is time which would not have been spent had BFD not been involved. This is partly offset by abstraction payback; since BFD simplifies applications and back ends, more time and care may be spent optimizing algorithms for a greater speed. d6667 1 a6667 1 conversion and during output. *Note BFD information loss::. d6684 12 a6695 12 As different information from the object files is required, BFD reads from different sections of the file and processes them. For example, a very common operation for the linker is processing symbol tables. Each BFD back end provides a routine for converting between the object file's representation of symbols and an internal canonical format. When the linker asks for the symbol table of an object file, it calls through a memory pointer to the routine from the relevant BFD back end which reads and converts the table into a canonical form. The linker then operates upon the canonical form. When the link is finished and the linker writes the output file's symbol table, another BFD back end routine is called to take the newly created symbol table and convert it into the chosen output format. d6708 9 a6716 9 _Information can be lost during output._ The output formats supported by BFD do not provide identical facilities, and information which can be described in one form has nowhere to go in another format. One example of this is alignment information in 'b.out'. There is nowhere in an 'a.out' format file to store alignment information on the contained data, so when a file is linked from 'b.out' and an 'a.out' image is produced, alignment information will not propagate to the output file. (The linker will still use the alignment information internally, so the link is performed correctly). d6718 2 a6719 2 Another example is COFF section names. COFF files may contain an unlimited number of sections, each one with a textual section name. If d6721 2 a6722 2 (e.g., 'a.out') or has sections without names (e.g., the Oasys format), the link cannot be done simply. You can circumvent this problem by d6726 1 a6726 1 _Information can be lost during canonicalization._ The BFD internal d6737 3 a6739 3 to the back ends. When a file is read in one format, the canonical form is generated for BFD and the application. At the same time, the back end saves away any information which may otherwise be lost. If the data d6743 4 a6746 4 commonality between back ends, there is no information lost when linking or copying big endian COFF to little endian COFF, or 'a.out' to 'b.out'. When a mixture of formats is linked, the information is only lost from the files whose format differs from the destination. d6757 1 a6757 1 format. A brief description of the canonical form may help you d6759 1 a6759 1 conversions. d6766 1 a6766 1 so a 'ZMAGIC' file would have both the demand pageable bit and the d6785 8 a6792 8 the symbol points to the original file, the private data format for that symbol is accessible. 'ld' can operate on a collection of symbols of wildly different formats without problems. Normal global and simple local symbols are maintained on output, so an output file (no matter its format) will retain symbols pointing to functions and to global, static, and common variables. Some symbol information is not worth retaining; in 'a.out', type d6800 2 a6801 2 within one word (nearly everything but aggregates), the information will be preserved. d6807 2 a6808 2 descriptor. Relocation is performed by passing messages through the relocation type descriptor and the symbol pointer. Therefore, d6810 1 a6810 1 method that is only available in one of the input formats. For d6822 7 a6828 7 number records points to the first record of the list. The head of a line number list consists of a pointer to the symbol, which allows finding out the address of the function whose line number is being described. The rest of the list is made up of pairs: offsets into the section and line numbers. Any format which can simply derive this information can pass it successfully between formats (COFF, IEEE and Oasys). d6836 1 a6836 1 Your bug reports play an essential role in making 'ld' reliable. d6840 2 a6841 2 is to help the entire community by making the next version of 'ld' work better. Bug reports are your contribution to the maintenance of 'ld'. d6861 1 a6861 1 a 'ld' bug. Reliable linkers never crash. d6863 1 a6863 1 * If 'ld' produces an error message for valid input, that is a bug. d6865 1 a6865 1 * If 'ld' does not produce an error message for invalid input, that d6870 1 a6870 1 improvement of 'ld' are welcome in any case. d6879 1 a6879 1 If you obtained 'ld' from a support organization, we recommend you d6883 1 a6883 1 individuals in the file 'etc/SERVICE' in the GNU Emacs distribution. d6885 2 a6886 2 Otherwise, send bug reports for 'ld' to . d6888 3 a6890 3 The fundamental principle of reporting bugs usefully is this: *report all the facts*. If you are not sure whether to state a fact or leave it out, state it! d6895 7 a6901 6 Well, probably it does not, but one cannot be sure. Perhaps the bug is a stray memory reference which happens to fetch from the location where that name is stored in memory; perhaps, if the name were different, the contents of that location would fool the linker into doing the right thing despite the bug. Play it safe and give a specific, complete example. That is the easiest thing for you to do, and the most helpful. d6904 2 a6905 2 the bug if it is new to us. Therefore, always write your bug reports on the assumption that the bug has not been reported previously. d6914 2 a6915 2 * The version of 'ld'. 'ld' announces it if you start it with the '--version' argument. d6918 1 a6918 1 looking for the bug in the current version of 'ld'. d6920 2 a6921 2 * Any patches you may have applied to the 'ld' source, including any patches made to the 'BFD' library. d6926 2 a6927 2 * What compiler (and its version) was used to compile 'ld'--e.g. "'gcc-2.7'". d6940 5 a6944 5 10K. For bigger files you can either make them available by FTP or HTTP or else state that you are willing to send the object file(s) to whomever requests them. (Note - your email will be going to a mailing list, so we do not want to clog it up with large attachments). But small attachments are best. d6946 2 a6947 2 If the source files were assembled using 'gas' or compiled using 'gcc', then it may be OK to send the source files rather than the d6949 2 a6950 2 'gas' or 'gcc' was used to produce the object files. Also say how 'gas' or 'gcc' were configured. d6955 1 a6955 1 Of course, if the bug is that 'ld' gets a fatal signal, then we d6962 1 a6962 1 such as, your copy of 'ld' is out of sync, or you have encountered d6970 2 a6971 2 * If you wish to suggest changes to the 'ld' source, send us context diffs, as generated by 'diff' with the '-u', '-c', or '-p' option. d6973 1 a6973 1 discuss something in the 'ld' source, refer to it by context, not d6976 3 a6978 3 The line numbers in our development sources will not match those in your sources. Your line numbers would convey no useful information to us. d6993 2 a6994 2 Of course, if you can find a simpler example to report _instead_ of the original one, that is a convenience for us. Errors in the d7006 3 a7008 3 assumption that a patch is all we need. We might see problems with your patch and decide to fix the problem another way, or we might not understand it at all. d7010 1 a7010 1 Sometimes with a program as complicated as 'ld' it is very hard to d7013 2 a7014 2 not be able to construct one, so we will not be able to verify that the bug is fixed. d7031 7 a7037 6 To aid users making the transition to GNU 'ld' from the MRI linker, 'ld' can use MRI compatible linker scripts as an alternative to the more general-purpose linker scripting language described in *note Scripts::. MRI compatible linker scripts have a much simpler command set than the scripting language otherwise used with 'ld'. GNU 'ld' supports the most commonly used MRI linker commands; these commands are described here. d7039 1 a7039 1 In general, MRI scripts aren't of much use with the 'a.out' object d7044 1 a7044 1 '-c' command-line option. d7049 2 a7050 2 MRI-compatible script begins with an unrecognized keyword, 'ld' issues a warning message, but continues processing the script. d7052 1 a7052 1 Lines beginning with '*' are comments. d7055 1 a7055 1 lower case; for example, 'chip' is the same as 'CHIP'. The following d7058 6 a7063 6 'ABSOLUTE SECNAME' 'ABSOLUTE SECNAME, SECNAME, ... SECNAME' Normally, 'ld' includes in the output file all sections from all the input files. However, in an MRI-compatible script, you can use the 'ABSOLUTE' command to restrict the sections that will be present in your output program. If the 'ABSOLUTE' command is used d7065 1 a7065 1 'ABSOLUTE' commands will appear in the linker output. You can d7067 1 a7067 1 line, or using 'LOAD') to resolve addresses in the output file. d7069 3 a7071 3 'ALIAS OUT-SECNAME, IN-SECNAME' Use this command to place the data from input section IN-SECNAME in a section called OUT-SECNAME in the linker output file. d7075 1 a7075 1 'ALIGN SECNAME = EXPRESSION' d7079 1 a7079 1 'BASE EXPRESSION' d7083 2 a7084 2 'CHIP EXPRESSION' 'CHIP EXPRESSION, EXPRESSION' d7087 1 a7087 1 'END' d7091 2 a7092 2 'FORMAT OUTPUT-FORMAT' Similar to the 'OUTPUT_FORMAT' command in the more general linker d7095 1 a7095 1 1. S-records, if OUTPUT-FORMAT is 'S' d7097 1 a7097 1 2. IEEE, if OUTPUT-FORMAT is 'IEEE' d7099 2 a7100 2 3. COFF (the 'coff-m68k' variant in BFD), if OUTPUT-FORMAT is 'COFF' d7102 1 a7102 1 'LIST ANYTHING...' d7104 1 a7104 1 'ld' command-line option '-M'. d7106 1 a7106 1 The keyword 'LIST' may be followed by anything on the same line, d7109 2 a7110 2 'LOAD FILENAME' 'LOAD FILENAME, FILENAME, ... FILENAME' d7112 1 a7112 1 same effect as specifying FILENAME directly on the 'ld' command d7115 8 a7122 8 'NAME OUTPUT-NAME' OUTPUT-NAME is the name for the program produced by 'ld'; the MRI-compatible command 'NAME' is equivalent to the command-line option '-o' or the general script language command 'OUTPUT'. 'ORDER SECNAME, SECNAME, ... SECNAME' 'ORDER SECNAME SECNAME SECNAME' Normally, 'ld' orders the sections in its output file in the order d7125 1 a7125 1 'ORDER' command. The sections you list with 'ORDER' will appear d7128 3 a7130 3 'PUBLIC NAME=EXPRESSION' 'PUBLIC NAME,EXPRESSION' 'PUBLIC NAME EXPRESSION' d7134 7 a7140 7 'SECT SECNAME, EXPRESSION' 'SECT SECNAME=EXPRESSION' 'SECT SECNAME EXPRESSION' You can use any of these three forms of the 'SECT' command to specify the start address (EXPRESSION) for section SECNAME. If you have more than one 'SECT' statement for the same SECNAME, only the _first_ sets the start address. d7151 1 a7151 1 d7176 2 a7177 2 of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is d7183 2 a7184 2 that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice d7188 3 a7190 3 of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. d7208 6 a7213 6 titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. d7224 10 a7233 10 straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". d7237 8 a7244 8 SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. d7282 2 a7283 2 distribute a large enough number of copies you must also follow the conditions in section 3. d7297 6 a7302 5 front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. d7310 12 a7321 11 numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. d7324 3 a7326 3 the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. d7332 5 a7336 5 release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: d7339 5 a7343 5 distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. d7373 6 a7378 6 authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. d7383 5 a7387 5 previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. d7390 2 a7391 2 Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor d7394 4 a7397 3 L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. d7410 5 a7414 5 material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. d7423 9 a7431 9 and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. d7441 2 a7442 2 modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, d7469 2 a7470 2 rules of this License for verbatim copying of each of the documents in all other respects. d7474 3 a7476 3 a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. d7481 2 a7482 2 separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the d7527 2 a7528 2 provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the d7540 4 a7543 4 the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. d7545 1 a7545 1 10. FUTURE REVISIONS OF THIS LICENSE d7551 1 a7551 1 . d7558 5 a7562 5 published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that d7566 1 a7566 1 11. RELICENSING d7596 1 d7613 1 a7613 1 Texts, replace the "with...Texts." line with this: d7624 3 a7626 3 recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. d7638 12 a7649 12 * -(: Options. (line 876) * --accept-unknown-input-arch: Options. (line 894) * --add-needed: Options. (line 921) * --add-stdcall-alias: Options. (line 1877) * --allow-multiple-definition: Options. (line 1223) * --allow-shlib-undefined: Options. (line 1229) * --architecture=ARCH: Options. (line 122) * --as-needed: Options. (line 904) * --audit AUDITLIB: Options. (line 111) * --auxiliary=NAME: Options. (line 254) * --bank-window: Options. (line 2319) * --base-file: Options. (line 1882) d7652 26 a7677 30 * --build-id: Options. (line 1839) * --build-id=STYLE: Options. (line 1839) * --check-sections: Options. (line 1006) * --cmse-implib: ARM. (line 234) * --code-region: MSP430. (line 34) * --compress-debug-sections=none: Options. (line 1797) * --compress-debug-sections=zlib: Options. (line 1797) * --compress-debug-sections=zlib-gabi: Options. (line 1797) * --compress-debug-sections=zlib-gnu: Options. (line 1797) * --copy-dt-needed-entries: Options. (line 1018) * --cref: Options. (line 1038) * --data-region: MSP430. (line 39) * --default-imported-symver: Options. (line 1265) * --default-script=SCRIPT: Options. (line 577) * --default-symver: Options. (line 1261) * --defsym=SYMBOL=EXP: Options. (line 1075) * --demangle[=STYLE]: Options. (line 1087) * --depaudit AUDITLIB: Options. (line 176) * --disable-auto-image-base: Options. (line 2059) * --disable-auto-import: Options. (line 2193) * --disable-large-address-aware: Options. (line 2007) * --disable-long-section-names: Options. (line 1892) * --disable-new-dtags: Options. (line 1773) * --disable-runtime-pseudo-reloc: Options. (line 2206) * --disable-sec-transformation: MSP430. (line 45) * --disable-stdcall-fixup: Options. (line 1914) * --discard-all: Options. (line 662) * --discard-locals: Options. (line 666) * --dll: Options. (line 1887) * --dll-search-prefix: Options. (line 2065) d7679 10 a7688 11 * --dsbt-index: Options. (line 2297) * --dsbt-size: Options. (line 2292) * --dynamic-linker=FILE: Options. (line 1100) * --dynamic-list-cpp-new: Options. (line 998) * --dynamic-list-cpp-typeinfo: Options. (line 1002) * --dynamic-list-data: Options. (line 995) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 982) * --dynamicbase: Options. (line 2246) * --eh-frame-hdr: Options. (line 1762) * --embedded-relocs: Options. (line 1113) * --emit-relocs: Options. (line 508) d7690 18 a7707 18 * --emit-stub-syms: PowerPC ELF32. (line 47) * --emit-stub-syms <1>: PowerPC64 ELF64. (line 29) * --emit-stub-syms <2>: SPU ELF. (line 15) * --enable-auto-image-base: Options. (line 2050) * --enable-auto-import: Options. (line 2074) * --enable-extra-pe-debug: Options. (line 2211) * --enable-long-section-names: Options. (line 1892) * --enable-new-dtags: Options. (line 1773) * --enable-runtime-pseudo-reloc: Options. (line 2198) * --enable-stdcall-fixup: Options. (line 1914) * --entry=ENTRY: Options. (line 186) * --error-unresolved-symbols: Options. (line 1715) * --exclude-all-symbols: Options. (line 1967) * --exclude-libs: Options. (line 196) * --exclude-modules-for-implib: Options. (line 207) * --exclude-symbols: Options. (line 1961) * --export-all-symbols: Options. (line 1937) * --export-dynamic: Options. (line 220) d7709 13 a7721 14 * --fatal-warnings: Options. (line 1118) * --file-alignment: Options. (line 1971) * --filter=NAME: Options. (line 275) * --fix-arm1176: ARM. (line 111) * --fix-cortex-a53-835769: ARM. (line 211) * --fix-cortex-a8: ARM. (line 202) * --fix-stm32l4xx-629360: ARM. (line 120) * --fix-v4bx: ARM. (line 48) * --fix-v4bx-interworking: ARM. (line 61) * --force-dynamic: Options. (line 517) * --force-exe-suffix: Options. (line 1123) * --force-group-allocation: Options. (line 1067) * --forceinteg: Options. (line 2251) * --format=FORMAT: Options. (line 133) d7723 2 a7724 3 * --gc-keep-exported: Options. (line 1166) * --gc-sections: Options. (line 1133) * --got: Options. (line 2331) d7726 17 a7742 20 * --gpsize=VALUE: Options. (line 307) * --hash-size=NUMBER: Options. (line 1783) * --hash-style=STYLE: Options. (line 1791) * --heap: Options. (line 1977) * --help: Options. (line 1194) * --high-entropy-va: Options. (line 2242) * --ignore-branch-isa: Options. (line 2352) * --ignore-branch-isa <1>: MIPS. (line 13) * --image-base: Options. (line 1984) * --in-implib=FILE: ARM. (line 239) * --insert-timestamp: Options. (line 2274) * --insn32: Options. (line 2343) * --insn32 <1>: MIPS. (line 6) * --just-symbols=FILE: Options. (line 539) * --kill-at: Options. (line 1993) * --large-address-aware: Options. (line 1998) * --ld-generated-unwind-info: Options. (line 1768) * --leading-underscore: Options. (line 1931) * --library-path=DIR: Options. (line 365) * --library=NAMESPEC: Options. (line 332) d7744 9 a7752 9 * --long-plt: ARM. (line 222) * --major-image-version: Options. (line 2014) * --major-os-version: Options. (line 2019) * --major-subsystem-version: Options. (line 2023) * --merge-exidx-entries: ARM. (line 219) * --minor-image-version: Options. (line 2028) * --minor-os-version: Options. (line 2033) * --minor-subsystem-version: Options. (line 2037) * --mri-script=MRI-CMDFILE: Options. (line 157) d7754 11 a7764 11 * --nmagic: Options. (line 434) * --no-accept-unknown-input-arch: Options. (line 894) * --no-add-needed: Options. (line 921) * --no-allow-shlib-undefined: Options. (line 1229) * --no-apply-dynamic-relocs: ARM. (line 226) * --no-as-needed: Options. (line 904) * --no-bind: Options. (line 2265) * --no-check-sections: Options. (line 1006) * --no-copy-dt-needed-entries: Options. (line 1018) * --no-define-common: Options. (line 1051) * --no-demangle: Options. (line 1087) d7766 18 a7783 21 * --no-dynamic-linker: Options. (line 1107) * --no-eh-frame-hdr: Options. (line 1762) * --no-enum-size-warning: ARM. (line 158) * --no-export-dynamic: Options. (line 220) * --no-fatal-warnings: Options. (line 1118) * --no-fix-arm1176: ARM. (line 111) * --no-fix-cortex-a53-835769: ARM. (line 211) * --no-fix-cortex-a8: ARM. (line 202) * --no-gc-sections: Options. (line 1133) * --no-ignore-branch-isa: Options. (line 2353) * --no-ignore-branch-isa <1>: MIPS. (line 13) * --no-insn32: Options. (line 2344) * --no-insn32 <1>: MIPS. (line 6) * --no-isolation: Options. (line 2258) * --no-keep-memory: Options. (line 1206) * --no-leading-underscore: Options. (line 1931) * --no-merge-exidx-entries: Options. (line 2304) * --no-merge-exidx-entries <1>: ARM. (line 219) * --no-multi-toc: PowerPC64 ELF64. (line 96) * --no-omagic: Options. (line 449) * --no-opd-optimize: PowerPC64 ELF64. (line 70) d7785 4 a7788 5 * --no-plt-align: PowerPC64 ELF64. (line 118) * --no-plt-localentry: PowerPC64 ELF64. (line 154) * --no-plt-static-chain: PowerPC64 ELF64. (line 129) * --no-plt-thread-safe: PowerPC64 ELF64. (line 135) * --no-print-gc-sections: Options. (line 1157) d7790 3 a7792 4 * --no-seh: Options. (line 2261) * --no-speculate-indirect-jumps: PowerPC64 ELF64. (line 147) * --no-strip-discarded: Options. (line 559) * --no-tls-get-addr-optimize: PowerPC64 ELF64. (line 56) d7794 23 a7816 25 * --no-tls-optimize <1>: PowerPC64 ELF64. (line 51) * --no-toc-optimize: PowerPC64 ELF64. (line 82) * --no-toc-sort: PowerPC64 ELF64. (line 108) * --no-trampoline: Options. (line 2313) * --no-undefined: Options. (line 1213) * --no-undefined-version: Options. (line 1256) * --no-warn-mismatch: Options. (line 1269) * --no-warn-search-mismatch: Options. (line 1278) * --no-wchar-size-warning: ARM. (line 165) * --no-whole-archive: Options. (line 1282) * --noinhibit-exec: Options. (line 1286) * --non-overlapping-opd: PowerPC64 ELF64. (line 76) * --nxcompat: Options. (line 2254) * --oformat=OUTPUT-FORMAT: Options. (line 1297) * --omagic: Options. (line 440) * --orphan-handling=MODE: Options. (line 621) * --out-implib: Options. (line 1310) * --output-def: Options. (line 2042) * --output=OUTPUT: Options. (line 455) * --pic-executable: Options. (line 1319) * --pic-veneer: ARM. (line 171) * --plt-align: PowerPC64 ELF64. (line 118) * --plt-localentry: PowerPC64 ELF64. (line 154) * --plt-static-chain: PowerPC64 ELF64. (line 129) * --plt-thread-safe: PowerPC64 ELF64. (line 135) d7818 9 a7826 9 * --pop-state: Options. (line 504) * --print-gc-sections: Options. (line 1157) * --print-map: Options. (line 400) * --print-memory-usage: Options. (line 1182) * --print-output-format: Options. (line 1176) * --push-state: Options. (line 486) * --reduce-memory-overheads: Options. (line 1825) * --relax: Options. (line 1335) * --relax on i960: i960. (line 32) d7830 3 a7832 4 * --relocatable: Options. (line 521) * --require-defined=SYMBOL: Options. (line 603) * --retain-symbols-file=FILENAME: Options. (line 1361) * --s390-pgste: S/390 ELF. (line 6) d7834 1 a7834 1 * --script=SCRIPT: Options. (line 568) d7836 2 a7837 2 * --section-alignment: Options. (line 2216) * --section-start=SECTIONNAME=ORG: Options. (line 1529) d7839 6 a7844 8 * --sort-common: Options. (line 1461) * --sort-section=alignment: Options. (line 1476) * --sort-section=name: Options. (line 1472) * --spare-dynamic-tags: Options. (line 1480) * --speculate-indirect-jumps: PowerPC64 ELF64. (line 147) * --split-by-file: Options. (line 1485) * --split-by-reloc: Options. (line 1490) * --stack: Options. (line 2222) d7846 3 a7848 4 * --stats: Options. (line 1503) * --strip-all: Options. (line 550) * --strip-debug: Options. (line 554) * --strip-discarded: Options. (line 559) d7850 3 a7852 3 * --stub-group-size=N: ARM. (line 176) * --stub-group-size=N <1>: HPPA ELF32. (line 12) * --subsystem: Options. (line 2229) d7854 2 a7855 2 * --sysroot=DIRECTORY: Options. (line 1507) * --target-help: Options. (line 1198) a7858 1 * --task-link: Options. (line 1512) d7860 9 a7868 9 * --tls-get-addr-optimize: PowerPC64 ELF64. (line 56) * --trace: Options. (line 564) * --trace-symbol=SYMBOL: Options. (line 672) * --traditional-format: Options. (line 1517) * --tsaware: Options. (line 2271) * --undefined=SYMBOL: Options. (line 590) * --unique[=SECTION]: Options. (line 647) * --unresolved-symbols: Options. (line 1559) * --use-blx: ARM. (line 73) d7870 91 a7960 93 * --verbose[=NUMBER]: Options. (line 1588) * --version: Options. (line 656) * --version-script=VERSION-SCRIPTFILE: Options. (line 1596) * --vfp11-denorm-fix: ARM. (line 82) * --warn-alternate-em: Options. (line 1707) * --warn-common: Options. (line 1606) * --warn-constructors: Options. (line 1674) * --warn-multiple-gp: Options. (line 1679) * --warn-once: Options. (line 1693) * --warn-section-align: Options. (line 1697) * --warn-shared-textrel: Options. (line 1704) * --warn-unresolved-symbols: Options. (line 1710) * --wdmdriver: Options. (line 2268) * --whole-archive: Options. (line 1719) * --wrap=SYMBOL: Options. (line 1733) * -A ARCH: Options. (line 121) * -a KEYWORD: Options. (line 104) * -assert KEYWORD: Options. (line 928) * -b FORMAT: Options. (line 133) * -Bdynamic: Options. (line 931) * -Bgroup: Options. (line 941) * -Bshareable: Options. (line 1454) * -Bstatic: Options. (line 948) * -Bsymbolic: Options. (line 962) * -Bsymbolic-functions: Options. (line 973) * -c MRI-CMDFILE: Options. (line 157) * -call_shared: Options. (line 931) * -d: Options. (line 167) * -dc: Options. (line 167) * -dn: Options. (line 948) * -dp: Options. (line 167) * -dT SCRIPT: Options. (line 577) * -dy: Options. (line 931) * -E: Options. (line 220) * -e ENTRY: Options. (line 186) * -EB: Options. (line 247) * -EL: Options. (line 250) * -f NAME: Options. (line 254) * -F NAME: Options. (line 275) * -fini=NAME: Options. (line 298) * -g: Options. (line 304) * -G VALUE: Options. (line 307) * -h NAME: Options. (line 314) * -i: Options. (line 323) * -IFILE: Options. (line 1100) * -init=NAME: Options. (line 326) * -L DIR: Options. (line 365) * -l NAMESPEC: Options. (line 332) * -M: Options. (line 400) * -m EMULATION: Options. (line 390) * -Map=MAPFILE: Options. (line 1202) * -n: Options. (line 434) * -N: Options. (line 440) * -no-relax: Options. (line 1335) * -non_shared: Options. (line 948) * -nostdlib: Options. (line 1292) * -O LEVEL: Options. (line 461) * -o OUTPUT: Options. (line 455) * -P AUDITLIB: Options. (line 176) * -pie: Options. (line 1319) * -plugin NAME: Options. (line 471) * -q: Options. (line 508) * -qmagic: Options. (line 1329) * -Qy: Options. (line 1332) * -r: Options. (line 521) * -R FILE: Options. (line 539) * -rpath-link=DIR: Options. (line 1397) * -rpath=DIR: Options. (line 1375) * -s: Options. (line 550) * -S: Options. (line 554) * -shared: Options. (line 1454) * -soname=NAME: Options. (line 314) * -static: Options. (line 948) * -t: Options. (line 564) * -T SCRIPT: Options. (line 568) * -Tbss=ORG: Options. (line 1538) * -Tdata=ORG: Options. (line 1538) * -Tldata-segment=ORG: Options. (line 1554) * -Trodata-segment=ORG: Options. (line 1548) * -Ttext-segment=ORG: Options. (line 1544) * -Ttext=ORG: Options. (line 1538) * -u SYMBOL: Options. (line 590) * -Ur: Options. (line 611) * -v: Options. (line 656) * -V: Options. (line 656) * -x: Options. (line 662) * -X: Options. (line 666) * -Y PATH: Options. (line 681) * -y SYMBOL: Options. (line 672) * -z defs: Options. (line 1213) * -z KEYWORD: Options. (line 685) * -z muldefs: Options. (line 1223) * -z undefs: Options. (line 1213) d7964 1 a7964 1 * 32-bit PLT entries: ARM. (line 222) d7973 2 a7974 2 * AArch64 rela addend: ARM. (line 226) * ABSOLUTE (MRI): MRI. (line 32) d7981 2 a7982 2 * ALIAS (MRI): MRI. (line 43) * ALIGN (MRI): MRI. (line 49) d7989 2 a7990 2 * aligned common symbols: WIN32. (line 415) * ALIGNOF(SECTION): Builtin Functions. (line 63) d7993 4 a7996 4 (line 121) * architectures: Options. (line 121) * archive files, from cmd line: Options. (line 332) * archive search path in linker script: File Commands. (line 77) d8000 2 a8001 1 * ARM1176 erratum workaround: ARM. (line 111) a8006 1 * AS_NEEDED(FILES): File Commands. (line 57) d8009 1 a8009 1 * automatic data imports: WIN32. (line 185) d8011 1 a8011 1 * BASE (MRI): MRI. (line 53) d8015 3 a8017 3 * big-endian objects: Options. (line 247) * binary input format: Options. (line 133) * BLOCK(EXP): Builtin Functions. (line 76) d8025 1 a8025 1 * CHIP (MRI): MRI. (line 57) d8027 1 a8027 4 * combining symbols, warnings on: Options. (line 1606) * COMDAT: Options. (line 1067) * COMDAT <1>: Miscellaneous Commands. (line 56) d8030 1 a8030 2 * common allocation: Options. (line 167) * common allocation <1>: Options. (line 1051) a8032 2 * common allocation in linker script <1>: Miscellaneous Commands. (line 51) d8036 1 a8036 1 * compatibility, MRI: Options. (line 157) d8041 1 a8041 1 * constructors: Options. (line 611) d8046 2 a8047 2 * Cortex-A53 erratum 835769 workaround: ARM. (line 211) * Cortex-A8 erratum workaround: ARM. (line 202) d8051 2 a8052 2 * creating a DEF file: WIN32. (line 153) * cross reference table: Options. (line 1038) d8054 1 a8054 3 (line 88) * cross references <1>: Miscellaneous Commands. (line 104) d8059 5 a8063 5 (line 81) * DATA_SEGMENT_END(EXP): Builtin Functions. (line 105) * DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 111) * dbx: Options. (line 1522) * DEF files, creating: Options. (line 2042) d8066 3 a8068 3 * defined symbol: Options. (line 603) * DEFINED(SYMBOL): Builtin Functions. (line 124) * deleting local symbols: Options. (line 662) d8070 2 a8071 2 * demangling, from command line: Options. (line 1087) * direct linking to a dll: WIN32. (line 233) d8075 2 a8076 4 * DLLs, creating: Options. (line 1937) * DLLs, creating <1>: Options. (line 2042) * DLLs, creating <2>: Options. (line 2050) * DLLs, linking to: Options. (line 2065) d8080 2 a8081 2 * dynamic linker, from command line: Options. (line 1100) * dynamic symbol table: Options. (line 220) d8083 1 a8083 1 * emulation: Options. (line 390) d8085 2 a8086 2 * END (MRI): MRI. (line 61) * endianness: Options. (line 247) d8088 1 a8088 1 * entry point, from command line: Options. (line 186) a8092 2 * EXCLUDE_FILE: Input Section Basics. (line 17) d8110 2 a8111 2 * finalization function: Options. (line 298) * first input file: File Commands. (line 85) d8113 2 a8114 2 * FIX_V4BX: ARM. (line 48) * FIX_V4BX_INTERWORKING: ARM. (line 61) a8116 2 * FORCE_GROUP_ALLOCATION: Miscellaneous Commands. (line 56) d8121 2 a8122 2 * forcing the creation of dynamic sections: Options. (line 517) * FORMAT (MRI): MRI. (line 65) d8124 3 a8126 5 * garbage collection: Options. (line 1133) * garbage collection <1>: Options. (line 1157) * garbage collection <2>: Options. (line 1166) * garbage collection <3>: Input Section Keep. (line 6) * generating optimized output: Options. (line 461) d8129 3 a8131 6 * group allocation in linker script: Options. (line 1067) * group allocation in linker script <1>: Miscellaneous Commands. (line 56) * GROUP(FILES): File Commands. (line 50) * grouping input files: File Commands. (line 50) * groups of archives: Options. (line 876) d8134 2 a8135 2 * heap size: Options. (line 1977) * help: Options. (line 1194) d8143 1 a8143 1 * image base: Options. (line 1984) d8149 2 a8150 2 * including an entire archive: Options. (line 1719) * incremental link: Options. (line 323) d8153 1 a8153 1 * initialization function: Options. (line 326) d8159 2 a8160 4 * input files, displaying: Options. (line 564) * input format: Options. (line 133) * input format <1>: Options. (line 133) * Input import library: ARM. (line 239) d8171 1 a8171 1 (line 62) d8173 1 a8173 1 (line 62) d8180 1 a8180 1 * l =: MEMORY. (line 68) d8183 3 a8185 1 * ldata segment origin, cmd line: Options. (line 1555) d8187 6 a8192 8 * LD_FEATURE(STRING): Miscellaneous Commands. (line 127) * len =: MEMORY. (line 68) * LENGTH =: MEMORY. (line 68) * LENGTH(MEMORY): Builtin Functions. (line 141) * library search path in linker script: File Commands. (line 77) * link map: Options. (line 400) * link-time runtime library search path: Options. (line 1397) d8202 3 a8204 3 * LIST (MRI): MRI. (line 76) * little-endian objects: Options. (line 250) * LOAD (MRI): MRI. (line 83) d8206 1 a8206 1 * LOADADDR(SECTION): Builtin Functions. (line 144) d8208 2 a8209 2 (line 21) * local symbols, deleting: Options. (line 666) d8211 1 a8211 1 * LOG2CEIL(EXP): Builtin Functions. (line 148) d8215 1 a8215 1 * M68HC11 and 68HC12 support: M68HC11/68HC12. (line 5) d8217 1 a8217 1 (line 121) d8220 1 a8220 1 * MAX: Builtin Functions. (line 151) d8227 3 a8229 5 * memory usage: Options. (line 1182) * memory usage <1>: Options. (line 1206) * Merging exidx entries: ARM. (line 219) * MIN: Builtin Functions. (line 154) * MIPS branch relocation check control: MIPS. (line 13) d8234 1 a8234 2 * MSP430 Options: MSP430. (line 34) * NAME (MRI): MRI. (line 89) d8238 2 a8239 2 * naming the output file: Options. (line 455) * NEXT(EXP): Builtin Functions. (line 158) d8241 3 a8243 1 * NMAGIC: Options. (line 434) d8245 1 a8245 1 (line 88) d8247 1 a8247 1 (line 104) d8249 1 a8249 1 (line 21) d8251 1 a8251 3 * NO_ENUM_SIZE_WARNING: ARM. (line 158) * NO_WCHAR_SIZE_WARNING: ARM. (line 165) * o =: MEMORY. (line 63) d8256 2 a8257 3 * object size: Options. (line 307) * OMAGIC: Options. (line 440) * OMAGIC <1>: Options. (line 449) d8265 4 a8268 4 * ORDER (MRI): MRI. (line 94) * org =: MEMORY. (line 63) * ORIGIN =: MEMORY. (line 63) * ORIGIN(MEMORY): Builtin Functions. (line 164) d8270 2 a8271 2 * orphan sections: Options. (line 621) * output file after errors: Options. (line 1286) d8273 2 a8274 2 * output file name in linker script: File Commands. (line 67) * output format: Options. (line 1176) d8281 1 a8281 1 * OUTPUT(FILENAME): File Commands. (line 67) d8283 1 a8283 1 (line 121) d8289 1 a8289 1 * partial link: Options. (line 521) d8292 3 a8294 5 * PHDRS <1>: PHDRS. (line 62) * PIC_VENEER: ARM. (line 171) * Placement of SG veneers: ARM. (line 229) * pop state governing input file handling: Options. (line 504) * position independent executables: Options. (line 1321) d8301 1 d8304 6 a8309 10 * PowerPC64 ELFv2 PLT localentry optimization: PowerPC64 ELF64. (line 154) * PowerPC64 multi-TOC: PowerPC64 ELF64. (line 96) * PowerPC64 OPD optimization: PowerPC64 ELF64. (line 70) * PowerPC64 OPD spacing: PowerPC64 ELF64. (line 76) * PowerPC64 PLT call stub speculative execution barrier: PowerPC64 ELF64. (line 147) * PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 129) * PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 135) * PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 118) d8314 3 a8316 4 * PowerPC64 TLS optimization: PowerPC64 ELF64. (line 51) * PowerPC64 TOC optimization: PowerPC64 ELF64. (line 82) * PowerPC64 TOC sorting: PowerPC64 ELF64. (line 108) * PowerPC64 __tls_get_addr optimization: PowerPC64 ELF64. (line 56) d8319 1 a8319 1 (line 21) d8327 2 a8328 2 * PUBLIC (MRI): MRI. (line 102) * push state governing input file handling: Options. (line 486) d8332 2 a8333 2 * read-only text: Options. (line 434) * read/write from cmd line: Options. (line 440) d8336 1 a8337 1 * REGION_ALIAS(ALIAS, REGION): REGION_ALIAS. (line 6) d8339 1 a8339 1 * relaxing addressing modes: Options. (line 1335) d8341 1 a8341 1 * relaxing on i960: i960. (line 32) d8346 1 a8346 1 * relocatable output: Options. (line 521) d8351 3 a8353 3 * retain relocations in final executable: Options. (line 508) * retaining specified symbols: Options. (line 1361) * rodata segment origin, cmd line: Options. (line 1549) d8357 3 a8359 5 * runtime library name: Options. (line 314) * runtime library search path: Options. (line 1375) * runtime pseudo-relocation: WIN32. (line 211) * S/390: S/390 ELF. (line 6) * S/390 ELF options: S/390 ELF. (line 6) d8363 1 a8363 2 * script files: Options. (line 568) * script files <1>: Options. (line 577) d8365 4 a8368 4 * search directory, from cmd line: Options. (line 365) * search path in linker script: File Commands. (line 77) * SEARCH_DIR(PATH): File Commands. (line 77) * SECT (MRI): MRI. (line 108) d8372 2 a8373 2 * section alignment: Builtin Functions. (line 63) * section alignment, warnings on: Options. (line 1697) a8377 3 * section groups: Options. (line 1067) * section groups <1>: Miscellaneous Commands. (line 56) d8379 1 a8379 1 * section load address in expression: Builtin Functions. (line 144) d8392 3 a8394 3 * sections, orphan: Options. (line 621) * Secure gateway import library: ARM. (line 234) * segment origins, cmd line: Options. (line 1538) d8396 1 a8396 2 * SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 167) * shared libraries: Options. (line 1456) d8404 1 a8404 1 (line 62) d8406 1 a8406 1 (line 51) d8408 1 a8408 1 (line 57) d8410 1 a8410 1 (line 43) d8412 1 a8412 1 (line 98) a8413 1 * SPU <1>: SPU ELF. (line 46) d8422 1 a8422 1 * stack size: Options. (line 2222) d8425 6 a8430 6 * STARTUP(FILENAME): File Commands. (line 85) * STM32L4xx erratum workaround: ARM. (line 120) * strip all symbols: Options. (line 550) * strip debugger symbols: Options. (line 554) * stripping all but some symbols: Options. (line 1361) * STUB_GROUP_SIZE: ARM. (line 176) d8434 1 a8434 1 * symbol defaults: Builtin Functions. (line 124) d8437 1 a8437 1 * symbol tracing: Options. (line 672) d8439 1 a8439 1 * symbol-only input: Options. (line 539) d8441 1 a8441 1 * symbols, from command line: Options. (line 1075) d8443 3 a8445 3 * symbols, require defined: Options. (line 603) * symbols, retaining selectively: Options. (line 1361) * synthesizing linker: Options. (line 1335) d8450 1 a8450 1 * text segment origin, cmd line: Options. (line 1545) d8453 5 a8457 5 * traditional format: Options. (line 1517) * trampoline generation on M68HC11: M68HC11/68HC12. (line 30) * trampoline generation on M68HC12: M68HC11/68HC12. (line 30) * unallocated address, next: Builtin Functions. (line 158) * undefined symbol: Options. (line 590) d8460 1 a8460 1 * undefined symbols, warnings on: Options. (line 1693) d8465 3 a8467 3 * usage: Options. (line 1194) * USE_BLX: ARM. (line 73) * using a DEF file: WIN32. (line 52) d8469 1 a8469 1 * Using decorations: WIN32. (line 157) d8471 2 a8472 2 * verbose[=NUMBER]: Options. (line 1588) * version: Options. (line 656) d8474 1 a8474 1 * version script, symbol versions: Options. (line 1596) d8477 5 a8481 5 * VFP11_DENORM_FIX: ARM. (line 82) * warnings, on combining symbols: Options. (line 1606) * warnings, on section alignment: Options. (line 1697) * warnings, on undefined symbols: Options. (line 1693) * weak externals: WIN32. (line 400) d8485 1 a8485 1 * Xtensa options: Xtensa. (line 55) d8491 86 a8576 87 Node: Top706 Node: Overview1487 Node: Invocation2603 Node: Options3011 Node: Environment111472 Node: Scripts113233 Node: Basic Script Concepts114967 Node: Script Format117675 Node: Simple Example118538 Node: Simple Commands121632 Node: Entry Point122137 Node: File Commands123065 Node: Format Commands127239 Node: REGION_ALIAS129195 Node: Miscellaneous Commands134022 Node: Assignments139853 Node: Simple Assignments140364 Node: HIDDEN142095 Node: PROVIDE142722 Node: PROVIDE_HIDDEN143915 Node: Source Code Reference144159 Node: SECTIONS148076 Node: Output Section Description149964 Node: Output Section Name151205 Node: Output Section Address152082 Node: Input Section154315 Node: Input Section Basics155116 Node: Input Section Wildcards160134 Node: Input Section Common165335 Node: Input Section Keep166817 Node: Input Section Example167307 Node: Output Section Data168718 Node: Output Section Keywords171497 Node: Output Section Discarding175064 Node: Output Section Attributes176554 Node: Output Section Type177654 Node: Output Section LMA178724 Node: Forced Output Alignment181795 Node: Forced Input Alignment182224 Node: Output Section Constraint182612 Node: Output Section Region183040 Node: Output Section Phdr183473 Node: Output Section Fill184137 Node: Overlay Description185279 Node: MEMORY189724 Node: PHDRS194095 Node: VERSION199421 Node: Expressions207512 Node: Constants208441 Node: Symbolic Constants209315 Node: Symbols209866 Node: Orphan Sections210613 Node: Location Counter212198 Node: Operators216632 Node: Evaluation217554 Node: Expression Section218918 Node: Builtin Functions222888 Node: Implicit Linker Scripts231239 Node: Machine Dependent232014 Node: H8/300233164 Node: i960235227 Node: M68HC11/68HC12236923 Node: ARM238368 Node: HPPA ELF32250615 Node: M68K252238 Node: MIPS253147 Node: MMIX254263 Node: MSP430255428 Node: NDS32257341 Node: Nios II258307 Node: PowerPC ELF32259623 Node: PowerPC64 ELF64262454 Node: S/390 ELF271126 Node: SPU ELF271473 Node: TI COFF274101 Node: WIN32274627 Node: Xtensa294753 Node: BFD297719 Node: BFD outline299177 Node: BFD information loss300465 Node: Canonical format302991 Node: Reporting Bugs307353 Node: Bug Criteria308047 Node: Bug Reporting308746 Node: MRI315784 Node: GNU Free Documentation License320426 Node: LD Index345563 @ 1.1.1.7.2.1 log @Sync with HEAD @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 6.4 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.30.90. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.30.90. d205 12 a1201 4 '--disable-multiple-abs-defs' Do not allow multiple definitions with symbols included in filename invoked by -R or -just-symbols d1423 4 a1426 4 *Note 'ld' and Xtensa Processors: Xtensa. *Note 'ld' and the 68HC11 and 68HC12: M68HC11/68HC12. *Note 'ld' and the Altera Nios II: Nios II. *Note 'ld' and PowerPC 32-bit ELF Support: PowerPC ELF32. d2160 5 a2164 11 imports from DLLs, thus making it possible to bypass the dllimport mechanism on the user side and to reference unmangled symbol names. [This option is specific to the i386 PE targeted port of the linker] The following remarks pertain to the original implementation of the feature and are obsolete nowadays for Cygwin and MinGW targets. Note: Use of the 'auto-import' extension will cause the text section of the image file to be made writable. This does not conform to the PE-COFF format specification published by Microsoft. d2274 2 a2275 1 functions). a3242 6 Note - the 'PROVIDE' directive considers a common symbol to be defined, even though such a symbol could be combined with the symbol that the 'PROVIDE' would create. This is particularly important when considering constructor and destructor list symbols such as '__CTOR_LIST__' as these are often defined as common symbols. d4623 1 a4623 1 }; d5395 1 d5414 1 a5414 1 File: ld.info, Node: H8/300, Next: M68HC11/68HC12, Up: Machine Dependent d5459 40 a5498 1 File: ld.info, Node: M68HC11/68HC12, Next: ARM, Prev: H8/300, Up: Machine Dependent d5500 1 a5500 1 4.2 'ld' and the Motorola 68HC11 and 68HC12 families d5503 1 a5503 1 4.2.1 Linker Relaxation d5524 1 a5524 1 4.2.2 Trampoline Generation d5537 1 a5537 1 4.3 'ld' and the ARM family d5786 1 a5786 1 4.4 'ld' and HPPA 32-bit ELF Support d5817 1 a5817 1 4.5 'ld' and the Motorola 68K family d5835 1 a5835 1 4.6 'ld' and the MIPS family d5858 1 a5858 1 4.7 'ld' and MMIX d5886 1 a5886 1 4.8 'ld' and MSP430 d5938 2 a5939 2 4.9 'ld' and NDS32 ================== d5977 1 a5977 1 4.10 'ld' and the Altera Nios II d6005 1 a6005 1 4.11 'ld' and PowerPC 32-bit ELF Support d6061 1 a6061 1 4.12 'ld' and PowerPC64 64-bit ELF Support d6205 7 d6231 1 a6231 1 4.13 'ld' and S/390 ELF Support d6242 1 a6242 1 4.14 'ld' and SPU ELF Support d6298 1 a6298 1 4.15 'ld''s Support for Various TI COFF Versions d6310 1 a6310 1 4.16 'ld' and WIN32 (cygwin/mingw) a6565 1 libxxx.lib d6736 1 a6736 1 4.17 'ld' and Xtensa Processors d6954 3 a6956 3 example, COFF, Oasys) and the type is simple enough to fit within one word (nearly everything but aggregates), the information will be preserved. d6982 2 a6983 1 derive this information can pass it successfully between formats. d7246 8 a7253 1 language, but restricted to S-records, if OUTPUT-FORMAT is 'S' d7787 8 a7794 7 * -(: Options. (line 864) * --accept-unknown-input-arch: Options. (line 882) * --add-needed: Options. (line 909) * --add-stdcall-alias: Options. (line 1869) * --allow-multiple-definition: Options. (line 1215) * --allow-shlib-undefined: Options. (line 1221) * --as-needed: Options. (line 892) d7796 3 a7798 3 * --auxiliary=NAME: Options. (line 242) * --bank-window: Options. (line 2316) * --base-file: Options. (line 1874) d7801 3 a7803 3 * --build-id: Options. (line 1831) * --build-id=STYLE: Options. (line 1831) * --check-sections: Options. (line 994) d7806 6 a7811 6 * --compress-debug-sections=none: Options. (line 1789) * --compress-debug-sections=zlib: Options. (line 1789) * --compress-debug-sections=zlib-gabi: Options. (line 1789) * --compress-debug-sections=zlib-gnu: Options. (line 1789) * --copy-dt-needed-entries: Options. (line 1006) * --cref: Options. (line 1026) d7813 12 a7824 13 * --default-imported-symver: Options. (line 1257) * --default-script=SCRIPT: Options. (line 565) * --default-symver: Options. (line 1253) * --defsym=SYMBOL=EXP: Options. (line 1063) * --demangle[=STYLE]: Options. (line 1075) * --depaudit AUDITLIB: Options. (line 164) * --disable-auto-image-base: Options. (line 2051) * --disable-auto-import: Options. (line 2190) * --disable-large-address-aware: Options. (line 1999) * --disable-long-section-names: Options. (line 1884) * --disable-multiple-abs-defs: Options. (line 1106) * --disable-new-dtags: Options. (line 1765) * --disable-runtime-pseudo-reloc: Options. (line 2203) d7826 5 a7830 5 * --disable-stdcall-fixup: Options. (line 1906) * --discard-all: Options. (line 650) * --discard-locals: Options. (line 654) * --dll: Options. (line 1879) * --dll-search-prefix: Options. (line 2057) d7832 11 a7842 11 * --dsbt-index: Options. (line 2294) * --dsbt-size: Options. (line 2289) * --dynamic-linker=FILE: Options. (line 1088) * --dynamic-list-cpp-new: Options. (line 986) * --dynamic-list-cpp-typeinfo: Options. (line 990) * --dynamic-list-data: Options. (line 983) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 970) * --dynamicbase: Options. (line 2243) * --eh-frame-hdr: Options. (line 1754) * --embedded-relocs: Options. (line 1101) * --emit-relocs: Options. (line 496) d7847 15 a7861 15 * --enable-auto-image-base: Options. (line 2042) * --enable-auto-import: Options. (line 2066) * --enable-extra-pe-debug: Options. (line 2208) * --enable-long-section-names: Options. (line 1884) * --enable-new-dtags: Options. (line 1765) * --enable-runtime-pseudo-reloc: Options. (line 2195) * --enable-stdcall-fixup: Options. (line 1906) * --entry=ENTRY: Options. (line 174) * --error-unresolved-symbols: Options. (line 1707) * --exclude-all-symbols: Options. (line 1959) * --exclude-libs: Options. (line 184) * --exclude-modules-for-implib: Options. (line 195) * --exclude-symbols: Options. (line 1953) * --export-all-symbols: Options. (line 1929) * --export-dynamic: Options. (line 208) d7863 3 a7865 3 * --fatal-warnings: Options. (line 1110) * --file-alignment: Options. (line 1963) * --filter=NAME: Options. (line 263) d7872 5 a7876 5 * --force-dynamic: Options. (line 505) * --force-exe-suffix: Options. (line 1115) * --force-group-allocation: Options. (line 1055) * --forceinteg: Options. (line 2248) * --format=FORMAT: Options. (line 121) d7878 3 a7880 3 * --gc-keep-exported: Options. (line 1158) * --gc-sections: Options. (line 1125) * --got: Options. (line 2328) d7882 7 a7888 7 * --gpsize=VALUE: Options. (line 295) * --hash-size=NUMBER: Options. (line 1775) * --hash-style=STYLE: Options. (line 1783) * --heap: Options. (line 1969) * --help: Options. (line 1186) * --high-entropy-va: Options. (line 2239) * --ignore-branch-isa: Options. (line 2349) d7890 1 a7890 1 * --image-base: Options. (line 1976) d7892 2 a7893 2 * --insert-timestamp: Options. (line 2271) * --insn32: Options. (line 2340) d7895 7 a7901 7 * --just-symbols=FILE: Options. (line 527) * --kill-at: Options. (line 1985) * --large-address-aware: Options. (line 1990) * --ld-generated-unwind-info: Options. (line 1760) * --leading-underscore: Options. (line 1923) * --library-path=DIR: Options. (line 353) * --library=NAMESPEC: Options. (line 320) d7904 3 a7906 3 * --major-image-version: Options. (line 2006) * --major-os-version: Options. (line 2011) * --major-subsystem-version: Options. (line 2015) d7908 4 a7911 4 * --minor-image-version: Options. (line 2020) * --minor-os-version: Options. (line 2025) * --minor-subsystem-version: Options. (line 2029) * --mri-script=MRI-CMDFILE: Options. (line 145) d7913 4 a7916 4 * --nmagic: Options. (line 422) * --no-accept-unknown-input-arch: Options. (line 882) * --no-add-needed: Options. (line 909) * --no-allow-shlib-undefined: Options. (line 1221) d7918 6 a7923 6 * --no-as-needed: Options. (line 892) * --no-bind: Options. (line 2262) * --no-check-sections: Options. (line 994) * --no-copy-dt-needed-entries: Options. (line 1006) * --no-define-common: Options. (line 1039) * --no-demangle: Options. (line 1075) d7925 2 a7926 2 * --no-dynamic-linker: Options. (line 1095) * --no-eh-frame-hdr: Options. (line 1754) d7928 2 a7929 2 * --no-export-dynamic: Options. (line 208) * --no-fatal-warnings: Options. (line 1110) d7933 2 a7934 2 * --no-gc-sections: Options. (line 1125) * --no-ignore-branch-isa: Options. (line 2350) d7936 1 a7936 1 * --no-insn32: Options. (line 2341) d7938 4 a7941 4 * --no-isolation: Options. (line 2255) * --no-keep-memory: Options. (line 1198) * --no-leading-underscore: Options. (line 1923) * --no-merge-exidx-entries: Options. (line 2301) d7944 1 a7944 1 * --no-omagic: Options. (line 437) d7948 1 a7948 1 * --no-plt-localentry: PowerPC64 ELF64. (line 147) d7951 1 a7951 1 * --no-print-gc-sections: Options. (line 1149) d7953 3 a7955 2 * --no-seh: Options. (line 2258) * --no-strip-discarded: Options. (line 547) d7961 5 a7965 5 * --no-trampoline: Options. (line 2310) * --no-undefined: Options. (line 1205) * --no-undefined-version: Options. (line 1248) * --no-warn-mismatch: Options. (line 1261) * --no-warn-search-mismatch: Options. (line 1270) d7967 2 a7968 2 * --no-whole-archive: Options. (line 1274) * --noinhibit-exec: Options. (line 1278) d7970 8 a7977 8 * --nxcompat: Options. (line 2251) * --oformat=OUTPUT-FORMAT: Options. (line 1289) * --omagic: Options. (line 428) * --orphan-handling=MODE: Options. (line 609) * --out-implib: Options. (line 1302) * --output-def: Options. (line 2034) * --output=OUTPUT: Options. (line 443) * --pic-executable: Options. (line 1311) d7980 1 a7980 1 * --plt-localentry: PowerPC64 ELF64. (line 147) d7984 9 a7992 8 * --pop-state: Options. (line 492) * --print-gc-sections: Options. (line 1149) * --print-map: Options. (line 388) * --print-memory-usage: Options. (line 1174) * --print-output-format: Options. (line 1168) * --push-state: Options. (line 474) * --reduce-memory-overheads: Options. (line 1817) * --relax: Options. (line 1327) d7996 3 a7998 3 * --relocatable: Options. (line 509) * --require-defined=SYMBOL: Options. (line 591) * --retain-symbols-file=FILENAME: Options. (line 1353) d8001 1 a8001 1 * --script=SCRIPT: Options. (line 556) d8003 2 a8004 2 * --section-alignment: Options. (line 2213) * --section-start=SECTIONNAME=ORG: Options. (line 1521) d8006 8 a8013 7 * --sort-common: Options. (line 1453) * --sort-section=alignment: Options. (line 1468) * --sort-section=name: Options. (line 1464) * --spare-dynamic-tags: Options. (line 1472) * --split-by-file: Options. (line 1477) * --split-by-reloc: Options. (line 1482) * --stack: Options. (line 2219) d8015 4 a8018 4 * --stats: Options. (line 1495) * --strip-all: Options. (line 538) * --strip-debug: Options. (line 542) * --strip-discarded: Options. (line 547) d8022 1 a8022 1 * --subsystem: Options. (line 2226) d8024 2 a8025 2 * --sysroot=DIRECTORY: Options. (line 1499) * --target-help: Options. (line 1190) d8029 1 a8029 1 * --task-link: Options. (line 1504) d8032 7 a8038 7 * --trace: Options. (line 552) * --trace-symbol=SYMBOL: Options. (line 660) * --traditional-format: Options. (line 1509) * --tsaware: Options. (line 2268) * --undefined=SYMBOL: Options. (line 578) * --unique[=SECTION]: Options. (line 635) * --unresolved-symbols: Options. (line 1551) d8041 3 a8043 3 * --verbose[=NUMBER]: Options. (line 1580) * --version: Options. (line 644) * --version-script=VERSION-SCRIPTFILE: Options. (line 1588) d8045 12 a8056 11 * --warn-alternate-em: Options. (line 1699) * --warn-common: Options. (line 1598) * --warn-constructors: Options. (line 1666) * --warn-multiple-gp: Options. (line 1671) * --warn-once: Options. (line 1685) * --warn-section-align: Options. (line 1689) * --warn-shared-textrel: Options. (line 1696) * --warn-unresolved-symbols: Options. (line 1702) * --wdmdriver: Options. (line 2265) * --whole-archive: Options. (line 1711) * --wrap=SYMBOL: Options. (line 1725) d8058 76 a8133 76 * -assert KEYWORD: Options. (line 916) * -b FORMAT: Options. (line 121) * -Bdynamic: Options. (line 919) * -Bgroup: Options. (line 929) * -Bshareable: Options. (line 1446) * -Bstatic: Options. (line 936) * -Bsymbolic: Options. (line 950) * -Bsymbolic-functions: Options. (line 961) * -c MRI-CMDFILE: Options. (line 145) * -call_shared: Options. (line 919) * -d: Options. (line 155) * -dc: Options. (line 155) * -dn: Options. (line 936) * -dp: Options. (line 155) * -dT SCRIPT: Options. (line 565) * -dy: Options. (line 919) * -E: Options. (line 208) * -e ENTRY: Options. (line 174) * -EB: Options. (line 235) * -EL: Options. (line 238) * -f NAME: Options. (line 242) * -F NAME: Options. (line 263) * -fini=NAME: Options. (line 286) * -g: Options. (line 292) * -G VALUE: Options. (line 295) * -h NAME: Options. (line 302) * -i: Options. (line 311) * -IFILE: Options. (line 1088) * -init=NAME: Options. (line 314) * -L DIR: Options. (line 353) * -l NAMESPEC: Options. (line 320) * -M: Options. (line 388) * -m EMULATION: Options. (line 378) * -Map=MAPFILE: Options. (line 1194) * -n: Options. (line 422) * -N: Options. (line 428) * -no-relax: Options. (line 1327) * -non_shared: Options. (line 936) * -nostdlib: Options. (line 1284) * -O LEVEL: Options. (line 449) * -o OUTPUT: Options. (line 443) * -P AUDITLIB: Options. (line 164) * -pie: Options. (line 1311) * -plugin NAME: Options. (line 459) * -q: Options. (line 496) * -qmagic: Options. (line 1321) * -Qy: Options. (line 1324) * -r: Options. (line 509) * -R FILE: Options. (line 527) * -rpath-link=DIR: Options. (line 1389) * -rpath=DIR: Options. (line 1367) * -s: Options. (line 538) * -S: Options. (line 542) * -shared: Options. (line 1446) * -soname=NAME: Options. (line 302) * -static: Options. (line 936) * -t: Options. (line 552) * -T SCRIPT: Options. (line 556) * -Tbss=ORG: Options. (line 1530) * -Tdata=ORG: Options. (line 1530) * -Tldata-segment=ORG: Options. (line 1546) * -Trodata-segment=ORG: Options. (line 1540) * -Ttext-segment=ORG: Options. (line 1536) * -Ttext=ORG: Options. (line 1530) * -u SYMBOL: Options. (line 578) * -Ur: Options. (line 599) * -v: Options. (line 644) * -V: Options. (line 644) * -x: Options. (line 650) * -X: Options. (line 654) * -Y PATH: Options. (line 669) * -y SYMBOL: Options. (line 660) * -z defs: Options. (line 1205) * -z KEYWORD: Options. (line 673) * -z muldefs: Options. (line 1215) * -z undefs: Options. (line 1205) d8162 1 a8162 1 * aligned common symbols: WIN32. (line 416) d8167 2 a8168 1 * archive files, from cmd line: Options. (line 320) d8188 2 a8189 2 * big-endian objects: Options. (line 235) * binary input format: Options. (line 121) d8200 2 a8201 2 * combining symbols, warnings on: Options. (line 1598) * COMDAT: Options. (line 1055) d8206 2 a8207 2 * common allocation: Options. (line 155) * common allocation <1>: Options. (line 1039) d8215 1 a8215 1 * compatibility, MRI: Options. (line 145) d8220 1 a8220 1 * constructors: Options. (line 599) d8231 1 a8231 1 * cross reference table: Options. (line 1026) d8243 2 a8244 2 * dbx: Options. (line 1514) * DEF files, creating: Options. (line 2034) d8247 1 a8247 1 * defined symbol: Options. (line 591) d8249 1 a8249 1 * deleting local symbols: Options. (line 650) d8251 1 a8251 1 * demangling, from command line: Options. (line 1075) d8256 4 a8259 4 * DLLs, creating: Options. (line 1929) * DLLs, creating <1>: Options. (line 2034) * DLLs, creating <2>: Options. (line 2042) * DLLs, linking to: Options. (line 2057) d8263 2 a8264 2 * dynamic linker, from command line: Options. (line 1088) * dynamic symbol table: Options. (line 208) d8266 1 a8266 1 * emulation: Options. (line 378) d8269 1 a8269 1 * endianness: Options. (line 235) d8271 1 a8271 1 * entry point, from command line: Options. (line 174) d8295 1 a8295 1 * finalization function: Options. (line 286) d8308 1 a8308 1 * forcing the creation of dynamic sections: Options. (line 505) d8311 3 a8313 3 * garbage collection: Options. (line 1125) * garbage collection <1>: Options. (line 1149) * garbage collection <2>: Options. (line 1158) d8315 1 a8315 1 * generating optimized output: Options. (line 449) d8318 1 a8318 1 * group allocation in linker script: Options. (line 1055) d8323 1 a8323 1 * groups of archives: Options. (line 864) d8326 2 a8327 2 * heap size: Options. (line 1969) * help: Options. (line 1186) d8334 2 a8335 1 * image base: Options. (line 1976) d8341 2 a8342 2 * including an entire archive: Options. (line 1711) * incremental link: Options. (line 311) d8345 1 a8345 1 * initialization function: Options. (line 314) d8351 3 a8353 3 * input files, displaying: Options. (line 552) * input format: Options. (line 121) * input format <1>: Options. (line 121) d8377 1 a8377 1 * ldata segment origin, cmd line: Options. (line 1547) d8385 2 a8386 2 * link map: Options. (line 388) * link-time runtime library search path: Options. (line 1389) d8396 3 a8398 3 * LIST (MRI): MRI. (line 69) * little-endian objects: Options. (line 238) * LOAD (MRI): MRI. (line 76) d8403 1 a8403 1 * local symbols, deleting: Options. (line 654) d8421 2 a8422 2 * memory usage: Options. (line 1174) * memory usage <1>: Options. (line 1198) d8431 1 a8431 1 * NAME (MRI): MRI. (line 82) d8435 1 a8435 1 * naming the output file: Options. (line 443) d8438 1 a8438 1 * NMAGIC: Options. (line 422) d8453 3 a8455 3 * object size: Options. (line 295) * OMAGIC: Options. (line 428) * OMAGIC <1>: Options. (line 437) d8463 1 a8463 1 * ORDER (MRI): MRI. (line 87) d8468 2 a8469 2 * orphan sections: Options. (line 609) * output file after errors: Options. (line 1278) d8472 1 a8472 1 * output format: Options. (line 1168) d8487 1 a8487 1 * partial link: Options. (line 509) d8493 2 a8494 2 * pop state governing input file handling: Options. (line 492) * position independent executables: Options. (line 1313) d8504 1 a8504 1 (line 147) d8508 2 d8531 2 a8532 2 * PUBLIC (MRI): MRI. (line 95) * push state governing input file handling: Options. (line 474) d8536 2 a8537 2 * read-only text: Options. (line 422) * read/write from cmd line: Options. (line 428) d8543 1 a8543 1 * relaxing addressing modes: Options. (line 1327) d8545 1 d8550 1 a8550 1 * relocatable output: Options. (line 509) d8555 3 a8557 3 * retain relocations in final executable: Options. (line 496) * retaining specified symbols: Options. (line 1353) * rodata segment origin, cmd line: Options. (line 1541) d8561 2 a8562 2 * runtime library name: Options. (line 302) * runtime library search path: Options. (line 1367) d8569 2 a8570 2 * script files: Options. (line 556) * script files <1>: Options. (line 565) d8572 1 a8572 1 * search directory, from cmd line: Options. (line 353) d8575 1 a8575 1 * SECT (MRI): MRI. (line 101) d8580 1 a8580 1 * section alignment, warnings on: Options. (line 1689) d8585 1 a8585 1 * section groups: Options. (line 1055) d8602 1 a8602 1 * sections, orphan: Options. (line 609) d8604 1 a8604 1 * segment origins, cmd line: Options. (line 1530) d8607 1 a8607 1 * shared libraries: Options. (line 1448) d8634 1 a8634 1 * stack size: Options. (line 2219) d8639 3 a8641 3 * strip all symbols: Options. (line 538) * strip debugger symbols: Options. (line 542) * stripping all but some symbols: Options. (line 1353) d8649 1 a8649 1 * symbol tracing: Options. (line 660) d8651 1 a8651 1 * symbol-only input: Options. (line 527) d8653 1 a8653 1 * symbols, from command line: Options. (line 1063) d8655 3 a8657 3 * symbols, require defined: Options. (line 591) * symbols, retaining selectively: Options. (line 1353) * synthesizing linker: Options. (line 1327) d8662 1 a8662 1 * text segment origin, cmd line: Options. (line 1537) d8665 1 a8665 1 * traditional format: Options. (line 1509) d8669 1 a8669 1 * undefined symbol: Options. (line 578) d8672 1 a8672 1 * undefined symbols, warnings on: Options. (line 1685) d8677 1 a8677 1 * usage: Options. (line 1186) d8683 2 a8684 2 * verbose[=NUMBER]: Options. (line 1580) * version: Options. (line 644) d8686 1 a8686 1 * version script, symbol versions: Options. (line 1588) d8690 4 a8693 4 * warnings, on combining symbols: Options. (line 1598) * warnings, on section alignment: Options. (line 1689) * warnings, on undefined symbols: Options. (line 1685) * weak externals: WIN32. (line 401) d8704 86 a8789 85 Node: Overview1490 Node: Invocation2606 Node: Options3014 Node: Environment111207 Node: Scripts112968 Node: Basic Script Concepts114702 Node: Script Format117410 Node: Simple Example118273 Node: Simple Commands121367 Node: Entry Point121872 Node: File Commands122800 Node: Format Commands126974 Node: REGION_ALIAS128930 Node: Miscellaneous Commands133757 Node: Assignments139588 Node: Simple Assignments140099 Node: HIDDEN141830 Node: PROVIDE142457 Node: PROVIDE_HIDDEN143978 Node: Source Code Reference144222 Node: SECTIONS148139 Node: Output Section Description150027 Node: Output Section Name151268 Node: Output Section Address152145 Node: Input Section154378 Node: Input Section Basics155179 Node: Input Section Wildcards160197 Node: Input Section Common165398 Node: Input Section Keep166880 Node: Input Section Example167370 Node: Output Section Data168781 Node: Output Section Keywords171560 Node: Output Section Discarding175127 Node: Output Section Attributes176617 Node: Output Section Type177717 Node: Output Section LMA178787 Node: Forced Output Alignment181858 Node: Forced Input Alignment182287 Node: Output Section Constraint182675 Node: Output Section Region183103 Node: Output Section Phdr183536 Node: Output Section Fill184200 Node: Overlay Description185342 Node: MEMORY189787 Node: PHDRS194158 Node: VERSION199484 Node: Expressions207575 Node: Constants208504 Node: Symbolic Constants209378 Node: Symbols209929 Node: Orphan Sections210676 Node: Location Counter212261 Node: Operators216695 Node: Evaluation217617 Node: Expression Section218981 Node: Builtin Functions222951 Node: Implicit Linker Scripts231302 Node: Machine Dependent232077 Node: H8/300233165 Node: M68HC11/68HC12235238 Node: ARM236685 Node: HPPA ELF32248932 Node: M68K250555 Node: MIPS251464 Node: MMIX252580 Node: MSP430253745 Node: NDS32255658 Node: Nios II256622 Node: PowerPC ELF32257938 Node: PowerPC64 ELF64260769 Node: S/390 ELF269170 Node: SPU ELF269517 Node: TI COFF272145 Node: WIN32272671 Node: Xtensa292818 Node: BFD295784 Node: BFD outline297242 Node: BFD information loss298530 Node: Canonical format301056 Node: Reporting Bugs305384 Node: Bug Criteria306078 Node: Bug Reporting306777 Node: MRI313815 Node: GNU Free Documentation License318286 Node: LD Index343423 @ 1.1.1.7.2.2 log @Merge changes from current as of 20200406 @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 6.5 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.34. d5 1 a5 1 Copyright (C) 1991-2020 Free Software Foundation, Inc. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.34. d81 1 a81 1 * Options:: Command-line Options d87 1 a87 1 2.1 Command-line Options d156 1 a156 1 driver (e.g. 'gcc') then all the linker command-line options should be d172 1 a172 1 Here is a table of the generic command-line switches accepted by the d341 1 a341 1 debugging or for machine-specific performance. a505 26 * How GNU properties are merged. When the linker merges input .note.gnu.property sections into one output .note.gnu.property section, some properties are removed or updated. These actions are reported in the link map. For example: Removed property 0xc0000002 to merge foo.o (0x1) and bar.o (not found) This indicates that property 0xc0000002 is removed from output when merging properties in 'foo.o', whose property 0xc0000002 value is 0x1, and 'bar.o', which doesn't have property 0xc0000002. Updated property 0xc0010001 (0x1) to merge foo.o (0x1) and bar.o (0x1) This indicates that property 0xc0010001 value is updated to 0x1 in output when merging properties in 'foo.o', whose 0xc0010001 property value is 0x1, and 'bar.o', whose 0xc0010001 property value is 0x1. '--print-map-discarded' '--no-print-map-discarded' Print (or do not print) the list of discarded and garbage collected sections in the link map. Enabled by default. d638 1 a638 5 Print the names of the input files as 'ld' processes them. If '-t' is given twice then members within archives are also printed. '-t' output is useful to generate a list of all the object files and scripts involved in linking, for example, when packaging files for a linker bug report. a775 17 'cet-report=none' 'cet-report=warning' 'cet-report=error' Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK properties in input .note.gnu.property section. 'cet-report=none', which is the default, will make the linker not report missing properties in input files. 'cet-report=warning' will make the linker issue a warning for missing properties in input files. 'cet-report=error' will make the linker issue an error for missing properties in input files. Note that 'ibt' will turn off the missing GNU_PROPERTY_X86_FEATURE_1_IBT property report and 'shstk' will turn off the missing GNU_PROPERTY_X86_FEATURE_1_SHSTK property report. Supported for Linux/i386 and Linux/x86_64. d820 3 a822 3 auditing library defined via the '--depaudit' or '-P' command-line options be run for all dynamic objects loaded by the application. d959 1 a959 1 reference. By grouping the archives, they will all be searched d1038 6 a1043 2 override the definition within the shared library. This option is only meaningful on ELF platforms which support shared libraries. d1048 5 a1052 2 option is only meaningful on ELF platforms which support shared libraries. d1085 1 a1085 1 behaviour can be restored by using the command-line switch d1187 1 a1187 1 the relocs are stored in a target-specific section. This option is d1226 1 a1226 2 relocations. See '--entry', '--undefined', and '--gc-keep-exported'. d1230 2 a1231 3 explicitly specified either by one of the options '--entry', '--undefined', or '--gc-keep-exported' or by a 'ENTRY' command in the linker script. d1275 1 a1275 1 Print a summary of all target-specific options on the standard d1420 1 a1420 1 On some platforms the '--relax' option performs target-specific, d1454 6 a1459 11 uses them to locate shared objects at runtime. The '-rpath' option is also used when locating shared objects which are needed by shared objects explicitly included in the link; see the description of the '-rpath-link' option. Searching '-rpath' in this way is only supported by native linkers and cross linkers which have been configured with the '--with-sysroot' option. If '-rpath' is not used when linking an ELF executable, the contents of the environment variable 'LD_RUN_PATH' will be used if it is defined. a1837 17 Only undefined references are replaced by the linker. So, translation unit internal references to SYMBOL are not resolved to '__wrap_SYMBOL'. In the next example, the call to 'f' in 'g' is not resolved to '__wrap_f'. int f (void) { return 123; } int g (void) { return f(); } d1871 1 a1871 3 new style GNU '.gnu.hash' hash tables. The default depends upon how the linker was configured, but for most Linux based systems it will be 'both'. d1949 1 a1949 1 support additional command-line options that are specific to the i386 PE d2325 1 a2325 2 (ASLR). This option also implies '--dynamicbase' and '--enable-reloc-section'. d2330 1 a2330 2 Vista for i386 PE targets. This option also implies '--enable-reloc-section'. a2365 5 '--enable-reloc-section' Create the base relocation table, which is necessary if the image is loaded at a different image base than specified in the PE header. d2388 1 a2388 20 2.1.3 Options specific to C-SKY targets --------------------------------------- '--branch-stub' This option enables linker branch relaxation by inserting branch stub sections when needed to extend the range of branches. This option is usually not required since C-SKY supports branch and call instructions that can access the full memory range and branch relaxation is normally handled by the compiler or assembler. '--stub-group-size=N' This option allows finer control of linker branch stub creation. It sets the maximum size of a group of input sections that can be handled by one stub section. A negative value of N locates stub sections after their branches, while a positive value allows stub sections to appear either before or after the branches. Values of '1' or '-1' indicate that the linker should choose suitable defaults. 2.1.4 Options specific to Motorola 68HC11 and 68HC12 targets d2406 1 a2406 1 2.1.5 Options specific to Motorola 68K target d2417 1 a2417 1 2.1.6 Options specific to MIPS targets a2444 5 '--compact-branches' '--compact-branches' These options control the generation of compact instructions by the linker in the PLT entries for MIPS R6. d2498 2 a2499 2 linker executable. You can use the '--verbose' command-line option to display the default linker script. Certain command-line options, such d2702 2 a2703 2 * the value of a target-specific symbol, if it is defined; For many targets this is 'start', but PE- and BeOS-based systems for example d2747 1 a2747 1 '$SYSROOT'. See also the description of '-L' in *note Command-line d2751 1 a2751 1 'libFILE.a', as with the command-line argument '-l'. d2762 1 a2762 1 in *note Command-line Options: Options. d2779 1 a2779 1 Options.). If both are used, the command-line option takes d2788 1 a2788 1 like using '-L PATH' on the command line (*note Command-line d2790 1 a2790 1 both paths. Paths specified using the command-line option are d2813 1 a2813 1 Command-line Options: Options.). If both are used, the command d2817 1 a2817 1 formats based on the '-EB' and '-EL' command-line options. This d2830 1 a2830 1 'elf32-bigmips', but if the user uses the '-EL' command-line d2838 1 a2838 1 Command-line Options: Options.). If the 'TARGET' command is used d3694 10 a3703 12 'SORT_BY_ALIGNMENT' is similar to 'SORT_BY_NAME'. 'SORT_BY_ALIGNMENT' will sort sections into descending order of alignment before placing them in the output file. Placing larger alignments before smaller alignments can reduce the amount of padding needed. 'SORT_BY_INIT_PRIORITY' is also similar to 'SORT_BY_NAME'. 'SORT_BY_INIT_PRIORITY' will sort sections into ascending numerical order of the GCC init_priority attribute encoded in the section name before placing them in the output file. In '.init_array.NNNNN' and '.fini_array.NNNNN', 'NNNNN' is the init_priority. In '.ctors.NNNNN' and '.dtors.NNNNN', 'NNNNN' is 65535 minus the init_priority. d3723 1 a3723 1 When both command-line section sorting option and linker script d3725 1 a3725 1 precedence over the command-line option. d3728 1 a3728 1 command-line option will make the section sorting command to be treated d3739 1 a3739 1 command-line option will be ignored. d3741 1 a3741 1 'SORT_NONE' disables section sorting by ignoring the command-line a4007 5 Note, sections that match the '/DISCARD/' output section will be discarded even if they are in an ELF section group which has other members which are not being discarded. This is deliberate. Discarding takes precedence over grouping. d4019 1 a4019 1 [ALIGN(SECTION_ALIGN) | ALIGN_WITH_INPUT] d4394 4 a4397 8 If an unmapped section matches any of the listed attributes other than '!', it will be placed in the memory region. The '!' attribute reverses the test for the characters that follow, so that an unmapped section will be placed in the memory region only if it does not match any of the attributes listed afterwards. Thus an attribute string of 'RW!X' will match any unmapped section that has either or both of the 'R' and 'W' attributes, but only as long as the section does not also have the 'X' attribute. d4813 1 a4813 1 It is possible to refer to target-specific constants via the use of the d4877 2 a4878 2 The command-line options '--orphan-handling' and '--unique' (*note Command-line Options: Options.) can be used to control which output d5508 1 a5508 1 option then the '--support-old-code' command-line switch should be given d5677 1 a5677 1 command-line option '--stub-group-size=N'. The placement is important d5727 3 a5729 3 '.gnu.sgstubs'. Its start address must be set, either with the command-line option '--section-start' or in a linker script, to indicate where to place these veneers in memory. d6270 2 a6271 2 *note Command-line Options: Options. for detailed description of the command-line options mentioned here. d6279 1 a6279 1 command-line option. d6286 2 a6287 2 functionality, which is controlled by the following command-line options: d6417 1 a6417 1 with the '--output-def ' command-line option. d6654 1 a6654 1 unless the '--export-all-symbols' command-line option is used. If, d6907 1 a6907 1 linker has command-line switches to allow users to throw it away. d7736 7 a7742 7 * -(: Options. (line 911) * --accept-unknown-input-arch: Options. (line 929) * --add-needed: Options. (line 956) * --add-stdcall-alias: Options. (line 1935) * --allow-multiple-definition: Options. (line 1257) * --allow-shlib-undefined: Options. (line 1263) * --as-needed: Options. (line 939) d7745 2 a7746 2 * --bank-window: Options. (line 2408) * --base-file: Options. (line 1940) a7747 1 * --branch-stub on C-SKY: Options. (line 2380) d7749 3 a7751 3 * --build-id: Options. (line 1897) * --build-id=STYLE: Options. (line 1897) * --check-sections: Options. (line 1034) d7754 6 a7759 7 * --compact-branches: Options. (line 2453) * --compress-debug-sections=none: Options. (line 1855) * --compress-debug-sections=zlib: Options. (line 1855) * --compress-debug-sections=zlib-gabi: Options. (line 1855) * --compress-debug-sections=zlib-gnu: Options. (line 1855) * --copy-dt-needed-entries: Options. (line 1046) * --cref: Options. (line 1066) d7761 5 a7765 5 * --default-imported-symver: Options. (line 1299) * --default-script=SCRIPT: Options. (line 595) * --default-symver: Options. (line 1295) * --defsym=SYMBOL=EXP: Options. (line 1103) * --demangle[=STYLE]: Options. (line 1115) d7767 7 a7773 7 * --disable-auto-image-base: Options. (line 2117) * --disable-auto-import: Options. (line 2256) * --disable-large-address-aware: Options. (line 2065) * --disable-long-section-names: Options. (line 1950) * --disable-multiple-abs-defs: Options. (line 1146) * --disable-new-dtags: Options. (line 1829) * --disable-runtime-pseudo-reloc: Options. (line 2269) d7775 5 a7779 5 * --disable-stdcall-fixup: Options. (line 1972) * --discard-all: Options. (line 680) * --discard-locals: Options. (line 684) * --dll: Options. (line 1945) * --dll-search-prefix: Options. (line 2123) d7781 11 a7791 11 * --dsbt-index: Options. (line 2367) * --dsbt-size: Options. (line 2362) * --dynamic-linker=FILE: Options. (line 1128) * --dynamic-list-cpp-new: Options. (line 1026) * --dynamic-list-cpp-typeinfo: Options. (line 1030) * --dynamic-list-data: Options. (line 1023) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 1010) * --dynamicbase: Options. (line 2310) * --eh-frame-hdr: Options. (line 1818) * --embedded-relocs: Options. (line 1141) * --emit-relocs: Options. (line 522) d7796 7 a7802 8 * --enable-auto-image-base: Options. (line 2108) * --enable-auto-import: Options. (line 2132) * --enable-extra-pe-debug: Options. (line 2274) * --enable-long-section-names: Options. (line 1950) * --enable-new-dtags: Options. (line 1829) * --enable-reloc-section: Options. (line 2350) * --enable-runtime-pseudo-reloc: Options. (line 2261) * --enable-stdcall-fixup: Options. (line 1972) d7804 2 a7805 2 * --error-unresolved-symbols: Options. (line 1754) * --exclude-all-symbols: Options. (line 2025) d7808 2 a7809 2 * --exclude-symbols: Options. (line 2019) * --export-all-symbols: Options. (line 1995) d7812 2 a7813 2 * --fatal-warnings: Options. (line 1150) * --file-alignment: Options. (line 2029) d7821 4 a7824 4 * --force-dynamic: Options. (line 531) * --force-exe-suffix: Options. (line 1155) * --force-group-allocation: Options. (line 1095) * --forceinteg: Options. (line 2316) d7827 3 a7829 3 * --gc-keep-exported: Options. (line 1200) * --gc-sections: Options. (line 1165) * --got: Options. (line 2420) d7832 6 a7837 6 * --hash-size=NUMBER: Options. (line 1839) * --hash-style=STYLE: Options. (line 1847) * --heap: Options. (line 2035) * --help: Options. (line 1228) * --high-entropy-va: Options. (line 2305) * --ignore-branch-isa: Options. (line 2441) d7839 1 a7839 1 * --image-base: Options. (line 2042) d7841 2 a7842 2 * --insert-timestamp: Options. (line 2339) * --insn32: Options. (line 2432) d7844 5 a7848 5 * --just-symbols=FILE: Options. (line 553) * --kill-at: Options. (line 2051) * --large-address-aware: Options. (line 2056) * --ld-generated-unwind-info: Options. (line 1824) * --leading-underscore: Options. (line 1989) d7853 3 a7855 3 * --major-image-version: Options. (line 2072) * --major-os-version: Options. (line 2077) * --major-subsystem-version: Options. (line 2081) d7857 3 a7859 3 * --minor-image-version: Options. (line 2086) * --minor-os-version: Options. (line 2091) * --minor-subsystem-version: Options. (line 2095) d7862 4 a7865 4 * --nmagic: Options. (line 448) * --no-accept-unknown-input-arch: Options. (line 929) * --no-add-needed: Options. (line 956) * --no-allow-shlib-undefined: Options. (line 1263) d7867 6 a7872 7 * --no-as-needed: Options. (line 939) * --no-bind: Options. (line 2330) * --no-check-sections: Options. (line 1034) * --no-compact-branches: Options. (line 2454) * --no-copy-dt-needed-entries: Options. (line 1046) * --no-define-common: Options. (line 1079) * --no-demangle: Options. (line 1115) d7874 2 a7875 2 * --no-dynamic-linker: Options. (line 1135) * --no-eh-frame-hdr: Options. (line 1818) d7878 1 a7878 1 * --no-fatal-warnings: Options. (line 1150) d7882 2 a7883 2 * --no-gc-sections: Options. (line 1165) * --no-ignore-branch-isa: Options. (line 2442) d7885 1 a7885 1 * --no-insn32: Options. (line 2433) d7887 4 a7890 4 * --no-isolation: Options. (line 2323) * --no-keep-memory: Options. (line 1240) * --no-leading-underscore: Options. (line 1989) * --no-merge-exidx-entries: Options. (line 2374) d7893 1 a7893 1 * --no-omagic: Options. (line 463) d7900 1 a7900 2 * --no-print-gc-sections: Options. (line 1191) * --no-print-map-discarded: Options. (line 443) d7902 2 a7903 2 * --no-seh: Options. (line 2326) * --no-strip-discarded: Options. (line 573) d7909 5 a7913 5 * --no-trampoline: Options. (line 2402) * --no-undefined: Options. (line 1247) * --no-undefined-version: Options. (line 1290) * --no-warn-mismatch: Options. (line 1303) * --no-warn-search-mismatch: Options. (line 1312) d7915 2 a7916 2 * --no-whole-archive: Options. (line 1316) * --noinhibit-exec: Options. (line 1320) d7918 8 a7925 8 * --nxcompat: Options. (line 2319) * --oformat=OUTPUT-FORMAT: Options. (line 1331) * --omagic: Options. (line 454) * --orphan-handling=MODE: Options. (line 639) * --out-implib: Options. (line 1344) * --output-def: Options. (line 2100) * --output=OUTPUT: Options. (line 469) * --pic-executable: Options. (line 1353) d7932 2 a7933 2 * --pop-state: Options. (line 518) * --print-gc-sections: Options. (line 1191) d7935 5 a7939 6 * --print-map-discarded: Options. (line 443) * --print-memory-usage: Options. (line 1216) * --print-output-format: Options. (line 1210) * --push-state: Options. (line 500) * --reduce-memory-overheads: Options. (line 1883) * --relax: Options. (line 1369) d7943 3 a7945 3 * --relocatable: Options. (line 535) * --require-defined=SYMBOL: Options. (line 621) * --retain-symbols-file=FILENAME: Options. (line 1395) d7948 1 a7948 1 * --script=SCRIPT: Options. (line 586) d7950 2 a7951 2 * --section-alignment: Options. (line 2279) * --section-start=SECTIONNAME=ORG: Options. (line 1568) d7953 7 a7959 7 * --sort-common: Options. (line 1500) * --sort-section=alignment: Options. (line 1515) * --sort-section=name: Options. (line 1511) * --spare-dynamic-tags: Options. (line 1519) * --split-by-file: Options. (line 1524) * --split-by-reloc: Options. (line 1529) * --stack: Options. (line 2285) d7961 4 a7964 4 * --stats: Options. (line 1542) * --strip-all: Options. (line 564) * --strip-debug: Options. (line 568) * --strip-discarded: Options. (line 573) a7965 1 * --stub-group-size on C-SKY: Options. (line 2387) d7968 1 a7968 1 * --subsystem: Options. (line 2292) d7970 2 a7971 2 * --sysroot=DIRECTORY: Options. (line 1546) * --target-help: Options. (line 1232) d7975 1 a7975 1 * --task-link: Options. (line 1551) d7978 7 a7984 7 * --trace: Options. (line 578) * --trace-symbol=SYMBOL: Options. (line 690) * --traditional-format: Options. (line 1556) * --tsaware: Options. (line 2336) * --undefined=SYMBOL: Options. (line 608) * --unique[=SECTION]: Options. (line 665) * --unresolved-symbols: Options. (line 1598) d7987 3 a7989 3 * --verbose[=NUMBER]: Options. (line 1627) * --version: Options. (line 674) * --version-script=VERSION-SCRIPTFILE: Options. (line 1635) d7991 11 a8001 11 * --warn-alternate-em: Options. (line 1746) * --warn-common: Options. (line 1645) * --warn-constructors: Options. (line 1713) * --warn-multiple-gp: Options. (line 1718) * --warn-once: Options. (line 1732) * --warn-section-align: Options. (line 1736) * --warn-shared-textrel: Options. (line 1743) * --warn-unresolved-symbols: Options. (line 1749) * --wdmdriver: Options. (line 2333) * --whole-archive: Options. (line 1758) * --wrap=SYMBOL: Options. (line 1772) d8003 1 a8003 1 * -assert KEYWORD: Options. (line 963) d8005 6 a8010 6 * -Bdynamic: Options. (line 966) * -Bgroup: Options. (line 976) * -Bshareable: Options. (line 1493) * -Bstatic: Options. (line 983) * -Bsymbolic: Options. (line 997) * -Bsymbolic-functions: Options. (line 1004) d8012 1 a8012 1 * -call_shared: Options. (line 966) d8015 1 a8015 1 * -dn: Options. (line 983) d8017 2 a8018 2 * -dT SCRIPT: Options. (line 595) * -dy: Options. (line 966) d8030 1 a8030 1 * -IFILE: Options. (line 1128) d8036 8 a8043 8 * -Map=MAPFILE: Options. (line 1236) * -n: Options. (line 448) * -N: Options. (line 454) * -no-relax: Options. (line 1369) * -non_shared: Options. (line 983) * -nostdlib: Options. (line 1326) * -O LEVEL: Options. (line 475) * -o OUTPUT: Options. (line 469) d8045 12 a8056 12 * -pie: Options. (line 1353) * -plugin NAME: Options. (line 485) * -q: Options. (line 522) * -qmagic: Options. (line 1363) * -Qy: Options. (line 1366) * -r: Options. (line 535) * -R FILE: Options. (line 553) * -rpath-link=DIR: Options. (line 1436) * -rpath=DIR: Options. (line 1409) * -s: Options. (line 564) * -S: Options. (line 568) * -shared: Options. (line 1493) d8058 21 a8078 21 * -static: Options. (line 983) * -t: Options. (line 578) * -T SCRIPT: Options. (line 586) * -Tbss=ORG: Options. (line 1577) * -Tdata=ORG: Options. (line 1577) * -Tldata-segment=ORG: Options. (line 1593) * -Trodata-segment=ORG: Options. (line 1587) * -Ttext-segment=ORG: Options. (line 1583) * -Ttext=ORG: Options. (line 1577) * -u SYMBOL: Options. (line 608) * -Ur: Options. (line 629) * -v: Options. (line 674) * -V: Options. (line 674) * -x: Options. (line 680) * -X: Options. (line 684) * -Y PATH: Options. (line 699) * -y SYMBOL: Options. (line 690) * -z defs: Options. (line 1247) * -z KEYWORD: Options. (line 703) * -z muldefs: Options. (line 1257) * -z undefs: Options. (line 1247) d8144 2 a8145 2 * combining symbols, warnings on: Options. (line 1645) * COMDAT: Options. (line 1095) d8151 1 a8151 1 * common allocation <1>: Options. (line 1079) d8164 1 a8164 1 * constructors: Options. (line 629) d8175 1 a8175 1 * cross reference table: Options. (line 1066) d8187 2 a8188 2 * dbx: Options. (line 1561) * DEF files, creating: Options. (line 2100) d8191 1 a8191 1 * defined symbol: Options. (line 621) d8193 1 a8193 1 * deleting local symbols: Options. (line 680) d8195 1 a8195 1 * demangling, from command line: Options. (line 1115) d8200 4 a8203 4 * DLLs, creating: Options. (line 1995) * DLLs, creating <1>: Options. (line 2100) * DLLs, creating <2>: Options. (line 2108) * DLLs, linking to: Options. (line 2123) d8207 1 a8207 1 * dynamic linker, from command line: Options. (line 1128) d8252 1 a8252 1 * forcing the creation of dynamic sections: Options. (line 531) d8255 3 a8257 3 * garbage collection: Options. (line 1165) * garbage collection <1>: Options. (line 1191) * garbage collection <2>: Options. (line 1200) d8259 1 a8259 1 * generating optimized output: Options. (line 475) d8262 1 a8262 1 * group allocation in linker script: Options. (line 1095) d8267 1 a8267 1 * groups of archives: Options. (line 911) d8270 2 a8271 2 * heap size: Options. (line 2035) * help: Options. (line 1228) d8278 1 a8278 1 * image base: Options. (line 2042) d8284 1 a8284 1 * including an entire archive: Options. (line 1758) d8294 1 a8294 1 * input files, displaying: Options. (line 578) d8317 1 a8317 1 * l =: MEMORY. (line 72) d8320 1 a8320 1 * ldata segment origin, cmd line: Options. (line 1594) d8324 2 a8325 2 * len =: MEMORY. (line 72) * LENGTH =: MEMORY. (line 72) d8329 1 a8329 2 * link map discarded: Options. (line 443) * link-time runtime library search path: Options. (line 1436) d8346 1 a8346 1 * local symbols, deleting: Options. (line 684) d8364 2 a8365 2 * memory usage: Options. (line 1216) * memory usage <1>: Options. (line 1240) d8378 1 a8378 1 * naming the output file: Options. (line 469) d8381 1 a8381 1 * NMAGIC: Options. (line 448) d8391 1 a8391 1 * o =: MEMORY. (line 67) d8397 2 a8398 2 * OMAGIC: Options. (line 454) * OMAGIC <1>: Options. (line 463) d8407 2 a8408 2 * org =: MEMORY. (line 67) * ORIGIN =: MEMORY. (line 67) d8411 2 a8412 2 * orphan sections: Options. (line 639) * output file after errors: Options. (line 1320) d8415 1 a8415 1 * output format: Options. (line 1210) d8430 1 a8430 1 * partial link: Options. (line 535) d8436 2 a8437 2 * pop state governing input file handling: Options. (line 518) * position independent executables: Options. (line 1355) d8473 1 a8473 1 * push state governing input file handling: Options. (line 500) d8477 2 a8478 2 * read-only text: Options. (line 448) * read/write from cmd line: Options. (line 454) d8484 1 a8484 1 * relaxing addressing modes: Options. (line 1369) d8490 1 a8490 1 * relocatable output: Options. (line 535) d8495 3 a8497 3 * retain relocations in final executable: Options. (line 522) * retaining specified symbols: Options. (line 1395) * rodata segment origin, cmd line: Options. (line 1588) d8502 1 a8502 1 * runtime library search path: Options. (line 1409) d8509 2 a8510 2 * script files: Options. (line 586) * script files <1>: Options. (line 595) d8520 1 a8520 1 * section alignment, warnings on: Options. (line 1736) d8525 1 a8525 1 * section groups: Options. (line 1095) d8542 1 a8542 1 * sections, orphan: Options. (line 639) d8544 1 a8544 1 * segment origins, cmd line: Options. (line 1577) d8547 1 a8547 1 * shared libraries: Options. (line 1495) d8555 1 a8555 1 (line 64) d8563 1 a8563 1 (line 100) d8574 1 a8574 1 * stack size: Options. (line 2285) d8579 3 a8581 3 * strip all symbols: Options. (line 564) * strip debugger symbols: Options. (line 568) * stripping all but some symbols: Options. (line 1395) d8589 1 a8589 1 * symbol tracing: Options. (line 690) d8591 1 a8591 1 * symbol-only input: Options. (line 553) d8593 1 a8593 1 * symbols, from command line: Options. (line 1103) d8595 3 a8597 3 * symbols, require defined: Options. (line 621) * symbols, retaining selectively: Options. (line 1395) * synthesizing linker: Options. (line 1369) d8602 1 a8602 1 * text segment origin, cmd line: Options. (line 1584) d8605 1 a8605 1 * traditional format: Options. (line 1556) d8609 1 a8609 1 * undefined symbol: Options. (line 608) d8612 1 a8612 1 * undefined symbols, warnings on: Options. (line 1732) d8617 1 a8617 1 * usage: Options. (line 1228) d8623 2 a8624 2 * verbose[=NUMBER]: Options. (line 1627) * version: Options. (line 674) d8626 1 a8626 1 * version script, symbol versions: Options. (line 1635) d8630 3 a8632 3 * warnings, on combining symbols: Options. (line 1645) * warnings, on section alignment: Options. (line 1736) * warnings, on undefined symbols: Options. (line 1732) d8643 86 a8728 86 Node: Top703 Node: Overview1484 Node: Invocation2600 Node: Options3008 Node: Environment115036 Node: Scripts116797 Node: Basic Script Concepts118531 Node: Script Format121239 Node: Simple Example122102 Node: Simple Commands125196 Node: Entry Point125701 Node: File Commands126630 Node: Format Commands130804 Node: REGION_ALIAS132760 Node: Miscellaneous Commands137587 Node: Assignments143418 Node: Simple Assignments143929 Node: HIDDEN145660 Node: PROVIDE146287 Node: PROVIDE_HIDDEN147808 Node: Source Code Reference148052 Node: SECTIONS151969 Node: Output Section Description153857 Node: Output Section Name155098 Node: Output Section Address155975 Node: Input Section158208 Node: Input Section Basics159009 Node: Input Section Wildcards164027 Node: Input Section Common169322 Node: Input Section Keep170804 Node: Input Section Example171294 Node: Output Section Data172705 Node: Output Section Keywords175484 Node: Output Section Discarding179051 Node: Output Section Attributes180781 Node: Output Section Type181900 Node: Output Section LMA182970 Node: Forced Output Alignment186041 Node: Forced Input Alignment186470 Node: Output Section Constraint186858 Node: Output Section Region187286 Node: Output Section Phdr187719 Node: Output Section Fill188383 Node: Overlay Description189525 Node: MEMORY193970 Node: PHDRS198576 Node: VERSION203902 Node: Expressions211993 Node: Constants212922 Node: Symbolic Constants213796 Node: Symbols214347 Node: Orphan Sections215094 Node: Location Counter216679 Node: Operators221113 Node: Evaluation222035 Node: Expression Section223399 Node: Builtin Functions227369 Node: Implicit Linker Scripts235720 Node: Machine Dependent236495 Node: H8/300237583 Node: M68HC11/68HC12239656 Node: ARM241103 Node: HPPA ELF32253350 Node: M68K254973 Node: MIPS255882 Node: MMIX256998 Node: MSP430258163 Node: NDS32260076 Node: Nios II261040 Node: PowerPC ELF32262356 Node: PowerPC64 ELF64265187 Node: S/390 ELF273588 Node: SPU ELF273935 Node: TI COFF276563 Node: WIN32277089 Node: Xtensa297236 Node: BFD300202 Node: BFD outline301660 Node: BFD information loss302948 Node: Canonical format305474 Node: Reporting Bugs309802 Node: Bug Criteria310496 Node: Bug Reporting311195 Node: MRI318233 Node: GNU Free Documentation License322704 Node: LD Index347841 @ 1.1.1.8 log @2018-07-18 Nick Clifton 2.31.1 Release point. 2018-07-18 Nick Clifton * (DEVO_SUPPORT): Fix typo in previous delta. (do_proto_toplev): Add --quiet option to configure command line. 2018-07-16 Nick Clifton * src-release.sh (DEVO_SUPPORT): Add test-driver and ar-lib. 2018-07-06 Sebastian Huber * config.sub: Sync with upstream version 2018-07-03. 2018-07-05 Sebastian Huber * config.guess: Sync with upstream version 2018-06-26. * config.sub: Sync with upstream version 2018-07-02. 2018-06-24 Nick Clifton * configure: Regenerate. 2018-06-19 Simon Marchi * libtool.m4: Use AC_LANG_SOURCE. * configure.ac: Remove AC_PREREQ, use AC_LANG_SOURCE. * README-maintainer-mode: Update version requirements. * ar-lib: New file. * test-driver: New file. * configure: Re-generate. 2018-06-18 Eric Botcazou * Makefile.def (fortran): Add check-target-libgomp-fortran. * Makefile.tpl (check-target-libgomp-fortran): New phony target. * Makefile.in: Regenerate. * configure: Regenerate. 2018-06-18 Simon Marchi * configure.ac: Sync with GCC, remove MPX-related things. 2018-05-01 Nick Clifton * config.guess: Synchronize with config project master sources. * config.sub: Likewise. 2018-05-01 Francois H. Theron * configure.ac: Added "nfp" target. * configure: Regenerate. 2018-02-13 Maciej W. Rozycki * configure.ac (noconfigdirs): Add `ld'. * configure: Regenerate. 2018-01-30 Nick Clifton * src-release.sh (do_proto_toplev): Add patterns for more junk files to delete before creating the tarball. 2018-01-29 Nick Clifton * src-release.sh (do_proto_toplev): Strip patch remnant files from the sources before creating the tarball. 2018-01-13 Nick Clifton * src-release.sh: Update copyright notice. Change reference to devo to be a reference to root. @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 6.4 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.30.90. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.30.90. d205 12 a1201 4 '--disable-multiple-abs-defs' Do not allow multiple definitions with symbols included in filename invoked by -R or -just-symbols d1423 4 a1426 4 *Note 'ld' and Xtensa Processors: Xtensa. *Note 'ld' and the 68HC11 and 68HC12: M68HC11/68HC12. *Note 'ld' and the Altera Nios II: Nios II. *Note 'ld' and PowerPC 32-bit ELF Support: PowerPC ELF32. d2160 5 a2164 11 imports from DLLs, thus making it possible to bypass the dllimport mechanism on the user side and to reference unmangled symbol names. [This option is specific to the i386 PE targeted port of the linker] The following remarks pertain to the original implementation of the feature and are obsolete nowadays for Cygwin and MinGW targets. Note: Use of the 'auto-import' extension will cause the text section of the image file to be made writable. This does not conform to the PE-COFF format specification published by Microsoft. d2274 2 a2275 1 functions). a3242 6 Note - the 'PROVIDE' directive considers a common symbol to be defined, even though such a symbol could be combined with the symbol that the 'PROVIDE' would create. This is particularly important when considering constructor and destructor list symbols such as '__CTOR_LIST__' as these are often defined as common symbols. d4623 1 a4623 1 }; d5395 1 d5414 1 a5414 1 File: ld.info, Node: H8/300, Next: M68HC11/68HC12, Up: Machine Dependent d5459 40 a5498 1 File: ld.info, Node: M68HC11/68HC12, Next: ARM, Prev: H8/300, Up: Machine Dependent d5500 1 a5500 1 4.2 'ld' and the Motorola 68HC11 and 68HC12 families d5503 1 a5503 1 4.2.1 Linker Relaxation d5524 1 a5524 1 4.2.2 Trampoline Generation d5537 1 a5537 1 4.3 'ld' and the ARM family d5786 1 a5786 1 4.4 'ld' and HPPA 32-bit ELF Support d5817 1 a5817 1 4.5 'ld' and the Motorola 68K family d5835 1 a5835 1 4.6 'ld' and the MIPS family d5858 1 a5858 1 4.7 'ld' and MMIX d5886 1 a5886 1 4.8 'ld' and MSP430 d5938 2 a5939 2 4.9 'ld' and NDS32 ================== d5977 1 a5977 1 4.10 'ld' and the Altera Nios II d6005 1 a6005 1 4.11 'ld' and PowerPC 32-bit ELF Support d6061 1 a6061 1 4.12 'ld' and PowerPC64 64-bit ELF Support d6205 7 d6231 1 a6231 1 4.13 'ld' and S/390 ELF Support d6242 1 a6242 1 4.14 'ld' and SPU ELF Support d6298 1 a6298 1 4.15 'ld''s Support for Various TI COFF Versions d6310 1 a6310 1 4.16 'ld' and WIN32 (cygwin/mingw) a6565 1 libxxx.lib d6736 1 a6736 1 4.17 'ld' and Xtensa Processors d6954 3 a6956 3 example, COFF, Oasys) and the type is simple enough to fit within one word (nearly everything but aggregates), the information will be preserved. d6982 2 a6983 1 derive this information can pass it successfully between formats. d7246 8 a7253 1 language, but restricted to S-records, if OUTPUT-FORMAT is 'S' d7787 8 a7794 7 * -(: Options. (line 864) * --accept-unknown-input-arch: Options. (line 882) * --add-needed: Options. (line 909) * --add-stdcall-alias: Options. (line 1869) * --allow-multiple-definition: Options. (line 1215) * --allow-shlib-undefined: Options. (line 1221) * --as-needed: Options. (line 892) d7796 3 a7798 3 * --auxiliary=NAME: Options. (line 242) * --bank-window: Options. (line 2316) * --base-file: Options. (line 1874) d7801 3 a7803 3 * --build-id: Options. (line 1831) * --build-id=STYLE: Options. (line 1831) * --check-sections: Options. (line 994) d7806 6 a7811 6 * --compress-debug-sections=none: Options. (line 1789) * --compress-debug-sections=zlib: Options. (line 1789) * --compress-debug-sections=zlib-gabi: Options. (line 1789) * --compress-debug-sections=zlib-gnu: Options. (line 1789) * --copy-dt-needed-entries: Options. (line 1006) * --cref: Options. (line 1026) d7813 12 a7824 13 * --default-imported-symver: Options. (line 1257) * --default-script=SCRIPT: Options. (line 565) * --default-symver: Options. (line 1253) * --defsym=SYMBOL=EXP: Options. (line 1063) * --demangle[=STYLE]: Options. (line 1075) * --depaudit AUDITLIB: Options. (line 164) * --disable-auto-image-base: Options. (line 2051) * --disable-auto-import: Options. (line 2190) * --disable-large-address-aware: Options. (line 1999) * --disable-long-section-names: Options. (line 1884) * --disable-multiple-abs-defs: Options. (line 1106) * --disable-new-dtags: Options. (line 1765) * --disable-runtime-pseudo-reloc: Options. (line 2203) d7826 5 a7830 5 * --disable-stdcall-fixup: Options. (line 1906) * --discard-all: Options. (line 650) * --discard-locals: Options. (line 654) * --dll: Options. (line 1879) * --dll-search-prefix: Options. (line 2057) d7832 11 a7842 11 * --dsbt-index: Options. (line 2294) * --dsbt-size: Options. (line 2289) * --dynamic-linker=FILE: Options. (line 1088) * --dynamic-list-cpp-new: Options. (line 986) * --dynamic-list-cpp-typeinfo: Options. (line 990) * --dynamic-list-data: Options. (line 983) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 970) * --dynamicbase: Options. (line 2243) * --eh-frame-hdr: Options. (line 1754) * --embedded-relocs: Options. (line 1101) * --emit-relocs: Options. (line 496) d7847 15 a7861 15 * --enable-auto-image-base: Options. (line 2042) * --enable-auto-import: Options. (line 2066) * --enable-extra-pe-debug: Options. (line 2208) * --enable-long-section-names: Options. (line 1884) * --enable-new-dtags: Options. (line 1765) * --enable-runtime-pseudo-reloc: Options. (line 2195) * --enable-stdcall-fixup: Options. (line 1906) * --entry=ENTRY: Options. (line 174) * --error-unresolved-symbols: Options. (line 1707) * --exclude-all-symbols: Options. (line 1959) * --exclude-libs: Options. (line 184) * --exclude-modules-for-implib: Options. (line 195) * --exclude-symbols: Options. (line 1953) * --export-all-symbols: Options. (line 1929) * --export-dynamic: Options. (line 208) d7863 3 a7865 3 * --fatal-warnings: Options. (line 1110) * --file-alignment: Options. (line 1963) * --filter=NAME: Options. (line 263) d7872 5 a7876 5 * --force-dynamic: Options. (line 505) * --force-exe-suffix: Options. (line 1115) * --force-group-allocation: Options. (line 1055) * --forceinteg: Options. (line 2248) * --format=FORMAT: Options. (line 121) d7878 3 a7880 3 * --gc-keep-exported: Options. (line 1158) * --gc-sections: Options. (line 1125) * --got: Options. (line 2328) d7882 7 a7888 7 * --gpsize=VALUE: Options. (line 295) * --hash-size=NUMBER: Options. (line 1775) * --hash-style=STYLE: Options. (line 1783) * --heap: Options. (line 1969) * --help: Options. (line 1186) * --high-entropy-va: Options. (line 2239) * --ignore-branch-isa: Options. (line 2349) d7890 1 a7890 1 * --image-base: Options. (line 1976) d7892 2 a7893 2 * --insert-timestamp: Options. (line 2271) * --insn32: Options. (line 2340) d7895 7 a7901 7 * --just-symbols=FILE: Options. (line 527) * --kill-at: Options. (line 1985) * --large-address-aware: Options. (line 1990) * --ld-generated-unwind-info: Options. (line 1760) * --leading-underscore: Options. (line 1923) * --library-path=DIR: Options. (line 353) * --library=NAMESPEC: Options. (line 320) d7904 3 a7906 3 * --major-image-version: Options. (line 2006) * --major-os-version: Options. (line 2011) * --major-subsystem-version: Options. (line 2015) d7908 4 a7911 4 * --minor-image-version: Options. (line 2020) * --minor-os-version: Options. (line 2025) * --minor-subsystem-version: Options. (line 2029) * --mri-script=MRI-CMDFILE: Options. (line 145) d7913 4 a7916 4 * --nmagic: Options. (line 422) * --no-accept-unknown-input-arch: Options. (line 882) * --no-add-needed: Options. (line 909) * --no-allow-shlib-undefined: Options. (line 1221) d7918 6 a7923 6 * --no-as-needed: Options. (line 892) * --no-bind: Options. (line 2262) * --no-check-sections: Options. (line 994) * --no-copy-dt-needed-entries: Options. (line 1006) * --no-define-common: Options. (line 1039) * --no-demangle: Options. (line 1075) d7925 2 a7926 2 * --no-dynamic-linker: Options. (line 1095) * --no-eh-frame-hdr: Options. (line 1754) d7928 2 a7929 2 * --no-export-dynamic: Options. (line 208) * --no-fatal-warnings: Options. (line 1110) d7933 2 a7934 2 * --no-gc-sections: Options. (line 1125) * --no-ignore-branch-isa: Options. (line 2350) d7936 1 a7936 1 * --no-insn32: Options. (line 2341) d7938 4 a7941 4 * --no-isolation: Options. (line 2255) * --no-keep-memory: Options. (line 1198) * --no-leading-underscore: Options. (line 1923) * --no-merge-exidx-entries: Options. (line 2301) d7944 1 a7944 1 * --no-omagic: Options. (line 437) d7948 1 a7948 1 * --no-plt-localentry: PowerPC64 ELF64. (line 147) d7951 1 a7951 1 * --no-print-gc-sections: Options. (line 1149) d7953 3 a7955 2 * --no-seh: Options. (line 2258) * --no-strip-discarded: Options. (line 547) d7961 5 a7965 5 * --no-trampoline: Options. (line 2310) * --no-undefined: Options. (line 1205) * --no-undefined-version: Options. (line 1248) * --no-warn-mismatch: Options. (line 1261) * --no-warn-search-mismatch: Options. (line 1270) d7967 2 a7968 2 * --no-whole-archive: Options. (line 1274) * --noinhibit-exec: Options. (line 1278) d7970 8 a7977 8 * --nxcompat: Options. (line 2251) * --oformat=OUTPUT-FORMAT: Options. (line 1289) * --omagic: Options. (line 428) * --orphan-handling=MODE: Options. (line 609) * --out-implib: Options. (line 1302) * --output-def: Options. (line 2034) * --output=OUTPUT: Options. (line 443) * --pic-executable: Options. (line 1311) d7980 1 a7980 1 * --plt-localentry: PowerPC64 ELF64. (line 147) d7984 9 a7992 8 * --pop-state: Options. (line 492) * --print-gc-sections: Options. (line 1149) * --print-map: Options. (line 388) * --print-memory-usage: Options. (line 1174) * --print-output-format: Options. (line 1168) * --push-state: Options. (line 474) * --reduce-memory-overheads: Options. (line 1817) * --relax: Options. (line 1327) d7996 3 a7998 3 * --relocatable: Options. (line 509) * --require-defined=SYMBOL: Options. (line 591) * --retain-symbols-file=FILENAME: Options. (line 1353) d8001 1 a8001 1 * --script=SCRIPT: Options. (line 556) d8003 2 a8004 2 * --section-alignment: Options. (line 2213) * --section-start=SECTIONNAME=ORG: Options. (line 1521) d8006 8 a8013 7 * --sort-common: Options. (line 1453) * --sort-section=alignment: Options. (line 1468) * --sort-section=name: Options. (line 1464) * --spare-dynamic-tags: Options. (line 1472) * --split-by-file: Options. (line 1477) * --split-by-reloc: Options. (line 1482) * --stack: Options. (line 2219) d8015 4 a8018 4 * --stats: Options. (line 1495) * --strip-all: Options. (line 538) * --strip-debug: Options. (line 542) * --strip-discarded: Options. (line 547) d8022 1 a8022 1 * --subsystem: Options. (line 2226) d8024 2 a8025 2 * --sysroot=DIRECTORY: Options. (line 1499) * --target-help: Options. (line 1190) d8029 1 a8029 1 * --task-link: Options. (line 1504) d8032 7 a8038 7 * --trace: Options. (line 552) * --trace-symbol=SYMBOL: Options. (line 660) * --traditional-format: Options. (line 1509) * --tsaware: Options. (line 2268) * --undefined=SYMBOL: Options. (line 578) * --unique[=SECTION]: Options. (line 635) * --unresolved-symbols: Options. (line 1551) d8041 3 a8043 3 * --verbose[=NUMBER]: Options. (line 1580) * --version: Options. (line 644) * --version-script=VERSION-SCRIPTFILE: Options. (line 1588) d8045 12 a8056 11 * --warn-alternate-em: Options. (line 1699) * --warn-common: Options. (line 1598) * --warn-constructors: Options. (line 1666) * --warn-multiple-gp: Options. (line 1671) * --warn-once: Options. (line 1685) * --warn-section-align: Options. (line 1689) * --warn-shared-textrel: Options. (line 1696) * --warn-unresolved-symbols: Options. (line 1702) * --wdmdriver: Options. (line 2265) * --whole-archive: Options. (line 1711) * --wrap=SYMBOL: Options. (line 1725) d8058 76 a8133 76 * -assert KEYWORD: Options. (line 916) * -b FORMAT: Options. (line 121) * -Bdynamic: Options. (line 919) * -Bgroup: Options. (line 929) * -Bshareable: Options. (line 1446) * -Bstatic: Options. (line 936) * -Bsymbolic: Options. (line 950) * -Bsymbolic-functions: Options. (line 961) * -c MRI-CMDFILE: Options. (line 145) * -call_shared: Options. (line 919) * -d: Options. (line 155) * -dc: Options. (line 155) * -dn: Options. (line 936) * -dp: Options. (line 155) * -dT SCRIPT: Options. (line 565) * -dy: Options. (line 919) * -E: Options. (line 208) * -e ENTRY: Options. (line 174) * -EB: Options. (line 235) * -EL: Options. (line 238) * -f NAME: Options. (line 242) * -F NAME: Options. (line 263) * -fini=NAME: Options. (line 286) * -g: Options. (line 292) * -G VALUE: Options. (line 295) * -h NAME: Options. (line 302) * -i: Options. (line 311) * -IFILE: Options. (line 1088) * -init=NAME: Options. (line 314) * -L DIR: Options. (line 353) * -l NAMESPEC: Options. (line 320) * -M: Options. (line 388) * -m EMULATION: Options. (line 378) * -Map=MAPFILE: Options. (line 1194) * -n: Options. (line 422) * -N: Options. (line 428) * -no-relax: Options. (line 1327) * -non_shared: Options. (line 936) * -nostdlib: Options. (line 1284) * -O LEVEL: Options. (line 449) * -o OUTPUT: Options. (line 443) * -P AUDITLIB: Options. (line 164) * -pie: Options. (line 1311) * -plugin NAME: Options. (line 459) * -q: Options. (line 496) * -qmagic: Options. (line 1321) * -Qy: Options. (line 1324) * -r: Options. (line 509) * -R FILE: Options. (line 527) * -rpath-link=DIR: Options. (line 1389) * -rpath=DIR: Options. (line 1367) * -s: Options. (line 538) * -S: Options. (line 542) * -shared: Options. (line 1446) * -soname=NAME: Options. (line 302) * -static: Options. (line 936) * -t: Options. (line 552) * -T SCRIPT: Options. (line 556) * -Tbss=ORG: Options. (line 1530) * -Tdata=ORG: Options. (line 1530) * -Tldata-segment=ORG: Options. (line 1546) * -Trodata-segment=ORG: Options. (line 1540) * -Ttext-segment=ORG: Options. (line 1536) * -Ttext=ORG: Options. (line 1530) * -u SYMBOL: Options. (line 578) * -Ur: Options. (line 599) * -v: Options. (line 644) * -V: Options. (line 644) * -x: Options. (line 650) * -X: Options. (line 654) * -Y PATH: Options. (line 669) * -y SYMBOL: Options. (line 660) * -z defs: Options. (line 1205) * -z KEYWORD: Options. (line 673) * -z muldefs: Options. (line 1215) * -z undefs: Options. (line 1205) d8162 1 a8162 1 * aligned common symbols: WIN32. (line 416) d8167 2 a8168 1 * archive files, from cmd line: Options. (line 320) d8188 2 a8189 2 * big-endian objects: Options. (line 235) * binary input format: Options. (line 121) d8200 2 a8201 2 * combining symbols, warnings on: Options. (line 1598) * COMDAT: Options. (line 1055) d8206 2 a8207 2 * common allocation: Options. (line 155) * common allocation <1>: Options. (line 1039) d8215 1 a8215 1 * compatibility, MRI: Options. (line 145) d8220 1 a8220 1 * constructors: Options. (line 599) d8231 1 a8231 1 * cross reference table: Options. (line 1026) d8243 2 a8244 2 * dbx: Options. (line 1514) * DEF files, creating: Options. (line 2034) d8247 1 a8247 1 * defined symbol: Options. (line 591) d8249 1 a8249 1 * deleting local symbols: Options. (line 650) d8251 1 a8251 1 * demangling, from command line: Options. (line 1075) d8256 4 a8259 4 * DLLs, creating: Options. (line 1929) * DLLs, creating <1>: Options. (line 2034) * DLLs, creating <2>: Options. (line 2042) * DLLs, linking to: Options. (line 2057) d8263 2 a8264 2 * dynamic linker, from command line: Options. (line 1088) * dynamic symbol table: Options. (line 208) d8266 1 a8266 1 * emulation: Options. (line 378) d8269 1 a8269 1 * endianness: Options. (line 235) d8271 1 a8271 1 * entry point, from command line: Options. (line 174) d8295 1 a8295 1 * finalization function: Options. (line 286) d8308 1 a8308 1 * forcing the creation of dynamic sections: Options. (line 505) d8311 3 a8313 3 * garbage collection: Options. (line 1125) * garbage collection <1>: Options. (line 1149) * garbage collection <2>: Options. (line 1158) d8315 1 a8315 1 * generating optimized output: Options. (line 449) d8318 1 a8318 1 * group allocation in linker script: Options. (line 1055) d8323 1 a8323 1 * groups of archives: Options. (line 864) d8326 2 a8327 2 * heap size: Options. (line 1969) * help: Options. (line 1186) d8334 2 a8335 1 * image base: Options. (line 1976) d8341 2 a8342 2 * including an entire archive: Options. (line 1711) * incremental link: Options. (line 311) d8345 1 a8345 1 * initialization function: Options. (line 314) d8351 3 a8353 3 * input files, displaying: Options. (line 552) * input format: Options. (line 121) * input format <1>: Options. (line 121) d8377 1 a8377 1 * ldata segment origin, cmd line: Options. (line 1547) d8385 2 a8386 2 * link map: Options. (line 388) * link-time runtime library search path: Options. (line 1389) d8396 3 a8398 3 * LIST (MRI): MRI. (line 69) * little-endian objects: Options. (line 238) * LOAD (MRI): MRI. (line 76) d8403 1 a8403 1 * local symbols, deleting: Options. (line 654) d8421 2 a8422 2 * memory usage: Options. (line 1174) * memory usage <1>: Options. (line 1198) d8431 1 a8431 1 * NAME (MRI): MRI. (line 82) d8435 1 a8435 1 * naming the output file: Options. (line 443) d8438 1 a8438 1 * NMAGIC: Options. (line 422) d8453 3 a8455 3 * object size: Options. (line 295) * OMAGIC: Options. (line 428) * OMAGIC <1>: Options. (line 437) d8463 1 a8463 1 * ORDER (MRI): MRI. (line 87) d8468 2 a8469 2 * orphan sections: Options. (line 609) * output file after errors: Options. (line 1278) d8472 1 a8472 1 * output format: Options. (line 1168) d8487 1 a8487 1 * partial link: Options. (line 509) d8493 2 a8494 2 * pop state governing input file handling: Options. (line 492) * position independent executables: Options. (line 1313) d8504 1 a8504 1 (line 147) d8508 2 d8531 2 a8532 2 * PUBLIC (MRI): MRI. (line 95) * push state governing input file handling: Options. (line 474) d8536 2 a8537 2 * read-only text: Options. (line 422) * read/write from cmd line: Options. (line 428) d8543 1 a8543 1 * relaxing addressing modes: Options. (line 1327) d8545 1 d8550 1 a8550 1 * relocatable output: Options. (line 509) d8555 3 a8557 3 * retain relocations in final executable: Options. (line 496) * retaining specified symbols: Options. (line 1353) * rodata segment origin, cmd line: Options. (line 1541) d8561 2 a8562 2 * runtime library name: Options. (line 302) * runtime library search path: Options. (line 1367) d8569 2 a8570 2 * script files: Options. (line 556) * script files <1>: Options. (line 565) d8572 1 a8572 1 * search directory, from cmd line: Options. (line 353) d8575 1 a8575 1 * SECT (MRI): MRI. (line 101) d8580 1 a8580 1 * section alignment, warnings on: Options. (line 1689) d8585 1 a8585 1 * section groups: Options. (line 1055) d8602 1 a8602 1 * sections, orphan: Options. (line 609) d8604 1 a8604 1 * segment origins, cmd line: Options. (line 1530) d8607 1 a8607 1 * shared libraries: Options. (line 1448) d8634 1 a8634 1 * stack size: Options. (line 2219) d8639 3 a8641 3 * strip all symbols: Options. (line 538) * strip debugger symbols: Options. (line 542) * stripping all but some symbols: Options. (line 1353) d8649 1 a8649 1 * symbol tracing: Options. (line 660) d8651 1 a8651 1 * symbol-only input: Options. (line 527) d8653 1 a8653 1 * symbols, from command line: Options. (line 1063) d8655 3 a8657 3 * symbols, require defined: Options. (line 591) * symbols, retaining selectively: Options. (line 1353) * synthesizing linker: Options. (line 1327) d8662 1 a8662 1 * text segment origin, cmd line: Options. (line 1537) d8665 1 a8665 1 * traditional format: Options. (line 1509) d8669 1 a8669 1 * undefined symbol: Options. (line 578) d8672 1 a8672 1 * undefined symbols, warnings on: Options. (line 1685) d8677 1 a8677 1 * usage: Options. (line 1186) d8683 2 a8684 2 * verbose[=NUMBER]: Options. (line 1580) * version: Options. (line 644) d8686 1 a8686 1 * version script, symbol versions: Options. (line 1588) d8690 4 a8693 4 * warnings, on combining symbols: Options. (line 1598) * warnings, on section alignment: Options. (line 1689) * warnings, on undefined symbols: Options. (line 1685) * weak externals: WIN32. (line 401) d8704 86 a8789 85 Node: Overview1490 Node: Invocation2606 Node: Options3014 Node: Environment111207 Node: Scripts112968 Node: Basic Script Concepts114702 Node: Script Format117410 Node: Simple Example118273 Node: Simple Commands121367 Node: Entry Point121872 Node: File Commands122800 Node: Format Commands126974 Node: REGION_ALIAS128930 Node: Miscellaneous Commands133757 Node: Assignments139588 Node: Simple Assignments140099 Node: HIDDEN141830 Node: PROVIDE142457 Node: PROVIDE_HIDDEN143978 Node: Source Code Reference144222 Node: SECTIONS148139 Node: Output Section Description150027 Node: Output Section Name151268 Node: Output Section Address152145 Node: Input Section154378 Node: Input Section Basics155179 Node: Input Section Wildcards160197 Node: Input Section Common165398 Node: Input Section Keep166880 Node: Input Section Example167370 Node: Output Section Data168781 Node: Output Section Keywords171560 Node: Output Section Discarding175127 Node: Output Section Attributes176617 Node: Output Section Type177717 Node: Output Section LMA178787 Node: Forced Output Alignment181858 Node: Forced Input Alignment182287 Node: Output Section Constraint182675 Node: Output Section Region183103 Node: Output Section Phdr183536 Node: Output Section Fill184200 Node: Overlay Description185342 Node: MEMORY189787 Node: PHDRS194158 Node: VERSION199484 Node: Expressions207575 Node: Constants208504 Node: Symbolic Constants209378 Node: Symbols209929 Node: Orphan Sections210676 Node: Location Counter212261 Node: Operators216695 Node: Evaluation217617 Node: Expression Section218981 Node: Builtin Functions222951 Node: Implicit Linker Scripts231302 Node: Machine Dependent232077 Node: H8/300233165 Node: M68HC11/68HC12235238 Node: ARM236685 Node: HPPA ELF32248932 Node: M68K250555 Node: MIPS251464 Node: MMIX252580 Node: MSP430253745 Node: NDS32255658 Node: Nios II256622 Node: PowerPC ELF32257938 Node: PowerPC64 ELF64260769 Node: S/390 ELF269170 Node: SPU ELF269517 Node: TI COFF272145 Node: WIN32272671 Node: Xtensa292818 Node: BFD295784 Node: BFD outline297242 Node: BFD information loss298530 Node: Canonical format301056 Node: Reporting Bugs305384 Node: Bug Criteria306078 Node: Bug Reporting306777 Node: MRI313815 Node: GNU Free Documentation License318286 Node: LD Index343423 @ 1.1.1.9 log @Import binutils-2.34 2020-01-18 Nick Clifton Binutils 2.34 branch created. 2020-01-18 Nick Clifton Synchronize top level configure files with master version: 2020-01-01 Ben Elliston * config.guess: Update copyright years. * config.sub: Likewise. 2019-12-21 Ben Elliston * config.guess (set_cc_for_build): Prevent multiple calls by checking if $tmp is already set. We can't check CC_FOR_BUILD as the user may set it externally. Thanks to Torbjörn Granlund for the bug report. 2019-12-21 Torbjörn Granlund * config.guess (alpha:Linux:*:*): Guard against missing /proc/cpuinfo by redirecting standard error to /dev/null. 2019-09-12 Daniel Bittman * config.guess (*:Twizzler:*:*): New. * config.sub (-twizzler*): New. 2019-07-24 Ben Elliston * config.guess (mips:OSF1:*.*): Whitespace cleanup. 2019-06-30 Ben Elliston * config.sub (case $os): Match nsk* and powerunix. Don't later match nsk* and set os=nsk which removes the OS version number. 2019-06-30 Ben Elliston * config.sub: Recognise os108*. 2019-06-26 Ben Elliston * config.sub (hp300): Set $os to hpux. 2019-06-26 Ben Elliston * config.sub (vsta): Move into alphabetical order. 2019-06-10 Ben Elliston * config.guess (*:OS108:*:*): Recognise new OS. 2019-05-28 Ben Elliston * config.guess (*:Darwin:*:*): Run xcode-select to determine if a system compiler is installed. If not, do not run set_cc_for_build, as the default cc will open a dialog box asking to install Xcode. If no C compiler is available, guess based on uname -p and uname -m. 2019-05-28 Ben Elliston * config.guess (*:Darwin:*:*): Simplify UNAME_PROCESSOR. 2020-01-17 Simon Marchi * Makefile.def: Add dependencies of all-gdbsupport on all-bfd. * Makefile.in: Re-generate. 2020-01-14 Tom Tromey * src-release.sh (GDB_SUPPORT_DIRS): Add gdbsupport. * MAINTAINERS: Add gdbsupport. * configure: Rebuild. * configure.ac (configdirs): Add gdbsupport. * gdbsupport: New directory, move from gdb/gdbsupport. * Makefile.def (host_modules, dependencies): Add gnulib. * Makefile.in: Rebuild. 2020-01-09 Aaron Merey * config/debuginfod.m4: New file. Add macro AC_DEBUGINFOD. Adds new configure option --with-debuginfod. * configure: Regenerate. * configure.ac: Call AC_DEBUGINFOD. 2019-12-26 Christian Biesinger * .gitignore: Add perf.data and perf.data.old. 2019-10-17 Sergio Durigan Junior * src-release.sh (GDB_SUPPORT_DIRS): Add libctf. 2019-10-17 Alan Modra PR 29 * src-release.sh (getver): Replace "head -1" with "head -n 1". 2019-07-30 Nick Alcock * Makefile.def (host_modules): libctf is no longer no_install. * Makefile.in: Regenerated. 2019-07-13 Nick Alcock * Makefile.def (dependencies): all-ld depends on all-libctf. * Makefile.in: Regenerated. 2019-09-09 Phil Blundell binutils 2.33 branch created 2019-08-19 Tom Tromey * configure: Rebuild. * configure.ac: Add --with-static-standard-libraries. 2019-08-09 Nick Clifton * libiberty: Sync with gcc. Bring in: 2019-08-08 Martin Liska PR bootstrap/91352 * lrealpath.c (is_valid_fd): New function. 2019-07-24 Martin Liska PR lto/91228 * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): Find first '\0' starting from gnu_lto + 1. 2019-07-12 Ren Kimura * simple-object-elf.c (simple_object_elf_match): Check zero value shstrndx. This fixes a Bug 90924. 2019-07-22 Martin Liska * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): Do not search for gnu_lto_v1, but search for first '\0'. 2019-07-18 Eduard-Mihai Burtescu * cplus-dem.c: Include rust-demangle.h. * rust-demangle.c: Include rust-demangle.h. * rust-demangle.h: New file. 2019-05-31 Michael Forney * cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__ is non-zero. 2019-04-30 Ben L * d-demangle.c (dlang_parse_assocarray): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. * d-demangle.c (dlang_parse_tuple): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. * d-demangle.c (dlang_parse_structlit): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. * d-demangle.c (dlang_parse_arrayliteral): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. * d-demangle.c (dlang_parse_integer): Fix stack underflow. * testsuite/d-demangle-expected: Add testcase. * cp-demangle (d_print_comp_inner): Guard against a NULL 'typed_name'. * testsuite/demangle-expected: Add testcase. * cp-demangle.c (d_encoding): Guard against NULL return values from d_right (dc). * testsuite/demangle-expected: Add testcase. 2019-04-29 Ben L * cp-demangle.c (d_expression_1): Don't peek ahead unless the current char is valid. * testsuite/demangle-expected: Add testcase. 2019-04-10 Nick Clifton PR 89394 * cp-demangle.c (cplus_demangle_fill_name): Reject negative lengths. (d_count_templates_scopes): Replace num_templates and num_scopes parameters with a struct d_print_info pointer parameter. Adjust body of the function accordingly. Add recursion counter and check that the recursion limit is not reached. (d_print_init): Pass dpi parameter to d_count_templates_scopes. Reset recursion counter afterwards, unless the recursion limit was reached. 2019-07-13 Joel Brobecker * src-release (getver): If $tool/gdbsupport/create-version.sh exists, use that to determine the version number. 2019-06-21 Andreas Schwab * src-release.sh (GDB_SUPPORT_DIRS): Add gnulib. 2019-06-14 Tom Tromey * MAINTAINERS: Add gnulib. * gnulib: New directory, move from gdb/gnulib. * configure.ac (host_libs): Add gnulib. * configure: Rebuild. * Makefile.def (host_modules, dependencies): Add gnulib. * Makefile.in: Rebuild. 2019-06-03 Nick Clifton Revert: 2019-05-29 Nick Clifton * configure.ac (noconfigdirs): Add libctf if the target does not use the ELF file format. * configure: Regenerate. 2019-05-29 Nick Clifton * src-release.sh (do_proto_toplev): Add libctf to list of directories that can be disabled. 2019-05-29 Nick Clifton * configure.ac (noconfigdirs): Add libctf if the target does not use the ELF file format. * configure: Regenerate. 2019-05-28 Nick Alcock * Makefile.def (dependencies): configure-libctf depends on all-bfd and all its deps. * Makefile.in: Regenerated. 2019-05-28 Nick Alcock * MAINTAINERS: Add libctf. 2019-05-28 Nick Alcock * Makefile.def (host_modules): Add libctf. * Makefile.def (dependencies): Likewise. libctf depends on zlib, libiberty, and bfd. * Makefile.in: Regenerated. * configure.ac (host_libs): Add libctf. * configure: Regenerated. 2019-05-23 Jose E. Marchesi * config.guess: Synchronize with config project master sources. * config.sub: Likewise. * readline/support/config.guess: Likewise. * readline/support/config.sub: Likewise. 2019-04-10 Nick Clifton * libiberty: Sync with gcc. Bring in: 2019-04-10 Nick Clifton PR 89394 * cp-demangle.c (cplus_demangle_fill_name): Reject negative lengths. (d_count_templates_scopes): Replace num_templates and num_scopes parameters with a struct d_print_info pointer parameter. Adjust body of the function accordingly. Add recursion counter and check that the recursion limit is not reached. (d_print_init): Pass dpi parameter to d_count_templates_scopes. Reset recursion counter afterwards, unless the recursion limit was reached. 2018-06-24 Nick Clifton 2.32 branch created. 2019-01-14 Rainer Orth Merge from GCC: PR target/88535 * config.guess: Import upstream version 2019-01-03. * config.sub: Import upstream version 2019-01-01. 2019-01-10 Nick Clifton * libiberty: Sync with gcc. Bring in: 2019-01-09 Sandra Loosemore PR other/16615 * cp-demangle.c: Mechanically replace "can not" with "cannot". * floatformat.c: Likewise. * strerror.c: Likewise. 2018-12-22 Jason Merrill Remove support for demangling GCC 2.x era mangling schemes. * cplus-dem.c: Remove cplus_mangle_opname, cplus_demangle_opname, internal_cplus_demangle, and all subroutines. (libiberty_demanglers): Remove entries for ancient GNU (pre-3.0), Lucid, ARM, HP, and EDG demangling styles. (cplus_demangle): Remove 'work' variable. Don't call internal_cplus_demangle. 2019-01-03 Дилян Палаузов * configure.ac: Don't configure readline if --with-system-readline is used. * configure: Re-generate. 2018-10-31 Joseph Myers Merge from GCC: PR bootstrap/82856 * multilib.am: New file. From automake. 2018-09-12 Sergio Durigan Junior * src-release.sh (GDB_SUPPORT_DIRS): Add "contrib". 2018-07-16 Nick Clifton @@ -20,6 +338,18 @@@@ * config.guess: Sync with upstream version 2018-06-26. * config.sub: Sync with upstream version 2018-07-02. 2018-06-29 Alexandre Oliva * configure.ac: Introduce support for @@unless/@@endunless. * Makefile.tpl (dep-kind): Rewrite with cond; return postbootstrap in some cases. (make-postboot-dep, postboot-targets): New. (dependencies): Do not output postbootstrap dependencies at first. Output non-target ones changed for configure to depend on stage_last @@if gcc-bootstrap, and the original deps @@unless gcc-bootstrap. * configure.in, Makefile.in: Rebuilt. 2018-06-24 Nick Clifton * configure: Regenerate. @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 6.5 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.34. d5 1 a5 1 Copyright (C) 1991-2020 Free Software Foundation, Inc. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.34. d81 1 a81 1 * Options:: Command-line Options d87 1 a87 1 2.1 Command-line Options d156 1 a156 1 driver (e.g. 'gcc') then all the linker command-line options should be d172 1 a172 1 Here is a table of the generic command-line switches accepted by the d341 1 a341 1 debugging or for machine-specific performance. a505 26 * How GNU properties are merged. When the linker merges input .note.gnu.property sections into one output .note.gnu.property section, some properties are removed or updated. These actions are reported in the link map. For example: Removed property 0xc0000002 to merge foo.o (0x1) and bar.o (not found) This indicates that property 0xc0000002 is removed from output when merging properties in 'foo.o', whose property 0xc0000002 value is 0x1, and 'bar.o', which doesn't have property 0xc0000002. Updated property 0xc0010001 (0x1) to merge foo.o (0x1) and bar.o (0x1) This indicates that property 0xc0010001 value is updated to 0x1 in output when merging properties in 'foo.o', whose 0xc0010001 property value is 0x1, and 'bar.o', whose 0xc0010001 property value is 0x1. '--print-map-discarded' '--no-print-map-discarded' Print (or do not print) the list of discarded and garbage collected sections in the link map. Enabled by default. d638 1 a638 5 Print the names of the input files as 'ld' processes them. If '-t' is given twice then members within archives are also printed. '-t' output is useful to generate a list of all the object files and scripts involved in linking, for example, when packaging files for a linker bug report. a775 17 'cet-report=none' 'cet-report=warning' 'cet-report=error' Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK properties in input .note.gnu.property section. 'cet-report=none', which is the default, will make the linker not report missing properties in input files. 'cet-report=warning' will make the linker issue a warning for missing properties in input files. 'cet-report=error' will make the linker issue an error for missing properties in input files. Note that 'ibt' will turn off the missing GNU_PROPERTY_X86_FEATURE_1_IBT property report and 'shstk' will turn off the missing GNU_PROPERTY_X86_FEATURE_1_SHSTK property report. Supported for Linux/i386 and Linux/x86_64. d820 3 a822 3 auditing library defined via the '--depaudit' or '-P' command-line options be run for all dynamic objects loaded by the application. d959 1 a959 1 reference. By grouping the archives, they will all be searched d1038 6 a1043 2 override the definition within the shared library. This option is only meaningful on ELF platforms which support shared libraries. d1048 5 a1052 2 option is only meaningful on ELF platforms which support shared libraries. d1085 1 a1085 1 behaviour can be restored by using the command-line switch d1187 1 a1187 1 the relocs are stored in a target-specific section. This option is d1226 1 a1226 2 relocations. See '--entry', '--undefined', and '--gc-keep-exported'. d1230 2 a1231 3 explicitly specified either by one of the options '--entry', '--undefined', or '--gc-keep-exported' or by a 'ENTRY' command in the linker script. d1275 1 a1275 1 Print a summary of all target-specific options on the standard d1420 1 a1420 1 On some platforms the '--relax' option performs target-specific, d1454 6 a1459 11 uses them to locate shared objects at runtime. The '-rpath' option is also used when locating shared objects which are needed by shared objects explicitly included in the link; see the description of the '-rpath-link' option. Searching '-rpath' in this way is only supported by native linkers and cross linkers which have been configured with the '--with-sysroot' option. If '-rpath' is not used when linking an ELF executable, the contents of the environment variable 'LD_RUN_PATH' will be used if it is defined. a1837 17 Only undefined references are replaced by the linker. So, translation unit internal references to SYMBOL are not resolved to '__wrap_SYMBOL'. In the next example, the call to 'f' in 'g' is not resolved to '__wrap_f'. int f (void) { return 123; } int g (void) { return f(); } d1871 1 a1871 3 new style GNU '.gnu.hash' hash tables. The default depends upon how the linker was configured, but for most Linux based systems it will be 'both'. d1949 1 a1949 1 support additional command-line options that are specific to the i386 PE d2325 1 a2325 2 (ASLR). This option also implies '--dynamicbase' and '--enable-reloc-section'. d2330 1 a2330 2 Vista for i386 PE targets. This option also implies '--enable-reloc-section'. a2365 5 '--enable-reloc-section' Create the base relocation table, which is necessary if the image is loaded at a different image base than specified in the PE header. d2388 1 a2388 20 2.1.3 Options specific to C-SKY targets --------------------------------------- '--branch-stub' This option enables linker branch relaxation by inserting branch stub sections when needed to extend the range of branches. This option is usually not required since C-SKY supports branch and call instructions that can access the full memory range and branch relaxation is normally handled by the compiler or assembler. '--stub-group-size=N' This option allows finer control of linker branch stub creation. It sets the maximum size of a group of input sections that can be handled by one stub section. A negative value of N locates stub sections after their branches, while a positive value allows stub sections to appear either before or after the branches. Values of '1' or '-1' indicate that the linker should choose suitable defaults. 2.1.4 Options specific to Motorola 68HC11 and 68HC12 targets d2406 1 a2406 1 2.1.5 Options specific to Motorola 68K target d2417 1 a2417 1 2.1.6 Options specific to MIPS targets a2444 5 '--compact-branches' '--compact-branches' These options control the generation of compact instructions by the linker in the PLT entries for MIPS R6. d2498 2 a2499 2 linker executable. You can use the '--verbose' command-line option to display the default linker script. Certain command-line options, such d2702 2 a2703 2 * the value of a target-specific symbol, if it is defined; For many targets this is 'start', but PE- and BeOS-based systems for example d2747 1 a2747 1 '$SYSROOT'. See also the description of '-L' in *note Command-line d2751 1 a2751 1 'libFILE.a', as with the command-line argument '-l'. d2762 1 a2762 1 in *note Command-line Options: Options. d2779 1 a2779 1 Options.). If both are used, the command-line option takes d2788 1 a2788 1 like using '-L PATH' on the command line (*note Command-line d2790 1 a2790 1 both paths. Paths specified using the command-line option are d2813 1 a2813 1 Command-line Options: Options.). If both are used, the command d2817 1 a2817 1 formats based on the '-EB' and '-EL' command-line options. This d2830 1 a2830 1 'elf32-bigmips', but if the user uses the '-EL' command-line d2838 1 a2838 1 Command-line Options: Options.). If the 'TARGET' command is used d3694 10 a3703 12 'SORT_BY_ALIGNMENT' is similar to 'SORT_BY_NAME'. 'SORT_BY_ALIGNMENT' will sort sections into descending order of alignment before placing them in the output file. Placing larger alignments before smaller alignments can reduce the amount of padding needed. 'SORT_BY_INIT_PRIORITY' is also similar to 'SORT_BY_NAME'. 'SORT_BY_INIT_PRIORITY' will sort sections into ascending numerical order of the GCC init_priority attribute encoded in the section name before placing them in the output file. In '.init_array.NNNNN' and '.fini_array.NNNNN', 'NNNNN' is the init_priority. In '.ctors.NNNNN' and '.dtors.NNNNN', 'NNNNN' is 65535 minus the init_priority. d3723 1 a3723 1 When both command-line section sorting option and linker script d3725 1 a3725 1 precedence over the command-line option. d3728 1 a3728 1 command-line option will make the section sorting command to be treated d3739 1 a3739 1 command-line option will be ignored. d3741 1 a3741 1 'SORT_NONE' disables section sorting by ignoring the command-line a4007 5 Note, sections that match the '/DISCARD/' output section will be discarded even if they are in an ELF section group which has other members which are not being discarded. This is deliberate. Discarding takes precedence over grouping. d4019 1 a4019 1 [ALIGN(SECTION_ALIGN) | ALIGN_WITH_INPUT] d4394 4 a4397 8 If an unmapped section matches any of the listed attributes other than '!', it will be placed in the memory region. The '!' attribute reverses the test for the characters that follow, so that an unmapped section will be placed in the memory region only if it does not match any of the attributes listed afterwards. Thus an attribute string of 'RW!X' will match any unmapped section that has either or both of the 'R' and 'W' attributes, but only as long as the section does not also have the 'X' attribute. d4813 1 a4813 1 It is possible to refer to target-specific constants via the use of the d4877 2 a4878 2 The command-line options '--orphan-handling' and '--unique' (*note Command-line Options: Options.) can be used to control which output d5508 1 a5508 1 option then the '--support-old-code' command-line switch should be given d5677 1 a5677 1 command-line option '--stub-group-size=N'. The placement is important d5727 3 a5729 3 '.gnu.sgstubs'. Its start address must be set, either with the command-line option '--section-start' or in a linker script, to indicate where to place these veneers in memory. d6270 2 a6271 2 *note Command-line Options: Options. for detailed description of the command-line options mentioned here. d6279 1 a6279 1 command-line option. d6286 2 a6287 2 functionality, which is controlled by the following command-line options: d6417 1 a6417 1 with the '--output-def ' command-line option. d6654 1 a6654 1 unless the '--export-all-symbols' command-line option is used. If, d6907 1 a6907 1 linker has command-line switches to allow users to throw it away. d7736 7 a7742 7 * -(: Options. (line 911) * --accept-unknown-input-arch: Options. (line 929) * --add-needed: Options. (line 956) * --add-stdcall-alias: Options. (line 1935) * --allow-multiple-definition: Options. (line 1257) * --allow-shlib-undefined: Options. (line 1263) * --as-needed: Options. (line 939) d7745 2 a7746 2 * --bank-window: Options. (line 2408) * --base-file: Options. (line 1940) a7747 1 * --branch-stub on C-SKY: Options. (line 2380) d7749 3 a7751 3 * --build-id: Options. (line 1897) * --build-id=STYLE: Options. (line 1897) * --check-sections: Options. (line 1034) d7754 6 a7759 7 * --compact-branches: Options. (line 2453) * --compress-debug-sections=none: Options. (line 1855) * --compress-debug-sections=zlib: Options. (line 1855) * --compress-debug-sections=zlib-gabi: Options. (line 1855) * --compress-debug-sections=zlib-gnu: Options. (line 1855) * --copy-dt-needed-entries: Options. (line 1046) * --cref: Options. (line 1066) d7761 5 a7765 5 * --default-imported-symver: Options. (line 1299) * --default-script=SCRIPT: Options. (line 595) * --default-symver: Options. (line 1295) * --defsym=SYMBOL=EXP: Options. (line 1103) * --demangle[=STYLE]: Options. (line 1115) d7767 7 a7773 7 * --disable-auto-image-base: Options. (line 2117) * --disable-auto-import: Options. (line 2256) * --disable-large-address-aware: Options. (line 2065) * --disable-long-section-names: Options. (line 1950) * --disable-multiple-abs-defs: Options. (line 1146) * --disable-new-dtags: Options. (line 1829) * --disable-runtime-pseudo-reloc: Options. (line 2269) d7775 5 a7779 5 * --disable-stdcall-fixup: Options. (line 1972) * --discard-all: Options. (line 680) * --discard-locals: Options. (line 684) * --dll: Options. (line 1945) * --dll-search-prefix: Options. (line 2123) d7781 11 a7791 11 * --dsbt-index: Options. (line 2367) * --dsbt-size: Options. (line 2362) * --dynamic-linker=FILE: Options. (line 1128) * --dynamic-list-cpp-new: Options. (line 1026) * --dynamic-list-cpp-typeinfo: Options. (line 1030) * --dynamic-list-data: Options. (line 1023) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 1010) * --dynamicbase: Options. (line 2310) * --eh-frame-hdr: Options. (line 1818) * --embedded-relocs: Options. (line 1141) * --emit-relocs: Options. (line 522) d7796 7 a7802 8 * --enable-auto-image-base: Options. (line 2108) * --enable-auto-import: Options. (line 2132) * --enable-extra-pe-debug: Options. (line 2274) * --enable-long-section-names: Options. (line 1950) * --enable-new-dtags: Options. (line 1829) * --enable-reloc-section: Options. (line 2350) * --enable-runtime-pseudo-reloc: Options. (line 2261) * --enable-stdcall-fixup: Options. (line 1972) d7804 2 a7805 2 * --error-unresolved-symbols: Options. (line 1754) * --exclude-all-symbols: Options. (line 2025) d7808 2 a7809 2 * --exclude-symbols: Options. (line 2019) * --export-all-symbols: Options. (line 1995) d7812 2 a7813 2 * --fatal-warnings: Options. (line 1150) * --file-alignment: Options. (line 2029) d7821 4 a7824 4 * --force-dynamic: Options. (line 531) * --force-exe-suffix: Options. (line 1155) * --force-group-allocation: Options. (line 1095) * --forceinteg: Options. (line 2316) d7827 3 a7829 3 * --gc-keep-exported: Options. (line 1200) * --gc-sections: Options. (line 1165) * --got: Options. (line 2420) d7832 6 a7837 6 * --hash-size=NUMBER: Options. (line 1839) * --hash-style=STYLE: Options. (line 1847) * --heap: Options. (line 2035) * --help: Options. (line 1228) * --high-entropy-va: Options. (line 2305) * --ignore-branch-isa: Options. (line 2441) d7839 1 a7839 1 * --image-base: Options. (line 2042) d7841 2 a7842 2 * --insert-timestamp: Options. (line 2339) * --insn32: Options. (line 2432) d7844 5 a7848 5 * --just-symbols=FILE: Options. (line 553) * --kill-at: Options. (line 2051) * --large-address-aware: Options. (line 2056) * --ld-generated-unwind-info: Options. (line 1824) * --leading-underscore: Options. (line 1989) d7853 3 a7855 3 * --major-image-version: Options. (line 2072) * --major-os-version: Options. (line 2077) * --major-subsystem-version: Options. (line 2081) d7857 3 a7859 3 * --minor-image-version: Options. (line 2086) * --minor-os-version: Options. (line 2091) * --minor-subsystem-version: Options. (line 2095) d7862 4 a7865 4 * --nmagic: Options. (line 448) * --no-accept-unknown-input-arch: Options. (line 929) * --no-add-needed: Options. (line 956) * --no-allow-shlib-undefined: Options. (line 1263) d7867 6 a7872 7 * --no-as-needed: Options. (line 939) * --no-bind: Options. (line 2330) * --no-check-sections: Options. (line 1034) * --no-compact-branches: Options. (line 2454) * --no-copy-dt-needed-entries: Options. (line 1046) * --no-define-common: Options. (line 1079) * --no-demangle: Options. (line 1115) d7874 2 a7875 2 * --no-dynamic-linker: Options. (line 1135) * --no-eh-frame-hdr: Options. (line 1818) d7878 1 a7878 1 * --no-fatal-warnings: Options. (line 1150) d7882 2 a7883 2 * --no-gc-sections: Options. (line 1165) * --no-ignore-branch-isa: Options. (line 2442) d7885 1 a7885 1 * --no-insn32: Options. (line 2433) d7887 4 a7890 4 * --no-isolation: Options. (line 2323) * --no-keep-memory: Options. (line 1240) * --no-leading-underscore: Options. (line 1989) * --no-merge-exidx-entries: Options. (line 2374) d7893 1 a7893 1 * --no-omagic: Options. (line 463) d7900 1 a7900 2 * --no-print-gc-sections: Options. (line 1191) * --no-print-map-discarded: Options. (line 443) d7902 2 a7903 2 * --no-seh: Options. (line 2326) * --no-strip-discarded: Options. (line 573) d7909 5 a7913 5 * --no-trampoline: Options. (line 2402) * --no-undefined: Options. (line 1247) * --no-undefined-version: Options. (line 1290) * --no-warn-mismatch: Options. (line 1303) * --no-warn-search-mismatch: Options. (line 1312) d7915 2 a7916 2 * --no-whole-archive: Options. (line 1316) * --noinhibit-exec: Options. (line 1320) d7918 8 a7925 8 * --nxcompat: Options. (line 2319) * --oformat=OUTPUT-FORMAT: Options. (line 1331) * --omagic: Options. (line 454) * --orphan-handling=MODE: Options. (line 639) * --out-implib: Options. (line 1344) * --output-def: Options. (line 2100) * --output=OUTPUT: Options. (line 469) * --pic-executable: Options. (line 1353) d7932 2 a7933 2 * --pop-state: Options. (line 518) * --print-gc-sections: Options. (line 1191) d7935 5 a7939 6 * --print-map-discarded: Options. (line 443) * --print-memory-usage: Options. (line 1216) * --print-output-format: Options. (line 1210) * --push-state: Options. (line 500) * --reduce-memory-overheads: Options. (line 1883) * --relax: Options. (line 1369) d7943 3 a7945 3 * --relocatable: Options. (line 535) * --require-defined=SYMBOL: Options. (line 621) * --retain-symbols-file=FILENAME: Options. (line 1395) d7948 1 a7948 1 * --script=SCRIPT: Options. (line 586) d7950 2 a7951 2 * --section-alignment: Options. (line 2279) * --section-start=SECTIONNAME=ORG: Options. (line 1568) d7953 7 a7959 7 * --sort-common: Options. (line 1500) * --sort-section=alignment: Options. (line 1515) * --sort-section=name: Options. (line 1511) * --spare-dynamic-tags: Options. (line 1519) * --split-by-file: Options. (line 1524) * --split-by-reloc: Options. (line 1529) * --stack: Options. (line 2285) d7961 4 a7964 4 * --stats: Options. (line 1542) * --strip-all: Options. (line 564) * --strip-debug: Options. (line 568) * --strip-discarded: Options. (line 573) a7965 1 * --stub-group-size on C-SKY: Options. (line 2387) d7968 1 a7968 1 * --subsystem: Options. (line 2292) d7970 2 a7971 2 * --sysroot=DIRECTORY: Options. (line 1546) * --target-help: Options. (line 1232) d7975 1 a7975 1 * --task-link: Options. (line 1551) d7978 7 a7984 7 * --trace: Options. (line 578) * --trace-symbol=SYMBOL: Options. (line 690) * --traditional-format: Options. (line 1556) * --tsaware: Options. (line 2336) * --undefined=SYMBOL: Options. (line 608) * --unique[=SECTION]: Options. (line 665) * --unresolved-symbols: Options. (line 1598) d7987 3 a7989 3 * --verbose[=NUMBER]: Options. (line 1627) * --version: Options. (line 674) * --version-script=VERSION-SCRIPTFILE: Options. (line 1635) d7991 11 a8001 11 * --warn-alternate-em: Options. (line 1746) * --warn-common: Options. (line 1645) * --warn-constructors: Options. (line 1713) * --warn-multiple-gp: Options. (line 1718) * --warn-once: Options. (line 1732) * --warn-section-align: Options. (line 1736) * --warn-shared-textrel: Options. (line 1743) * --warn-unresolved-symbols: Options. (line 1749) * --wdmdriver: Options. (line 2333) * --whole-archive: Options. (line 1758) * --wrap=SYMBOL: Options. (line 1772) d8003 1 a8003 1 * -assert KEYWORD: Options. (line 963) d8005 6 a8010 6 * -Bdynamic: Options. (line 966) * -Bgroup: Options. (line 976) * -Bshareable: Options. (line 1493) * -Bstatic: Options. (line 983) * -Bsymbolic: Options. (line 997) * -Bsymbolic-functions: Options. (line 1004) d8012 1 a8012 1 * -call_shared: Options. (line 966) d8015 1 a8015 1 * -dn: Options. (line 983) d8017 2 a8018 2 * -dT SCRIPT: Options. (line 595) * -dy: Options. (line 966) d8030 1 a8030 1 * -IFILE: Options. (line 1128) d8036 8 a8043 8 * -Map=MAPFILE: Options. (line 1236) * -n: Options. (line 448) * -N: Options. (line 454) * -no-relax: Options. (line 1369) * -non_shared: Options. (line 983) * -nostdlib: Options. (line 1326) * -O LEVEL: Options. (line 475) * -o OUTPUT: Options. (line 469) d8045 12 a8056 12 * -pie: Options. (line 1353) * -plugin NAME: Options. (line 485) * -q: Options. (line 522) * -qmagic: Options. (line 1363) * -Qy: Options. (line 1366) * -r: Options. (line 535) * -R FILE: Options. (line 553) * -rpath-link=DIR: Options. (line 1436) * -rpath=DIR: Options. (line 1409) * -s: Options. (line 564) * -S: Options. (line 568) * -shared: Options. (line 1493) d8058 21 a8078 21 * -static: Options. (line 983) * -t: Options. (line 578) * -T SCRIPT: Options. (line 586) * -Tbss=ORG: Options. (line 1577) * -Tdata=ORG: Options. (line 1577) * -Tldata-segment=ORG: Options. (line 1593) * -Trodata-segment=ORG: Options. (line 1587) * -Ttext-segment=ORG: Options. (line 1583) * -Ttext=ORG: Options. (line 1577) * -u SYMBOL: Options. (line 608) * -Ur: Options. (line 629) * -v: Options. (line 674) * -V: Options. (line 674) * -x: Options. (line 680) * -X: Options. (line 684) * -Y PATH: Options. (line 699) * -y SYMBOL: Options. (line 690) * -z defs: Options. (line 1247) * -z KEYWORD: Options. (line 703) * -z muldefs: Options. (line 1257) * -z undefs: Options. (line 1247) d8144 2 a8145 2 * combining symbols, warnings on: Options. (line 1645) * COMDAT: Options. (line 1095) d8151 1 a8151 1 * common allocation <1>: Options. (line 1079) d8164 1 a8164 1 * constructors: Options. (line 629) d8175 1 a8175 1 * cross reference table: Options. (line 1066) d8187 2 a8188 2 * dbx: Options. (line 1561) * DEF files, creating: Options. (line 2100) d8191 1 a8191 1 * defined symbol: Options. (line 621) d8193 1 a8193 1 * deleting local symbols: Options. (line 680) d8195 1 a8195 1 * demangling, from command line: Options. (line 1115) d8200 4 a8203 4 * DLLs, creating: Options. (line 1995) * DLLs, creating <1>: Options. (line 2100) * DLLs, creating <2>: Options. (line 2108) * DLLs, linking to: Options. (line 2123) d8207 1 a8207 1 * dynamic linker, from command line: Options. (line 1128) d8252 1 a8252 1 * forcing the creation of dynamic sections: Options. (line 531) d8255 3 a8257 3 * garbage collection: Options. (line 1165) * garbage collection <1>: Options. (line 1191) * garbage collection <2>: Options. (line 1200) d8259 1 a8259 1 * generating optimized output: Options. (line 475) d8262 1 a8262 1 * group allocation in linker script: Options. (line 1095) d8267 1 a8267 1 * groups of archives: Options. (line 911) d8270 2 a8271 2 * heap size: Options. (line 2035) * help: Options. (line 1228) d8278 1 a8278 1 * image base: Options. (line 2042) d8284 1 a8284 1 * including an entire archive: Options. (line 1758) d8294 1 a8294 1 * input files, displaying: Options. (line 578) d8317 1 a8317 1 * l =: MEMORY. (line 72) d8320 1 a8320 1 * ldata segment origin, cmd line: Options. (line 1594) d8324 2 a8325 2 * len =: MEMORY. (line 72) * LENGTH =: MEMORY. (line 72) d8329 1 a8329 2 * link map discarded: Options. (line 443) * link-time runtime library search path: Options. (line 1436) d8346 1 a8346 1 * local symbols, deleting: Options. (line 684) d8364 2 a8365 2 * memory usage: Options. (line 1216) * memory usage <1>: Options. (line 1240) d8378 1 a8378 1 * naming the output file: Options. (line 469) d8381 1 a8381 1 * NMAGIC: Options. (line 448) d8391 1 a8391 1 * o =: MEMORY. (line 67) d8397 2 a8398 2 * OMAGIC: Options. (line 454) * OMAGIC <1>: Options. (line 463) d8407 2 a8408 2 * org =: MEMORY. (line 67) * ORIGIN =: MEMORY. (line 67) d8411 2 a8412 2 * orphan sections: Options. (line 639) * output file after errors: Options. (line 1320) d8415 1 a8415 1 * output format: Options. (line 1210) d8430 1 a8430 1 * partial link: Options. (line 535) d8436 2 a8437 2 * pop state governing input file handling: Options. (line 518) * position independent executables: Options. (line 1355) d8473 1 a8473 1 * push state governing input file handling: Options. (line 500) d8477 2 a8478 2 * read-only text: Options. (line 448) * read/write from cmd line: Options. (line 454) d8484 1 a8484 1 * relaxing addressing modes: Options. (line 1369) d8490 1 a8490 1 * relocatable output: Options. (line 535) d8495 3 a8497 3 * retain relocations in final executable: Options. (line 522) * retaining specified symbols: Options. (line 1395) * rodata segment origin, cmd line: Options. (line 1588) d8502 1 a8502 1 * runtime library search path: Options. (line 1409) d8509 2 a8510 2 * script files: Options. (line 586) * script files <1>: Options. (line 595) d8520 1 a8520 1 * section alignment, warnings on: Options. (line 1736) d8525 1 a8525 1 * section groups: Options. (line 1095) d8542 1 a8542 1 * sections, orphan: Options. (line 639) d8544 1 a8544 1 * segment origins, cmd line: Options. (line 1577) d8547 1 a8547 1 * shared libraries: Options. (line 1495) d8555 1 a8555 1 (line 64) d8563 1 a8563 1 (line 100) d8574 1 a8574 1 * stack size: Options. (line 2285) d8579 3 a8581 3 * strip all symbols: Options. (line 564) * strip debugger symbols: Options. (line 568) * stripping all but some symbols: Options. (line 1395) d8589 1 a8589 1 * symbol tracing: Options. (line 690) d8591 1 a8591 1 * symbol-only input: Options. (line 553) d8593 1 a8593 1 * symbols, from command line: Options. (line 1103) d8595 3 a8597 3 * symbols, require defined: Options. (line 621) * symbols, retaining selectively: Options. (line 1395) * synthesizing linker: Options. (line 1369) d8602 1 a8602 1 * text segment origin, cmd line: Options. (line 1584) d8605 1 a8605 1 * traditional format: Options. (line 1556) d8609 1 a8609 1 * undefined symbol: Options. (line 608) d8612 1 a8612 1 * undefined symbols, warnings on: Options. (line 1732) d8617 1 a8617 1 * usage: Options. (line 1228) d8623 2 a8624 2 * verbose[=NUMBER]: Options. (line 1627) * version: Options. (line 674) d8626 1 a8626 1 * version script, symbol versions: Options. (line 1635) d8630 3 a8632 3 * warnings, on combining symbols: Options. (line 1645) * warnings, on section alignment: Options. (line 1736) * warnings, on undefined symbols: Options. (line 1732) d8643 86 a8728 86 Node: Top703 Node: Overview1484 Node: Invocation2600 Node: Options3008 Node: Environment115036 Node: Scripts116797 Node: Basic Script Concepts118531 Node: Script Format121239 Node: Simple Example122102 Node: Simple Commands125196 Node: Entry Point125701 Node: File Commands126630 Node: Format Commands130804 Node: REGION_ALIAS132760 Node: Miscellaneous Commands137587 Node: Assignments143418 Node: Simple Assignments143929 Node: HIDDEN145660 Node: PROVIDE146287 Node: PROVIDE_HIDDEN147808 Node: Source Code Reference148052 Node: SECTIONS151969 Node: Output Section Description153857 Node: Output Section Name155098 Node: Output Section Address155975 Node: Input Section158208 Node: Input Section Basics159009 Node: Input Section Wildcards164027 Node: Input Section Common169322 Node: Input Section Keep170804 Node: Input Section Example171294 Node: Output Section Data172705 Node: Output Section Keywords175484 Node: Output Section Discarding179051 Node: Output Section Attributes180781 Node: Output Section Type181900 Node: Output Section LMA182970 Node: Forced Output Alignment186041 Node: Forced Input Alignment186470 Node: Output Section Constraint186858 Node: Output Section Region187286 Node: Output Section Phdr187719 Node: Output Section Fill188383 Node: Overlay Description189525 Node: MEMORY193970 Node: PHDRS198576 Node: VERSION203902 Node: Expressions211993 Node: Constants212922 Node: Symbolic Constants213796 Node: Symbols214347 Node: Orphan Sections215094 Node: Location Counter216679 Node: Operators221113 Node: Evaluation222035 Node: Expression Section223399 Node: Builtin Functions227369 Node: Implicit Linker Scripts235720 Node: Machine Dependent236495 Node: H8/300237583 Node: M68HC11/68HC12239656 Node: ARM241103 Node: HPPA ELF32253350 Node: M68K254973 Node: MIPS255882 Node: MMIX256998 Node: MSP430258163 Node: NDS32260076 Node: Nios II261040 Node: PowerPC ELF32262356 Node: PowerPC64 ELF64265187 Node: S/390 ELF273588 Node: SPU ELF273935 Node: TI COFF276563 Node: WIN32277089 Node: Xtensa297236 Node: BFD300202 Node: BFD outline301660 Node: BFD information loss302948 Node: Canonical format305474 Node: Reporting Bugs309802 Node: Bug Criteria310496 Node: Bug Reporting311195 Node: MRI318233 Node: GNU Free Documentation License322704 Node: LD Index347841 @ 1.1.1.10 log @Update binutils from 2.34 to 2.39 2022-07-08 Nick Clifton * 2.39 branch created. 2022-07-04 Nick Clifton * libiberty: Synchronize with GCC. Bring in: 2022-07-01 Nick Clifton PR demangler/105039 * rust-demangle.c (demangle_const): Add recursion limit. 2022-06-26 Simon Marchi * configure.ac: Add AC_CONFIG_MACRO_DIRS call. * configure: Re-generate. 2022-04-12 Nick Clifton * zlib: Rebase to the 1.2.12 release. 2022-04-08 Simon Marchi * configure.ac: Add AC_SUBST(PKG_CONFIG_PATH). * configure: Re-generate. * Makefile.tpl (HOST_EXPORTS): Pass PKG_CONFIG_PATH. (PKG_CONFIG_PATH): New. * Makefile.in: Re-generate. 2022-03-15 Jose E. Marchesi * gprofng/src/gp-collect-app.cc (collect::check_args): Use fallthrough comment instead of attribute. 2022-03-11 Vladimir Mezentsev * Makefile.def: Add gprofng module. * configure.ac: Add --enable-gprofng option. * src-release.sh: Add gprofng. * Makefile.in: Regenerate. * configure: Regenerate. * gprofng: New directory. 2022-01-22 Nick Clifton * 2.38 release branch created. 2022-01-17 Nick Clifton Update config.[guess|sub] from upstream: 2022-01-09 Idan Horowitz config.guess: recognize SerenityOS * config.guess (*:SerenityOS:*:*): Recognize. (timestamp): Update. 2022-01-03 Bernhard Voelker Fix GPLv3 license headers to use a comma instead of semicolon See: https://www.gnu.org/licenses/gpl-3.0.html#howto Update license headers automatically using the following script: $ git grep -l 'Foundation; either version 3' \ | xargs sed -i '/Foundation; either version 3/ s/n; e/n, e/' * config.guess: Adjust via the above command. (timestamp): Update. * config.sub: Likewise. * doc/config.guess.1: Regenerate. * doc/config.sub.1: Likewise. 2022-01-01 Dmitry V. Levin Update copyright years * config.guess: Update copyright years. * config.sub: Likewise. 2021-12-25 Dmitry V. Levin config.sub: alias armh to armv7l ALT uses armh as an alias for armv7l-alt-linux-gnueabihf since 2012. * config.sub (armh-unknown|armh-alt): Set cpu, vendor, and basic_os. (timestamp): Update. 2021-12-24 Dmitry V. Levin config.sub: alias aarch64le to aarch64 Apparently, QNX reports aarch64 as aarch64le on little-endian machines. * config.sub (aarch64le-*): Set cpu to aarch64. (timestamp): Update. 2021-12-13 Dmitry V. Levin config.sub: fix typo in timestamp * config.sub: Fix timestamp. 2021-11-30 Andreas F. Borchert config.guess: x86_64-pc-solaris2.11 is not properly recognized config.guess guesses Solaris 11 to run on a 32-bit platform despite Solaris 11 no longer supporting any 32-bit platform. See the following code at lines 434 to 445: | SUN_ARCH=i386 | # If there is a compiler, see if it is configured for 64-bit objects. | # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. | # This test works for both compilers. | if test "$CC_FOR_BUILD" != no_compiler_found; then | if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ | grep IS_64BIT_ARCH >/dev/null | then | SUN_ARCH=x86_64 | fi | fi If "cc" is installed, i.e. the Oracle Studio compiler, this one is chosen for $CC_FOR_BUILD. This compiler, the gcc provided by Oracle and also gcc bootstrapped from sources on that platform with a default configuration will by default generate 32-bit binaries -- even on a 64-bit platform. And __amd64 will not be defined for compilations targeting a 32-bit platform. This is different from the corresponding behaviour on GNU/Linux systems where the local platform is targeted by default. Thus, as long as you do not add "-m64" or if you have a custom-built gcc which defaults to 64 bit, you will get 32-bit binaries on Solaris despite living on a 64-bit platform. * config.guess (i86pc:SunOS:5.*:* || i86xen:SunOS:5.*:*): Adapt the test by adding the "-m64" flag. This will work properly for Solaris 10 as well (the last Solaris release that supported x86 32-bit platforms). 2021-10-27 Jordi Sanfeliu Recognize Fiwix $ make check cd testsuite && bash config-guess.sh && rm uname PASS: config.guess checks (137 tests) cd testsuite && bash config-sub.sh PASS: config.sub checks (882 tests) PASS: config.sub idempotency checks (819 tests) PASS: config.sub canonicalise each config.guess testcase (137 tests) * config.guess (i*86:Fiwix:*:*): Recognize. * config.sub (fiwix*): Likewise. 2021-10-18 Kinshuk Dua config.sub: Fix typo in comment Fixes: 5e531d391852a54e7fab2d8ff55625fca514b305 2021-08-14 Nick Bowler config.sub: work around command assignment bug in some shells When combining variable assignments with a shell command, some older shells (notably heirloom-sh and presumably also Solaris 10 /bin/sh) have a bug which causes the assignment to alter the current execution environment whenever the command is a shell built-in. For example: % dash -c 'x=good; x=bad echo >/dev/null; echo $x' good % jsh -c 'x=good; x=bad echo >/dev/null; echo $x' bad The config.sub script contains a few commands of the form: IFS=- read ... which triggers this bug, causing the IFS assignment to persist for the remainder of the script. This can cause misbehaviour in certain cases, for example: % jsh config.sub i386-linux-gnu config.sub: test: unknown operator gnu % jsh config.sub i386-gnu/linux sed: can't read s|gnu/linux|gnu|: No such file or directory Invalid configuration `i386-gnu/linux': OS `' not recognized * config.sub: Save and restore IFS explicitly to avoid shell bugs. * doc/config.sub.1: Regenerate. 2021-08-04 Jeremy Soller config.sub: add Linux Relibc Target $ make check cd testsuite && bash config-guess.sh && rm uname PASS: config.guess checks (136 tests) cd testsuite && bash config-sub.sh PASS: config.sub checks (881 tests) PASS: config.sub idempotency checks (818 tests) PASS: config.sub canonicalise each config.guess testcase (136 tests) * config.sub (relibc*): Recognize. * doc/config.sub.1: Regenerate. * testsuite/config-sub.data (x86_64-linux-relibc): New test. 2021-07-06 Stephanos Ioannidis config.sub: add Zephyr RTOS support This adds the Zephyr RTOS targets in preparation for implementing the Zephyr RTOS-specific toolchain support. $ make check cd testsuite && bash config-guess.sh && rm uname PASS: config.guess checks (136 tests) cd testsuite && bash config-sub.sh PASS: config.sub checks (880 tests) PASS: config.sub idempotency checks (817 tests) PASS: config.sub canonicalise each config.guess testcase (136 tests) * config.sub (zephyr*): Recognize. * doc/config.sub.1: Regenerate. * testsuite/config-sub.data: Add testcases for *-zephyr. 2021-07-03 Ozkan Sezer config.sub: disable shellcheck SC2006 / SC2268 warnings This is in line with the recent config.guess change in commit 12fcf67c9108f4c4b581eaa302088782f0ee40ea * config.sub (shellcheck disable): Add SC2006,SC2268. Suggested-by: Jacob Bachmeyer 2021-07-03 Ozkan Sezer config.sub: normalize the quoting in the `echo FOO | sed ...` Some cases quote the argument to echo and some do not. At runtime it probably does not matter because the substituted values will never contain whitespace, but quoting them all would make shellcheck more useful. * config.sub: Consistently quote the argument of echo. * doc/config.sub.1: Regenerate. Suggested-by: Jacob Bachmeyer 2021-07-02 Ozkan Sezer config.sub: replace POSIX $( ) with classic ` ` throughout This is in line with the recent config.guess change in commit d70c4fa934de164178054c3a60aaa0024ed07c91. The patch was generated using patch-6.gawk script introduced in that commit. * config.sub: Revert POSIX command substitutions to classic form. 2021-06-04 Vineet Gupta Recognize arc32 This is the 32-bit variant of ARCv3 ISA (which is not compatible with the 32-bit ARCv2 ISA) | make check | cd testsuite && bash config-guess.sh && rm uname | PASS: config.guess checks (136 tests) | cd testsuite && bash config-sub.sh | PASS: config.sub checks (864 tests) | PASS: config.sub idempotency checks (801 tests) | PASS: config.sub canonicalise each config.guess testcase (136 tests) * config.guess (arc32:Linux:*:*): Recognize. * config.sub (arc32): Likewise. 2021-05-27 Jacob Bachmeyer Remove automatic patch generators These tools have served their purposes and need not be kept outside of the repository history any longer. This patch as a diff also collects the contents of the various tools in one convenient place. * patch-1.gawk: Remove. * patch-3.gawk: Likewise. * patch-6.gawk: Likewise. 2021-05-26 Jacob Bachmeyer config.guess: manual fixups after previous automatic patch The tool could not handle command substitutions that span lines, but fortunately there were only two such substitutions in the script. The test for which universe is active on Pyramid is rewritten into a case block because it was the only use of a command substitution as an argument to the test command, which would require quoting. * config.guess: Rewrite "if" for Pyramid systems to "case". 2021-05-26 Jacob Bachmeyer config.guess: replace POSIX $( ) with classic ` ` throughout The previous replacement of backticks with POSIX command substitutions was ill-considered and illogical: this script recognizes many archaic machine types that probably never had POSIX shells, therefore it needs to be able to run successfully under pre-POSIX shells. This patch was generated using the included GNU Awk program. * config.guess: Revert POSIX command substitutions to classic form. * patch-6.gawk: Store the tool that produced the automated patch. 2021-05-26 Jacob Bachmeyer config.guess: manual fixup after previous automated patches This patch provides the special handling for the GNU system. As these were two small and unique edits, they were not included in the scripts. This patch also cleans up other minor issues that must be addressed before reverting to classic command substitutions and updates "shellcheck" directives to account for changes in this script and the change in "shellcheck" towards reporting individual portability issues. 2021-05-26 Jacob Bachmeyer config.guess: automatic fixups after previous automated patch This patch was generated using the following command: sed -i config.guess \ -e '/="[^"]\+"\(-\|$\)/s/="\([^"([:space:])]\+\)"/=\1/' \ -e '/="[^"]\+"[[:alnum:]]/s/="\$\([^([:space:])]\+\)"/=${\1}/' \ -e \ '/\$(echo[^|]\+|/s/\([^[:space:]]\)[[:space:]]*|[[:space:]]*sed/\1 | sed/g' * config.guess: Remove unneeded quotes in other variable assignments, standardize spacing for "echo ... | sed" substitutions. 2021-05-26 Jacob Bachmeyer config.guess: remove unneeded quotes and factor command substitutions This is further cleanup and simplifies some constructs that can confuse Emacs' syntax highlighting while generally reducing required quoting. This patch was generated using the included GNU Awk program. * config.guess: Remove unneeded variable quotes and factor out command substitutions when setting GUESS. * patch-3.gawk: Store the tool that produced the automated patch. 2021-05-25 Jacob Bachmeyer config.guess: manual fixups after previous automatic patch * config.guess: Adjust a few "leftover" cases that the tool could not easily recognize and fixes comment indentation in a few other special cases. 2021-05-25 Jacob Bachmeyer config.guess: use intermediate variable with uname results This will allow quoting to be significantly simplified in another pass through the file. This patch was generated using the included GNU Awk program. * config.guess: Use GUESS variable to hold results of uname analysis. * patch-1.gawk: Store the tool that produced the automated patch. 2021-05-25 Jacob Bachmeyer config.guess: introduce intermediate variable with uname results This will allow quoting to be significantly simplified in another pass through the file. * config.guess: Introduce GUESS variable to hold results of uname analysis. 2021-05-24 Dmitry V. Levin config.guess: fix shellcheck warning SC2154 While, according to Plan 9 documentation, the environment variable $cputype is set to the name of the kernel's CPU's architecture, shellcheck warns that cputype is referenced but not assigned. Be on the safe side and do not use cputype if it is not defined or empty. * config.guess (*:Plan9:*:*): Fix shellcheck warning SC2154. 2021-05-24 Dmitry V. Levin config.guess: remove redundant quotes in case commands According to the GNU Autoconf Portable Shell Programming manual, the Bourne shell does not systematically split variables and back-quoted expressions, in particular on the right-hand side of assignments and in the argument of 'case'. The change is made automatically using the following command: $ sed -E -i 's/(\)/\1\2\3/' config.guess * config.guess: Simplify case commands by removing quotes around the argument. Suggested-by: Jacob Bachmeyer 2021-05-24 Dmitry V. Levin config.guess: simplify exit status workaround on alphaev67-dec-osf5.1 Commit 29865ea8a5622cdd80b7a69a0afa78004b4cd311 introduced an exit trap reset before exiting to avoid a spurious non-zero exit status on alphaev67-dec-osf5.1. Simplify that code a bit by moving the exit trap reset around. * config.guess (alpha:OSF1:*:*): Reset exit trap earlier. * doc/config.guess.1: Regenerate. 2021-10-29 Eli Zaretskii * gdb/doc/gdb.texinfo (Command Options): (Data): Document '-memory-tag-violations'. Update the example. 2021-09-28 Andrew Burgess * src-release.sh (GDB_SUPPPORT_DIRS): Add libbacktrace. 2021-09-27 Nick Alcock PR libctf/27967 * libtool.m4 (LT_PATH_NM): Try BSDization flags with a user-provided NM, if there is one. Run nm on itself, not on /dev/null, to avoid errors from nms that refuse to work on non-regular files. Remove other workarounds for this problem. Strip out blank lines from the nm output. 2021-09-27 Nick Alcock PR libctf/27967 * libtool.m4 (lt_cv_sys_global_symbol_pipe): Augment symcode for Solaris 11. 2021-07-03 Nick Clifton * 2.37 release branch created. 2021-07-03 Nick Clifton * libiberty: Sync with gcc. Bring in: 2021-06-30 Gerald Pfeifer * make-temp-file.c (usrtmp): Remove. (choose_tmpdir): Remove use of usrtmp. 2021-06-28 Indu Bhagat * simple-object.c (handle_lto_debug_sections): Copy over .BTF section. 2021-06-28 Indu Bhagat David Faust Jose E. Marchesi Weimin Pan * simple-object.c (handle_lto_debug_sections): Copy over .ctf sections. 2021-06-05 John David Anglin PR target/100734 * configure.ac: Use libiberty snprintf and vsnprintf on hppa*-*-hpux*. * configure: Regenerate. 2021-05-06 Tom Tromey * hashtab.c (htab_eq_string): New function. 2021-05-04 Eric Botcazou * configure.ac: Make test for variables more robust. * configure: Regenerate. 2021-05-03 H.J. Lu PR bootstrap/99703 * configure: Regenerated. 2021-04-21 Andreas Schwab PR demangler/100177 * rust-demangle.c (demangle_const_char): Properly print the character value. 2021-03-31 Patrick Palka PR c++/88115 * cp-demangle.c (d_dump, d_make_comp, d_expression_1) (d_count_templates_scopes): Handle DEMANGLE_COMPONENT_VENDOR_EXPR. (d_print_comp_inner): Likewise. : Revert r11-4926 change. : Likewise. * testsuite/demangle-expected: Adjust __alignof__ tests. 2021-03-16 Nick Clifton * sha1.c (sha1_process_bytes): Use memmove in place of memcpy. 2021-02-20 Mike Frysinger * Makefile.in (ACLOCAL, ACLOCAL_AMFLAGS, $(srcdir)/aclocal.m4): Define. (configure_deps): Rename to ... (aclocal_deps): ... this. Replace aclocal.m4 with acinclude.m4. ($(srcdir)/configure): Replace $(configure_deps) with $(srcdir)/aclocal.m4. * aclocal.m4: Move libiberty macros to acinclude.m4, then regenerate. * acinclude.m4: New file. * configure: Regenerate. 2021-02-19 Ayush Mittal * argv.c (expandargv): free allocated buffer if read fails. 2021-02-01 Martin Sebor * dyn-string.c (dyn_string_insert_cstr): Use memcpy instead of strncpy to avoid -Wstringop-truncation. 2021-05-29 Mike Frysinger * configure.ac: Add gnulib to configdirs for sim. * configure: Regenerate. 2021-05-24 Maciej W. Rozycki * MAINTAINERS: Update path to readline config.{sub,guess} files. 2021-05-24 Maciej W. Rozycki * config.guess: Import from upstream. * config.sub: Likewise. 2021-05-18 Mike Frysinger * Makefile.def: Add configure-sim dependency on all-gnulib. * Makefile.in: Regenerated. 2021-05-04 Nick Clifton * configure.ac (AC_PROG_CC): Replace with AC_PROG_CC_C99. * configure: Regenerate. 2021-03-18 Nick Alcock PR libctf/27482 * Makefile.def: Add install-bfd dependencies for install-libctf and install-ld, and install-strip-bfd dependencies for install-strip-libctf and install-strip-ld; move the install-ld dependency on install-libctf to join it. * Makefile.in: Regenerated. 2021-03-12 Mike Frysinger * Makefile.def: Remove all-sim dependency on configure-gdb. * Makefile.in: Regenerated. 2021-02-28 H.J. Lu PR binutils/26766 * Makefile.tpl (PGO_BUILD_TRAINING_FLAGS_TO_PASS): Add PGO_BUILD_TRAINING=yes. (PGO_BUILD_TRAINING_MFLAGS): New. (all): Pass $(PGO_BUILD_TRAINING_MFLAGS) to the PGO build. 2021-02-09 Alan Modra * configure.ac: Delete arm*-*-symbianelf* entry. * configure: Regenerate. 2021-01-26 Nick Alcock * Makefile.def: Add install-libctf dependency to install-ld. * Makefile.in: Regenerated. 2021-01-12 Mike Frysinger * src-release.sh (do_proto_toplev): Rewrite indentation. 2021-01-11 H.J. Lu PR binutils/26766 * configure.ac: * configure: Regenerated. 2021-01-11 H.J. Lu PR ld/27173 * configure: Regenerated. * libtool.m4 (_LT_CMD_OLD_ARCHIVE): Check if AR works with --plugin and rc before enabling --plugin. 2021-01-09 H.J. Lu PR binutils/26766 * Makefile.tpl (BUILD_CFLAGS): New. (CFLAGS): Append $(BUILD_CFLAGS). (CXXFLAGS): Likewise. (PGO_BUILD_GEN_FLAGS_TO_PASS): New. (PGO_BUILD_TRAINING_CFLAGS): Likewise. (PGO_BUILD_TRAINING_CXXFLAGS): Likewise. (PGO_BUILD_TRAINING_FLAGS_TO_PASS): Likewise. (PGO_BUILD_TRAINING_MFLAGS): Likewise. (PGO_BUILD_USE_FLAGS_TO_PASS): Likewise. (PGO-TRAINING-TARGETS): Likewise. (PGO_BUILD_TRAINING): Likewise. (all): Add '+' to the command line for recursive make. Support the PGO build. * configure.ac: Add --enable-pgo-build[=lto]. AC_SUBST PGO_BUILD_GEN_CFLAGS, PGO_BUILD_USE_CFLAGS and PGO_BUILD_LTO_CFLAGS. Enable the PGO build in Makefile. * Makefile.in: Regenerated. * configure: Likewise. 2021-01-09 H.J. Lu * Makefile.tpl (AR): Add @@AR_PLUGIN_OPTION@@ (RANLIB): Add @@RANLIB_PLUGIN_OPTION@@. * configure.ac: Include config/gcc-plugin.m4. AC_SUBST AR_PLUGIN_OPTION and RANLIB_PLUGIN_OPTION. * libtool.m4 (_LT_CMD_OLD_ARCHIVE): Pass --plugin to AR and RANLIB if possible. * Makefile.in: Regenerated. * configure: Likewise. 2021-01-09 Nick Clifton * 2.36 release branch crated. 2021-01-07 Samuel Thibault * libtool.m4: Match gnu* along with other GNU systems. 2021-01-07 Alan Modra * config.sub: Accept OS of eabi* and gnueabi*. 2021-01-05 Nick Alcock * Makefile.def (libctf): No longer no_check. Checking depends on all-ld. * Makefile.in: Regenerated. 2021-01-05 Nick Clifton * libiberty: Sync with gcc. Bring in: 2021-01-04 Martin Liska * strverscmp.c: Convert to utf8 from iso8859. 2020-12-22 Jason Merrill PR c++/67343 * cp-demangle.h (struct d_info): Add unresolved_name_state. * cp-demangle.c (d_prefix): Add subst parm. (d_nested_name): Pass it. (d_unresolved_name): Split out from... (d_expression_1): ...here. (d_demangle_callback): Maybe retry with old sr mangling. * testsuite/demangle-expected: Add test. 2020-12-21 Jason Merrill * cp-demangle.c (d_expression_1): Recognize qualified-id on RHS of dt/pt. * testsuite/demangle-expected: Add test. 2020-12-21 Jason Merrill * cp-demangle.c (d_unqualified_name): Clear is_expression. * testsuite/demangle-expected: Add tests. 2020-11-25 Matthew Malcomson * configure: Regenerate. * configure.ac: Avoid using sanitizer. 2020-11-13 Eduard-Mihai Burtescu * rust-demangle.c (struct rust_demangler): Add skipping_printing and bound_lifetime_depth fields. (eat): Add (v0-only). (parse_integer_62): Add (v0-only). (parse_opt_integer_62): Add (v0-only). (parse_disambiguator): Add (v0-only). (struct rust_mangled_ident): Add punycode{,_len} fields. (parse_ident): Support v0 identifiers. (print_str): Respect skipping_printing. (print_uint64): Add (v0-only). (print_uint64_hex): Add (v0-only). (print_ident): Respect skipping_printing, Support v0 identifiers. (print_lifetime_from_index): Add (v0-only). (demangle_binder): Add (v0-only). (demangle_path): Add (v0-only). (demangle_generic_arg): Add (v0-only). (demangle_type): Add (v0-only). (demangle_path_maybe_open_generics): Add (v0-only). (demangle_dyn_trait): Add (v0-only). (demangle_const): Add (v0-only). (demangle_const_uint): Add (v0-only). (basic_type): Add (v0-only). (rust_demangle_callback): Support v0 symbols. * testsuite/rust-demangle-expected: Add v0 testcases. 2020-11-13 Seija Kijin * strstr.c (strstr): Make implementation ANSI/POSIX compliant. 2020-11-11 Patrick Palka PR c++/88115 * cp-demangle.c (d_print_comp_inner) : Don't print the "operator " prefix for __alignof__. : Always print parens around the operand of __alignof__. * testsuite/demangle-expected: Test demangling for __alignof__. 2020-11-09 Christophe Lyon * pex-win32.c (pex_win32_exec_child): Initialize orig_err. 2020-10-06 Martin Liska PR lto/97290 * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): Use sh_link of a .symtab_shndx section. 2021-01-05 Alan Modra * config.guess: Import from upstream. * config.sub: Likewise. 2020-12-16 Martin Liska Tom de Vries * gdb/debuginfod-support.c (struct user_data): Remove has_printed field. Add meter field. (progressfn): Print progress using meter. 2020-12-02 Enze Li * .gitignore: Add gnu global outputs. 2020-12-02 Simon Marchi * .gitignore: Sync with gcc. 2020-10-26 Andreas Rammhold * src-release.sh: Use sha256sum instead of md5sum. 2020-10-14 Andrew Burgess * Makefile.in: Rebuild. * Makefile.def: Make distclean-gnulib depend on distclean-gdb and distclean-gdbserver. 2020-07-24 Aaron Merey * configure: Rebuild. * configure.ac: Remove AC_DEBUGINFOD. 2020-07-04 Nick Clifton Binutils 2.35 branch created. 2020-04-21 Stephen Casner PR 25830 * configure.ac (noconfigdirs): Exclude gdb & gprof for pdp11. * configure: Rebuild. 2020-03-12 Tom Tromey * Makefile.in: Rebuild. * Makefile.def (gdbserver): Depend on gdbsupport. 2020-03-12 Tom Tromey * Makefile.in: Rebuild. * Makefile.def (gdbsupport): Don't depend on bfd. 2020-03-12 Tom Tromey * Makefile.in: Rebuild. * Makefile.def (gdbsupport): Depend on intl. 2020-02-17 Tom Tromey * configure: Rebuild. * configure.ac (configdirs): Add gnulib and gdbsupport when building gdbserver. 2020-02-14 Tom Tromey * Makefile.in: Rebuild. * Makefile.def: Make gdbserver require gnulib and libiberty. 2020-02-07 Tom Tromey Pedro Alves * src-release.sh (GDB_SUPPORT_DIRS): Add gdbserver. * gdbserver: New directory, moved from gdb/gdbserver. * configure.ac (host_tools): Add gdbserver. Only build gdbserver on certain systems. * Makefile.in, configure: Rebuild. * Makefile.def (host_modules, dependencies): Add gdbserver. * MAINTAINERS: Add gdbserver. 2020-01-28 Sergio Durigan Junior * src-release.sh (getver): Look for gdbsupport's create-version.sh script at the current directory if tool is "gdb". 2020-01-19 Simon Marchi * remote-sim.c (gdbsim_target::wait): Return sim_data->remote_sim_ptid instead of inferior_ptid. @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 6.8 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.39. d5 1 a5 1 Copyright (C) 1991-2022 Free Software Foundation, Inc. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.39. a34 1 * Plugins:: Linker Plugins a257 38 '--enable-non-contiguous-regions' This option avoids generating an error if an input section does not fit a matching output section. The linker tries to allocate the input section to subseque nt matching output sections, and generates an error only if no output section is large enough. This is useful when several non-contiguous memory regions are available and the input section does not require a particular one. The order in which input sections are evaluated does not change, for instance: MEMORY { MEM1 (rwx) : ORIGIN : 0x1000, LENGTH = 0x14 MEM2 (rwx) : ORIGIN : 0x1000, LENGTH = 0x40 MEM3 (rwx) : ORIGIN : 0x2000, LENGTH = 0x40 } SECTIONS { mem1 : { *(.data.*); } > MEM1 mem2 : { *(.data.*); } > MEM2 mem3 : { *(.data.*); } > MEM2 } with input sections: .data.1: size 8 .data.2: size 0x10 .data.3: size 4 results in .data.1 affected to mem1, and .data.2 and .data.3 affected to mem2, even though .data.3 would fit in mem3. This option is incompatible with INSERT statements because it changes the way input sections are mapped to output sections. '--enable-non-contiguous-regions-warnings' This option enables warnings when '--enable-non-contiguous-regions' allows possibly unexpected matches in sections mapping, potentially leading to silently discarding a section instead of failing because it does not fit any output region. a318 14 '--export-dynamic-symbol=GLOB' When creating a dynamically linked executable, symbols matching GLOB will be added to the dynamic symbol table. When creating a shared library, references to symbols matching GLOB will not be bound to the definitions within the shared library. This option is a no-op when creating a shared library and '-Bsymbolic' or '--dynamic-list' are not specified. This option is only meaningful on ELF platforms which support shared libraries. '--export-dynamic-symbol-list=FILE' Specify a '--export-dynamic-symbol' for each pattern in the file. The format of the file is the same as the version node without scope and node name. See *note VERSION:: for more information. d392 2 a393 2 specified by the DT_SONAME field rather than using the file name given to the linker. a558 13 '--dependency-file=DEPFILE' Write a "dependency file" to DEPFILE. This file contains a rule suitable for 'make' describing the output file and all the input files that were read to produce it. The output is similar to the compiler's output with '-M -MP' (*note Options Controlling the Preprocessor: (gcc.info)Preprocessor Options.). Note that there is no option like the compiler's '-MM', to exclude "system files" (which is not a well-specified concept in the linker, unlike "system headers" in the compiler). So the output from '--dependency-file' is always specific to the exact state of the installation where it was produced, and should not be copied into distributed makefiles without careful editing. d585 1 a585 1 The '--push-state' allows one to preserve the current state of the a879 13 'indirect-extern-access' 'noindirect-extern-access' Generate GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS in .note.gnu.property section to indicate that object file requires canonical function pointers and cannot be used with copy relocation. This option also implies 'noextern-protected-data' and 'nocopyreloc'. Supported for i386 and x86-64. 'noindirect-extern-access' removes GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS from .note.gnu.property section. a892 62 'unique' 'nounique' When generating a shared library or other dynamically loadable ELF object mark it as one that should (by default) only ever be loaded once, and only in the main namespace (when using 'dlmopen'). This is primarily used to mark fundamental libraries such as libc, libpthread et al which do not usually function correctly unless they are the sole instances of themselves. This behaviour can be overridden by the 'dlmopen' caller and does not apply to certain loading mechanisms (such as audit libraries). 'lam-u48' Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U48 in .note.gnu.property section to indicate compatibility with Intel LAM_U48. Supported for Linux/x86_64. 'lam-u57' Generate GNU_PROPERTY_X86_FEATURE_1_LAM_U57 in .note.gnu.property section to indicate compatibility with Intel LAM_U57. Supported for Linux/x86_64. 'lam-u48-report=none' 'lam-u48-report=warning' 'lam-u48-report=error' Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U48 property in input .note.gnu.property section. 'lam-u48-report=none', which is the default, will make the linker not report missing properties in input files. 'lam-u48-report=warning' will make the linker issue a warning for missing properties in input files. 'lam-u48-report=error' will make the linker issue an error for missing properties in input files. Supported for Linux/x86_64. 'lam-u57-report=none' 'lam-u57-report=warning' 'lam-u57-report=error' Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U57 property in input .note.gnu.property section. 'lam-u57-report=none', which is the default, will make the linker not report missing properties in input files. 'lam-u57-report=warning' will make the linker issue a warning for missing properties in input files. 'lam-u57-report=error' will make the linker issue an error for missing properties in input files. Supported for Linux/x86_64. 'lam-report=none' 'lam-report=warning' 'lam-report=error' Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and GNU_PROPERTY_X86_FEATURE_1_LAM_U57 properties in input .note.gnu.property section. 'lam-report=none', which is the default, will make the linker not report missing properties in input files. 'lam-report=warning' will make the linker issue a warning for missing properties in input files. 'lam-report=error' will make the linker issue an error for missing properties in input files. Supported for Linux/x86_64. a952 12 'pack-relative-relocs' 'nopack-relative-relocs' Generate compact relative relocation in position-independent executable and shared library. It adds 'DT_RELR', 'DT_RELRSZ' and 'DT_RELRENT' entries to the dynamic section. It is ignored when building position-dependent executable and relocatable output. 'nopack-relative-relocs' is the default, which disables compact relative relocation. When linked against the GNU C Library, a GLIBC_ABI_DT_RELR symbol version dependency on the shared C Library is added to the output. Supported for i386 and x86-64. a961 4 'report-relative-reloc' Report dynamic relative relocations generated by linker. Supported for Linux/i386 and Linux/x86_64. a980 28 'start-stop-gc' 'nostart-stop-gc' When '--gc-sections' is in effect, a reference from a retained section to '__start_SECNAME' or '__stop_SECNAME' causes all input sections named 'SECNAME' to also be retained, if 'SECNAME' is representable as a C identifier and either '__start_SECNAME' or '__stop_SECNAME' is synthesized by the linker. '-z start-stop-gc' disables this effect, allowing sections to be garbage collected as if the special synthesized symbols were not defined. '-z start-stop-gc' has no effect on a definition of '__start_SECNAME' or '__stop_SECNAME' in an object file or linker script. Such a definition will prevent the linker providing a synthesized '__start_SECNAME' or '__stop_SECNAME' respectively, and therefore the special treatment by garbage collection for those references. 'start-stop-visibility=VALUE' Specify the ELF symbol visibility for synthesized '__start_SECNAME' and '__stop_SECNAME' symbols (*note Input Section Example::). VALUE must be exactly 'default', 'internal', 'hidden', or 'protected'. If no '-z start-stop-visibility' option is given, 'protected' is used for compatibility with historical practice. However, it's highly recommended to use '-z start-stop-visibility=hidden' in new programs and shared libraries so that these symbols are not exported between shared objects, which is not usually what's intended. d984 3 a986 4 Report an error if DT_TEXTREL is set, i.e., if the position-independent or shared object has dynamic relocations in read-only sections. Don't report an error if 'notext' or 'textoff'. a992 18 'unique-symbol' 'nounique-symbol' Avoid duplicated local symbol names in the symbol string table. Append ".'number'" to duplicated local symbol names if 'unique-symbol' is used. 'nounique-symbol' is the default. 'x86-64-baseline' 'x86-64-v2' 'x86-64-v3' 'x86-64-v4' Specify the x86-64 ISA level needed in .note.gnu.property section. 'x86-64-baseline' generates 'GNU_PROPERTY_X86_ISA_1_BASELINE'. 'x86-64-v2' generates 'GNU_PROPERTY_X86_ISA_1_V2'. 'x86-64-v3' generates 'GNU_PROPERTY_X86_ISA_1_V3'. 'x86-64-v4' generates 'GNU_PROPERTY_X86_ISA_1_V4'. Supported for Linux/i386 and Linux/x86_64. a1039 4 Note: On Linux based systems the '--as-needed' option also has an affect on the behaviour of the '--rpath' and '--rpath-link' options. See the description of '--rpath-link' for more details. a1093 4 '-Bno-symbolic' This option can cancel previously specified '-Bsymbolic' and '-Bsymbolic-functions'. a1162 31 '--ctf-variables' '--no-ctf-variables' The CTF debuginfo format supports a section which encodes the names and types of variables found in the program which do not appear in any symbol table. These variables clearly cannot be looked up by address by conventional debuggers, so the space used for their types and names is usually wasted: the types are usually small but the names are often not. '--ctf-variables' causes the generation of such a section. The default behaviour can be restored with '--no-ctf-variables'. '--ctf-share-types=METHOD' Adjust the method used to share types between translation units in CTF. 'share-unconflicted' Put all types that do not have ambiguous definitions into the shared dictionary, where debuggers can easily access them, even if they only occur in one translation unit. This is the default. 'share-duplicated' Put only types that occur in multiple translation units into the shared dictionary: types with only one definition go into per-translation-unit dictionaries. Types with ambiguous definitions in multiple translation units always go into per-translation-unit dictionaries. This tends to make the CTF larger, but may reduce the amount of CTF in the shared dictionary. For very large projects this may speed up opening the CTF and save memory in the CTF consumer at runtime. a1198 8 The linker processes '--defsym' arguments and '-T' arguments in order, placing '--defsym' before '-T' will define the symbol before the linker script from '-T' is processed, while placing '--defsym' after '-T' will define the symbol after the linker script has been processed. This difference has consequences for expressions within the linker script that use the '--defsym' symbols, which order is correct will depend on what you are trying to achieve. a1274 3 As a GNU extension, ELF input sections marked with the 'SHF_GNU_RETAIN' flag will not be garbage collected. d1322 1 a1322 26 '-M' option, above. If MAPFILE is just the character '-' then the map will be written to stdout. Specifying a directory as MAPFILE causes the linker map to be written as a file inside the directory. Normally name of the file inside the directory is computed as the basename of the OUTPUT file with '.map' appended. If however the special character '%' is used then this will be replaced by the full path of the output file. Additionally if there are any characters after the % symbol then '.map' will no longer be appended. -o foo.exe -Map=bar [Creates ./bar] -o ../dir/foo.exe -Map=bar [Creates ./bar] -o foo.exe -Map=../dir [Creates ../dir/foo.exe.map] -o ../dir2/foo.exe -Map=../dir [Creates ../dir/foo.exe.map] -o foo.exe -Map=% [Creates ./foo.exe.map] -o ../dir/foo.exe -Map=% [Creates ../dir/foo.exe.map] -o foo.exe -Map=%.bar [Creates ./foo.exe.bar] -o ../dir/foo.exe -Map=%.bar [Creates ../dir/foo.exe.bar] -o ../dir2/foo.exe -Map=../dir/% [Creates ../dir/../dir2/foo.exe.map] -o ../dir2/foo.exe -Map=../dir/%.bar [Creates ../dir/../dir2/foo.exe.bar] It is an error to specify more than one '%' character. If the map file already exists then it will be overwritten by this operation. a1373 14 '--error-handling-script=SCRIPTNAME' If this option is provided then the linker will invoke SCRIPTNAME whenever an error is encountered. Currently however only two kinds of error are supported: missing symbols and missing libraries. Two arguments will be passed to script: the keyword "undefined-symbol" or 'missing-lib" and the NAME of the undefined symbol or missing library. The intention is that the script will provide suggestions to the user as to where the symbol or library might be found. After the script has finished then the normal linker error message will be displayed. The availability of this option is controlled by a configure time switch, so it may not be present in specific implementations. a1446 3 '-no-pie' Create a position dependent executable. This is the default. d1462 1 a1462 1 On some platforms the '--relax' option performs target specific, d1473 2 a1474 2 On platforms where the feature is supported, the option '--no-relax' will disable it. d1476 2 a1477 2 On platforms where the feature is not supported, both '--relax' and '--no-relax' are accepted, but ignored. a1549 1 d1569 4 a1572 25 7. For a linker for a Linux system, if the file '/etc/ld.so.conf' exists, the list of directories found in that file. Note: the path to this file is prefixed with the 'sysroot' value, if that is defined, and then any 'prefix' string if the linker was configured with the '--prefix=' option. 8. For a native linker on a FreeBSD system, any directories specified by the '_PATH_ELF_HINTS' macro defined in the 'elf-hints.h' header file. 9. Any directories specified by a 'SEARCH_DIR' command in a linker script given on the command line, including scripts specified by '-T' (but not '-dT'). 10. The default directories, normally '/lib' and '/usr/lib'. 11. Any directories specified by a plugin LDPT_SET_EXTRA_LIBRARY_PATH. 12. Any directories specified by a 'SEARCH_DIR' command in a default linker script. Note however on Linux based systems there is an additional caveat: If the '--as-needed' option is active _and_ a shared library is located which would normally satisfy the search _and_ this library does not have DT_NEEDED tag for 'libc.so' _and_ there is a shared library later on in the set of search directories which also satisfies the search _and_ this second shared library does have a DT_NEEDED tag for 'libc.so' _then_ the second library will be selected instead of the first. a1801 24 '--warn-execstack' '--no-warn-execstack' On ELF platforms this option controls how the linker generates warning messages when it creates an output file with an executable stack. By default the linker will not warn if the '-z execstack' command line option has been used, but this behaviour can be overridden by the '--warn-execstack' option. On the other hand the linker will normally warn if the stack is made executable because one or more of the input files need an execuable stack and neither of the '-z execstack' or '-z noexecstack' command line options have been specified. This warning can be disabled via the '--no-warn-execstack' option. Note: ELF format input files specify that they need an executable stack by having a .NOTE.GNU-STACK section with the executable bit set in its section flags. They can specify that they do not need an executable stack by having that section, but without the executable flag bit set. If an input file does not have a .NOTE.GNU-STACK section present then the default behaviour is target specific. For some targets, then absence of such a section implies that an executable stack _is_ required. This is often a problem for hand crafted assembler files. a1819 13 '--warn-rwx-segments' '--no-warn-rwx-segments' Warn if the linker creates a loadable, non-zero sized segment that has all three of the read, write and execute permission flags set. Such a segment represents a potential security vulnerability. In addition warnings will be generated if a thread local storage segment is created with the execute permission flag set, regardless of whether or not it has the read and/or write flags set. These warnings are enabled by default. They can be disabled via the '--no-warn-rwx-segments' option and re-enabled via the '--warn-rwx-segments' option. d1827 2 a1828 3 '--warn-textrel' Warn if the linker adds DT_TEXTREL to a position-independent executable or shared object. a1980 5 '--max-cache-size=SIZE' 'ld' normally caches the relocation information and symbol tables of input files in memory with the unlimited size. This option sets the maximum cache size to SIZE. a2002 10 '--package-metadata=JSON' Request the creation of a '.note.package' ELF note section. The contents of the note are in JSON format, as per the package metadata specification. For more information see: https://systemd.io/ELF_PACKAGE_METADATA/ If the JSON argument is missing/empty then this will disable the creation of the metadata note, if one had been enabled by an earlier occurrence of the -package-metdata option. If the linker has been built with libjansson, then the JSON string will be validated. a2389 1 '--disable-high-entropy-va' d2391 1 a2391 3 (ASLR). This option is enabled by default for 64-bit PE images. This option also implies '--dynamicbase' and a2394 1 '--disable-dynamicbase' d2397 2 a2398 3 Vista for i386 PE targets. This option is enabled by default but can be disabled via the '--disable-dynamicbase' option. This option also implies '--enable-reloc-section'. d2401 1 a2401 3 '--disable-forceinteg' Code integrity checks are enforced. This option is disabled by default. a2403 1 '--disable-nxcompat' a2405 1 The option is enabled by default. a2407 1 '--disable-no-isolation' a2408 1 This option is disabled by default. a2410 1 '--disable-no-seh' d2412 1 a2412 1 image. This option is disabled by default. d2415 1 a2415 2 '--disable-no-bind' Do not bind this image. This option is disabled by default. d2418 1 a2418 3 '--disable-wdmdriver' The driver uses the MS Windows Driver Model. This option is disabled by default. d2421 1 a2421 3 '--disable-tsaware' The image is Terminal Server aware. This option is disabled by default. a2434 1 '--disable-reloc-section' d2437 1 a2437 1 header. This option is enabled by default. d2538 1 a2538 1 '--no-compact-branches' a2541 50 2.1.7 Options specific to PDP11 targets --------------------------------------- For the pdp11-aout target, three variants of the output format can be produced as selected by the following options. The default variant for pdp11-aout is the '--omagic' option, whereas for other targets '--nmagic' is the default. The '--imagic' option is defined only for the pdp11-aout target, while the others are described here as they apply to the pdp11-aout target. '-N' '--omagic' Mark the output as 'OMAGIC' (0407) in the 'a.out' header to indicate that the text segment is not to be write-protected and shared. Since the text and data sections are both readable and writable, the data section is allocated immediately contiguous after the text segment. This is the oldest format for PDP11 executable programs and is the default for 'ld' on PDP11 Unix systems from the beginning through 2.11BSD. '-n' '--nmagic' Mark the output as 'NMAGIC' (0410) in the 'a.out' header to indicate that when the output file is executed, the text portion will be read-only and shareable among all processes executing the same file. This involves moving the data areas up to the first possible 8K byte page boundary following the end of the text. This option creates a _pure executable_ format. '-z' '--imagic' Mark the output as 'IMAGIC' (0411) in the 'a.out' header to indicate that when the output file is executed, the program text and data areas will be loaded into separate address spaces using the split instruction and data space feature of the memory management unit in larger models of the PDP11. This doubles the address space available to the program. The text segment is again pure, write-protected, and shareable. The only difference in the output format between this option and the others, besides the magic number, is that both the text and data sections start at location 0. The '-z' option selected this format in 2.11BSD. This option creates a _separate executable_ format. '--no-omagic' Equivalent to '--nmagic' for pdp11-aout. d2578 1 a2578 1 File: ld.info, Node: Scripts, Next: Plugins, Prev: Invocation, Up: Top d2803 1 a2803 3 * the address of the first byte of the code section, if present and an executable is being created - the code section is usually '.text', but can be something else; d2839 7 a2845 10 "sysroot prefix". The "sysroot prefix" can also be forced by specifying '=' as the first character in the filename path, or prefixing the filename path with '$SYSROOT'. See also the description of '-L' in *note Command-line Options: Options. If a "sysroot prefix" is not used then the linker will try to open the file in the directory containing the linker script. If it is not found the linker will then search the current directory. If it is still not found the linker will search through the archive library search path. d3331 2 a3332 2 underscore), the linker will give a multiple definition diagnostic. If, on the other hand, the program defines 'etext' (with no leading d3765 6 a4106 4 This can be used to discard input sections marked with the ELF flag 'SHF_GNU_RETAIN', which would otherwise have been saved from linker garbage collection. a4157 2 'READONLY' The section should be marked as read-only. a4165 10 'TYPE = TYPE' Set the section type to the integer TYPE. When generating an ELF output file, type names 'SHT_PROGBITS', 'SHT_STRTAB', 'SHT_NOTE', 'SHT_NOBITS', 'SHT_INIT_ARRAY', 'SHT_FINI_ARRAY', and 'SHT_PREINIT_ARRAY' are also allowed for TYPE. It is the user's responsibility to ensure that any special requirements of the section type are met. 'READONLY ( TYPE = TYPE )' This form of the syntax combines the READONLY type with the type specified by TYPE. d4867 3 a4869 4 that of C expressions, except that whitespace is required in some places to resolve syntactic ambiguities. All expressions are evaluated as integers. All expressions are evaluated in the same size, which is 32 bits if both the host and target are 32 bits, and is otherwise 64 bits. d5456 1 d5494 1 a5494 53 File: ld.info, Node: Plugins, Next: Machine Dependent, Prev: Scripts, Up: Top 4 Linker Plugins **************** The linker can use dynamically loaded plugins to modify its behavior. For example, the link-time optimization feature that some compilers support is implemented with a linker plugin. Currently there is only one plugin shipped by default, but more may be added here later. * Menu: * libdep Plugin:: Static Library Dependencies Plugin  File: ld.info, Node: libdep Plugin, Up: Plugins 4.1 Static Library Dependencies Plugin ====================================== Originally, static libraries were contained in an archive file consisting just of a collection of relocatable object files. Later they evolved to optionally include a symbol table, to assist in finding the needed objects within a library. There their evolution ended, and dynamic libraries rose to ascendance. One useful feature of dynamic libraries was that, more than just collecting multiple objects into a single file, they also included a list of their dependencies, such that one could specify just the name of a single dynamic library at link time, and all of its dependencies would be implicitly referenced as well. But static libraries lacked this feature, so if a link invocation was switched from using dynamic libraries to static libraries, the link command would usually fail unless it was rewritten to explicitly list the dependencies of the static library. The GNU 'ar' utility now supports a '--record-libdeps' option to embed dependency lists into static libraries as well, and the 'libdep' plugin may be used to read this dependency information at link time. The dependency information is stored as a single string, carrying '-l' and '-L' arguments as they would normally appear in a linker command line. As such, the information can be written with any text utility and stored into any archive, even if GNU 'ar' is not being used to create the archive. The information is stored in an archive member named '__.LIBDEP'. For example, given a library 'libssl.a' that depends on another library 'libcrypto.a' which may be found in '/usr/local/lib', the '__.LIBDEP' member of 'libssl.a' would contain -L/usr/local/lib -lcrypto d5496 1 a5496 4  File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Plugins, Up: Top 5 Machine Dependent Features d5526 1 a5526 1 5.1 'ld' and the H8/300 d5571 1 a5571 1 5.2 'ld' and the Motorola 68HC11 and 68HC12 families d5574 1 a5574 1 5.2.1 Linker Relaxation d5595 1 a5595 1 5.2.2 Trampoline Generation d5608 1 a5608 1 5.3 'ld' and the ARM family d5649 1 a5649 1 'R_ARM_ABS32' d5684 3 d5857 1 a5857 1 5.4 'ld' and HPPA 32-bit ELF Support d5888 1 a5888 1 5.5 'ld' and the Motorola 68K family d5906 1 a5906 1 5.6 'ld' and the MIPS family d5929 1 a5929 1 5.7 'ld' and MMIX d5957 1 a5957 1 5.8 'ld' and MSP430 d6009 1 a6009 1 5.9 'ld' and NDS32 d6048 1 a6048 1 5.10 'ld' and the Altera Nios II d6076 1 a6076 1 5.11 'ld' and PowerPC 32-bit ELF Support d6132 1 a6132 1 5.12 'ld' and PowerPC64 64-bit ELF Support d6187 1 a6187 1 These options control how PowerPC64 'ld' uses a special stub to d6192 2 a6193 2 generation of the stub when glibc advertises the availability of __tls_get_addr_opt. Using '--tls-get-addr-optimize' with an older d6197 1 a6197 6 glibc. '--tls-get-addr-regsave' forces generation of a stub that saves and restores volatile registers around the call into glibc. Normally, this is done when the linker detects a call to __tls_get_addr_desc. Such calls then go via the register saving stub to __tls_get_addr_opt. '--no-tls-get-addr-regsave' disables generation of the register saves. a6224 8 '--no-inline-optimize' PowerPC64 'ld' normally replaces inline PLT call sequences marked with 'R_PPC64_PLTSEQ', 'R_PPC64_PLTCALL', 'R_PPC64_PLT16_HA' and 'R_PPC64_PLT16_LO_DS' relocations by a number of 'nop's and a direct call when the function is defined locally and can't be overridden by some other definition. This option disables that optimization. a6291 12 '--power10-stubs' '--no-power10-stubs' When PowerPC64 'ld' links input object files containing relocations used on power10 prefixed instructions it normally creates linkage stubs (PLT call and long branch) using power10 instructions for '@@notoc' PLT calls where 'r2' is not known. The power10 notoc stubs are smaller and faster, so are preferred for power10. '--power10-stubs' and '--no-power10-stubs' allow you to override the linker's selection of stub instructions. '--power10-stubs=auto' allows the user to select the default auto mode. d6295 1 a6295 1 5.13 'ld' and S/390 ELF Support d6306 1 a6306 1 5.14 'ld' and SPU ELF Support d6362 1 a6362 1 5.15 'ld''s Support for Various TI COFF Versions d6374 1 a6374 1 5.16 'ld' and WIN32 (cygwin/mingw) d6801 1 a6801 1 5.17 'ld' and Xtensa Processors a6859 10 '--abi-windowed' '--abi-call0' Choose ABI for the output object and for the generated PLT code. PLT code inserted by the linker must match ABI of the output object because windowed and call0 ABI use incompatible function call conventions. Default ABI is chosen by the ABI tag in the '.xtensa.info' section of the first input object. A warning is issued if ABI tags of input objects do not match each other or the chosen output object ABI. d6863 1 a6863 1 6 BFD d6896 1 a6896 1 6.1 How It Works: An Outline of BFD d6925 1 a6925 1 6.1.1 Information Loss d6971 1 a6971 1 6.1.2 The BFD canonical object-file format d7052 1 a7052 1 7 Reporting Bugs d7073 1 a7073 1 7.1 Have You Found a Bug? d7094 1 a7094 1 7.2 How to Report Bugs d7105 1 a7105 1 . d7844 7 a7850 7 * -(: Options. (line 1114) * --accept-unknown-input-arch: Options. (line 1132) * --add-needed: Options. (line 1163) * --add-stdcall-alias: Options. (line 2305) * --allow-multiple-definition: Options. (line 1535) * --allow-shlib-undefined: Options. (line 1541) * --as-needed: Options. (line 1142) d7852 3 a7854 3 * --auxiliary=NAME: Options. (line 294) * --bank-window: Options. (line 2796) * --base-file: Options. (line 2310) d7856 1 a7856 1 * --branch-stub on C-SKY: Options. (line 2768) d7858 4 a7861 4 * --build-id: Options. (line 2257) * --build-id=STYLE: Options. (line 2257) * --check-sections: Options. (line 1245) * --cmse-implib: ARM. (line 231) d7863 7 a7869 9 * --compact-branches: Options. (line 2841) * --compress-debug-sections=none: Options. (line 2210) * --compress-debug-sections=zlib: Options. (line 2210) * --compress-debug-sections=zlib-gabi: Options. (line 2210) * --compress-debug-sections=zlib-gnu: Options. (line 2210) * --copy-dt-needed-entries: Options. (line 1257) * --cref: Options. (line 1277) * --ctf-share-types: Options. (line 1301) * --ctf-variables: Options. (line 1290) d7871 5 a7875 5 * --default-imported-symver: Options. (line 1591) * --default-script=SCRIPT: Options. (line 660) * --default-symver: Options. (line 1587) * --defsym=SYMBOL=EXP: Options. (line 1345) * --demangle[=STYLE]: Options. (line 1365) d7877 7 a7883 8 * --dependency-file=DEPFILE: Options. (line 527) * --disable-auto-image-base: Options. (line 2487) * --disable-auto-import: Options. (line 2626) * --disable-large-address-aware: Options. (line 2435) * --disable-long-section-names: Options. (line 2320) * --disable-multiple-abs-defs: Options. (line 1396) * --disable-new-dtags: Options. (line 2184) * --disable-runtime-pseudo-reloc: Options. (line 2639) d7885 5 a7889 5 * --disable-stdcall-fixup: Options. (line 2342) * --discard-all: Options. (line 745) * --discard-locals: Options. (line 749) * --dll: Options. (line 2315) * --dll-search-prefix: Options. (line 2493) d7891 11 a7901 11 * --dsbt-index: Options. (line 2755) * --dsbt-size: Options. (line 2750) * --dynamic-linker=FILE: Options. (line 1378) * --dynamic-list-cpp-new: Options. (line 1237) * --dynamic-list-cpp-typeinfo: Options. (line 1241) * --dynamic-list-data: Options. (line 1234) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 1221) * --dynamicbase: Options. (line 2683) * --eh-frame-hdr: Options. (line 2173) * --embedded-relocs: Options. (line 1391) * --emit-relocs: Options. (line 587) d7906 16 a7921 21 * --enable-auto-image-base: Options. (line 2478) * --enable-auto-import: Options. (line 2502) * --enable-extra-pe-debug: Options. (line 2644) * --enable-long-section-names: Options. (line 2320) * --enable-new-dtags: Options. (line 2184) * --enable-non-contiguous-regions: Options. (line 174) * --enable-non-contiguous-regions-warnings: Options. (line 206) * --enable-reloc-section: Options. (line 2737) * --enable-runtime-pseudo-reloc: Options. (line 2631) * --enable-stdcall-fixup: Options. (line 2342) * --entry=ENTRY: Options. (line 212) * --error-handling-script=SCRIPTNAME: Options. (line 1568) * --error-unresolved-symbols: Options. (line 2109) * --exclude-all-symbols: Options. (line 2395) * --exclude-libs: Options. (line 222) * --exclude-modules-for-implib: Options. (line 233) * --exclude-symbols: Options. (line 2389) * --export-all-symbols: Options. (line 2365) * --export-dynamic: Options. (line 246) * --export-dynamic-symbol-list=FILE: Options. (line 282) * --export-dynamic-symbol=GLOB: Options. (line 273) d7923 7 a7929 7 * --fatal-warnings: Options. (line 1400) * --file-alignment: Options. (line 2399) * --filter=NAME: Options. (line 315) * --fix-arm1176: ARM. (line 108) * --fix-cortex-a53-835769: ARM. (line 208) * --fix-cortex-a8: ARM. (line 199) * --fix-stm32l4xx-629360: ARM. (line 117) d7932 4 a7935 4 * --force-dynamic: Options. (line 596) * --force-exe-suffix: Options. (line 1405) * --force-group-allocation: Options. (line 1337) * --forceinteg: Options. (line 2691) d7938 3 a7940 3 * --gc-keep-exported: Options. (line 1453) * --gc-sections: Options. (line 1415) * --got: Options. (line 2808) d7942 7 a7948 7 * --gpsize=VALUE: Options. (line 347) * --hash-size=NUMBER: Options. (line 2194) * --hash-style=STYLE: Options. (line 2202) * --heap: Options. (line 2405) * --help: Options. (line 1481) * --high-entropy-va: Options. (line 2675) * --ignore-branch-isa: Options. (line 2829) d7950 4 a7953 5 * --image-base: Options. (line 2412) * --imagic: Options. (line 2878) * --in-implib=FILE: ARM. (line 236) * --insert-timestamp: Options. (line 2726) * --insn32: Options. (line 2820) d7955 7 a7961 7 * --just-symbols=FILE: Options. (line 618) * --kill-at: Options. (line 2421) * --large-address-aware: Options. (line 2426) * --ld-generated-unwind-info: Options. (line 2179) * --leading-underscore: Options. (line 2359) * --library-path=DIR: Options. (line 405) * --library=NAMESPEC: Options. (line 372) d7963 8 a7970 9 * --long-plt: ARM. (line 219) * --major-image-version: Options. (line 2442) * --major-os-version: Options. (line 2447) * --major-subsystem-version: Options. (line 2451) * --max-cache-size=SIZE: Options. (line 2252) * --merge-exidx-entries: ARM. (line 216) * --minor-image-version: Options. (line 2456) * --minor-os-version: Options. (line 2461) * --minor-subsystem-version: Options. (line 2465) d7973 12 a7984 14 * --nmagic: Options. (line 500) * --nmagic <1>: Options. (line 2868) * --no-accept-unknown-input-arch: Options. (line 1132) * --no-add-needed: Options. (line 1163) * --no-allow-shlib-undefined: Options. (line 1541) * --no-apply-dynamic-relocs: ARM. (line 223) * --no-as-needed: Options. (line 1142) * --no-bind: Options. (line 2712) * --no-check-sections: Options. (line 1245) * --no-compact-branches: Options. (line 2842) * --no-copy-dt-needed-entries: Options. (line 1257) * --no-ctf-variables: Options. (line 1290) * --no-define-common: Options. (line 1321) * --no-demangle: Options. (line 1365) d7986 10 a7995 10 * --no-dynamic-linker: Options. (line 1385) * --no-eh-frame-hdr: Options. (line 2173) * --no-enum-size-warning: ARM. (line 155) * --no-export-dynamic: Options. (line 246) * --no-fatal-warnings: Options. (line 1400) * --no-fix-arm1176: ARM. (line 108) * --no-fix-cortex-a53-835769: ARM. (line 208) * --no-fix-cortex-a8: ARM. (line 199) * --no-gc-sections: Options. (line 1415) * --no-ignore-branch-isa: Options. (line 2830) d7997 1 a7997 2 * --no-inline-optimize: PowerPC64 ELF64. (line 101) * --no-insn32: Options. (line 2821) d7999 8 a8006 9 * --no-isolation: Options. (line 2702) * --no-keep-memory: Options. (line 1518) * --no-leading-underscore: Options. (line 2359) * --no-merge-exidx-entries: Options. (line 2762) * --no-merge-exidx-entries <1>: ARM. (line 216) * --no-multi-toc: PowerPC64 ELF64. (line 109) * --no-omagic: Options. (line 515) * --no-omagic <1>: Options. (line 2892) * --no-opd-optimize: PowerPC64 ELF64. (line 75) d8008 6 a8013 7 * --no-plt-align: PowerPC64 ELF64. (line 131) * --no-plt-localentry: PowerPC64 ELF64. (line 160) * --no-plt-static-chain: PowerPC64 ELF64. (line 142) * --no-plt-thread-safe: PowerPC64 ELF64. (line 148) * --no-power10-stubs: PowerPC64 ELF64. (line 176) * --no-print-gc-sections: Options. (line 1444) * --no-print-map-discarded: Options. (line 495) d8015 2 a8016 2 * --no-seh: Options. (line 2707) * --no-strip-discarded: Options. (line 638) a8017 1 * --no-tls-get-addr-regsave: PowerPC64 ELF64. (line 56) d8020 24 a8043 26 * --no-toc-optimize: PowerPC64 ELF64. (line 87) * --no-toc-sort: PowerPC64 ELF64. (line 121) * --no-trampoline: Options. (line 2790) * --no-undefined: Options. (line 1525) * --no-undefined-version: Options. (line 1582) * --no-warn-mismatch: Options. (line 1595) * --no-warn-search-mismatch: Options. (line 1604) * --no-wchar-size-warning: ARM. (line 162) * --no-whole-archive: Options. (line 1608) * --noinhibit-exec: Options. (line 1612) * --non-overlapping-opd: PowerPC64 ELF64. (line 81) * --nxcompat: Options. (line 2696) * --oformat=OUTPUT-FORMAT: Options. (line 1623) * --omagic: Options. (line 506) * --omagic <1>: Options. (line 2857) * --orphan-handling=MODE: Options. (line 704) * --out-implib: Options. (line 1636) * --output-def: Options. (line 2470) * --output=OUTPUT: Options. (line 521) * --package-metadata=JSON: Options. (line 2279) * --pic-executable: Options. (line 1645) * --pic-veneer: ARM. (line 168) * --plt-align: PowerPC64 ELF64. (line 131) * --plt-localentry: PowerPC64 ELF64. (line 160) * --plt-static-chain: PowerPC64 ELF64. (line 142) * --plt-thread-safe: PowerPC64 ELF64. (line 148) d8045 9 a8053 10 * --pop-state: Options. (line 583) * --power10-stubs: PowerPC64 ELF64. (line 176) * --print-gc-sections: Options. (line 1444) * --print-map: Options. (line 440) * --print-map-discarded: Options. (line 495) * --print-memory-usage: Options. (line 1469) * --print-output-format: Options. (line 1463) * --push-state: Options. (line 565) * --reduce-memory-overheads: Options. (line 2238) * --relax: Options. (line 1664) d8057 3 a8059 3 * --relocatable: Options. (line 600) * --require-defined=SYMBOL: Options. (line 686) * --retain-symbols-file=FILENAME: Options. (line 1690) d8062 1 a8062 1 * --script=SCRIPT: Options. (line 651) d8064 2 a8065 2 * --section-alignment: Options. (line 2649) * --section-start=SECTIONNAME=ORG: Options. (line 1885) d8067 7 a8073 7 * --sort-common: Options. (line 1817) * --sort-section=alignment: Options. (line 1832) * --sort-section=name: Options. (line 1828) * --spare-dynamic-tags: Options. (line 1836) * --split-by-file: Options. (line 1841) * --split-by-reloc: Options. (line 1846) * --stack: Options. (line 2655) d8075 4 a8078 4 * --stats: Options. (line 1859) * --strip-all: Options. (line 629) * --strip-debug: Options. (line 633) * --strip-discarded: Options. (line 638) d8080 2 a8081 2 * --stub-group-size on C-SKY: Options. (line 2775) * --stub-group-size=N: ARM. (line 173) d8083 1 a8083 1 * --subsystem: Options. (line 2662) d8085 2 a8086 2 * --sysroot=DIRECTORY: Options. (line 1863) * --target-help: Options. (line 1485) d8090 1 a8090 1 * --task-link: Options. (line 1868) d8093 7 a8099 8 * --tls-get-addr-regsave: PowerPC64 ELF64. (line 56) * --trace: Options. (line 643) * --trace-symbol=SYMBOL: Options. (line 755) * --traditional-format: Options. (line 1873) * --tsaware: Options. (line 2721) * --undefined=SYMBOL: Options. (line 673) * --unique[=SECTION]: Options. (line 730) * --unresolved-symbols: Options. (line 1915) d8102 15 a8116 17 * --verbose[=NUMBER]: Options. (line 1944) * --version: Options. (line 739) * --version-script=VERSION-SCRIPTFILE: Options. (line 1952) * --vfp11-denorm-fix: ARM. (line 79) * --warn-alternate-em: Options. (line 2101) * --warn-common: Options. (line 1962) * --warn-constructors: Options. (line 2030) * --warn-execstack: Options. (line 2035) * --warn-multiple-gp: Options. (line 2059) * --warn-once: Options. (line 2073) * --warn-rwx-segments: Options. (line 2077) * --warn-section-align: Options. (line 2090) * --warn-textrel: Options. (line 2097) * --warn-unresolved-symbols: Options. (line 2104) * --wdmdriver: Options. (line 2716) * --whole-archive: Options. (line 2113) * --wrap=SYMBOL: Options. (line 2127) d8118 1 a8118 1 * -assert KEYWORD: Options. (line 1170) d8120 6 a8125 7 * -Bdynamic: Options. (line 1173) * -Bgroup: Options. (line 1183) * -Bno-symbolic: Options. (line 1217) * -Bshareable: Options. (line 1810) * -Bstatic: Options. (line 1190) * -Bsymbolic: Options. (line 1204) * -Bsymbolic-functions: Options. (line 1211) d8127 1 a8127 1 * -call_shared: Options. (line 1173) d8130 1 a8130 1 * -dn: Options. (line 1190) d8132 27 a8158 30 * -dT SCRIPT: Options. (line 660) * -dy: Options. (line 1173) * -E: Options. (line 246) * -e ENTRY: Options. (line 212) * -EB: Options. (line 287) * -EL: Options. (line 290) * -f NAME: Options. (line 294) * -F NAME: Options. (line 315) * -fini=NAME: Options. (line 338) * -g: Options. (line 344) * -G VALUE: Options. (line 347) * -h NAME: Options. (line 354) * -i: Options. (line 363) * -IFILE: Options. (line 1378) * -init=NAME: Options. (line 366) * -L DIR: Options. (line 405) * -l NAMESPEC: Options. (line 372) * -M: Options. (line 440) * -m EMULATION: Options. (line 430) * -Map=MAPFILE: Options. (line 1489) * -n: Options. (line 500) * -N: Options. (line 506) * -N <1>: Options. (line 2856) * -n <1>: Options. (line 2867) * -no-pie: Options. (line 1655) * -no-relax: Options. (line 1664) * -non_shared: Options. (line 1190) * -nostdlib: Options. (line 1618) * -O LEVEL: Options. (line 540) * -o OUTPUT: Options. (line 521) d8160 34 a8193 35 * -pie: Options. (line 1645) * -plugin NAME: Options. (line 550) * -q: Options. (line 587) * -qmagic: Options. (line 1658) * -Qy: Options. (line 1661) * -r: Options. (line 600) * -R FILE: Options. (line 618) * -rpath-link=DIR: Options. (line 1731) * -rpath=DIR: Options. (line 1704) * -s: Options. (line 629) * -S: Options. (line 633) * -shared: Options. (line 1810) * -soname=NAME: Options. (line 354) * -static: Options. (line 1190) * -t: Options. (line 643) * -T SCRIPT: Options. (line 651) * -Tbss=ORG: Options. (line 1894) * -Tdata=ORG: Options. (line 1894) * -Tldata-segment=ORG: Options. (line 1910) * -Trodata-segment=ORG: Options. (line 1904) * -Ttext-segment=ORG: Options. (line 1900) * -Ttext=ORG: Options. (line 1894) * -u SYMBOL: Options. (line 673) * -Ur: Options. (line 694) * -v: Options. (line 739) * -V: Options. (line 739) * -x: Options. (line 745) * -X: Options. (line 749) * -Y PATH: Options. (line 764) * -y SYMBOL: Options. (line 755) * -z: Options. (line 2877) * -z defs: Options. (line 1525) * -z KEYWORD: Options. (line 768) * -z muldefs: Options. (line 1535) * -z undefs: Options. (line 1525) d8197 1 a8197 1 * 32-bit PLT entries: ARM. (line 219) d8206 1 a8206 1 * AArch64 rela addend: ARM. (line 223) d8227 2 a8228 2 * archive files, from cmd line: Options. (line 372) * archive search path in linker script: File Commands. (line 80) d8232 1 a8232 1 * ARM1176 erratum workaround: ARM. (line 108) d8238 1 a8238 1 * AS_NEEDED(FILES): File Commands. (line 60) d8247 1 a8247 1 * big-endian objects: Options. (line 287) d8259 2 a8260 2 * combining symbols, warnings on: Options. (line 1962) * COMDAT: Options. (line 1337) d8266 1 a8266 1 * common allocation <1>: Options. (line 1321) d8279 1 a8279 1 * constructors: Options. (line 694) d8284 2 a8285 2 * Cortex-A53 erratum 835769 workaround: ARM. (line 208) * Cortex-A8 erratum workaround: ARM. (line 199) d8290 1 a8290 1 * cross reference table: Options. (line 1277) a8294 2 * ctf type sharing: Options. (line 1301) * ctf variables: Options. (line 1290) d8302 2 a8303 2 * dbx: Options. (line 1878) * DEF files, creating: Options. (line 2470) d8306 1 a8306 1 * defined symbol: Options. (line 686) d8308 1 a8308 1 * deleting local symbols: Options. (line 745) d8310 1 a8310 2 * demangling, from command line: Options. (line 1365) * dependency file: Options. (line 527) d8315 4 a8318 4 * DLLs, creating: Options. (line 2365) * DLLs, creating <1>: Options. (line 2470) * DLLs, creating <2>: Options. (line 2478) * DLLs, linking to: Options. (line 2493) d8322 2 a8323 2 * dynamic linker, from command line: Options. (line 1378) * dynamic symbol table: Options. (line 246) d8325 1 a8325 2 * ELF symbol visibility: Options. (line 1070) * emulation: Options. (line 430) d8328 1 a8328 1 * endianness: Options. (line 287) d8330 1 a8330 1 * entry point, from command line: Options. (line 212) a8336 4 * executable segments, warnings on: Options. (line 2077) * executable stack, warnings on: Options. (line 2035) * export dynamic symbol: Options. (line 273) * export dynamic symbol list: Options. (line 282) d8354 2 a8355 2 * finalization function: Options. (line 338) * first input file: File Commands. (line 88) d8367 1 a8367 1 * forcing the creation of dynamic sections: Options. (line 596) d8370 3 a8372 3 * garbage collection: Options. (line 1415) * garbage collection <1>: Options. (line 1444) * garbage collection <2>: Options. (line 1453) d8374 1 a8374 1 * generating optimized output: Options. (line 540) d8377 1 a8377 1 * group allocation in linker script: Options. (line 1337) d8380 3 a8382 3 * GROUP(FILES): File Commands. (line 53) * grouping input files: File Commands. (line 53) * groups of archives: Options. (line 1114) d8384 3 a8386 3 * header size: Builtin Functions. (line 190) * heap size: Options. (line 2405) * help: Options. (line 1481) d8393 1 a8393 1 * image base: Options. (line 2412) d8399 2 a8400 2 * including an entire archive: Options. (line 2113) * incremental link: Options. (line 363) d8403 1 a8403 1 * initialization function: Options. (line 366) d8409 1 a8409 1 * input files, displaying: Options. (line 643) d8412 1 a8412 1 * Input import library: ARM. (line 236) d8435 1 a8435 1 * ldata segment origin, cmd line: Options. (line 1911) d8442 4 a8445 4 * library search path in linker script: File Commands. (line 80) * link map: Options. (line 440) * link map discarded: Options. (line 495) * link-time runtime library search path: Options. (line 1731) a8446 1 * linker plugins: Plugins. (line 6) d8456 1 a8456 1 * little-endian objects: Options. (line 290) d8461 2 a8462 2 (line 33) * local symbols, deleting: Options. (line 749) d8480 3 a8482 3 * memory usage: Options. (line 1469) * memory usage <1>: Options. (line 1518) * Merging exidx entries: ARM. (line 216) d8494 1 a8494 1 * naming the output file: Options. (line 521) d8497 1 a8497 1 * NMAGIC: Options. (line 500) d8503 4 a8506 4 (line 33) * not enough room for program headers: Builtin Functions. (line 195) * NO_ENUM_SIZE_WARNING: ARM. (line 155) * NO_WCHAR_SIZE_WARNING: ARM. (line 162) d8512 3 a8514 3 * object size: Options. (line 347) * OMAGIC: Options. (line 506) * OMAGIC <1>: Options. (line 515) d8527 2 a8528 2 * orphan sections: Options. (line 704) * output file after errors: Options. (line 1612) d8530 2 a8531 2 * output file name in linker script: File Commands. (line 70) * output format: Options. (line 1463) d8538 1 a8538 1 * OUTPUT(FILENAME): File Commands. (line 70) d8546 1 a8546 1 * partial link: Options. (line 600) d8550 4 a8553 6 * PIC_VENEER: ARM. (line 168) * Placement of SG veneers: ARM. (line 226) * plugins: Plugins. (line 6) * pop state governing input file handling: Options. (line 583) * position dependent executables: Options. (line 1656) * position independent executables: Options. (line 1647) d8563 7 a8569 9 (line 160) * PowerPC64 inline PLT call optimization: PowerPC64 ELF64. (line 101) * PowerPC64 multi-TOC: PowerPC64 ELF64. (line 109) * PowerPC64 OPD optimization: PowerPC64 ELF64. (line 75) * PowerPC64 OPD spacing: PowerPC64 ELF64. (line 81) * PowerPC64 PLT call stub static chain: PowerPC64 ELF64. (line 142) * PowerPC64 PLT call stub thread safety: PowerPC64 ELF64. (line 148) * PowerPC64 PLT stub alignment: PowerPC64 ELF64. (line 131) * PowerPC64 Power10 stubs: PowerPC64 ELF64. (line 176) d8575 2 a8576 2 * PowerPC64 TOC optimization: PowerPC64 ELF64. (line 87) * PowerPC64 TOC sorting: PowerPC64 ELF64. (line 121) d8580 1 a8580 1 (line 33) d8584 1 a8584 1 * program headers, not enough room: Builtin Functions. (line 195) d8589 1 a8589 1 * push state governing input file handling: Options. (line 565) d8593 2 a8594 2 * read-only text: Options. (line 500) * read/write from cmd line: Options. (line 506) d8600 1 a8600 1 * relaxing addressing modes: Options. (line 1664) d8606 1 a8606 1 * relocatable output: Options. (line 600) d8611 3 a8613 3 * retain relocations in final executable: Options. (line 587) * retaining specified symbols: Options. (line 1690) * rodata segment origin, cmd line: Options. (line 1905) d8617 2 a8618 2 * runtime library name: Options. (line 354) * runtime library search path: Options. (line 1704) d8625 2 a8626 2 * script files: Options. (line 651) * script files <1>: Options. (line 660) d8628 3 a8630 3 * search directory, from cmd line: Options. (line 405) * search path in linker script: File Commands. (line 80) * SEARCH_DIR(PATH): File Commands. (line 80) d8636 1 a8636 1 * section alignment, warnings on: Options. (line 2090) d8641 1 a8641 1 * section groups: Options. (line 1337) d8658 3 a8660 3 * sections, orphan: Options. (line 704) * Secure gateway import library: ARM. (line 231) * segment origins, cmd line: Options. (line 1894) d8663 1 a8663 1 * shared libraries: Options. (line 1812) d8667 1 a8667 1 * SIZEOF_HEADERS: Builtin Functions. (line 190) d8671 1 a8671 1 (line 58) d8673 1 a8673 1 (line 45) d8675 1 a8675 1 (line 51) d8677 1 a8677 1 (line 37) d8679 1 a8679 1 (line 94) d8690 1 a8690 1 * stack size: Options. (line 2655) d8693 6 a8698 8 * start-stop-gc: Options. (line 1055) * STARTUP(FILENAME): File Commands. (line 88) * static library dependencies: libdep Plugin. (line 6) * STM32L4xx erratum workaround: ARM. (line 117) * strip all symbols: Options. (line 629) * strip debugger symbols: Options. (line 633) * stripping all but some symbols: Options. (line 1690) * STUB_GROUP_SIZE: ARM. (line 173) d8705 1 a8705 1 * symbol tracing: Options. (line 755) d8707 1 a8707 1 * symbol-only input: Options. (line 618) d8709 1 a8709 1 * symbols, from command line: Options. (line 1345) d8711 3 a8713 3 * symbols, require defined: Options. (line 686) * symbols, retaining selectively: Options. (line 1690) * synthesizing linker: Options. (line 1664) d8718 1 a8718 1 * text segment origin, cmd line: Options. (line 1901) d8721 1 a8721 1 * traditional format: Options. (line 1873) d8725 1 a8725 1 * undefined symbol: Options. (line 673) d8728 1 a8728 1 * undefined symbols, warnings on: Options. (line 2073) d8733 1 a8733 1 * usage: Options. (line 1481) d8739 2 a8740 2 * verbose[=NUMBER]: Options. (line 1944) * version: Options. (line 739) d8742 1 a8742 1 * version script, symbol versions: Options. (line 1952) d8745 4 a8748 7 * VFP11_DENORM_FIX: ARM. (line 79) * visibility: Options. (line 1070) * warnings, on combining symbols: Options. (line 1962) * warnings, on executable stack: Options. (line 2035) * warnings, on section alignment: Options. (line 2090) * warnings, on undefined symbols: Options. (line 2073) * warnings, on writeable and exectuable segments: Options. (line 2077) d8760 85 a8844 87 Node: Overview1531 Node: Invocation2647 Node: Options3055 Node: Environment136520 Node: Scripts138281 Node: Basic Script Concepts140005 Node: Script Format142713 Node: Simple Example143576 Node: Simple Commands146670 Node: Entry Point147175 Node: File Commands148211 Node: Format Commands152520 Node: REGION_ALIAS154476 Node: Miscellaneous Commands159303 Node: Assignments165134 Node: Simple Assignments165645 Node: HIDDEN167376 Node: PROVIDE168003 Node: PROVIDE_HIDDEN169529 Node: Source Code Reference169773 Node: SECTIONS173690 Node: Output Section Description175578 Node: Output Section Name176819 Node: Output Section Address177696 Node: Input Section179929 Node: Input Section Basics180730 Node: Input Section Wildcards185748 Node: Input Section Common190689 Node: Input Section Keep192171 Node: Input Section Example192661 Node: Output Section Data194072 Node: Output Section Keywords196851 Node: Output Section Discarding200418 Node: Output Section Attributes202308 Node: Output Section Type203427 Node: Output Section LMA205056 Node: Forced Output Alignment208127 Node: Forced Input Alignment208556 Node: Output Section Constraint208944 Node: Output Section Region209372 Node: Output Section Phdr209805 Node: Output Section Fill210469 Node: Overlay Description211611 Node: MEMORY216056 Node: PHDRS220662 Node: VERSION225988 Node: Expressions234079 Node: Constants235092 Node: Symbolic Constants235966 Node: Symbols236517 Node: Orphan Sections237264 Node: Location Counter238849 Node: Operators243283 Node: Evaluation244205 Node: Expression Section245569 Node: Builtin Functions249539 Node: Implicit Linker Scripts257873 Node: Plugins258648 Node: libdep Plugin259108 Node: Machine Dependent260905 Node: H8/300261993 Node: M68HC11/68HC12264066 Node: ARM265513 Node: HPPA ELF32277623 Node: M68K279246 Node: MIPS280155 Node: MMIX281271 Node: MSP430282436 Node: NDS32284349 Node: Nios II285313 Node: PowerPC ELF32286629 Node: PowerPC64 ELF64289460 Node: S/390 ELF299218 Node: SPU ELF299565 Node: TI COFF302193 Node: WIN32302719 Node: Xtensa322866 Node: BFD326309 Node: BFD outline327767 Node: BFD information loss329055 Node: Canonical format331581 Node: Reporting Bugs335909 Node: Bug Criteria336603 Node: Bug Reporting337302 Node: MRI344337 Node: GNU Free Documentation License348808 Node: LD Index373945 a8846 5  Local Variables: coding: utf-8 End: @ 1.1.1.10.2.1 log @Sync with HEAD. @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 7.0.2 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.42. d5 1 a5 1 Copyright © 1991-2024 Free Software Foundation, Inc. d11 2 a12 2 Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.42. d28 1 a28 1 the section entitled “GNU Free Documentation License”. a35 1 * Special Sections:: Special Sections d50 1 a50 1 ‘ld’ combines a number of object and archive files, relocates their data d52 1 a52 1 program is to run ‘ld’. d54 2 a55 2 ‘ld’ accepts Linker Command Language files written in a superset of AT&T’s Link Editor Command Language syntax, to provide explicit and d58 3 a60 3 This version of ‘ld’ uses the general purpose BFD libraries to operate on object files. This allows ‘ld’ to read, combine, and write object files in many different formats—for example, COFF or ‘a.out’. d67 1 a67 1 ‘ld’ continues executing, allowing you to identify other errors (or, in d76 1 a76 1 The GNU linker ‘ld’ is meant to cover a broad range of situations, and d93 1 a93 1 a frequent use of ‘ld’ is to link standard Unix object files on a d95 1 a95 1 ‘hello.o’: d99 2 a100 2 This tells ‘ld’ to produce a file called OUTPUT as the result of linking the file ‘/lib/crt0.o’ with ‘hello.o’ and the library ‘libc.a’, d102 1 a102 1 discussion of the ‘-l’ option below.) d104 1 a104 1 Some of the command-line options to ‘ld’ may be specified at any d106 1 a106 1 as ‘-l’ or ‘-T’, cause the file to be read at the point at which the d120 1 a120 1 can specify other forms of binary input files using ‘-l’, ‘-R’, and the d123 1 a123 1 message ‘No input files’. d128 1 a128 1 linker script or the one specified by using ‘-T’). This feature permits d130 2 a131 2 archive, but actually merely defines some symbol values, or uses ‘INPUT’ or ‘GROUP’ to load other objects. Specifying a script in this way d133 2 a134 2 after the main script; use the ‘-T’ option to replace the default linker script entirely, but note the effect of the ‘INSERT’ command. *Note d143 6 a148 6 can precede the option name; for example, ‘-trace-symbol’ and ‘--trace-symbol’ are equivalent. Note—there is one exception to this rule. Multiple letter options that start with a lower case ’o’ can only be preceded by two dashes. This is to reduce confusion with the ‘-o’ option. So for example ‘-omagic’ sets the output file name to ‘magic’ whereas ‘--omagic’ sets the NMAGIC flag on the output. d153 1 a153 1 ‘--trace-symbol foo’ and ‘--trace-symbol=foo’ are equivalent. Unique d156 3 a158 3 Note—if the linker is being invoked indirectly, via a compiler driver (e.g. ‘gcc’) then all the linker command-line options should be prefixed by ‘-Wl,’ (or whatever is appropriate for the particular d176 1 a176 1 ‘@@FILE’ d189 1 a189 1 ‘-a KEYWORD’ d191 2 a192 2 argument must be one of the strings ‘archive’, ‘shared’, or ‘default’. ‘-aarchive’ is functionally equivalent to ‘-Bstatic’, d194 1 a194 1 ‘-Bdynamic’. This option may be used any number of times. d196 2 a197 2 ‘--audit AUDITLIB’ Adds AUDITLIB to the ‘DT_AUDIT’ entry of the dynamic section. d200 1 a200 1 ‘DT_AUDIT’ will contain a colon separated list of audit interfaces d203 1 a203 1 ‘DT_DEPAUDIT’ entry in the output file. This option is only d206 4 a209 4 ‘-b INPUT-FORMAT’ ‘--format=INPUT-FORMAT’ ‘ld’ may be configured to support more than one kind of object file. If your ‘ld’ is configured this way, you can use the ‘-b’ d211 3 a213 3 follow this option on the command line. Even when ‘ld’ is configured to support alternative object formats, you don’t usually need to specify this, as ‘ld’ should be configured to expect as a d217 1 a217 1 formats with ‘objdump -i’.) *Note BFD::. d220 1 a220 1 unusual binary format. You can also use ‘-b’ to switch formats d222 1 a222 1 including ‘-b INPUT-FORMAT’ before each group of object files in a d226 2 a227 2 ‘GNUTARGET’. *Note Environment::. You can also define the input format from a script, using the command ‘TARGET’; see *note Format d230 3 a232 3 ‘-c MRI-COMMANDFILE’ ‘--mri-script=MRI-COMMANDFILE’ For compatibility with linkers produced by MRI, ‘ld’ accepts script d235 8 a242 8 script files with the option ‘-c’; use the ‘-T’ option to run linker scripts written in the general-purpose ‘ld’ scripting language. If MRI-CMDFILE does not exist, ‘ld’ looks for it in the directories specified by any ‘-L’ options. ‘-d’ ‘-dc’ ‘-dp’ d245 2 a246 2 symbols even if a relocatable output file is specified (with ‘-r’). The script command ‘FORCE_COMMON_ALLOCATION’ has the same effect. d249 3 a251 3 ‘--depaudit AUDITLIB’ ‘-P AUDITLIB’ Adds AUDITLIB to the ‘DT_DEPAUDIT’ entry of the dynamic section. d254 1 a254 1 ‘DT_DEPAUDIT’ will contain a colon separated list of audit d259 1 a259 15 ‘--enable-linker-version’ Enables the ‘LINKER_VERSION’ linker script directive, described in *note Output Section Data::. If this directive is used in a linker script and this option has been enabled then a string containing the linker version will be inserted at the current point. Note - this location of this option on the linker command line is significant. It will only affect linker scripts that come after it on the command line, or which are built into the linker. ‘--disable-linker-version’ Disables the ‘LINKER_VERSION’ linker script directive, so that it does not insert a version string. This is the default. ‘--enable-non-contiguous-regions’ d270 3 a272 3 MEM1 (rwx) : ORIGIN = 0x1000, LENGTH = 0x14 MEM2 (rwx) : ORIGIN = 0x1000, LENGTH = 0x40 MEM3 (rwx) : ORIGIN = 0x2000, LENGTH = 0x40 d277 1 a277 1 mem3 : { *(.data.*); } > MEM3 d291 2 a292 2 ‘--enable-non-contiguous-regions-warnings’ This option enables warnings when ‘--enable-non-contiguous-regions’ d297 2 a298 2 ‘-e ENTRY’ ‘--entry=ENTRY’ d303 2 a304 2 in base 10; you may use a leading ‘0x’ for base 16, or a leading ‘0’ for base 8). *Note Entry Point::, for a discussion of defaults d307 1 a307 1 ‘--exclude-libs LIB,LIB,...’ d310 1 a310 1 commas or colons. Specifying ‘--exclude-libs ALL’ excludes symbols d318 1 a318 1 ‘--exclude-modules-for-implib MODULE,MODULE,...’ d323 1 a323 1 must match exactly the filenames used by ‘ld’ to open the files; d326 1 a326 1 used to specify the input file on the linker’s command-line. This d331 5 a335 5 ‘-E’ ‘--export-dynamic’ ‘--no-export-dynamic’ When creating a dynamically linked executable, using the ‘-E’ option or the ‘--export-dynamic’ option causes the linker to add d341 1 a341 1 ‘--no-export-dynamic’ option to restore the default behavior), the d345 1 a345 1 If you use ‘dlopen’ to load a dynamic object which needs to refer d352 1 a352 1 See the description of ‘--dynamic-list’. d356 1 a356 1 or EXE; see the description of ‘--export-all-symbols’ below. d358 1 a358 1 ‘--export-dynamic-symbol=GLOB’ d363 2 a364 2 a no-op when creating a shared library and ‘-Bsymbolic’ or ‘--dynamic-list’ are not specified. This option is only meaningful d367 2 a368 2 ‘--export-dynamic-symbol-list=FILE’ Specify a ‘--export-dynamic-symbol’ for each pattern in the file. d372 1 a372 1 ‘-EB’ d375 1 a375 1 ‘-EL’ d379 2 a380 2 ‘-f NAME’ ‘--auxiliary=NAME’ d400 2 a401 2 ‘-F NAME’ ‘--filter=NAME’ d415 1 a415 1 Some older linkers used the ‘-F’ option throughout a compilation d418 3 a420 3 purpose: the ‘-b’, ‘--format’, ‘--oformat’ options, the ‘TARGET’ command in linker scripts, and the ‘GNUTARGET’ environment variable. The GNU linker will ignore the ‘-F’ option when not d423 1 a423 1 ‘-fini=NAME’ d426 1 a426 1 the address of the function. By default, the linker uses ‘_fini’ d429 1 a429 1 ‘-g’ d432 2 a433 2 ‘-G VALUE’ ‘--gpsize=VALUE’ d439 2 a440 2 ‘-h NAME’ ‘-soname=NAME’ d448 2 a449 2 ‘-i’ Perform an incremental link (same as option ‘-r’). d451 1 a451 1 ‘-init=NAME’ d454 1 a454 1 the address of the function. By default, the linker uses ‘_init’ d457 2 a458 2 ‘-l NAMESPEC’ ‘--library=NAMESPEC’ d461 1 a461 1 NAMESPEC is of the form ‘:FILENAME’, ‘ld’ will search the library d463 1 a463 1 library path for a file called ‘libNAMESPEC.a’. d465 6 a470 6 On systems which support shared libraries, ‘ld’ may also search for files other than ‘libNAMESPEC.a’. Specifically, on ELF and SunOS systems, ‘ld’ will search a directory for a library called ‘libNAMESPEC.so’ before searching for one called ‘libNAMESPEC.a’. (By convention, a ‘.so’ extension indicates a shared library.) Note that this behavior does not apply to ‘:FILENAME’, which always d481 1 a481 1 See the ‘-(’ option for a way to force the linker to search d487 1 a487 1 However, if you are using ‘ld’ on AIX, note that it is different d490 4 a493 4 ‘-L SEARCHDIR’ ‘--library-path=SEARCHDIR’ Add path SEARCHDIR to the list of paths that ‘ld’ will search for archive libraries and ‘ld’ control scripts. You may use this d497 3 a499 3 directories. All ‘-L’ options apply to all ‘-l’ options, regardless of the order in which the options appear. ‘-L’ options do not affect how ‘ld’ searches for a linker script unless ‘-T’ d502 2 a503 2 If SEARCHDIR begins with ‘=’ or ‘$SYSROOT’, then this prefix will be replaced by the “sysroot prefix”, controlled by the ‘--sysroot’ d507 1 a507 1 ‘-L’) depends on which emulation mode ‘ld’ is using, and in some d511 1 a511 1 ‘SEARCH_DIR’ command. Directories specified this way are searched d515 1 a515 1 ‘-m EMULATION’ d517 1 a517 1 emulations with the ‘--verbose’ or ‘-V’ options. d519 2 a520 2 If the ‘-m’ option is not used, the emulation is taken from the ‘LDEMULATION’ environment variable, if that is defined. d525 2 a526 54 ‘--remap-inputs=pattern=filename’ ‘--remap-inputs-file=file’ These options allow the names of input files to be changed before the linker attempts to open them. The option ‘--remap-inputs=foo.o=bar.o’ will cause any attempt to load a file called ‘foo.o’ to instead try to load a file called ‘bar.o’. Wildcard patterns are permitted in the first filename, so ‘--remap-inputs=foo*.o=bar.o’ will rename any input file that matches ‘foo*.o’ to ‘bar.o’. An alternative form of the option ‘--remap-inputs-file=filename’ allows the remappings to be read from a file. Each line in the file can contain a single remapping. Blank lines are ignored. Anything from a hash character (‘#’) to the end of a line is considered to be a comment and is also ignored. The mapping pattern can be separated from the filename by whitespace or an equals (‘=’) character. The options can be specified multiple times. Their contents accumulate. The remappings will be processed in the order in which they occur on the command line, and if they come from a file, in the order in which they occur in the file. If a match is made, no further checking for that filename will be performed. If the replacement filename is ‘/dev/null’ or just ‘NUL’ then the remapping will actually cause the input file to be ignored. This can be a convenient way to experiment with removing input files from a complicated build environment. Note that this option is position dependent and only affects filenames that come after it on the command line. Thus: ld foo.o --remap-inputs=foo.o=bar.o Will have no effect, whereas: ld --remap-inputs=foo.o=bar.o foo.o Will rename the input file ‘foo.o’ to ‘bar.o’. Note - these options also affect files referenced by _INPUT_ statements in linker scripts. But since linker scripts are processed after the entire command line is read, the position of the remap options on the command line is not significant. If the ‘verbose’ option is enabled then any mappings that match will be reported, although again the ‘verbose’ option needs to be enabled on the command line _before_ the remaped filenames appear. If the ‘-Map’ or ‘--print-map’ options are enabled then the remapping list will be included in the map output. ‘-M’ ‘--print-map’ d530 3 a532 3 • Where object files are mapped into memory. • How common symbols are allocated. • All archive members included in the link, with a mention of d534 1 a534 1 • The values assigned to symbols. d549 1 a549 1 will produce the following output in the link map if the ‘-M’ d559 1 a559 1 • How GNU properties are merged. d569 2 a570 2 when merging properties in ‘foo.o’, whose property 0xc0000002 value is 0x1, and ‘bar.o’, which doesn’t have property d576 2 a577 2 0x1 in output when merging properties in ‘foo.o’, whose 0xc0010001 property value is 0x1, and ‘bar.o’, whose d580 2 a581 10 • On some ELF targets, a list of fixups inserted by ‘--relax’ foo.o: Adjusting branch at 0x00000008 towards "far" in section .text This indicates that the branch at 0x00000008 in foo.o, targeting the symbol "far" in section .text, has been replaced by a trampoline. ‘--print-map-discarded’ ‘--no-print-map-discarded’ d585 2 a586 10 ‘--print-map-locals’ ‘--no-print-map-locals’ Print (or do not print) local symbols in the link map. Local symbols will have the text ‘(local)’ printed before their name, and will be listed after all of the global symbols in a given section. Temporary local symbols (typically those that start with ‘.L’) will not be included in the output. Disabled by default. ‘-n’ ‘--nmagic’ d589 1 a589 1 numbers, mark the output as ‘NMAGIC’. d591 2 a592 2 ‘-N’ ‘--omagic’ d596 1 a596 1 numbers, mark the output as ‘OMAGIC’. Note: Although a writable d600 2 a601 2 ‘--no-omagic’ This option negates most of the effects of the ‘-N’ option. It d604 1 a604 1 against shared libraries. Use ‘-Bdynamic’ for this. d606 9 a614 9 ‘-o OUTPUT’ ‘--output=OUTPUT’ Use OUTPUT as the name for the program produced by ‘ld’; if this option is not specified, the name ‘a.out’ is used by default. The script command ‘OUTPUT’ can also specify the output file name. ‘--dependency-file=DEPFILE’ Write a “dependency file” to DEPFILE. This file contains a rule suitable for ‘make’ describing the output file and all the input d616 1 a616 1 compiler’s output with ‘-M -MP’ (*note Options Controlling the d618 1 a618 1 no option like the compiler’s ‘-MM’, to exclude “system files” d620 2 a621 2 “system headers” in the compiler). So the output from ‘--dependency-file’ is always specific to the exact state of the d625 2 a626 2 ‘-O LEVEL’ If LEVEL is a numeric values greater than zero ‘ld’ optimizes the d631 1 a631 1 Also currently there is no difference in the linker’s behaviour for d635 1 a635 1 ‘-plugin NAME’ d643 1 a643 1 different from the place where the ‘ar’, ‘nm’ and ‘ranlib’ programs d646 1 a646 1 ‘${libdir}/bfd-plugins’ directory. All gcc based linker plugins d650 2 a651 2 ‘--push-state’ The ‘--push-state’ allows one to preserve the current state of the d653 1 a653 1 restored with one corresponding ‘--pop-state’ option. d655 5 a659 5 The option which are covered are: ‘-Bdynamic’, ‘-Bstatic’, ‘-dn’, ‘-dy’, ‘-call_shared’, ‘-non_shared’, ‘-static’, ‘-N’, ‘-n’, ‘--whole-archive’, ‘--no-whole-archive’, ‘-r’, ‘-Ur’, ‘--copy-dt-needed-entries’, ‘--no-copy-dt-needed-entries’, ‘--as-needed’, ‘--no-as-needed’, and ‘-a’. d661 2 a662 2 One target for this option are specifications for ‘pkg-config’. When used with the ‘--libs’ option all possibly needed libraries d668 2 a669 2 ‘--pop-state’ Undoes the effect of –push-state, restores the previous values of d672 2 a673 2 ‘-q’ ‘--emit-relocs’ d681 1 a681 1 ‘--force-dynamic’ d685 7 a691 7 ‘-r’ ‘--relocatable’ Generate relocatable output—i.e., generate an output file that can in turn serve as input to ‘ld’. This is often called “partial linking”. As a side effect, in environments that support standard Unix magic numbers, this option also sets the output file’s magic number to ‘OMAGIC’. If this option is not specified, an absolute d693 1 a693 1 not_ resolve references to constructors; to do that, use ‘-Ur’. d698 1 a698 1 restrictions; for example some ‘a.out’-based formats do not support d701 1 a701 1 This option does the same thing as ‘-i’. d703 2 a704 2 ‘-R FILENAME’ ‘--just-symbols=FILENAME’ d710 1 a710 1 For compatibility with other ELF linkers, if the ‘-R’ option is d712 1 a712 1 treated as the ‘-rpath’ option. d714 2 a715 2 ‘-s’ ‘--strip-all’ d718 2 a719 2 ‘-S’ ‘--strip-debug’ d723 2 a724 2 ‘--strip-discarded’ ‘--no-strip-discarded’ d728 4 a731 4 ‘-t’ ‘--trace’ Print the names of the input files as ‘ld’ processes them. If ‘-t’ is given twice then members within archives are also printed. ‘-t’ d736 8 a743 9 ‘-T SCRIPTFILE’ ‘--script=SCRIPTFILE’ Use SCRIPTFILE as the linker script. This script replaces ‘ld’’s default linker script (rather than adding to it), unless the script contains ‘INSERT’, so COMMANDFILE must specify everything necessary to describe the output file. *Note Scripts::. If SCRIPTFILE does not exist in the current directory, ‘ld’ looks for it in the directories specified by any preceding ‘-L’ options. Multiple ‘-T’ options accumulate. d745 2 a746 2 ‘-dT SCRIPTFILE’ ‘--default-script=SCRIPTFILE’ d749 1 a749 1 This option is similar to the ‘--script’ option except that d752 1 a752 1 the ‘--default-script’ option on the command line to affect the d756 1 a756 1 as ‘gcc’). d758 2 a759 2 ‘-u SYMBOL’ ‘--undefined=SYMBOL’ d762 1 a762 1 modules from standard libraries. ‘-u’ may be repeated with d764 1 a764 1 This option is equivalent to the ‘EXTERN’ linker script command. d768 1 a768 1 remain undefined, then the option ‘--require-defined’ should be d771 1 a771 1 ‘--require-defined=SYMBOL’ d773 1 a773 1 the same as option ‘--undefined’ except that if SYMBOL is not d776 1 a776 1 ‘EXTERN’, ‘ASSERT’ and ‘DEFINED’ together. This option can be used d779 8 a786 13 ‘-Ur’ For programs that do not use constructors or destructors, or for ELF based systems this option is equivalent to ‘-r’: it generates relocatable output—i.e., an output file that can in turn serve as input to ‘ld’. For other binaries however the ‘-Ur’ option is similar to ‘-r’ but it also resolves references to constructors and destructors. For those systems where ‘-r’ and ‘-Ur’ behave differently, it does not work to use ‘-Ur’ on files that were themselves linked with ‘-Ur’; once the constructor table has been built, it cannot be added to. Use ‘-Ur’ only for the last partial link, and ‘-r’ for d789 1 a789 1 ‘--orphan-handling=MODE’ d796 1 a796 1 ‘place’ d799 1 a799 1 The option ‘--unique’ also affects how sections are placed. d801 1 a801 1 ‘discard’ d803 1 a803 1 ‘/DISCARD/’ section (*note Output Section Discarding::). d805 2 a806 2 ‘warn’ The linker will place the orphan section as for ‘place’ and d809 1 a809 1 ‘error’ d813 1 a813 1 The default if ‘--orphan-handling’ is not given is ‘place’. d815 1 a815 1 ‘--unique[=SECTION]’ d824 5 a828 8 ‘-v’ ‘--version’ ‘-V’ Display the version number for ‘ld’. The ‘-V’ option also lists the supported emulations. See also the description of the ‘--enable-linker-version’ in *note Command-line Options: Options. which can be used to insert the linker version string into a binary. d830 2 a831 2 ‘-x’ ‘--discard-all’ d834 2 a835 2 ‘-X’ ‘--discard-locals’ d837 2 a838 2 system-specific local label prefixes, typically ‘.L’ for ELF systems or ‘L’ for traditional a.out systems.) d840 2 a841 2 ‘-y SYMBOL’ ‘--trace-symbol=SYMBOL’ d847 1 a847 1 link but don’t know where the reference is coming from. d849 1 a849 1 ‘-Y PATH’ d853 1 a853 1 ‘-z KEYWORD’ d856 9 a864 5 ‘call-nop=prefix-addr’ ‘call-nop=suffix-nop’ ‘call-nop=prefix-BYTE’ ‘call-nop=suffix-BYTE’ Specify the 1-byte ‘NOP’ padding when transforming indirect d866 4 a869 4 ‘call-nop=prefix-addr’ generates ‘0x67 call foo’. ‘call-nop=suffix-nop’ generates ‘call foo 0x90’. ‘call-nop=prefix-BYTE’ generates ‘BYTE call foo’. ‘call-nop=suffix-BYTE’ generates ‘call foo BYTE’. Supported d872 3 a874 3 ‘cet-report=none’ ‘cet-report=warning’ ‘cet-report=error’ d878 1 a878 1 .note.gnu.property section. ‘cet-report=none’, which is the d880 1 a880 1 input files. ‘cet-report=warning’ will make the linker issue d882 2 a883 2 ‘cet-report=error’ will make the linker issue an error for missing properties in input files. Note that ‘ibt’ will turn d885 1 a885 1 and ‘shstk’ will turn off the missing d889 2 a890 2 ‘combreloc’ ‘nocombreloc’ d893 1 a893 1 ‘nocombreloc’. d895 2 a896 2 ‘common’ ‘nocommon’ d898 1 a898 1 relocatable link. Use STT_OBJECT type if ‘nocommon’. d900 1 a900 1 ‘common-page-size=VALUE’ d905 1 a905 1 ‘defs’ d908 1 a908 1 shared library. This option is the inverse of ‘-z undefs’. d910 2 a911 2 ‘dynamic-undefined-weak’ ‘nodynamic-undefined-weak’ d915 1 a915 1 make them dynamic if ‘nodynamic-undefined-weak’. If neither d920 1 a920 1 ‘execstack’ d923 1 a923 1 ‘global’ d928 1 a928 1 ‘globalaudit’ d931 3 a933 3 global auditing by setting the ‘DF_1_GLOBAUDIT’ bit in the ‘DT_FLAGS_1’ dynamic tag. Global auditing requires that any auditing library defined via the ‘--depaudit’ or ‘-P’ d937 1 a937 1 ‘ibtplt’ d941 1 a941 1 ‘ibt’ d944 1 a944 1 ‘ibtplt’. Supported for Linux/i386 and Linux/x86_64. d946 2 a947 2 ‘indirect-extern-access’ ‘noindirect-extern-access’ d952 1 a952 1 ‘noextern-protected-data’ and ‘nocopyreloc’. Supported for d955 1 a955 1 ‘noindirect-extern-access’ removes d959 1 a959 1 ‘initfirst’ d967 1 a967 1 ‘interpose’ d972 2 a973 2 ‘unique’ ‘nounique’ d977 1 a977 1 ‘dlmopen’). This is primarily used to mark fundamental d980 1 a980 1 themselves. This behaviour can be overridden by the ‘dlmopen’ d984 1 a984 1 ‘lam-u48’ d989 1 a989 1 ‘lam-u57’ d994 3 a996 3 ‘lam-u48-report=none’ ‘lam-u48-report=warning’ ‘lam-u48-report=error’ d999 1 a999 1 .note.gnu.property section. ‘lam-u48-report=none’, which is d1001 1 a1001 1 properties in input files. ‘lam-u48-report=warning’ will make d1003 1 a1003 1 files. ‘lam-u48-report=error’ will make the linker issue an d1007 3 a1009 3 ‘lam-u57-report=none’ ‘lam-u57-report=warning’ ‘lam-u57-report=error’ d1012 1 a1012 1 .note.gnu.property section. ‘lam-u57-report=none’, which is d1014 1 a1014 1 properties in input files. ‘lam-u57-report=warning’ will make d1016 1 a1016 1 files. ‘lam-u57-report=error’ will make the linker issue an d1020 3 a1022 3 ‘lam-report=none’ ‘lam-report=warning’ ‘lam-report=error’ d1026 1 a1026 1 .note.gnu.property section. ‘lam-report=none’, which is the d1028 1 a1028 1 input files. ‘lam-report=warning’ will make the linker issue d1030 1 a1030 1 ‘lam-report=error’ will make the linker issue an error for d1034 1 a1034 1 ‘lazy’ d1040 2 a1041 2 ‘loadfltr’ Specify that the object’s filters be processed immediately at d1044 1 a1044 1 ‘max-page-size=VALUE’ d1047 1 a1047 13 ‘mark-plt’ ‘nomark-plt’ Mark PLT entries with dynamic tags, DT_X86_64_PLT, DT_X86_64_PLTSZ and DT_X86_64_PLTENT. Since this option stores a non-zero value in the r_addend field of R_X86_64_JUMP_SLOT relocations, the resulting executables and shared libraries are incompatible with dynamic linkers, such as those in older versions of glibc without the change to ignore r_addend in R_X86_64_GLOB_DAT and R_X86_64_JUMP_SLOT relocations, which don’t ignore the r_addend field of R_X86_64_JUMP_SLOT relocations. Supported for x86_64. ‘muldefs’ d1050 1 a1050 1 ‘nocopyreloc’ d1055 1 a1055 1 ‘nodefaultlib’ d1059 2 a1060 2 ‘nodelete’ Specify that the object shouldn’t be unloaded at runtime. d1062 2 a1063 2 ‘nodlopen’ Specify that the object is not available to ‘dlopen’. d1065 2 a1066 2 ‘nodump’ Specify that the object can not be dumped by ‘dldump’. d1068 1 a1068 1 ‘noexecstack’ d1071 2 a1072 2 ‘noextern-protected-data’ Don’t treat protected data symbols as external when building a d1076 1 a1076 1 on protected data symbols by another module aren’t visible to d1079 1 a1079 1 ‘noreloc-overflow’ d1084 1 a1084 1 ‘now’ d1091 2 a1092 2 ‘origin’ Specify that the object requires ‘$ORIGIN’ handling in paths. d1094 2 a1095 2 ‘pack-relative-relocs’ ‘nopack-relative-relocs’ d1097 2 a1098 2 executable and shared library. It adds ‘DT_RELR’, ‘DT_RELRSZ’ and ‘DT_RELRENT’ entries to the dynamic section. It is d1100 1 a1100 1 relocatable output. ‘nopack-relative-relocs’ is the default, d1106 3 a1108 3 ‘relro’ ‘norelro’ Create an ELF ‘PT_GNU_RELRO’ segment header in the object. d1110 1 a1110 1 after relocation, if supported. Specifying ‘common-page-size’ d1112 2 a1113 2 ineffective. Don’t create an ELF ‘PT_GNU_RELRO’ segment if ‘norelro’. d1115 1 a1115 1 ‘report-relative-reloc’ d1119 3 a1121 8 ‘sectionheader’ ‘nosectionheader’ Generate section header. Don’t generate section header if ‘nosectionheader’ is used. ‘sectionheader’ is the default. ‘separate-code’ ‘noseparate-code’ Create separate code ‘PT_LOAD’ segment header in the object. d1124 2 a1125 2 other data. Don’t create separate code ‘PT_LOAD’ segment if ‘noseparate-code’ is used. d1127 1 a1127 1 ‘shstk’ d1133 2 a1134 2 ‘stack-size=VALUE’ Specify a stack size for an ELF ‘PT_GNU_STACK’ segment. d1136 1 a1136 1 ‘PT_GNU_STACK’ segment creation. d1138 8 a1145 8 ‘start-stop-gc’ ‘nostart-stop-gc’ When ‘--gc-sections’ is in effect, a reference from a retained section to ‘__start_SECNAME’ or ‘__stop_SECNAME’ causes all input sections named ‘SECNAME’ to also be retained, if ‘SECNAME’ is representable as a C identifier and either ‘__start_SECNAME’ or ‘__stop_SECNAME’ is synthesized by the linker. ‘-z start-stop-gc’ disables this effect, allowing d1147 2 a1148 2 symbols were not defined. ‘-z start-stop-gc’ has no effect on a definition of ‘__start_SECNAME’ or ‘__stop_SECNAME’ in an d1150 2 a1151 2 the linker providing a synthesized ‘__start_SECNAME’ or ‘__stop_SECNAME’ respectively, and therefore the special d1154 1 a1154 1 ‘start-stop-visibility=VALUE’ d1156 6 a1161 6 ‘__start_SECNAME’ and ‘__stop_SECNAME’ symbols (*note Input Section Example::). VALUE must be exactly ‘default’, ‘internal’, ‘hidden’, or ‘protected’. If no ‘-z start-stop-visibility’ option is given, ‘protected’ is used for compatibility with historical practice. However, it’s highly recommended to use ‘-z start-stop-visibility=hidden’ in d1164 1 a1164 1 what’s intended. d1166 3 a1168 3 ‘text’ ‘notext’ ‘textoff’ d1171 2 a1172 2 in read-only sections. Don’t report an error if ‘notext’ or ‘textoff’. d1174 1 a1174 1 ‘undefs’ d1177 1 a1177 1 shared library. This option is the inverse of ‘-z defs’. d1179 2 a1180 2 ‘unique-symbol’ ‘nounique-symbol’ d1182 2 a1183 2 table. Append ".‘number’" to duplicated local symbol names if ‘unique-symbol’ is used. ‘nounique-symbol’ is the default. d1185 4 a1188 4 ‘x86-64-baseline’ ‘x86-64-v2’ ‘x86-64-v3’ ‘x86-64-v4’ d1190 5 a1194 5 section. ‘x86-64-baseline’ generates ‘GNU_PROPERTY_X86_ISA_1_BASELINE’. ‘x86-64-v2’ generates ‘GNU_PROPERTY_X86_ISA_1_V2’. ‘x86-64-v3’ generates ‘GNU_PROPERTY_X86_ISA_1_V3’. ‘x86-64-v4’ generates ‘GNU_PROPERTY_X86_ISA_1_V4’. Supported for Linux/i386 and d1199 2 a1200 2 ‘-( ARCHIVES -)’ ‘--start-group ARCHIVES --end-group’ d1202 1 a1202 1 explicit file names, or ‘-l’ options. d1217 2 a1218 2 ‘--accept-unknown-input-arch’ ‘--no-accept-unknown-input-arch’ d1224 1 a1224 1 input files, and so the ‘--accept-unknown-input-arch’ option has d1227 2 a1228 2 ‘--as-needed’ ‘--no-as-needed’ d1230 1 a1230 1 mentioned on the command line after the ‘--as-needed’ option. d1233 1 a1233 1 library is actually needed or not. ‘--as-needed’ causes a d1242 1 a1242 1 archives. ‘--no-as-needed’ restores the default behaviour. d1244 3 a1246 3 Note: On Linux based systems the ‘--as-needed’ option also has an affect on the behaviour of the ‘--rpath’ and ‘--rpath-link’ options. See the description of ‘--rpath-link’ for more details. d1248 2 a1249 2 ‘--add-needed’ ‘--no-add-needed’ d1251 3 a1253 3 their names to the ‘--as-needed’ and ‘--no-as-needed’ options. They have been replaced by ‘--copy-dt-needed-entries’ and ‘--no-copy-dt-needed-entries’. d1255 1 a1255 1 ‘-assert KEYWORD’ d1258 3 a1260 3 ‘-Bdynamic’ ‘-dy’ ‘-call_shared’ d1266 1 a1266 1 library searching for ‘-l’ options which follow it. d1268 2 a1269 2 ‘-Bgroup’ Set the ‘DF_1_GROUP’ flag in the ‘DT_FLAGS_1’ entry in the dynamic d1272 1 a1272 1 ‘--unresolved-symbols=report-all’ is implied. This option is only d1275 4 a1278 4 ‘-Bstatic’ ‘-dn’ ‘-non_shared’ ‘-static’ d1283 4 a1286 4 affects library searching for ‘-l’ options which follow it. This option also implies ‘--unresolved-symbols=report-all’. This option can be used with ‘-shared’. Doing so means that a shared library is being created but that all of the library’s external references d1289 1 a1289 1 ‘-Bsymbolic’ d1296 1 a1296 1 ‘-Bsymbolic-functions’ d1302 3 a1304 3 ‘-Bno-symbolic’ This option can cancel previously specified ‘-Bsymbolic’ and ‘-Bsymbolic-functions’. d1306 1 a1306 1 ‘--dynamic-list=DYNAMIC-LIST-FILE’ d1309 1 a1309 1 global symbols whose references shouldn’t be bound to the d1319 1 a1319 1 ‘--dynamic-list-data’ d1322 1 a1322 1 ‘--dynamic-list-cpp-new’ d1326 1 a1326 1 ‘--dynamic-list-cpp-typeinfo’ d1330 2 a1331 2 ‘--check-sections’ ‘--no-check-sections’ d1338 1 a1338 1 ‘--check-sections’. Section overlap is not usually checked for d1340 1 a1340 1 the ‘--check-sections’ option. d1342 2 a1343 2 ‘--copy-dt-needed-entries’ ‘--no-copy-dt-needed-entries’ d1346 1 a1346 1 command line. Normally the linker won’t add a DT_NEEDED tag to the d1348 1 a1348 1 input dynamic library. With ‘--copy-dt-needed-entries’ specified d1351 1 a1351 1 be restored with ‘--no-copy-dt-needed-entries’. d1354 1 a1354 1 dynamic libraries. With ‘--copy-dt-needed-entries’ dynamic d1362 1 a1362 1 ‘--cref’ d1375 2 a1376 2 ‘--ctf-variables’ ‘--no-ctf-variables’ d1382 1 a1382 1 the names are often not. ‘--ctf-variables’ causes the generation d1384 1 a1384 1 ‘--no-ctf-variables’. d1386 1 a1386 1 ‘--ctf-share-types=METHOD’ d1390 1 a1390 1 ‘share-unconflicted’ d1396 1 a1396 1 ‘share-duplicated’ d1406 1 a1406 1 ‘--no-define-common’ d1408 1 a1408 1 The script command ‘INHIBIT_COMMON_ALLOCATION’ has the same effect. d1411 1 a1411 1 The ‘--no-define-common’ option allows decoupling the decision to d1414 1 a1414 1 addresses to Common symbols. Using ‘--no-define-common’ allows d1422 1 a1422 1 ‘--force-group-allocation’ d1426 2 a1427 2 to change the behaviour of a relocatable link (‘-r’). The script command ‘FORCE_GROUP_ALLOCATION’ has the same effect. *Note d1430 1 a1430 1 ‘--defsym=SYMBOL=EXPRESSION’ d1436 1 a1436 1 existing symbol, or use ‘+’ and ‘-’ to add or subtract hexadecimal d1440 1 a1440 1 SYMBOL, the equals sign (“<=>”), and EXPRESSION. d1442 4 a1445 4 The linker processes ‘--defsym’ arguments and ‘-T’ arguments in order, placing ‘--defsym’ before ‘-T’ will define the symbol before the linker script from ‘-T’ is processed, while placing ‘--defsym’ after ‘-T’ will define the symbol after the linker script has been d1447 1 a1447 1 the linker script that use the ‘--defsym’ symbols, which order is d1450 2 a1451 2 ‘--demangle[=STYLE]’ ‘--no-demangle’ d1460 1 a1460 1 default unless the environment variable ‘COLLECT_NO_DEMANGLE’ is d1463 2 a1464 2 ‘-IFILE’ ‘--dynamic-linker=FILE’ d1467 1 a1467 1 linker is normally correct; don’t use this unless you know what you d1470 1 a1470 1 ‘--no-dynamic-linker’ d1476 2 a1477 2 ‘--embedded-relocs’ This option is similar to the ‘--emit-relocs’ option except that d1479 1 a1479 1 only supported by the ‘BFIN’, ‘CR16’ and _M68K_ targets. d1481 1 a1481 1 ‘--disable-multiple-abs-defs’ d1483 1 a1483 1 invoked by -R or –just-symbols d1485 2 a1486 2 ‘--fatal-warnings’ ‘--no-fatal-warnings’ d1488 1 a1488 1 restored with the option ‘--no-fatal-warnings’. d1490 1 a1490 8 ‘-w’ ‘--no-warnings’ Do not display any warning or error messages. This overrides ‘--fatal-warnings’ if it has been enabled. This option can be used when it is known that the output binary will not work, but there is still a need to create it. ‘--force-exe-suffix’ d1494 2 a1495 2 ‘.exe’ or ‘.dll’ suffix, this option forces the linker to copy the output file to one of the same name with a ‘.exe’ suffix. This d1497 2 a1498 2 Microsoft Windows host, since some versions of Windows won’t run an image unless it ends in a ‘.exe’ suffix. d1500 2 a1501 2 ‘--gc-sections’ ‘--no-gc-sections’ d1505 1 a1505 1 specifying ‘--no-gc-sections’ on the command line. Note that d1509 1 a1509 1 ‘--gc-sections’ decides which input sections are used by examining d1517 2 a1518 2 relocations. See ‘--entry’, ‘--undefined’, and ‘--gc-keep-exported’. d1521 3 a1523 3 option ‘-r’). In this case the root of symbols kept must be explicitly specified either by one of the options ‘--entry’, ‘--undefined’, or ‘--gc-keep-exported’ or by a ‘ENTRY’ command in d1527 1 a1527 1 ‘SHF_GNU_RETAIN’ flag will not be garbage collected. d1529 2 a1530 2 ‘--print-gc-sections’ ‘--no-print-gc-sections’ d1533 1 a1533 1 collection has been enabled via the ‘--gc-sections’) option. The d1535 1 a1535 1 can be restored by specifying ‘--no-print-gc-sections’ on the d1538 2 a1539 2 ‘--gc-keep-exported’ When ‘--gc-sections’ is enabled, this option prevents garbage d1548 1 a1548 1 ‘--print-output-format’ d1551 1 a1551 1 in an ‘OUTPUT_FORMAT’ linker script command (*note File d1554 1 a1554 1 ‘--print-memory-usage’ d1566 1 a1566 1 ‘--help’ d1570 1 a1570 1 ‘--target-help’ d1574 1 a1574 1 ‘-Map=MAPFILE’ d1576 1 a1576 1 ‘-M’ option, above. If MAPFILE is just the character ‘-’ then the d1582 1 a1582 1 with ‘.map’ appended. If however the special character ‘%’ is used d1585 1 a1585 1 ‘.map’ will no longer be appended. d1598 1 a1598 1 It is an error to specify more than one ‘%’ character. d1603 3 a1605 3 ‘--no-keep-memory’ ‘ld’ normally optimizes for speed over memory usage by caching the symbol tables of input files in memory. This option tells ‘ld’ to d1607 1 a1607 1 as necessary. This may be required if ‘ld’ runs out of memory d1610 2 a1611 2 ‘--no-undefined’ ‘-z defs’ d1614 1 a1614 1 library. The switch ‘--[no-]allow-shlib-undefined’ controls the d1618 1 a1618 1 The effects of this option can be reverted by using ‘-z undefs’. d1620 2 a1621 2 ‘--allow-multiple-definition’ ‘-z muldefs’ d1626 2 a1627 2 ‘--allow-shlib-undefined’ ‘--no-allow-shlib-undefined’ d1629 1 a1629 1 switch is similar to ‘--no-undefined’ except that it determines the d1642 1 a1642 1 • A shared library specified at link time may not be the same as d1645 1 a1645 1 • There are some operating systems, eg BeOS and HPPA, where d1653 1 a1653 1 ‘--error-handling-script=SCRIPTNAME’ d1657 2 a1658 2 arguments will be passed to script: the keyword “undefined-symbol” or ‘missing-lib” and the NAME of the undefined symbol or missing d1667 1 a1667 1 ‘--no-undefined-version’ d1672 1 a1672 1 ‘--default-symver’ d1676 1 a1676 1 ‘--default-imported-symver’ d1680 2 a1681 2 ‘--no-warn-mismatch’ Normally ‘ld’ will give an error if you try to link together input d1684 1 a1684 1 endiannesses. This option tells ‘ld’ that it should silently d1689 2 a1690 2 ‘--no-warn-search-mismatch’ Normally ‘ld’ will give a warning if it finds an incompatible d1693 2 a1694 2 ‘--no-whole-archive’ Turn off the effect of the ‘--whole-archive’ option for subsequent d1697 1 a1697 1 ‘--noinhibit-exec’ d1703 1 a1703 1 ‘-nostdlib’ d1708 6 a1713 6 ‘--oformat=OUTPUT-FORMAT’ ‘ld’ may be configured to support more than one kind of object file. If your ‘ld’ is configured this way, you can use the ‘--oformat’ option to specify the binary format for the output object file. Even when ‘ld’ is configured to support alternative object formats, you don’t usually need to specify this, as ‘ld’ d1717 2 a1718 2 can list the available binary formats with ‘objdump -i’.) The script command ‘OUTPUT_FORMAT’ can also specify the output format, d1721 1 a1721 1 ‘--out-implib FILE’ d1724 1 a1724 1 library (which should be called ‘*.dll.a’ or ‘*.a’ for DLLs) may be d1727 1 a1727 1 creation step (eg. ‘dlltool’ for DLLs). This option is only d1730 2 a1731 2 ‘-pie’ ‘--pic-executable’ d1740 1 a1740 1 ‘-no-pie’ d1743 1 a1743 1 ‘-qmagic’ d1746 1 a1746 1 ‘-Qy’ d1749 2 a1750 2 ‘--relax’ ‘--no-relax’ d1752 4 a1755 4 supported on a few targets. *Note ‘ld’ and the H8/300: H8/300. *Note ‘ld’ and Xtensa Processors: Xtensa. *Note ‘ld’ and the 68HC11 and 68HC12: M68HC11/68HC12. *Note ‘ld’ and the Altera Nios II: Nios II. *Note ‘ld’ and PowerPC 32-bit ELF Support: PowerPC d1758 1 a1758 1 On some platforms the ‘--relax’ option performs target specific, d1770 1 a1770 1 ‘--no-relax’ will disable it. d1772 2 a1773 2 On platforms where the feature is not supported, both ‘--relax’ and ‘--no-relax’ are accepted, but ignored. d1775 1 a1775 1 ‘--retain-symbols-file=FILENAME’ d1782 1 a1782 1 ‘--retain-symbols-file’ does _not_ discard undefined symbols, or d1785 2 a1786 2 You may only specify ‘--retain-symbols-file’ once in the command line. It overrides ‘-s’ and ‘-S’. d1788 1 a1788 1 ‘-rpath=DIR’ d1790 1 a1790 1 when linking an ELF executable with shared objects. All ‘-rpath’ d1794 1 a1794 1 The ‘-rpath’ option is also used when locating shared objects which d1796 1 a1796 1 the description of the ‘-rpath-link’ option. Searching ‘-rpath’ in d1798 1 a1798 1 which have been configured with the ‘--with-sysroot’ option. d1800 2 a1801 2 If ‘-rpath’ is not used when linking an ELF executable, the contents of the environment variable ‘LD_RUN_PATH’ will be used if d1804 1 a1804 1 The ‘-rpath’ option may also be used on SunOS. By default, on d1806 4 a1809 4 ‘-L’ options it is given. If a ‘-rpath’ option is used, the runtime search path will be formed exclusively using the ‘-rpath’ options, ignoring the ‘-L’ options. This can be useful when using gcc, which adds many ‘-L’ options which may be on NFS mounted file d1812 1 a1812 1 For compatibility with other ELF linkers, if the ‘-R’ option is d1814 1 a1814 1 treated as the ‘-rpath’ option. d1816 1 a1816 1 ‘-rpath-link=DIR’ d1818 1 a1818 1 This happens when an ‘ld -shared’ link includes a shared library as d1824 1 a1824 1 it is not included explicitly. In such a case, the ‘-rpath-link’ d1826 1 a1826 1 ‘-rpath-link’ option may specify a sequence of directory names d1833 1 a1833 1 ‘lib’ - for 32-bit binaries - or ‘lib64’ - for 64-bit binaries - in d1847 6 a1852 6 1. Any directories specified by ‘-rpath-link’ options. 2. Any directories specified by ‘-rpath’ options. The difference between ‘-rpath’ and ‘-rpath-link’ is that directories specified by ‘-rpath’ options are included in the executable and used at runtime, whereas the ‘-rpath-link’ option is only effective at link time. Searching ‘-rpath’ in this way is d1854 6 a1859 6 been configured with the ‘--with-sysroot’ option. 3. On an ELF system, for native linkers, if the ‘-rpath’ and ‘-rpath-link’ options were not used, search the contents of the environment variable ‘LD_RUN_PATH’. 4. On SunOS, if the ‘-rpath’ option was not used, search any directories specified using ‘-L’ options. d1861 6 a1866 6 variable ‘LD_LIBRARY_PATH’. 6. For a native ELF linker, the directories in ‘DT_RUNPATH’ or ‘DT_RPATH’ of a shared library are searched for shared libraries needed by it. The ‘DT_RPATH’ entries are ignored if ‘DT_RUNPATH’ entries exist. 7. For a linker for a Linux system, if the file ‘/etc/ld.so.conf’ d1868 3 a1870 3 path to this file is prefixed with the ‘sysroot’ value, if that is defined, and then any ‘prefix’ string if the linker was configured with the ‘--prefix=’ option. d1872 3 a1874 3 specified by the ‘_PATH_ELF_HINTS’ macro defined in the ‘elf-hints.h’ header file. 9. Any directories specified by a ‘SEARCH_DIR’ command in a d1876 2 a1877 2 specified by ‘-T’ (but not ‘-dT’). 10. The default directories, normally ‘/lib’ and ‘/usr/lib’. d1880 1 a1880 1 12. Any directories specified by a ‘SEARCH_DIR’ command in a d1884 1 a1884 1 If the ‘--as-needed’ option is active _and_ a shared library is d1886 1 a1886 1 does not have DT_NEEDED tag for ‘libc.so’ _and_ there is a shared d1889 1 a1889 1 DT_NEEDED tag for ‘libc.so’ _then_ the second library will be d1895 2 a1896 2 ‘-shared’ ‘-Bshareable’ d1899 1 a1899 1 create a shared library if the ‘-e’ option is not used and there d1902 4 a1905 4 ‘--sort-common’ ‘--sort-common=ascending’ ‘--sort-common=descending’ This option tells ‘ld’ to sort the common symbols by alignment in d1913 2 a1914 2 ‘--sort-section=name’ This option will apply ‘SORT_BY_NAME’ to all wildcard section d1917 2 a1918 2 ‘--sort-section=alignment’ This option will apply ‘SORT_BY_ALIGNMENT’ to all wildcard section d1921 1 a1921 1 ‘--spare-dynamic-tags=COUNT’ d1926 2 a1927 2 ‘--split-by-file[=SIZE]’ Similar to ‘--split-by-reloc’ but creates a new output section for d1931 1 a1931 1 ‘--split-by-reloc[=COUNT]’ d1944 1 a1944 1 ‘--stats’ d1948 1 a1948 1 ‘--sysroot=DIRECTORY’ d1951 1 a1951 1 that were configured using ‘--with-sysroot’. d1953 1 a1953 1 ‘--task-link’ d1958 3 a1960 3 ‘--traditional-format’ For some targets, the output of ‘ld’ is different in some ways from the output of some existing linker. This switch requests ‘ld’ to d1963 1 a1963 1 For example, on SunOS, ‘ld’ combines duplicate entries in the d1966 2 a1967 2 the SunOS ‘dbx’ program can not read the resulting program (‘gdb’ has no trouble). The ‘--traditional-format’ switch tells ‘ld’ to d1970 1 a1970 1 ‘--section-start=SECTIONNAME=ORG’ d1975 1 a1975 1 omit the leading ‘0x’ usually associated with hexadecimal values. d1977 1 a1977 1 equals sign (“<=>”), and ORG. d1979 4 a1982 4 ‘-Tbss=ORG’ ‘-Tdata=ORG’ ‘-Ttext=ORG’ Same as ‘--section-start’, with ‘.bss’, ‘.data’ or ‘.text’ as the d1985 1 a1985 1 ‘-Ttext-segment=ORG’ d1989 1 a1989 1 ‘-Trodata-segment=ORG’ d1995 1 a1995 1 ‘-Tldata-segment=ORG’ d2000 1 a2000 1 ‘--unresolved-symbols=METHOD’ d2002 1 a2002 1 possible values for ‘method’: d2004 1 a2004 1 ‘ignore-all’ d2007 1 a2007 1 ‘report-all’ d2010 1 a2010 1 ‘ignore-in-object-files’ d2015 1 a2015 1 ‘ignore-in-shared-libs’ d2020 1 a2020 1 included on the linker’s command line. d2023 1 a2023 1 controlled by the ‘--[no-]allow-shlib-undefined’ option. d2027 1 a2027 1 ‘--warn-unresolved-symbols’ can change this to a warning. d2029 3 a2031 3 ‘--dll-verbose’ ‘--verbose[=NUMBER]’ Display the version number for ‘ld’ and list the linker emulations d2037 1 a2037 1 ‘--version-script=VERSION-SCRIPTFILE’ d2045 1 a2045 1 ‘local’ in the version script will not be exported. *Note WIN32::. d2047 1 a2047 1 ‘--warn-common’ d2059 1 a2059 1 ‘int i = 1;’ d2063 1 a2063 1 ‘extern int i;’ d2068 1 a2068 1 ‘int i;’ d2077 1 a2077 1 The ‘--warn-common’ option can produce five kinds of warnings. d2115 1 a2115 1 ‘--warn-constructors’ d2120 23 a2142 41 ‘--warn-execstack’ ‘--warn-execstack-objects’ ‘--no-warn-execstack’ On ELF platforms the linker may generate warning messages if it is asked to create an output file that contains an executable stack. There are three possible states: 1. Do not generate any warnings. 2. Always generate warnings, even if the executable stack is requested via the ‘-z execstack’ command line option. 3. Only generate a warning if an object file requests an executable stack, but not if the ‘-z execstack’ option is used. The default state depends upon how the linker was configured when it was built. The ‘--no-warn-execstack’ option always puts the linker into the no-warnings state. The ‘--warn-execstack’ option puts the linker into the warn-always state. The ‘--warn-execstack-objects’ option puts the linker into the warn-for-object-files-only state. Note: ELF format input files can specify that they need an executable stack by having a .NOTE.GNU-STACK section with the executable bit set in its section flags. They can specify that they do not need an executable stack by having the same section, but without the executable flag bit set. If an input file does not have a .NOTE.GNU-STACK section then the default behaviour is target specific. For some targets, then absence of such a section implies that an executable stack _is_ required. This is often a problem for hand crafted assembler files. ‘--error-execstack’ ‘--no-error-execstack’ If the linker is going to generate a warning message about an executable stack then the ‘--error-execstack’ option will instead change that warning into an error. Note - this option does not change the linker’s execstack warning generation state. Use ‘--warn-execstack’ or ‘--warn-execstack-objects’ to set a specific warning state. The ‘--no-error-execstack’ option will restore the default behaviour of generating warning messages. d2144 1 a2144 1 ‘--warn-multiple-gp’ d2158 1 a2158 1 ‘--warn-once’ d2162 2 a2163 2 ‘--warn-rwx-segments’ ‘--no-warn-rwx-segments’ d2172 2 a2173 15 the ‘--no-warn-rwx-segments’ option and re-enabled via the ‘--warn-rwx-segments’ option. ‘--error-rwx-segments’ ‘--no-error-rwx-segments’ If the linker is going to generate a warning message about an executable, writeable segment, or an executable TLS segment, then the ‘--error-rwx-segments’ option will turn this warning into an error instead. The ‘--no-error-rwx-segments’ option will restore the default behaviour of just generating a warning message. Note - the ‘--error-rwx-segments’ option does not by itself turn on warnings about these segments. These warnings are either enabled by default, if the linker was configured that way, or via the ‘--warn-rwx-segments’ command line option. d2175 1 a2175 1 ‘--warn-section-align’ d2179 1 a2179 1 specified; that is, if the ‘SECTIONS’ command does not specify a d2182 1 a2182 1 ‘--warn-textrel’ d2186 1 a2186 1 ‘--warn-alternate-em’ d2189 1 a2189 1 ‘--warn-unresolved-symbols’ d2191 1 a2191 1 option ‘--unresolved-symbols’) it will normally generate an error. d2194 2 a2195 2 ‘--error-unresolved-symbols’ This restores the linker’s default behaviour of generating errors d2198 1 a2198 1 ‘--whole-archive’ d2200 1 a2200 1 ‘--whole-archive’ option, include every object file in the archive d2206 3 a2208 3 Two notes when using this option from gcc: First, gcc doesn’t know about this option, so you have to use ‘-Wl,-whole-archive’. Second, don’t forget to use ‘-Wl,-no-whole-archive’ after your list d2212 1 a2212 1 ‘--wrap=SYMBOL’ d2214 2 a2215 2 SYMBOL will be resolved to ‘__wrap_SYMBOL’. Any undefined reference to ‘__real_SYMBOL’ will be resolved to SYMBOL. d2218 2 a2219 2 wrapper function should be called ‘__wrap_SYMBOL’. If it wishes to call the system function, it should call ‘__real_SYMBOL’. d2230 10 a2239 10 If you link other code with this file using ‘--wrap malloc’, then all calls to ‘malloc’ will call the function ‘__wrap_malloc’ instead. The call to ‘__real_malloc’ in ‘__wrap_malloc’ will call the real ‘malloc’ function. You may wish to provide a ‘__real_malloc’ function as well, so that links without the ‘--wrap’ option will succeed. If you do this, you should not put the definition of ‘__real_malloc’ in the same file as ‘__wrap_malloc’; if you do, the assembler may resolve the call before the linker has a chance to wrap it to ‘malloc’. d2243 2 a2244 2 ‘__wrap_SYMBOL’. In the next example, the call to ‘f’ in ‘g’ is not resolved to ‘__wrap_f’. d2258 4 a2261 4 ‘--eh-frame-hdr’ ‘--no-eh-frame-hdr’ Request (‘--eh-frame-hdr’) or suppress (‘--no-eh-frame-hdr’) the creation of ‘.eh_frame_hdr’ section and ELF ‘PT_GNU_EH_FRAME’ d2264 2 a2265 2 ‘--no-ld-generated-unwind-info’ Request creation of ‘.eh_frame’ unwind info for linker generated d2267 1 a2267 3 generated unwind info is supported. This option also controls the generation of ‘.sframe’ stack trace info for linker generated code sections like PLT. d2269 2 a2270 2 ‘--enable-new-dtags’ ‘--disable-new-dtags’ d2273 1 a2273 1 ‘--enable-new-dtags’, the new dynamic tags will be created as d2275 1 a2275 1 ‘--disable-new-dtags’, no new dynamic tags will be created. By d2279 2 a2280 2 ‘--hash-size=NUMBER’ Set the default size of the linker’s hash tables to a prime number d2283 1 a2283 1 increasing the linker’s memory requirements. Similarly reducing d2287 5 a2291 5 ‘--hash-style=STYLE’ Set the type of linker’s hash table(s). STYLE can be either ‘sysv’ for classic ELF ‘.hash’ section, ‘gnu’ for new style GNU ‘.gnu.hash’ section or ‘both’ for both the classic ELF ‘.hash’ and new style GNU ‘.gnu.hash’ hash tables. The default depends upon d2293 1 a2293 1 will be ‘both’. d2295 4 a2298 5 ‘--compress-debug-sections=none’ ‘--compress-debug-sections=zlib’ ‘--compress-debug-sections=zlib-gnu’ ‘--compress-debug-sections=zlib-gabi’ ‘--compress-debug-sections=zstd’ d2302 4 a2305 4 ‘--compress-debug-sections=none’ doesn’t compress DWARF debug sections. ‘--compress-debug-sections=zlib-gnu’ compresses DWARF debug sections and renames them to begin with ‘.zdebug’ instead of ‘.debug’. ‘--compress-debug-sections=zlib-gabi’ also compresses d2307 1 a2307 1 SHF_COMPRESSED flag in the sections’ headers. d2309 2 a2310 5 The ‘--compress-debug-sections=zlib’ option is an alias for ‘--compress-debug-sections=zlib-gabi’. ‘--compress-debug-sections=zstd’ compresses DWARF debug sections using zstd. d2314 1 a2314 1 ‘--compress-debug-sections=none’ for example, then any compressed d2321 1 a2321 1 linker’s ‘--help’ option. d2323 1 a2323 1 ‘--reduce-memory-overheads’ d2331 1 a2331 1 linker’s run time. This is not done however if the ‘--hash-size’ d2334 1 a2334 1 The ‘--reduce-memory-overheads’ switch may be also be used to d2337 2 a2338 2 ‘--max-cache-size=SIZE’ ‘ld’ normally caches the relocation information and symbol tables d2342 8 a2349 8 ‘--build-id’ ‘--build-id=STYLE’ Request the creation of a ‘.note.gnu.build-id’ ELF note section or a ‘.buildid’ COFF section. The contents of the note are unique bits identifying this linked file. STYLE can be ‘uuid’ to use 128 random bits, ‘sha1’ to use a 160-bit SHA1 hash on the normative parts of the output contents, ‘md5’ to use a 128-bit MD5 hash on the normative parts of the output contents, or ‘0xHEXSTRING’ to use d2351 2 a2352 2 digits (‘-’ and ‘:’ characters between digit pairs are ignored). If STYLE is omitted, ‘sha1’ is used. d2354 1 a2354 1 The ‘md5’ and ‘sha1’ styles produces an identifier that is always d2357 1 a2357 1 checksum for the file’s contents. A linked file may be changed d2361 1 a2361 1 Passing ‘none’ for STYLE disables the setting from any ‘--build-id’ d2364 2 a2365 2 ‘--package-metadata=JSON’ Request the creation of a ‘.note.package’ ELF note section. The d2371 1 a2371 1 –package-metadata option. If the linker has been built with d2377 1 a2377 1 The i386 PE linker supports the ‘-shared’ option, which causes the d2379 2 a2380 2 executable. You should name the output ‘*.dll’ when you use this option. In addition, the linker fully supports the standard ‘*.def’ d2390 1 a2390 1 ‘--add-stdcall-alias’ d2395 1 a2395 1 ‘--base-file FILE’ d2397 1 a2397 1 of all the relocations needed for generating DLLs with ‘dlltool’. d2400 1 a2400 1 ‘--dll’ d2402 1 a2402 1 ‘-shared’ or specify a ‘LIBRARY’ in a given ‘.def’ file. [This d2405 2 a2406 2 ‘--enable-long-section-names’ ‘--disable-long-section-names’ d2421 1 a2421 1 command-line, ‘ld’ will enable long section names, overriding the d2427 2 a2428 2 ‘--enable-stdcall-fixup’ ‘--disable-stdcall-fixup’ d2430 1 a2430 1 to do “fuzzy linking” by looking for another defined symbol that d2433 3 a2435 3 the undefined symbol ‘_foo’ might be linked to the function ‘_foo@@12’, or the undefined symbol ‘_bar@@16’ might be linked to the function ‘_bar’. When the linker does this, it prints a warning, d2438 1 a2438 1 be usable. If you specify ‘--enable-stdcall-fixup’, this feature d2440 1 a2440 1 ‘--disable-stdcall-fixup’, this feature is disabled and such d2444 2 a2445 2 ‘--leading-underscore’ ‘--no-leading-underscore’ d2447 1 a2447 1 defined in target’s description. By this option it is possible to d2450 1 a2450 1 ‘--export-all-symbols’ d2453 1 a2453 1 otherwise wouldn’t be any exported symbols. When symbols are d2456 2 a2457 2 unless this option is given. Note that the symbols ‘DllMain@@12’, ‘DllEntryPoint@@0’, ‘DllMainCRTStartup@@12’, and ‘impure_ptr’ will d2459 5 a2463 5 DLLs will not be re-exported, nor will symbols specifying the DLL’s internal layout such as those beginning with ‘_head_’ or ending with ‘_iname’. In addition, no symbols from ‘libgcc’, ‘libstd++’, ‘libmingw32’, or ‘crtX.o’ will be exported. Symbols whose names begin with ‘__rtti_’ or ‘__builtin_’ will not be exported, to help d2467 5 a2471 5 cygwin-excludes are: ‘_cygwin_dll_entry@@12’, ‘_cygwin_crt0_common@@8’, ‘_cygwin_noncygwin_dll_entry@@12’, ‘_fmode’, ‘_impure_ptr’, ‘cygwin_attach_dll’, ‘cygwin_premain0’, ‘cygwin_premain1’, ‘cygwin_premain2’, ‘cygwin_premain3’, and ‘environ’. [This option is specific to the i386 PE targeted port d2474 1 a2474 1 ‘--exclude-symbols SYMBOL,SYMBOL,...’ d2480 1 a2480 1 ‘--exclude-all-symbols’ d2484 1 a2484 1 ‘--file-alignment’ d2490 2 a2491 2 ‘--heap RESERVE’ ‘--heap RESERVE,COMMIT’ d2497 1 a2497 1 ‘--image-base VALUE’ d2506 1 a2506 1 ‘--kill-at’ d2511 2 a2512 2 ‘--large-address-aware’ If given, the appropriate bit in the “Characteristics” field of the d2516 1 a2516 1 “[operating systems]” section of the BOOT.INI. Otherwise, this bit d2520 3 a2522 3 ‘--disable-large-address-aware’ Reverts the effect of a previous ‘--large-address-aware’ option. This is useful if ‘--large-address-aware’ is always set by the d2527 2 a2528 2 ‘--major-image-version VALUE’ Sets the major number of the “image version”. Defaults to 1. d2532 2 a2533 2 ‘--major-os-version VALUE’ Sets the major number of the “os version”. Defaults to 4. [This d2536 2 a2537 2 ‘--major-subsystem-version VALUE’ Sets the major number of the “subsystem version”. Defaults to 4. d2541 2 a2542 2 ‘--minor-image-version VALUE’ Sets the minor number of the “image version”. Defaults to 0. d2546 2 a2547 2 ‘--minor-os-version VALUE’ Sets the minor number of the “os version”. Defaults to 0. [This d2550 2 a2551 2 ‘--minor-subsystem-version VALUE’ Sets the minor number of the “subsystem version”. Defaults to 0. d2555 1 a2555 1 ‘--output-def FILE’ d2558 2 a2559 2 (which should be called ‘*.def’) may be used to create an import library with ‘dlltool’ or may be used as a reference to d2563 2 a2564 2 ‘--enable-auto-image-base’ ‘--enable-auto-image-base=VALUE’ d2566 1 a2566 1 with base VALUE, unless one is specified using the ‘--image-base’ d2572 1 a2572 1 ‘--disable-auto-image-base’ d2574 1 a2574 1 user-specified image base (‘--image-base’) then use the platform d2578 1 a2578 1 ‘--dll-search-prefix STRING’ d2580 1 a2580 1 for ‘.dll’ in preference to ‘lib.dll’. d2583 1 a2583 1 instance, cygwin DLLs typically use ‘--dll-search-prefix=cyg’. d2587 2 a2588 2 ‘--enable-auto-import’ Do sophisticated linking of ‘_symbol’ to ‘__imp__symbol’ for DATA d2597 1 a2597 1 Note: Use of the ’auto-import’ extension will cause the text d2601 1 a2601 1 Note - use of the ’auto-import’ extension will also cause read only d2607 1 a2607 1 Using ’auto-import’ generally will ’just work’ – but sometimes you d2610 2 a2611 2 "variable ’’ can’t be auto-imported. Please read the documentation for ld’s ‘--enable-auto-import’ for details." d2626 1 a2626 1 One way is to use –enable-runtime-pseudo-reloc switch. This leaves d2631 2 a2632 2 A second solution is to force one of the ’constants’ to be a variable – that is, unknown and un-optimizable at compile time. d2634 1 a2634 1 array’s address) a variable, or b) make the ’constant’ index a d2662 2 a2663 2 ’auto-import’ for the offending symbol and mark it with ‘__declspec(dllimport)’. However, in practice that requires using d2667 2 a2668 2 the various methods of resolving the ’direct address with constant offset’ problem, you should consider typical real-world usage: d2711 3 a2713 3 ‘--disable-auto-import’ Do not attempt to do sophisticated linking of ‘_symbol’ to ‘__imp__symbol’ for DATA imports from DLLs. [This option is d2716 2 a2717 2 ‘--enable-runtime-pseudo-reloc’ If your code contains expressions described in –enable-auto-import d2719 1 a2719 1 switch will create a vector of ’runtime pseudo relocations’ which d2724 1 a2724 1 ‘--disable-runtime-pseudo-reloc’ d2729 1 a2729 1 ‘--enable-extra-pe-debug’ d2734 1 a2734 1 ‘--section-alignment’ d2740 2 a2741 2 ‘--stack RESERVE’ ‘--stack RESERVE,COMMIT’ d2747 3 a2749 3 ‘--subsystem WHICH’ ‘--subsystem WHICH:MAJOR’ ‘--subsystem WHICH:MAJOR.MINOR’ d2751 2 a2752 2 legal values for WHICH are ‘native’, ‘windows’, ‘console’, ‘posix’, and ‘xbox’. You may optionally set the subsystem version also. d2756 1 a2756 1 The following options set flags in the ‘DllCharacteristics’ field d2760 2 a2761 2 ‘--high-entropy-va’ ‘--disable-high-entropy-va’ d2765 2 a2766 2 This option also implies ‘--dynamicbase’ and ‘--enable-reloc-section’. d2768 2 a2769 2 ‘--dynamicbase’ ‘--disable-dynamicbase’ d2773 2 a2774 2 can be disabled via the ‘--disable-dynamicbase’ option. This option also implies ‘--enable-reloc-section’. d2776 2 a2777 2 ‘--forceinteg’ ‘--disable-forceinteg’ d2781 2 a2782 2 ‘--nxcompat’ ‘--disable-nxcompat’ d2787 2 a2788 2 ‘--no-isolation’ ‘--disable-no-isolation’ d2792 2 a2793 2 ‘--no-seh’ ‘--disable-no-seh’ d2797 2 a2798 2 ‘--no-bind’ ‘--disable-no-bind’ d2801 2 a2802 2 ‘--wdmdriver’ ‘--disable-wdmdriver’ d2806 2 a2807 2 ‘--tsaware’ ‘--disable-tsaware’ d2811 2 a2812 2 ‘--insert-timestamp’ ‘--no-insert-timestamp’ d2818 1 a2818 1 ‘--no-insert-timestamp’ can be used to insert a zero value for the d2822 2 a2823 7 If ‘--insert-timestamp’ is active then the time inserted is either the time that the linking takes place or, if the ‘SOURCE_DATE_EPOCH’ environment variable is defined, the number of seconds since Unix epoch as specified by that variable. ‘--enable-reloc-section’ ‘--disable-reloc-section’ d2835 1 a2835 1 ‘--dsbt-size SIZE’ d2840 1 a2840 1 ‘--dsbt-index INDEX’ d2844 1 a2844 1 DSBT index of 0, the ‘R_C6000_DSBT_INDEX’ relocs are copied into d2847 1 a2847 1 The ‘--no-merge-exidx-entries’ switch disables the merging of d2853 1 a2853 1 ‘--branch-stub’ d2860 1 a2860 1 ‘--stub-group-size=N’ d2866 1 a2866 1 ‘1’ or ‘-1’ indicate that the linker should choose suitable d2875 1 a2875 1 ‘--no-trampoline’ d2878 1 a2878 1 a ‘jsr’ instruction (this happens when a pointer to a far function d2881 1 a2881 1 ‘--bank-window NAME’ d2883 1 a2883 1 in the ‘MEMORY’ specification that describes the memory bank d2893 1 a2893 1 ‘--got=TYPE’ d2895 2 a2896 2 TYPE should be one of ‘single’, ‘negative’, ‘multigot’ or ‘target’. For more information refer to the Info entry for ‘ld’. d2905 2 a2906 2 ‘--insn32’ ‘--no-insn32’ d2909 1 a2909 1 binding stubs, or in relaxation. If ‘--insn32’ is used, then the d2911 1 a2911 1 ‘--no-insn32’ is used, all instruction encodings are used, d2914 2 a2915 2 ‘--ignore-branch-isa’ ‘--no-ignore-branch-isa’ d2917 1 a2917 1 transitions. If ‘--ignore-branch-isa’ is used, then the linker d2919 1 a2919 1 is lost in relocation calculation, except for some cases of ‘BAL’ d2921 2 a2922 2 equivalent ‘JALX’ instructions as the associated relocation is calculated. By default or if ‘--no-ignore-branch-isa’ is used a d2926 2 a2927 2 ‘--compact-branches’ ‘--no-compact-branches’ d2936 2 a2937 2 pdp11-aout is the ‘--omagic’ option, whereas for other targets ‘--nmagic’ is the default. The ‘--imagic’ option is defined only for d2941 2 a2942 2 ‘-N’ ‘--omagic’ d2944 1 a2944 1 Mark the output as ‘OMAGIC’ (0407) in the ‘a.out’ header to d2949 1 a2949 1 executable programs and is the default for ‘ld’ on PDP11 Unix d2952 2 a2953 2 ‘-n’ ‘--nmagic’ d2955 1 a2955 1 Mark the output as ‘NMAGIC’ (0410) in the ‘a.out’ header to d2962 2 a2963 2 ‘-z’ ‘--imagic’ d2965 1 a2965 1 Mark the output as ‘IMAGIC’ (0411) in the ‘a.out’ header to d2974 1 a2974 1 0. The ‘-z’ option selected this format in 2.11BSD. This option d2977 1 a2977 1 ‘--no-omagic’ d2979 1 a2979 1 Equivalent to ‘--nmagic’ for pdp11-aout. d2987 2 a2988 2 You can change the behaviour of ‘ld’ with the environment variables ‘GNUTARGET’, ‘LDEMULATION’ and ‘COLLECT_NO_DEMANGLE’. d2990 5 a2994 5 ‘GNUTARGET’ determines the input-file object format if you don’t use ‘-b’ (or its synonym ‘--format’). Its value should be one of the BFD names for an input format (*note BFD::). If there is no ‘GNUTARGET’ in the environment, ‘ld’ uses the natural format of the target. If ‘GNUTARGET’ is set to ‘default’ then BFD attempts to discover the input d3002 2 a3003 2 ‘LDEMULATION’ determines the default emulation if you don’t use the ‘-m’ option. The emulation can affect various aspects of linker d3005 2 a3006 2 available emulations with the ‘--verbose’ or ‘-V’ options. If the ‘-m’ option is not used, and the ‘LDEMULATION’ environment variable is not d3011 1 a3011 1 ‘COLLECT_NO_DEMANGLE’ is set in the environment, then it will default to d3013 2 a3014 2 fashion by the ‘gcc’ linker wrapper program. The default may be overridden by the ‘--demangle’ and ‘--no-demangle’ options. d3022 1 a3022 1 Every link is controlled by a “linker script”. This script is written d3034 1 a3034 1 linker executable. You can use the ‘--verbose’ command-line option to d3036 1 a3036 1 as ‘-r’ or ‘-N’, will affect the default linker script. d3038 1 a3038 1 You may supply your own linker script by using the ‘-T’ command line d3071 2 a3072 2 “object file format”. Each file is called an “object file”. The output file is often called an “executable”, but for our purposes we will also d3074 3 a3076 3 list of “sections”. We sometimes refer to a section in an input file as an “input section”; similarly, a section in the output file is an “output section”. d3079 2 a3080 2 also have an associated block of data, known as the “section contents”. A section may be marked as “loadable”, which means that the contents d3082 1 a3082 1 with no contents may be “allocatable”, which means that an area in d3089 2 a3090 2 first is the “VMA”, or virtual memory address. This is the address the section will have when the output file is run. The second is the “LMA”, d3099 2 a3100 2 You can see the sections in an object file by using the ‘objdump’ program with the ‘-h’ option. d3102 2 a3103 2 Every object file also has a list of “symbols”, known as the “symbol table”. A symbol may be defined or undefined. Each symbol has a name, d3110 2 a3111 2 You can see the symbols in an object file by using the ‘nm’ program, or by using the ‘objdump’ program with the ‘-t’ option. d3133 1 a3133 1 ‘/*’ and ‘*/’. As in C, comments are syntactically equivalent to d3144 2 a3145 2 The simplest possible linker script has just one command: ‘SECTIONS’. You use the ‘SECTIONS’ command to describe the memory layout of the d3148 4 a3151 4 The ‘SECTIONS’ command is a powerful command. Here we will describe a simple use of it. Let’s assume your program consists only of code, initialized data, and uninitialized data. These will be in the ‘.text’, ‘.data’, and ‘.bss’ sections, respectively. Let’s assume further that d3154 1 a3154 1 For this example, let’s say that the code should be loaded at address d3166 1 a3166 1 You write the ‘SECTIONS’ command as the keyword ‘SECTIONS’, followed d3170 2 a3171 2 The first line inside the ‘SECTIONS’ command of the above example sets the value of the special symbol ‘.’, which is the location counter. d3175 2 a3176 2 by the size of the output section. At the start of the ‘SECTIONS’ command, the location counter has the value ‘0’. d3178 1 a3178 1 The second line defines an output section, ‘.text’. The colon is d3181 14 a3194 14 which should be placed into this output section. The ‘*’ is a wildcard which matches any file name. The expression ‘*(.text)’ means all ‘.text’ input sections in all input files. Since the location counter is ‘0x10000’ when the output section ‘.text’ is defined, the linker will set the address of the ‘.text’ section in the output file to be ‘0x10000’. The remaining lines define the ‘.data’ and ‘.bss’ sections in the output file. The linker will place the ‘.data’ output section at address ‘0x8000000’. After the linker places the ‘.data’ output section, the value of the location counter will be ‘0x8000000’ plus the size of the ‘.data’ output section. The effect is that the linker will place the ‘.bss’ output section immediately after the ‘.data’ output d3199 1 a3199 1 example, the specified addresses for the ‘.text’ and ‘.data’ sections d3201 1 a3201 1 to create a small gap between the ‘.data’ and ‘.bss’ sections. d3203 1 a3203 1 That’s it! That’s a simple and complete linker script. d3228 2 a3229 2 The first instruction to execute in a program is called the “entry point”. You can use the ‘ENTRY’ linker script command to set the entry d3236 4 a3239 4 • the ‘-e’ ENTRY command-line option; • the ‘ENTRY(SYMBOL)’ command in a linker script; • the value of a target-specific symbol, if it is defined; For many targets this is ‘start’, but PE- and BeOS-based systems for example d3242 1 a3242 1 • the address of the first byte of the code section, if present and d3244 2 a3245 2 ‘.text’, but can be something else; • The address ‘0’. d3255 1 a3255 1 ‘INCLUDE FILENAME’ d3258 1 a3258 1 specified with the ‘-L’ option. You can nest calls to ‘INCLUDE’ up d3261 2 a3262 2 You can place ‘INCLUDE’ directives at the top level, in ‘MEMORY’ or ‘SECTIONS’ commands, or in output section descriptions. d3264 3 a3266 3 ‘INPUT(FILE, FILE, ...)’ ‘INPUT(FILE FILE ...)’ The ‘INPUT’ command directs the linker to include the named files d3269 3 a3271 3 For example, if you always want to include ‘subr.o’ any time you do a link, but you can’t be bothered to put it on every link command line, then you can put ‘INPUT (subr.o)’ in your linker script. d3274 1 a3274 1 linker script, and then invoke the linker with nothing but a ‘-T’ d3277 7 a3283 7 In case a “sysroot prefix” is configured, and the filename starts with the ‘/’ character, and the script being processed was located inside the “sysroot prefix”, the filename will be looked for in the “sysroot prefix”. The “sysroot prefix” can also be forced by specifying ‘=’ as the first character in the filename path, or prefixing the filename path with ‘$SYSROOT’. See also the description of ‘-L’ in *note Command-line Options: Options. d3285 1 a3285 1 If a “sysroot prefix” is not used then the linker will try to open d3291 2 a3292 2 If you use ‘INPUT (-lFILE)’, ‘ld’ will transform the name to ‘libFILE.a’, as with the command-line argument ‘-l’. d3294 1 a3294 1 When you use the ‘INPUT’ command in an implicit linker script, the d3298 3 a3300 3 ‘GROUP(FILE, FILE, ...)’ ‘GROUP(FILE FILE ...)’ The ‘GROUP’ command is like ‘INPUT’, except that the named files d3302 1 a3302 1 new undefined references are created. See the description of ‘-(’ d3305 3 a3307 3 ‘AS_NEEDED(FILE, FILE, ...)’ ‘AS_NEEDED(FILE FILE ...)’ This construct can appear only inside of the ‘INPUT’ or ‘GROUP’ d3309 1 a3309 1 as if they appear directly in the ‘INPUT’ or ‘GROUP’ commands, with d3312 2 a3313 2 ‘--as-needed’ option for all the files listed inside of it and restores previous ‘--as-needed’ resp. ‘--no-as-needed’ setting d3316 4 a3319 4 ‘OUTPUT(FILENAME)’ The ‘OUTPUT’ command names the output file. Using ‘OUTPUT(FILENAME)’ in the linker script is exactly like using ‘-o FILENAME’ on the command line (*note Command Line Options: d3323 2 a3324 2 You can use the ‘OUTPUT’ command to define a default name for the output file other than the usual default of ‘a.out’. d3326 4 a3329 4 ‘SEARCH_DIR(PATH)’ The ‘SEARCH_DIR’ command adds PATH to the list of paths where ‘ld’ looks for archive libraries. Using ‘SEARCH_DIR(PATH)’ is exactly like using ‘-L PATH’ on the command line (*note Command-line d3334 2 a3335 2 ‘STARTUP(FILENAME)’ The ‘STARTUP’ command is just like the ‘INPUT’ command, except that d3349 5 a3353 5 ‘OUTPUT_FORMAT(BFDNAME)’ ‘OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)’ The ‘OUTPUT_FORMAT’ command names the BFD format to use for the output file (*note BFD::). Using ‘OUTPUT_FORMAT(BFDNAME)’ is exactly like using ‘--oformat BFDNAME’ on the command line (*note d3357 2 a3358 2 You can use ‘OUTPUT_FORMAT’ with three arguments to use different formats based on the ‘-EB’ and ‘-EL’ command-line options. This d3362 3 a3364 3 If neither ‘-EB’ nor ‘-EL’ are used, then the output format will be the first argument, DEFAULT. If ‘-EB’ is used, the output format will be the second argument, BIG. If ‘-EL’ is used, the output d3371 2 a3372 2 ‘elf32-bigmips’, but if the user uses the ‘-EL’ command-line option, the output file will be created in the ‘elf32-littlemips’ d3375 6 a3380 6 ‘TARGET(BFDNAME)’ The ‘TARGET’ command names the BFD format to use when reading input files. It affects subsequent ‘INPUT’ and ‘GROUP’ commands. This command is like using ‘-b BFDNAME’ on the command line (*note Command-line Options: Options.). If the ‘TARGET’ command is used but ‘OUTPUT_FORMAT’ is not, then the last ‘TARGET’ command is also d3395 1 a3395 1 The ‘REGION_ALIAS’ function creates an alias name ALIAS for the d3401 2 a3402 2 memory ‘RAM’ that allows code execution or data storage. Some may have a read-only, non-volatile memory ‘ROM’ that allows code execution and d3404 1 a3404 1 memory ‘ROM2’ with read-only data access and no code execution d3407 4 a3410 4 • ‘.text’ program code; • ‘.rodata’ read-only data; • ‘.data’ read-write initialized data; • ‘.bss’ read-write zero initialized data. d3416 1 a3416 1 ‘A’, ‘B’ and ‘C’: d3422 4 a3425 4 The notation ‘RAM/ROM’ or ‘RAM/ROM2’ means that this section is loaded into region ‘ROM’ or ‘ROM2’ respectively. Please note that the load address of the ‘.data’ section starts in all three variants at the end of the ‘.rodata’ section. d3428 1 a3428 1 It includes the system dependent ‘linkcmds.memory’ file that describes d3456 5 a3460 5 Now we need three different ‘linkcmds.memory’ files to define memory regions and alias names. The content of ‘linkcmds.memory’ for the three variants ‘A’, ‘B’ and ‘C’: ‘A’ Here everything goes into the ‘RAM’. d3470 5 a3474 5 ‘B’ Program code and read-only data go into the ‘ROM’. Read-write data goes into the ‘RAM’. An image of the initialized data is loaded into the ‘ROM’ and will be copied during system start into the ‘RAM’. d3485 5 a3489 5 ‘C’ Program code goes into the ‘ROM’. Read-only data goes into the ‘ROM2’. Read-write data goes into the ‘RAM’. An image of the initialized data is loaded into the ‘ROM2’ and will be copied during system start into the ‘RAM’. d3503 1 a3503 1 copy the ‘.data’ section from ‘ROM’ or ‘ROM2’ into the ‘RAM’ if d3527 1 a3527 1 ‘ASSERT(EXP, MESSAGE)’ d3544 1 a3544 1 will fail if ‘__stack_size’ is not defined elsewhere. Symbols d3557 1 a3557 1 ‘EXTERN(SYMBOL SYMBOL ...)’ d3561 2 a3562 2 each ‘EXTERN’, and you may use ‘EXTERN’ multiple times. This command has the same effect as the ‘-u’ command-line option. d3564 8 a3571 8 ‘FORCE_COMMON_ALLOCATION’ This command has the same effect as the ‘-d’ command-line option: to make ‘ld’ assign space to common symbols even if a relocatable output file is specified (‘-r’). ‘INHIBIT_COMMON_ALLOCATION’ This command has the same effect as the ‘--no-define-common’ command-line option: to make ‘ld’ omit the assignment of addresses d3574 3 a3576 3 ‘FORCE_GROUP_ALLOCATION’ This command has the same effect as the ‘--force-group-allocation’ command-line option: to make ‘ld’ place section group members like d3578 1 a3578 1 relocatable output file is specified (‘-r’). d3580 3 a3582 3 ‘INSERT [ AFTER | BEFORE ] OUTPUT_SECTION’ This command is typically used in a script specified by ‘-T’ to augment the default ‘SECTIONS’ with, for example, overlays. It d3584 1 a3584 1 OUTPUT_SECTION, and also causes ‘-T’ to not override the default d3588 2 a3589 2 the insertion, since ‘-T’ scripts are parsed before the default linker script, statements in the ‘-T’ script occur before the d3592 3 a3594 3 assignments will be made to ‘-T’ output sections before those in the default script. Here is an example of how a ‘-T’ script using ‘INSERT’ might look: d3606 2 a3607 8 Note that when ‘-T’ is used twice, once to override the default script and once to augment that script using ‘INSERT’ the order of parsing and section assignments apply as for the default script. The script with ‘INSERT’ should be specified _first_ on the command line. ‘NOCROSSREFS(SECTION SECTION ...)’ This command may be used to tell ‘ld’ to issue an error about any d3616 2 a3617 2 The ‘NOCROSSREFS’ command takes a list of output section names. If ‘ld’ detects any cross references between the sections, it reports d3619 1 a3619 1 ‘NOCROSSREFS’ command uses output section names, not input section d3622 2 a3623 2 ‘NOCROSSREFS_TO(TOSECTION FROMSECTION ...)’ This command may be used to tell ‘ld’ to issue an error about any d3626 1 a3626 1 The ‘NOCROSSREFS’ command is useful when ensuring that two or more d3632 1 a3632 1 The ‘NOCROSSREFS_TO’ command takes a list of output section names. d3634 1 a3634 1 sections. If ‘ld’ detects any references to the first section from d3636 1 a3636 1 non-zero exit status. Note that the ‘NOCROSSREFS_TO’ command uses d3639 1 a3639 1 ‘OUTPUT_ARCH(BFDARCH)’ d3642 2 a3643 2 see the architecture of an object file by using the ‘objdump’ program with the ‘-f’ option. d3645 3 a3647 3 ‘LD_FEATURE(STRING)’ This command may be used to modify ‘ld’ behavior. If STRING is ‘"SANE_EXPR"’ then absolute symbols and numbers in a script are d3675 9 a3683 9 ‘SYMBOL = EXPRESSION ;’ ‘SYMBOL += EXPRESSION ;’ ‘SYMBOL -= EXPRESSION ;’ ‘SYMBOL *= EXPRESSION ;’ ‘SYMBOL /= EXPRESSION ;’ ‘SYMBOL <<= EXPRESSION ;’ ‘SYMBOL >>= EXPRESSION ;’ ‘SYMBOL &= EXPRESSION ;’ ‘SYMBOL |= EXPRESSION ;’ d3689 2 a3690 2 The special symbol name ‘.’ indicates the location counter. You may only use this within a ‘SECTIONS’ command. *Note Location Counter::. d3697 2 a3698 2 as statements within a ‘SECTIONS’ command, or as part of an output section description in a ‘SECTIONS’ command. d3717 4 a3720 4 In this example, the symbol ‘floating_point’ will be defined as zero. The symbol ‘_etext’ will be defined as the address following the last ‘.text’ input section. The symbol ‘_bdata’ will be defined as the address following the ‘.text’ output section aligned upward to a 4 byte d3729 2 a3730 2 For ELF targeted ports, define a symbol that will be hidden and won’t be exported. The syntax is ‘HIDDEN(SYMBOL = EXPRESSION)’. d3733 1 a3733 1 ‘HIDDEN’: d3757 5 a3761 5 the link. For example, traditional linkers defined the symbol ‘etext’. However, ANSI C requires that the user be able to use ‘etext’ as a function name without encountering an error. The ‘PROVIDE’ keyword may be used to define a symbol, such as ‘etext’, only if it is referenced but not defined. The syntax is ‘PROVIDE(SYMBOL = EXPRESSION)’. d3763 1 a3763 1 Here is an example of using ‘PROVIDE’ to define ‘etext’: d3774 1 a3774 1 In this example, if the program defines ‘_etext’ (with a leading d3776 1 a3776 1 on the other hand, the program defines ‘etext’ (with no leading d3778 1 a3778 1 If the program references ‘etext’ but does not define it, the linker d3781 1 a3781 1 Note - the ‘PROVIDE’ directive considers a common symbol to be d3783 1 a3783 1 that the ‘PROVIDE’ would create. This is particularly important when d3785 1 a3785 1 ‘__CTOR_LIST__’ as these are often defined as common symbols. d3793 2 a3794 2 Similar to ‘PROVIDE’. For ELF targeted ports, the symbol will be hidden and won’t be exported. d3810 2 a3811 2 prepend or append an underscore, and C++ performs extensive ‘name mangling’. Therefore there might be a discrepancy between the name of a d3827 4 a3830 4 the program’s memory to hold the _value_ of the symbol. The second is that the compiler creates an entry in the program’s symbol table which holds the symbol’s _address_. ie the symbol table contains the address of the block of memory holding the symbol’s value. So for example the d3835 2 a3836 2 creates an entry called ‘foo’ in the symbol table. This entry holds the address of an ‘int’ sized block of memory where the number 1000 is d3840 1 a3840 1 first accesses the symbol table to find the address of the symbol’s d3846 1 a3846 1 looks up the symbol ‘foo’ in the symbol table, gets the address d3852 1 a3852 1 looks up the symbol ‘foo’ in the symbol table, gets its address and d3854 1 a3854 1 variable ‘a’. d3862 1 a3862 1 creates an entry in the symbol table called ‘foo’ which holds the d3884 1 a3884 1 Note the use of the ‘&’ operators. These are correct. Alternatively d3892 1 a3892 1 Note how using this method does not require the use of ‘&’ operators. d3900 1 a3900 1 The ‘SECTIONS’ command tells the linker how to map input sections into d3903 1 a3903 1 The format of the ‘SECTIONS’ command is: d3913 4 a3916 4 • an ‘ENTRY’ command (*note Entry command: Entry Point.) • a symbol assignment (*note Assignments::) • an output section description • an overlay description d3918 2 a3919 2 The ‘ENTRY’ command and symbol assignments are permitted inside the ‘SECTIONS’ command for convenience in using the location counter in d3927 1 a3927 1 If you do not use a ‘SECTIONS’ command in your linker script, the d3975 4 a3978 4 • a symbol assignment (*note Assignments::) • an input section description (*note Input Section::) • data values to include directly (*note Output Section Data::) • a special output section keyword (*note Output Section Keywords::) d3988 3 a3990 3 limited number of sections, such as ‘a.out’, the name must be one of the names supported by the format (‘a.out’, for example, allows only ‘.text’, ‘.data’ or ‘.bss’). If the output format supports any number d3996 1 a3996 1 The output section name ‘/DISCARD/’ is special; *note Output Section d4017 1 a4017 1 • If an output memory REGION is set for the section then it is added d4021 1 a4021 1 • If the MEMORY command has been used to create a list of memory d4023 1 a4023 1 the section is selected to contain it. The section’s output d4027 1 a4027 1 • If no memory regions were specified, or none match the section then d4039 1 a4039 1 are subtly different. The first will set the address of the ‘.text’ d4042 1 a4042 1 strictest alignment of any of the ‘.text’ input sections. d4049 1 a4049 1 This works because ‘ALIGN’ returns the current location counter aligned d4091 1 a4091 1 include all input ‘.text’ sections, you would write: d4093 1 a4093 1 Here the ‘*’ is a wildcard which matches any file name. To exclude a d4098 2 a4099 2 will cause all .ctors sections from all files except ‘crtend.o’ and ‘otherfile.o’ to be included. The EXCLUDE_FILE can also be placed d4109 2 a4110 2 The difference between these is the order in which the ‘.text’ and ‘.rdata’ input sections will appear in the output section. In the first d4112 2 a4113 2 are found in the linker input. In the second example, all ‘.text’ input sections will appear first, followed by all ‘.rdata’ input sections. d4119 4 a4122 4 will cause all ‘.text’ sections from all files except ‘somefile.o’ to be included, while all ‘.rdata’ sections from all files, including ‘somefile.o’, will be included. To exclude the ‘.rdata’ sections from ‘somefile.o’ the example could be modified to: d4145 1 a4145 1 In this example, the output section ‘.text’ will be comprised of any d4147 1 a4147 1 ‘SHF_MERGE’ and ‘SHF_STRINGS’ are set. The output section ‘.text2’ will d4149 1 a4149 1 section header flag ‘SHF_WRITE’ is clear. d4155 1 a4155 1 ‘archive:file’ d4157 1 a4157 1 ‘archive:’ d4159 1 a4159 1 ‘:file’ d4162 1 a4162 1 Either one or both of ‘archive’ and ‘file’ can contain shell d4164 3 a4166 3 single letter followed by a colon is a drive specifier, so ‘c:myfile.o’ is a simple file specification, not ‘myfile.o’ within an archive called ‘c’. ‘archive:file’ filespecs may also be used within an ‘EXCLUDE_FILE’ d4168 2 a4169 2 you cannot extract a file from an archive by using ‘archive:file’ in an ‘INPUT’ command. d4176 1 a4176 1 When you use a file name which is not an ‘archive:file’ specifier and d4179 1 a4179 1 ‘INPUT’ command. If you did not, the linker will attempt to open the d4181 1 a4181 1 that this differs from an ‘INPUT’ command, because the linker will not d4193 1 a4193 1 The file name of ‘*’ seen in many examples is a simple wildcard d4198 1 a4198 1 ‘*’ d4200 1 a4200 1 ‘?’ d4202 3 a4204 3 ‘[CHARS]’ matches a single instance of any of the CHARS; the ‘-’ character may be used to specify a range of characters, as in ‘[a-z]’ to d4206 1 a4206 1 ‘\’ d4210 1 a4210 1 specified on the command line or in an ‘INPUT’ command. The linker does d4217 1 a4217 1 ‘data.o’ rule will not be used: d4223 3 a4225 3 change this by using the ‘SORT_BY_NAME’ keyword, which appears before a wildcard pattern in parentheses (e.g., ‘SORT_BY_NAME(.text*)’). When the ‘SORT_BY_NAME’ keyword is used, the linker will sort the files or d4229 2 a4230 2 ‘SORT_BY_ALIGNMENT’ is similar to ‘SORT_BY_NAME’. ‘SORT_BY_ALIGNMENT’ will sort sections into descending order of d4235 2 a4236 2 ‘SORT_BY_INIT_PRIORITY’ is also similar to ‘SORT_BY_NAME’. ‘SORT_BY_INIT_PRIORITY’ will sort sections into ascending numerical d4238 5 a4242 24 before placing them in the output file. In ‘.init_array.NNNNN’ and ‘.fini_array.NNNNN’, ‘NNNNN’ is the init_priority. In ‘.ctors.NNNNN’ and ‘.dtors.NNNNN’, ‘NNNNN’ is 65535 minus the init_priority. ‘SORT’ is an alias for ‘SORT_BY_NAME’. ‘REVERSE’ indicates that the sorting should be reversed. If used on its own then ‘REVERSE’ implies ‘SORT_BY_NAME’, otherwise it reverses the enclosed ‘SORT..’ command. Note - reverse sorting of alignment is not currently supported. Note - the sorting commands only accept a single wildcard pattern. So for example the following will not work: *(REVERSE(.text* .init*)) To resolve this problem list the patterns individually, like this: *(REVERSE(.text*)) *(REVERSE(.init*)) Note - you can put the ‘EXCLUDE_FILE’ command inside a sorting command, but not the other way around. So for example: *(SORT_BY_NAME(EXCLUDE_FILE(foo) .text*)) will work, but: *(EXCLUDE_FILE(foo) SORT_BY_NAME(.text*)) will not. d4247 1 a4247 1 1. ‘SORT_BY_NAME’ (‘SORT_BY_ALIGNMENT’ (wildcard section pattern)). d4250 1 a4250 1 2. ‘SORT_BY_ALIGNMENT’ (‘SORT_BY_NAME’ (wildcard section pattern)). d4253 4 a4256 4 3. ‘SORT_BY_NAME’ (‘SORT_BY_NAME’ (wildcard section pattern)) is treated the same as ‘SORT_BY_NAME’ (wildcard section pattern). 4. ‘SORT_BY_ALIGNMENT’ (‘SORT_BY_ALIGNMENT’ (wildcard section pattern)) is treated the same as ‘SORT_BY_ALIGNMENT’ (wildcard d4258 1 a4258 7 5. ‘SORT_BY_NAME’ (‘REVERSE’ (wildcard section pattern)) reverse sorts by name. 6. ‘REVERSE’ (‘SORT_BY_NAME’ (wildcard section pattern)) reverse sorts by name. 7. ‘SORT_BY_INIT_PRIORITY’ (‘REVERSE’ (wildcard section pattern)) reverse sorts by init priority. 8. All other nested section sorting commands are invalid. d4264 1 a4264 1 If the section sorting command in linker script isn’t nested, the d4268 2 a4269 2 1. ‘SORT_BY_NAME’ (wildcard section pattern ) with ‘--sort-sections alignment’ is equivalent to ‘SORT_BY_NAME’ (‘SORT_BY_ALIGNMENT’ d4271 2 a4272 2 2. ‘SORT_BY_ALIGNMENT’ (wildcard section pattern) with ‘--sort-section name’ is equivalent to ‘SORT_BY_ALIGNMENT’ (‘SORT_BY_NAME’ d4278 1 a4278 1 ‘SORT_NONE’ disables section sorting by ignoring the command-line d4282 1 a4282 1 the ‘-M’ linker option to generate a map file. The map file shows d4286 5 a4290 5 files. This linker script directs the linker to place all ‘.text’ sections in ‘.text’ and all ‘.bss’ sections in ‘.bss’. The linker will place the ‘.data’ section from all files beginning with an upper case character in ‘.DATA’; for all other files, the linker will place the ‘.data’ section in ‘.data’. d4307 1 a4307 1 named ‘COMMON’. d4309 1 a4309 1 You may use file names with the ‘COMMON’ section just as with any d4315 1 a4315 1 ‘.bss’ section in the output file. For example: d4322 2 a4323 2 In the case of MIPS ELF, the linker uses ‘COMMON’ for standard common symbols and ‘.scommon’ for small common symbols. This permits you to d4327 2 a4328 2 You will sometimes see ‘[COMMON]’ in old linker scripts. This notation is now considered obsolete. It is equivalent to ‘*(COMMON)’. d4336 1 a4336 1 When link-time garbage collection is in use (‘--gc-sections’), it is d4338 2 a4339 2 accomplished by surrounding an input section’s wildcard entry with ‘KEEP()’, as in ‘KEEP(*(.init))’ or ‘KEEP(SORT_BY_NAME(*)(.ctors))’. d4348 7 a4354 7 to read all of the sections from file ‘all.o’ and place them at the start of output section ‘outputa’ which starts at location ‘0x10000’. All of section ‘.input1’ from file ‘foo.o’ follows immediately, in the same output section. All of section ‘.input2’ from ‘foo.o’ goes into output section ‘outputb’, followed by section ‘.input1’ from ‘foo1.o’. All of the remaining ‘.input1’ and ‘.input2’ sections from any files are written to output section ‘outputc’. d4374 1 a4374 1 If an output section’s name is the same as the input section’s name d4380 1 a4380 1 identifiers because they contain a ‘.’ character. d4389 1 a4389 1 ‘BYTE’, ‘SHORT’, ‘LONG’, ‘QUAD’, or ‘SQUAD’ as an output section d4394 1 a4394 1 The ‘BYTE’, ‘SHORT’, ‘LONG’, and ‘QUAD’ commands store one, two, d4399 1 a4399 1 value of the symbol ‘addr’: d4403 1 a4403 1 When using a 64 bit host or target, ‘QUAD’ and ‘SQUAD’ are the same; d4405 2 a4406 2 are 32 bits, an expression is computed as 32 bits. In this case ‘QUAD’ stores a 32 bit value zero extended to 64 bits, and ‘SQUAD’ stores a 32 d4415 1 a4415 11 You can include a zero-terminated string in an output section by using ‘ASCIZ’. The keyword is followed by a string which is stored at the current value of the location counter adding a zero byte at the end. If the string includes spaces it must be enclosed in double quotes. The string may contain ’\n’, ’\r’, ’\t’ and octal numbers. Hex numbers are not supported. For example, this string of 16 characters will create a 17 byte area ASCIZ "This is 16 bytes" Note—these commands only work inside a section description and not d4421 1 a4421 1 You may use the ‘FILL’ command to set the fill pattern for the d4425 1 a4425 1 with the value of the expression, repeated as necessary. A ‘FILL’ d4427 1 a4427 1 the section definition; by including more than one ‘FILL’ statement, you d4432 1 a4432 1 value ‘0x90’: d4435 1 a4435 1 The ‘FILL’ command is similar to the ‘=FILLEXP’ output section d4437 2 a4438 2 ‘FILL’ command, rather than the entire section. If both are used, the ‘FILL’ command takes precedence. *Note Output Section Fill::, for a4440 35 Note - normally the value of ‘expression’ is zero extended to 4 bytes when used to fill gaps. Thus ‘FILL(144)’ will fill a region with repeats of the pattern ‘0 0 0 144’. The value is treated as a big-endian number, so for example ‘FILL(22 * 256 + 23)’ will fill the region with repeats of the pattern ‘0 0 22 23’. If the expression results in a value with more than 4 significant bytes only the least 4 bytes of the value will be used. The above rules do not apply when the ‘expression’ is a simple hexadecimal number. In this case zero extension is not performed and all bytes are significant. So ‘FILL(0x90)’ will fill a region with repeats of ‘0x90’ with no zero bytes, and ‘FILL(0x9192)’ will fill the region with repeats of ‘0x91 0x92’. Zero bytes in a hexadecimal expression are significant even at the start, so ‘FILL(0x0090)’ will fill a region with repeats of ‘0x00 0x90’. Hexadecimal numbers can be longer than 4 bytes, and all of the bytes are significant, so ‘FILL(0x123456789a)’ will fill a region with repeats of the 5 byte sequence ‘0x12 0x34 0x56 0x78 0x9a’. Excess bytes in a hexadecimal value beyond the size of a region will be silently ignored. The above only applies to hexadecimal numbers specified as ‘0x[0-9][a-f][A-F]’. Hexadecimal numbers specified with a ‘$’ prefix, or a ‘h’, ‘H’, ‘x’ or ‘X’ suffix will follow the normal fill value rules. This also applies to expressions that involve hexadecimal numbers, and hexadecimal numbers that have a magnitude suffix. The ‘LINKER_VERSION’ command inserts a string containing the version of the linker at the current point. Note - by default this directive is disabled and will do nothing. It only becomes active if the ‘--enable-linker-version’ command line option is used. Built-in linker scripts for ELF based targets already include this directive in their ‘.comment’ section. d4450 1 a4450 1 ‘CREATE_OBJECT_SYMBOLS’ d4454 1 a4454 1 output section in which the ‘CREATE_OBJECT_SYMBOLS’ command d4460 1 a4460 1 ‘CONSTRUCTORS’ d4466 1 a4466 1 name. For these object file formats, the ‘CONSTRUCTORS’ command d4468 2 a4469 2 section where the ‘CONSTRUCTORS’ command appears. The ‘CONSTRUCTORS’ command is ignored for other object file formats. d4471 3 a4473 3 The symbol ‘__CTOR_LIST__’ marks the start of the global constructors, and the symbol ‘__CTOR_END__’ marks the end. Similarly, ‘__DTOR_LIST__’ and ‘__DTOR_END__’ mark the start and d4478 4 a4481 4 normally calls constructors from a subroutine ‘__main’; a call to ‘__main’ is automatically inserted into the startup code for ‘main’. GNU C++ normally runs destructors either by using ‘atexit’, or directly from the function ‘exit’. d4483 1 a4483 1 For object file formats such as ‘COFF’ or ‘ELF’ which support d4485 2 a4486 2 addresses of global constructors and destructors into the ‘.ctors’ and ‘.dtors’ sections. Placing the following sequence into your d4505 4 a4508 4 the ‘CONSTRUCTORS’ command, use ‘SORT_BY_NAME(CONSTRUCTORS)’ instead. When using the ‘.ctors’ and ‘.dtors’ sections, use ‘*(SORT_BY_NAME(.ctors))’ and ‘*(SORT_BY_NAME(.dtors))’ instead of just ‘*(.ctors)’ and ‘*(.dtors)’. d4525 2 a4526 2 will only create a ‘.foo’ section in the output file if there is a ‘.foo’ section in at least one input file, and if the input sections are d4530 4 a4533 4 for ‘. = 0’, ‘. = . + 0’, ‘. = sym’, ‘. = . + sym’ and ‘. = ALIGN (. != 0, expr, 1)’ when ‘sym’ is an absolute symbol of value 0 defined in the script. This allows you to force output of an empty section with ‘. = .’. d4541 1 a4541 1 The special output section name ‘/DISCARD/’ may be used to discard d4543 1 a4543 1 section named ‘/DISCARD/’ are not included in the output file. d4546 1 a4546 1 ‘SHF_GNU_RETAIN’, which would otherwise have been saved from linker d4549 1 a4549 1 Note, sections that match the ‘/DISCARD/’ output section will be d4574 1 a4574 1 We’ve already described SECTION, ADDRESS, and OUTPUT-SECTION-COMMAND. d4597 1 a4597 1 ‘NOLOAD’ d4600 1 a4600 2 ‘READONLY’ d4602 4 a4605 5 ‘DSECT’ ‘COPY’ ‘INFO’ ‘OVERLAY’ d4610 1 a4610 2 ‘TYPE = TYPE’ d4612 3 a4614 3 output file, type names ‘SHT_PROGBITS’, ‘SHT_STRTAB’, ‘SHT_NOTE’, ‘SHT_NOBITS’, ‘SHT_INIT_ARRAY’, ‘SHT_FINI_ARRAY’, and ‘SHT_PREINIT_ARRAY’ are also allowed for TYPE. It is the user’s d4617 1 a4617 14 Note - the TYPE only is used if some or all of the contents of the section do not have an implicit type of their own. So for example: .foo . TYPE = SHT_PROGBITS { *(.bar) } will set the type of section ‘.foo’ to the type of the section ‘.bar’ in the input files, which may not be the SHT_PROGBITS type. Whereas: .foo . TYPE = SHT_PROGBITS { BYTE(1) } will set the type of ‘.foo’ to SHT_PROGBBITS. If it is necessary to override the type of incoming sections and force the output section type then an extra piece of untyped data will be needed: .foo . TYPE = SHT_PROGBITS { BYTE(1); *(.bar) } ‘READONLY ( TYPE = TYPE )’ d4623 2 a4624 2 the section type. For example, in the script sample below, the ‘ROM’ section is addressed at memory location ‘0’ and does not need to be d4640 1 a4640 1 specified by the ‘AT’ or ‘AT>’ keywords. Specifying a load address is d4643 2 a4644 2 The ‘AT’ keyword takes an expression as an argument. This specifies the exact load address of the section. The ‘AT>’ keyword takes the name d4647 1 a4647 1 the section’s alignment requirements. d4649 1 a4649 1 If neither ‘AT’ nor ‘AT>’ is specified for an allocatable section, d4653 1 a4653 1 • If the section has a specific VMA address, then this is used as the d4656 1 a4656 1 • If the section is not allocatable then its LMA is set to its VMA. d4658 1 a4658 1 • Otherwise if a memory region can be found that is compatible with d4664 1 a4664 1 • If no memory regions have been declared then a default region that d4667 1 a4667 1 • If no suitable region could be found, or there was no previous d4672 4 a4675 4 called ‘.text’, which starts at ‘0x1000’, one called ‘.mdata’, which is loaded at the end of the ‘.text’ section even though its VMA is ‘0x2000’, and one called ‘.bss’ to hold uninitialized data at address ‘0x3000’. The symbol ‘_data’ is defined with the value ‘0x2000’, which d4712 1 a4712 1 You can increase an output section’s alignment by using ALIGN. As an d4735 1 a4735 1 read-write by using the keyword ‘ONLY_IF_RO’ and ‘ONLY_IF_RW’ d4745 1 a4745 1 using ‘>REGION’. *Note MEMORY::. d4758 1 a4758 1 using ‘:PHDR’. *Note PHDRS::. If a section is assigned to one or more d4760 2 a4761 2 those segments as well, unless they use an explicitly ‘:PHDR’ modifier. You can use ‘:NONE’ to tell the linker to not put the section in any d4774 1 a4774 1 You can set the fill pattern for an entire section by using ‘=FILLEXP’. d4779 2 a4780 2 a simple hex number, ie. a string of hex digit starting with ‘0x’ and without a trailing ‘k’ or ‘M’, then an arbitrarily long sequence of hex d4783 3 a4785 9 parentheses or a unary ‘+’, the fill pattern is the four least significant bytes of the value of the expression. If the value is less than four bytes in size then it will be zero extended to four bytes. In all cases, the number is big-endian. Fill Value Fill Pattern 0x90 90 90 90 90 0x0090 00 90 00 90 144 00 00 00 90 d4787 1 a4787 1 You can also change the fill value with a ‘FILL’ command in the d4807 3 a4809 3 Overlays are described using the ‘OVERLAY’ command. The ‘OVERLAY’ command is used within a ‘SECTIONS’ command, like an output section description. The full syntax of the ‘OVERLAY’ command is as follows: d4827 1 a4827 1 Everything is optional except ‘OVERLAY’ (a keyword), and each section d4829 3 a4831 3 within the ‘OVERLAY’ construct are identical to those within the general ‘SECTIONS’ construct (*note SECTIONS::), except that no addresses and no memory regions may be defined for sections within an ‘OVERLAY’. d4839 1 a4839 1 ‘OVERLAY’ as a whole (as with normal section definitions, the load d4844 1 a4844 1 If the ‘NOCROSSREFS’ keyword is used, and there are any references d4850 2 a4851 2 For each section within the ‘OVERLAY’, the linker automatically provides two symbols. The symbol ‘__load_start_SECNAME’ is defined as d4853 1 a4853 1 ‘__load_stop_SECNAME’ is defined as the final load address of the d4863 1 a4863 1 ‘SECTIONS’ construct. d4869 5 a4873 5 This will define both ‘.text0’ and ‘.text1’ to start at address 0x1000. ‘.text0’ will be loaded at address 0x4000, and ‘.text1’ will be loaded immediately after ‘.text0’. The following symbols will be defined if referenced: ‘__load_start_text0’, ‘__load_stop_text0’, ‘__load_start_text1’, ‘__load_stop_text1’. d4875 1 a4875 1 C code to copy overlay ‘.text1’ into the overlay area might look like d4882 1 a4882 1 Note that the ‘OVERLAY’ command is just syntactic sugar, since d4900 2 a4901 2 The linker’s default configuration permits allocation of all available memory. You can override this by using the ‘MEMORY’ command. d4903 1 a4903 1 The ‘MEMORY’ command describes the location and size of blocks of d4911 1 a4911 1 A linker script may contain many uses of the ‘MEMORY’ command, d4913 1 a4913 1 inside a single ‘MEMORY’ command. The syntax for ‘MEMORY’ is: d4924 1 a4924 1 have a distinct name within the ‘MEMORY’ command. However you can add d4937 1 a4937 1 ‘R’ d4939 1 a4939 1 ‘W’ d4941 1 a4941 1 ‘X’ d4943 1 a4943 1 ‘A’ d4945 1 a4945 1 ‘I’ d4947 3 a4949 3 ‘L’ Same as ‘I’ ‘!’ d4953 1 a4953 1 than ‘!’, it will be placed in the memory region. The ‘!’ attribute d4957 3 a4959 3 ‘RW!X’ will match any unmapped section that has either or both of the ‘R’ and ‘W’ attributes, but only as long as the section does not also have the ‘X’ attribute. d4963 2 a4964 2 involve any symbols. The keyword ‘ORIGIN’ may be abbreviated to ‘org’ or ‘o’ (but not, for example, ‘ORG’). d4968 2 a4969 2 must evaluate to a constant. The keyword ‘LENGTH’ may be abbreviated to ‘len’ or ‘l’. d4972 3 a4974 3 regions available for allocation: one starting at ‘0’ for 256 kilobytes, and the other starting at ‘0x40000000’ for four megabytes. The linker will place into the ‘rom’ memory region every section which is not d4977 1 a4977 1 explicitly mapped into a memory region into the ‘ram’ memory region. d4986 1 a4986 1 specific output sections into that memory region by using the ‘>REGION’ d4988 1 a4988 1 named ‘mem’, you would use ‘>mem’ in the output section definition. d4996 1 a4996 1 expression via the ‘ORIGIN(MEMORY)’ and ‘LENGTH(MEMORY)’ functions: d5006 4 a5009 4 The ELF object file format uses “program headers”, also knows as “segments”. The program headers describe how the program should be loaded into memory. You can print them out by using the ‘objdump’ program with the ‘-p’ option. d5019 2 a5020 2 precisely. You may use the ‘PHDRS’ command for this purpose. When the linker sees the ‘PHDRS’ command in the linker script, it will not create d5023 1 a5023 1 The linker only pays attention to the ‘PHDRS’ command when generating d5025 1 a5025 1 ‘PHDRS’. d5027 2 a5028 2 This is the syntax of the ‘PHDRS’ command. The words ‘PHDRS’, ‘FILEHDR’, ‘AT’, and ‘FLAGS’ are keywords. d5036 1 a5036 1 The NAME is used only for reference in the ‘SECTIONS’ command of the d5046 1 a5046 1 sections in the segments. You use the ‘:PHDR’ output section attribute d5052 1 a5052 1 repeat ‘:PHDR’, using it once for each segment which should contain the d5055 1 a5055 1 If you place a section in one or more segments using ‘:PHDR’, then d5057 1 a5057 1 specify ‘:PHDR’ in the same segments. This is for convenience, since d5059 1 a5059 1 segment. You can use ‘:NONE’ to override the default segment and tell d5062 1 a5062 1 You may use the ‘FILEHDR’ and ‘PHDRS’ keywords after the program d5064 2 a5065 2 ‘FILEHDR’ keyword means that the segment should include the ELF file header. The ‘PHDRS’ keyword means that the segment should include the d5067 1 a5067 1 (‘PT_LOAD’), all prior loadable segments must have one of these d5073 1 a5073 1 ‘PT_NULL’ (0) d5076 1 a5076 1 ‘PT_LOAD’ (1) d5080 1 a5080 1 ‘PT_DYNAMIC’ (2) d5083 1 a5083 1 ‘PT_INTERP’ (3) d5087 1 a5087 1 ‘PT_NOTE’ (4) d5090 1 a5090 1 ‘PT_SHLIB’ (5) d5094 1 a5094 1 ‘PT_PHDR’ (6) d5097 1 a5097 1 ‘PT_TLS’ (7) d5105 3 a5107 3 address in memory by using an ‘AT’ expression. This is identical to the ‘AT’ command used as an output section attribute (*note Output Section LMA::). The ‘AT’ command for a program header overrides the output d5111 1 a5111 1 which comprise the segment. You may use the ‘FLAGS’ keyword to d5113 1 a5113 1 integer. It is used to set the ‘p_flags’ field of the program header. d5115 1 a5115 1 Here is an example of ‘PHDRS’. This shows a typical set of program d5154 1 a5154 1 can also use the ‘--version-script’ linker option. d5156 1 a5156 1 The syntax of the ‘VERSION’ command is simply d5160 1 a5160 1 by Sun’s linker in Solaris 2.5. The version script defines a tree of d5192 2 a5193 2 version node defined is ‘VERS_1.1’; it has no other dependencies. The script binds the symbol ‘foo1’ to ‘VERS_1.1’. It reduces a number of d5196 1 a5196 1 whose name begins with ‘old’, ‘original’, or ‘new’ is matched. The d5198 1 a5198 1 matching filenames (also known as “globbing”). However, if you specify d5202 7 a5208 7 Next, the version script defines node ‘VERS_1.2’. This node depends upon ‘VERS_1.1’. The script binds the symbol ‘foo2’ to the version node ‘VERS_1.2’. Finally, the version script defines node ‘VERS_2.0’. This node depends upon ‘VERS_1.2’. The scripts binds the symbols ‘bar1’ and ‘bar2’ are bound to the version node ‘VERS_2.0’. d5213 2 a5214 2 unspecified symbols to a given version node by using ‘global: *;’ somewhere in the version script. Note that it’s slightly crazy to use d5217 1 a5217 1 set exported for an old version. That’s wrong since older versions d5221 2 a5222 2 what they might suggest to the person reading them. The ‘2.0’ version could just as well have appeared in between ‘1.1’ and ‘1.2’. However, d5226 1 a5226 1 version script. Such version script doesn’t assign any versions to d5228 1 a5228 1 which won’t. d5253 1 a5253 1 There are several GNU extensions to Sun’s versioning approach. The d5259 4 a5262 4 in the C source file. This renames the function ‘original_foo’ to be an alias for ‘foo’ bound to the version node ‘VERS_1.1’. The ‘local:’ directive can be used to prevent the symbol ‘original_foo’ from being exported. A ‘.symver’ directive takes precedence over a version script. d5270 1 a5270 1 To do this, you must use multiple ‘.symver’ directives in the source d5278 1 a5278 1 In this example, ‘foo@@’ represents the symbol ‘foo’ bound to the d5280 2 a5281 2 this example would define 4 C functions: ‘original_foo’, ‘old_foo’, ‘old_foo1’, and ‘new_foo’. d5285 2 a5286 2 this symbol will be bound. You can do this with the ‘foo@@@@VERS_2.0’ type of ‘.symver’ directive. You can only declare one version of a d5292 1 a5292 1 ‘old_foo’), or you can use the ‘.symver’ directive to specifically bind d5299 1 a5299 1 The supported ‘lang’s are ‘C’, ‘C++’, and ‘Java’. The linker will d5301 2 a5302 2 according to ‘lang’ before matching them to the patterns specified in ‘version-script-commands’. The default ‘lang’ is ‘C’. d5351 4 a5354 4 As in C, the linker considers an integer beginning with ‘0’ to be octal, and an integer beginning with ‘0x’ or ‘0X’ to be hexadecimal. Alternatively the linker accepts suffixes of ‘h’ or ‘H’ for hexadecimal, ‘o’ or ‘O’ for octal, ‘b’ or ‘B’ for binary and ‘d’ or ‘D’ for decimal. d5358 2 a5359 2 In addition, you can use the suffixes ‘K’ and ‘M’ to scale a constant by ‘1024’ or ‘1024*1024’ respectively. For example, the following all d5367 1 a5367 1 Note - the ‘K’ and ‘M’ suffixes cannot be used in conjunction with d5377 1 a5377 1 ‘CONSTANT(NAME)’ operator, where NAME is one of: d5379 2 a5380 2 ‘MAXPAGESIZE’ The target’s maximum page size. d5382 2 a5383 2 ‘COMMONPAGESIZE’ The target’s default page size. d5407 2 a5408 2 safest to delimit symbols with spaces. For example, ‘A-B’ is one symbol, whereas ‘A - B’ is an expression involving subtraction. d5440 1 a5440 1 The command-line options ‘--orphan-handling’ and ‘--unique’ (*note d5450 4 a5453 4 The special linker variable “dot” ‘.’ always contains the current output location counter. Since the ‘.’ always refers to a location in an output section, it may only appear in an expression within a ‘SECTIONS’ command. The ‘.’ symbol may appear anywhere that an ordinary symbol is d5456 1 a5456 1 Assigning a value to ‘.’ will cause the location counter to be moved. d5473 5 a5477 5 In the previous example, the ‘.text’ section from ‘file1’ is located at the beginning of the output section ‘output’. It is followed by a 1000 byte gap. Then the ‘.text’ section from ‘file2’ appears, also with a 1000 byte gap following before the ‘.text’ section from ‘file3’. The notation ‘= 0x12345678’ specifies what data to write in the gaps (*note d5480 4 a5483 4 Note: ‘.’ actually refers to the byte offset from the start of the current containing object. Normally this is the ‘SECTIONS’ statement, whose start address is 0, hence ‘.’ can be used as an absolute address. If ‘.’ is used inside a section description however, it refers to the d5501 1 a5501 1 The ‘.text’ section will be assigned a starting address of 0x100 and d5503 3 a5505 3 ‘.text’ input sections to fill this area. (If there is too much data, an error will be produced because this would be an attempt to move ‘.’ backwards). The ‘.data’ section will start at 0x500 and it will have an d5507 1 a5507 1 ‘.data’ input sections and before the end of the ‘.data’ output section d5525 1 a5525 1 If the linker needs to place some input section, e.g. ‘.rodata’, not d5527 1 a5527 1 ‘.text’ and ‘.data’. You might think the linker should place ‘.rodata’ d5529 1 a5529 1 particular significance to the linker. As well, the linker doesn’t d5532 2 a5533 2 output section, except for the special case of an assignment to ‘.’. I.e., the linker will place the orphan ‘.rodata’ section as if the d5548 2 a5549 2 This may or may not be the script author’s intention for the value of ‘start_of_data’. One way to influence the orphan section placement is d5551 1 a5551 1 assignment to ‘.’ is setting the start address of a following output d5567 2 a5568 2 Now, the orphan ‘.rodata’ section will be placed between ‘end_of_text’ and ‘start_of_data’. d5578 1 a5578 1 precedence associativity Operators Notes d5580 1 a5580 1 1 left ! - ~ (1) d5584 7 a5590 9 5 left > < <= >= 6 left == != 7 left & 8 left ^ 9 left | 10 left && 11 left || 12 right ? : 13 right += -= *= /= <<= >>= &= |= ^= (2) d5618 1 a5618 1 ‘.’, must be evaluated during section allocation. d5628 2 a5629 2 will cause the error message ‘non constant expression for initial address’. d5639 1 a5639 1 the ‘-r’ option, a further link operation may change the value of a d5645 1 a5645 1 address, such as ‘ADDR’, ‘LOADADDR’, ‘ORIGIN’ and ‘SEGMENT_START’. d5647 2 a5648 2 non-address value, such as ‘LENGTH’. One complication is that unless you set ‘LD_FEATURE ("SANE_EXPR")’ (*note Miscellaneous Commands::), d5650 1 a5650 1 location, for compatibility with older versions of ‘ld’. Expressions d5653 2 a5654 2 definition treat absolute symbols as numbers. If ‘LD_FEATURE ("SANE_EXPR")’ is given, then absolute symbols and numbers are simply d5672 3 a5674 3 both ‘.’ and ‘__executable_start’ are set to the absolute address 0x100 in the first two assignments, then both ‘.’ and ‘__data_start’ are set to 0x10 relative to the ‘.data’ section in the second two d5680 1 a5680 1 • Unary operations on an absolute address or number, and binary d5683 1 a5683 1 • Unary operations on a relative address, and binary operations on d5687 1 a5687 1 • Other binary operations, that is, between two relative addresses d5694 3 a5696 3 • An operation involving only numbers results in a number. • The result of comparisons, ‘&&’ and ‘||’ is also a number. • The result of other binary arithmetic and logical operations on two d5698 2 a5699 2 (after above conversions) is also a number when ‘LD_FEATURE ("SANE_EXPR")’ or inside an output section definition but an d5701 1 a5701 1 • The result of other operations on relative addresses or one d5704 1 a5704 1 • The result of other operations on absolute addresses (after above d5707 1 a5707 1 You can use the builtin function ‘ABSOLUTE’ to force an expression to d5710 1 a5710 1 ‘.data’: d5715 1 a5715 1 If ‘ABSOLUTE’ were not used, ‘_edata’ would be relative to the ‘.data’ d5718 1 a5718 1 Using ‘LOADADDR’ also forces an expression absolute, since this d5730 1 a5730 1 ‘ABSOLUTE(EXP)’ d5737 1 a5737 1 ‘ADDR(SECTION)’ d5740 3 a5742 3 following example, ‘start_of_output_1’, ‘symbol_1’ and ‘symbol_2’ are assigned equivalent values, except that ‘symbol_1’ will be relative to the ‘.output1’ section while the other two will be d5757 12 a5768 12 ‘ALIGN(ALIGN)’ ‘ALIGN(EXP,ALIGN)’ Return the location counter (‘.’) or arbitrary expression aligned to the next ALIGN boundary. The single operand ‘ALIGN’ doesn’t change the value of the location counter—it just does arithmetic on it. The two operand ‘ALIGN’ allows an arbitrary expression to be aligned upwards (‘ALIGN(ALIGN)’ is equivalent to ‘ALIGN(ABSOLUTE(.), ALIGN)’). Here is an example which aligns the output ‘.data’ section to the next ‘0x2000’ byte boundary after the preceding section and sets a variable within the section to the next ‘0x8000’ boundary after the d5776 1 a5776 1 The first use of ‘ALIGN’ in this example specifies the location of d5779 1 a5779 1 use of ‘ALIGN’ is used to defines the value of a symbol. d5781 1 a5781 1 The builtin function ‘NEXT’ is closely related to ‘ALIGN’. d5783 1 a5783 1 ‘ALIGNOF(SECTION)’ d5785 3 a5787 6 has been allocated, or zero if the section has not been allocated. If the section does not exist in the linker script the linker will report an error. If SECTION is ‘NEXT_SECTION’ then ‘ALIGNOF’ will return the alignment of the next allocated section specified in the linker script, or zero if there is no such section. In the following example, the alignment of the ‘.output’ section is stored d5796 2 a5797 2 ‘BLOCK(EXP)’ This is a synonym for ‘ALIGN’, for compatibility with older linker d5801 1 a5801 1 ‘DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)’ d5809 1 a5809 1 expression and ‘DATA_SEGMENT_END’) than the former or not. If the d5814 1 a5814 1 This expression can only be used directly in ‘SECTIONS’ commands, d5819 1 a5819 1 however that ‘-z relro’ protection will not be effective if the d5825 2 a5826 2 ‘DATA_SEGMENT_END(EXP)’ This defines the end of data segment for ‘DATA_SEGMENT_ALIGN’ d5831 6 a5836 6 ‘DATA_SEGMENT_RELRO_END(OFFSET, EXP)’ This defines the end of the ‘PT_GNU_RELRO’ segment when ‘-z relro’ option is used. When ‘-z relro’ option is not present, ‘DATA_SEGMENT_RELRO_END’ does nothing, otherwise ‘DATA_SEGMENT_ALIGN’ is padded so that EXP + OFFSET is aligned to the COMMONPAGESIZE argument given to ‘DATA_SEGMENT_ALIGN’. If d5838 1 a5838 1 ‘DATA_SEGMENT_ALIGN’ and ‘DATA_SEGMENT_END’. Evaluates to the d5840 1 a5840 1 ‘PT_GNU_RELRO’ segment due to section alignment. d5844 1 a5844 1 ‘DEFINED(SYMBOL)’ d5849 2 a5850 2 set a global symbol ‘begin’ to the first location in the ‘.text’ section—but if a symbol called ‘begin’ already existed, its value d5861 1 a5861 1 ‘LENGTH(MEMORY)’ d5864 1 a5864 1 ‘LOADADDR(SECTION)’ d5868 1 a5868 1 ‘LOG2CEIL(EXP)’ d5870 1 a5870 1 ‘LOG2CEIL(0)’ returns 0. d5872 1 a5872 1 ‘MAX(EXP1, EXP2)’ d5875 1 a5875 1 ‘MIN(EXP1, EXP2)’ d5878 1 a5878 1 ‘NEXT(EXP)’ d5880 2 a5881 2 This function is closely related to ‘ALIGN(EXP)’; unless you use the ‘MEMORY’ command to define discontinuous memory for the output d5884 1 a5884 1 ‘ORIGIN(MEMORY)’ d5887 1 a5887 1 ‘SEGMENT_START(SEGMENT, DEFAULT)’ d5889 1 a5889 1 has already been given for this segment (with a command-line ‘-T’ d5891 3 a5893 3 be DEFAULT. At present, the ‘-T’ command-line option can only be used to set the base address for the “text”, “data”, and “bss” sections, but you can use ‘SEGMENT_START’ with any segment name. d5895 1 a5895 1 ‘SIZEOF(SECTION)’ d5897 3 a5899 7 been allocated, or zero if the section has not been allocated. If the section does not exist in the linker script the linker will report an error. If SECTION is ‘NEXT_SECTION’ then ‘SIZEOF’ will return the alignment of the next allocated section specified in the linker script, or zero if there is no such section. In the following example, ‘symbol_1’ and ‘symbol_2’ are assigned identical values: d5910 2 a5911 2 ‘SIZEOF_HEADERS’ Return the size in bytes of the output file’s headers. This is d5917 1 a5917 1 ‘SIZEOF_HEADERS’ builtin function, the linker must compute the d5920 3 a5922 3 additional program headers, it will report an error ‘not enough room for program headers’. To avoid this error, you must avoid using the ‘SIZEOF_HEADERS’ function, or you must rework your linker d5925 1 a5925 1 ‘PHDRS’ command (*note PHDRS::). d5941 1 a5941 1 assignments, or the ‘INPUT’, ‘GROUP’, or ‘VERSION’ commands. d5948 1 a5948 1 File: ld.info, Node: Plugins, Next: Special Sections, Prev: Scripts, Up: Top a5959 3 Plugins are enabled via the use of the ‘-plugin NAME’ command line option. *Note Options::. d5986 2 a5987 2 The GNU ‘ar’ utility now supports a ‘--record-libdeps’ option to embed dependency lists into static libraries as well, and the ‘libdep’ d5989 2 a5990 2 The dependency information is stored as a single string, carrying ‘-l’ and ‘-L’ arguments as they would normally appear in a linker command d5992 1 a5992 1 stored into any archive, even if GNU ‘ar’ is not being used to create d5994 1 a5994 1 ‘__.LIBDEP’. d5996 3 a5998 3 For example, given a library ‘libssl.a’ that depends on another library ‘libcrypto.a’ which may be found in ‘/usr/local/lib’, the ‘__.LIBDEP’ member of ‘libssl.a’ would contain d6003 1 a6003 44 File: ld.info, Node: Special Sections, Next: Machine Dependent, Prev: Plugins, Up: Top 5 Special Sections ****************** When linking ELF format object files ‘ld’ treats some sections in a special, non standard manner. This part of the manual describes these sections. ‘.gnu.warning’ The contents of any section with this name are assumed to be an ascii format warning message. The contents will be displayed to the user if the sections appears in any input file, but the section will not be copied into the output image. If the ‘--fatal-warnings’ option is enabled then the warnings - if any are encountered - will also stop the link from completing. Note - the ‘.gnu.warning’ section is not subject to linker garbage collection or orphan handling. ‘.gnu.warning.SYM’ The contents of any section whoes name starts with the prefix ‘.gnu.warning.’ and then finishes with the name of a symbol is treated in a similar fashion to the ‘.gnu.warning’ section, but only if the named symbol is referenced. So for example the contents of a section called ‘.gnu.warning.foo’ will be displayed as warning message if, and only if, the symbol ‘foo’ is referenced by one or more of the input files. This includes object files pulled in from static libraries, shared objects needed to complete the link and so on. Note - because these warning messages are generated before the linker performs garbage collection (if enabled) it is possible for a warning to be displayed for a symbol that is later removed and then never appears in the final output. ‘.note.gnu.property’ When the linker combines sections of this name it will merge them together according to various rules encoded into the notes themselves. Therefore the contents of the output .note.gnu.property section may not correspond to a simple concatenation of the input sections. If the ‘-Map’ option has been used to request a linker map then details of any property merging will be included in the map. d6005 1 a6005 4  File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Special Sections, Up: Top 6 Machine Dependent Features d6008 2 a6009 2 ‘ld’ has additional features on some platforms; the following sections describe them. Machines where ‘ld’ has no additional functionality are d6014 17 a6030 17 * H8/300:: ‘ld’ and the H8/300 * M68HC11/68HC12:: ‘ld’ and the Motorola 68HC11 and 68HC12 families * ARM:: ‘ld’ and the ARM family * HPPA ELF32:: ‘ld’ and HPPA 32-bit ELF * M68K:: ‘ld’ and the Motorola 68K family * MIPS:: ‘ld’ and the MIPS family * MMIX:: ‘ld’ and MMIX * MSP430:: ‘ld’ and MSP430 * NDS32:: ‘ld’ and NDS32 * Nios II:: ‘ld’ and the Altera Nios II * PowerPC ELF32:: ‘ld’ and PowerPC 32-bit ELF Support * PowerPC64 ELF64:: ‘ld’ and PowerPC64 64-bit ELF Support * S/390 ELF:: ‘ld’ and S/390 ELF Support * SPU ELF:: ‘ld’ and SPU ELF Support * TI COFF:: ‘ld’ and TI COFF * WIN32:: ‘ld’ and WIN32 (cygwin/mingw) * Xtensa:: ‘ld’ and Xtensa Processors d6035 1 a6035 1 6.1 ‘ld’ and the H8/300 d6038 2 a6039 2 For the H8/300, ‘ld’ can perform these global optimizations when you specify the ‘--relax’ command-line option. d6042 1 a6042 1 ‘ld’ finds all ‘jsr’ and ‘jmp’ instructions whose targets are d6044 1 a6044 1 relative ‘bsr’ and ‘bra’ instructions, respectively. d6047 1 a6047 1 ‘ld’ finds all ‘mov.b’ instructions which use the sixteen-bit d6050 1 a6050 1 linker turns ‘mov.b ‘@@’AA:16’ into ‘mov.b ‘@@’AA:8’ whenever the d6053 1 a6053 1 ‘ld’ finds all ‘mov’ instructions which use the register indirect d6057 1 a6057 1 ‘mov.b ‘@@’D:32,ERx’ into ‘mov.b ‘@@’D:16,ERx’ whenever the d6062 1 a6062 1 ‘ld’ finds all bit manipulation instructions like ‘band, bclr, d6064 1 a6064 1 bxor’ which use 32 bit and 16 bit absolute address form, but refer d6066 2 a6067 2 address form. (That is: the linker turns ‘bset #xx:3,‘@@’AA:32’ into ‘bset #xx:3,‘@@’AA:8’ whenever the address AA is in the top d6071 1 a6071 1 ‘ld’ finds all ‘ldc.w, stc.w’ instructions which use the 32 bit d6074 1 a6074 1 turns ‘ldc.w ‘@@’AA:32,ccr’ into ‘ldc.w ‘@@’AA:16,ccr’ whenever the d6080 1 a6080 1 6.2 ‘ld’ and the Motorola 68HC11 and 68HC12 families d6083 1 a6083 1 6.2.1 Linker Relaxation d6086 2 a6087 2 For the Motorola 68HC11, ‘ld’ can perform these global optimizations when you specify the ‘--relax’ command-line option. d6090 1 a6090 1 ‘ld’ finds all ‘jsr’ and ‘jmp’ instructions whose targets are d6092 1 a6092 1 relative ‘bsr’ and ‘bra’ instructions, respectively. d6094 1 a6094 1 ‘ld’ also looks at all 16-bit extended addressing modes and d6099 1 a6099 1 When ‘gcc’ is called with ‘-mrelax’, it can emit group of d6101 1 a6101 1 addressing mode. These instructions consists of ‘bclr’ or ‘bset’ d6104 1 a6104 1 6.2.2 Trampoline Generation d6107 2 a6108 2 For 68HC11 and 68HC12, ‘ld’ can generate trampoline code to call a far function using a normal ‘jsr’ instruction. The linker will also change d6117 1 a6117 1 6.3 ‘ld’ and the ARM family d6120 1 a6120 1 For the ARM, ‘ld’ will generate code stubs to allow functions calls d6122 1 a6122 1 been compiled and assembled with the ‘-mthumb-interwork’ command line d6125 1 a6125 1 option then the ‘--support-old-code’ command-line switch should be given d6131 2 a6132 2 The ‘--thumb-entry’ switch is a duplicate of the generic ‘--entry’ switch, in that it sets the program’s starting address. But it also d6137 1 a6137 1 The ‘--use-nul-prefixed-import-tables’ switch is specifying, that the d6142 1 a6142 1 The ‘--be8’ switch instructs ‘ld’ to generate BE8 format executables. d6144 1 a6144 1 which have been assembled with the ‘-EB’ option. The resulting image d6147 4 a6150 4 The ‘R_ARM_TARGET1’ relocation is typically used for entries in the ‘.init_array’ section. It is interpreted as either ‘R_ARM_REL32’ or ‘R_ARM_ABS32’, depending on the target. The ‘--target1-rel’ and ‘--target1-abs’ switches override the default. d6152 2 a6153 2 The ‘--target2=type’ switch overrides the default definition of the ‘R_ARM_TARGET2’ relocation. Valid values for ‘type’, their meanings, d6155 6 a6160 6 ‘rel’ ‘R_ARM_REL32’ (arm*-*-elf, arm*-*-eabi) ‘abs’ ‘R_ARM_ABS32’ ‘got-rel’ ‘R_ARM_GOT_PREL’ (arm*-*-linux, arm*-*-*bsd) d6162 1 a6162 1 The ‘R_ARM_V4BX’ relocation (defined by the ARM AAELF specification) d6168 3 a6170 3 In the latter case, the switch ‘--fix-v4bx’ must be passed to the linker, which causes v4t ‘BX rM’ instructions to be rewritten as ‘MOV PC,rM’, since v4 processors do not have a ‘BX’ instruction. d6172 1 a6172 1 In the former case, the switch should not be used, and ‘R_ARM_V4BX’ d6175 1 a6175 1 Replace ‘BX rM’ instructions identified by ‘R_ARM_V4BX’ relocations d6187 1 a6187 1 The ‘--use-blx’ switch enables the linker to use ARM/Thumb BLX d6193 1 a6193 1 The ‘--vfp11-denorm-fix’ switch enables a link-time workaround for a d6208 2 a6209 2 workaround by specifying the linker option ‘--vfp-denorm-fix=scalar’ if you are using the VFP11 scalar mode only, or ‘--vfp-denorm-fix=vector’ d6211 1 a6211 1 The default is ‘--vfp-denorm-fix=none’. d6222 1 a6222 1 The ‘--fix-arm1176’ switch enables a link-time workaround for an d6225 1 a6225 1 can be disabled unconditionally by specifying ‘--no-fix-arm1176’. d6227 2 a6228 2 Further information is available in the “ARM1176JZ-S and ARM1176JZF-S Programmer Advice Notice” available on the ARM documentation website at: d6231 1 a6231 1 The ‘--fix-stm32l4xx-629360’ switch enables a link-time workaround d6244 1 a6244 1 ‘--fix-stm32l4xx-629360=none’. If you know you are using buggy d6246 2 a6247 2 linker option ‘--fix-stm32l4xx-629360’, or the equivalent ‘--fix-stm32l4xx-629360=default’. d6265 1 a6265 1 PC-relative branch instruction if the ‘.text’ section is too large. In d6269 1 a6269 1 The ‘--no-enum-size-warning’ switch prevents the linker from warning d6276 2 a6277 2 The ‘--no-wchar-size-warning’ switch prevents the linker from warning when linking object files that specify incompatible EABI ‘wchar_t’ size d6279 1 a6279 1 file using 32-bit ‘wchar_t’ values with another using 16-bit ‘wchar_t’ d6282 1 a6282 1 The ‘--pic-veneer’ switch makes the linker use PIC sequences for d6284 1 a6284 1 PIC. This avoids problems on uClinux targets where ‘--emit-relocs’ is d6291 1 a6291 1 command-line option ‘--stub-group-size=N’. The placement is important d6297 1 a6297 1 The value of ‘N’, the parameter to the ‘--stub-group-size=’ option d6301 1 a6301 1 branches that need them. If the value of ‘N’ is 1 (either +1 or -1) d6303 1 a6303 1 using its built in heuristics. A value of ‘N’ greater than 1 (or d6305 1 a6305 1 service at most ‘N’ bytes from the input sections. d6307 1 a6307 1 The default, if ‘--stub-group-size=’ is not specified, is ‘N = +1’. d6313 1 a6313 1 The ‘--fix-cortex-a8’ switch enables a link-time workaround for an d6316 2 a6317 2 be enabled otherwise by specifying ‘--fix-cortex-a8’, or disabled unconditionally by specifying ‘--no-fix-cortex-a8’. d6322 1 a6322 1 The ‘--fix-cortex-a53-835769’ switch enables a link-time workaround d6325 2 a6326 2 by specifying ‘--fix-cortex-a53-835769’, or disabled unconditionally by specifying ‘--no-fix-cortex-a53-835769’. d6330 1 a6330 1 The ‘--no-merge-exidx-entries’ switch disables the merging of d6333 1 a6333 1 The ‘--long-plt’ option enables the use of 16 byte PLT entries which d6337 1 a6337 1 The ‘--no-apply-dynamic-relocs’ option makes AArch64 linker do not d6341 2 a6342 2 ‘.gnu.sgstubs’. Its start address must be set, either with the command-line option ‘--section-start’ or in a linker script, to indicate d6345 2 a6346 2 The ‘--cmse-implib’ option requests that the import libraries specified by the ‘--out-implib’ and ‘--in-implib’ options are secure d6350 1 a6350 1 The ‘--in-implib=file’ specifies an input import library whose d6352 1 a6352 1 warning is given if no ‘--out-implib’ is given but new symbols have been d6354 1 a6354 1 library. Otherwise, if ‘--out-implib’ is specified, the symbols are d6358 1 a6358 1 libraries, ie. when ‘--cmse-implib’ is specified. d6363 1 a6363 1 6.4 ‘ld’ and HPPA 32-bit ELF Support d6366 1 a6366 1 When generating a shared library, ‘ld’ will by default generate import d6368 1 a6368 1 ‘--multi-subspace’ switch causes ‘ld’ to generate export stubs, and d6372 2 a6373 2 Long branch stubs and import/export stubs are placed by ‘ld’ in stub sections located between groups of input sections. ‘--stub-group-size’ d6379 1 a6379 1 serve one group of input sections. A negative value for ‘N’ chooses d6381 2 a6382 2 offset. Two special values of ‘N’ are recognized, ‘1’ and ‘-1’. These both instruct ‘ld’ to automatically size input section groups for the d6384 1 a6384 1 as other positive or negative values of ‘N’ respectively. d6386 1 a6386 1 Note that ‘--stub-group-size’ does not split input sections. A d6394 1 a6394 1 6.5 ‘ld’ and the Motorola 68K family d6397 5 a6401 5 The ‘--got=TYPE’ option lets you choose the GOT generation scheme. The choices are ‘single’, ‘negative’, ‘multigot’ and ‘target’. When ‘target’ is selected the linker chooses the default GOT generation scheme for the current target. ‘single’ tells the linker to generate a single GOT with entries only at non-negative offsets. ‘negative’ d6404 1 a6404 1 ‘multigot’ allows the linker to generate several GOTs in the output d6412 1 a6412 1 6.6 ‘ld’ and the MIPS family d6415 1 a6415 1 The ‘--insn32’ and ‘--no-insn32’ options control the choice of microMIPS d6417 1 a6417 1 PLT or lazy binding stubs, or in relaxation. If ‘--insn32’ is used, d6419 1 a6419 1 if ‘--no-insn32’ is used, all instruction encodings are used, including d6422 1 a6422 1 The ‘--ignore-branch-isa’ and ‘--no-ignore-branch-isa’ options d6424 1 a6424 1 ‘--ignore-branch-isa’ is used, then the linker accepts any branch d6426 2 a6427 2 calculation, except for some cases of ‘BAL’ instructions which meet relaxation conditions and are converted to equivalent ‘JALX’ d6429 1 a6429 1 if ‘--no-ignore-branch-isa’ is used a check is made causing the loss of d6435 1 a6435 1 6.7 ‘ld’ and MMIX d6438 3 a6440 3 For MMIX, there is a choice of generating ‘ELF’ object files or ‘mmo’ object files when linking. The simulator ‘mmix’ understands the ‘mmo’ format. The binutils ‘objcopy’ utility can translate between the two d6443 1 a6443 1 There is one special section, the ‘.MMIX.reg_contents’ section. d6447 2 a6448 2 ‘.MMIX.reg_contents’ section corresponds to the first allocated global register multiplied by 8. Register ‘$255’ is not included in this d6450 1 a6450 1 ‘Main’ for ‘mmo’ files. d6452 2 a6453 2 Global symbols with the prefix ‘__.MMIX.start.’, for example ‘__.MMIX.start..text’ and ‘__.MMIX.start..data’ are special. The d6463 1 a6463 1 6.8 ‘ld’ and MSP430 d6467 2 a6468 2 ‘-m [mpu type]’ will select an appropriate linker script for selected MPU type. (To get a list of known MPUs just pass ‘-m help’ option to d6474 1 a6474 1 ‘‘.vectors’’ d6477 1 a6477 1 ‘‘.bootloader’’ d6481 1 a6481 1 ‘‘.infomem’’ d6485 2 a6486 2 ‘‘.infomemnobits’’ This is the same as the ‘.infomem’ section except that any code in d6489 2 a6490 2 ‘‘.noinit’’ Denotes a portion of RAM located above ‘.bss’ section. d6494 1 a6494 1 ‘--code-region=[either,lower,upper,none]’ d6499 1 a6499 1 ‘--data-region=[either,lower,upper,none]’ d6505 1 a6505 1 ‘--disable-sec-transformation’ d6507 1 a6507 1 ‘--code-region’ and ‘--data-region’ options. This is useful if you d6515 1 a6515 1 6.9 ‘ld’ and NDS32 d6521 1 a6521 1 ‘‘--m[no-]fp-as-gp’’ d6524 1 a6524 1 ‘‘--mexport-symbols=FILE’’ d6527 1 a6527 1 ‘‘--m[no-]ex9’’ d6530 1 a6530 1 ‘‘--mexport-ex9=FILE’’ d6533 1 a6533 1 ‘‘--mimport-ex9=FILE’’ d6536 1 a6536 1 ‘‘--mupdate-ex9’’ d6539 1 a6539 1 ‘‘--mex9-limit=NUM’’ d6542 1 a6542 1 ‘‘--mex9-loop-aware’’ d6545 1 a6545 1 ‘‘--m[no-]ifc’’ d6548 1 a6548 1 ‘‘--mifc-loop-aware’’ d6554 1 a6554 1 6.10 ‘ld’ and the Altera Nios II d6559 2 a6560 2 which may result in ‘ld’ giving ‘relocation truncated to fit’ errors with very large programs. The command-line option ‘--relax’ enables the d6562 1 a6562 1 space for calls outside the normal ‘call’ and ‘jmpi’ address range. d6567 1 a6567 1 The ‘--relax’ option is enabled by default unless ‘-r’ is also d6569 3 a6571 3 ‘--no-relax’ linker option. You can also disable this optimization locally by using the ‘set .noat’ directive in assembly-language source files, as the linker-inserted trampolines use the ‘at’ register as a d6574 3 a6576 3 Note that the linker ‘--relax’ option is independent of assembler relaxation options, and that using the GNU assembler’s ‘-relax-all’ option interferes with the linker’s more selective call instruction d6582 1 a6582 1 6.11 ‘ld’ and PowerPC 32-bit ELF Support d6586 2 a6587 2 displacement, which may result in ‘ld’ giving ‘relocation truncated to fit’ errors with very large programs. ‘--relax’ enables the generation d6590 2 a6591 2 reachable if an input section exceeds 33M in size. You may combine ‘-r’ and ‘--relax’ to add trampolines in a partial link. In that case both d6595 2 a6596 2 ‘--bss-plt’ Current PowerPC GCC accepts a ‘-msecure-plt’ option that generates d6600 1 a6600 1 ‘ld’ will generate this layout, including stubs to access the PLT, d6602 1 a6602 1 compiled with ‘-msecure-plt’. ‘--bss-plt’ forces the old BSS PLT d6605 3 a6607 3 ‘--secure-plt’ ‘ld’ will use the new PLT and GOT layout if it is linking new ‘-fpic’ or ‘-fPIC’ code, but does not do so automatically when d6612 1 a6612 1 ‘--sdata-got’ d6615 1 a6615 1 of ‘.plt’ must change because the new secure PLT is an initialized d6617 6 a6622 6 ‘.got’ change is more subtle: The new placement allows ‘.got’ to be read-only in applications linked with ‘-z relro -z now’. However, this placement means that ‘.sdata’ cannot always be used in shared libraries, because the PowerPC ABI accesses ‘.sdata’ in shared libraries from the GOT pointer. ‘--sdata-got’ forces the old GOT placement. PowerPC GCC doesn’t use ‘.sdata’ in shared libraries, d6626 2 a6627 2 ‘--emit-stub-syms’ This option causes ‘ld’ to label linker stubs with a local symbol d6630 2 a6631 2 ‘--no-tls-optimize’ PowerPC ‘ld’ normally performs some optimization of code sequences d6638 1 a6638 1 6.12 ‘ld’ and PowerPC64 64-bit ELF Support d6641 1 a6641 1 ‘--stub-group-size’ d6643 2 a6644 2 placed by ‘ld’ in stub sections located between groups of input sections. ‘--stub-group-size’ specifies the maximum size of a d6650 1 a6650 1 serve one group of input sections. A negative value for ‘N’ d6652 2 a6653 2 negative offset. Two special values of ‘N’ are recognized, ‘1’ and ‘-1’. These both instruct ‘ld’ to automatically size input section d6656 1 a6656 1 ‘N’ respectively. d6658 1 a6658 1 Note that ‘--stub-group-size’ does not split input sections. A d6664 2 a6665 2 ‘--emit-stub-syms’ This option causes ‘ld’ to label linker stubs with a local symbol d6668 3 a6670 3 ‘--dotsyms’ ‘--no-dotsyms’ These two options control how ‘ld’ interprets version patterns in a d6673 3 a6675 3 entry symbol with the name prefixed by a dot (‘.’). To properly version a function ‘foo’, the version script thus needs to control both ‘foo’ and ‘.foo’. The option ‘--dotsyms’, on by default, d6677 1 a6677 1 ‘--no-dotsyms’ to disable this feature. d6679 3 a6681 3 ‘--save-restore-funcs’ ‘--no-save-restore-funcs’ These two options control whether PowerPC64 ‘ld’ automatically d6683 1 a6683 1 ‘-Os’ code. The default is to provide any such referenced function d6686 2 a6687 2 ‘--no-tls-optimize’ PowerPC64 ‘ld’ normally performs some optimization of code d6691 3 a6693 3 ‘--tls-get-addr-optimize’ ‘--no-tls-get-addr-optimize’ These options control how PowerPC64 ‘ld’ uses a special stub to d6696 1 a6696 1 ‘__tls_get_addr’ for a given symbol to be resolved by the special d6699 2 a6700 2 __tls_get_addr_opt. Using ‘--tls-get-addr-optimize’ with an older glibc won’t do much besides slow down your applications, but may be d6703 1 a6703 1 glibc. ‘--tls-get-addr-regsave’ forces generation of a stub that d6707 1 a6707 1 stub to __tls_get_addr_opt. ‘--no-tls-get-addr-regsave’ disables d6710 2 a6711 2 ‘--no-opd-optimize’ PowerPC64 ‘ld’ normally removes ‘.opd’ section entries d6713 2 a6714 2 by the action of ‘--gc-sections’ or linker script ‘/DISCARD/’. Use this option to disable ‘.opd’ optimization. d6716 1 a6716 1 ‘--non-overlapping-opd’ d6718 1 a6718 1 ‘.opd’ entries spaced 16 bytes apart, overlapping the third word, d6722 2 a6723 2 ‘--no-toc-optimize’ PowerPC64 ‘ld’ normally removes unused ‘.toc’ section entries. d6736 5 a6740 5 ‘--no-inline-optimize’ PowerPC64 ‘ld’ normally replaces inline PLT call sequences marked with ‘R_PPC64_PLTSEQ’, ‘R_PPC64_PLTCALL’, ‘R_PPC64_PLT16_HA’ and ‘R_PPC64_PLT16_LO_DS’ relocations by a number of ‘nop’s and a direct call when the function is defined locally and can’t be d6744 3 a6746 3 ‘--no-multi-toc’ If given any toc option besides ‘-mcmodel=medium’ or ‘-mcmodel=large’, PowerPC64 GCC generates code for a TOC model d6748 1 a6748 1 limits the total TOC size to 64K. PowerPC64 ‘ld’ extends this limit d6751 3 a6753 3 inter-group calls. ‘ld’ does not split apart input sections, so cannot help if a single input file has a ‘.toc’ section that exceeds 64K, most likely from linking multiple files with ‘ld -r’. d6756 3 a6758 3 ‘--no-toc-sort’ By default, ‘ld’ sorts TOC sections so that those whose file happens to have a section called ‘.init’ or ‘.fini’ are placed d6760 3 a6762 3 PowerPC64 gcc’s ‘-mcmodel=small’, and lastly TOC sections referenced only by code generated with PowerPC64 gcc’s ‘-mcmodel=medium’ or ‘-mcmodel=large’ options. Doing this results d6766 2 a6767 2 ‘--plt-align’ ‘--no-plt-align’ d6770 1 a6770 1 boundary when using ‘--plt-align=’. A negative value may be d6777 2 a6778 2 ‘--plt-static-chain’ ‘--no-plt-static-chain’ d6780 1 a6780 1 chain pointer (r11). ‘ld’ defaults to not loading the static chain d6783 3 a6785 3 ‘--plt-thread-safe’ ‘--no-plt-thread-safe’ With power7’s weakly ordered memory model, it is possible when d6791 1 a6791 1 default, ‘ld’ looks for calls to commonly used functions that d6795 2 a6796 2 ‘--plt-localentry’ ‘--no-localentry’ d6808 1 a6808 1 The option is experimental, use with care. ‘--no-plt-localentry’ d6811 3 a6813 3 ‘--power10-stubs’ ‘--no-power10-stubs’ When PowerPC64 ‘ld’ links input object files containing relocations d6816 1 a6816 1 ‘@@notoc’ PLT calls where ‘r2’ is not known. The power10 notoc d6818 3 a6820 3 ‘--power10-stubs’ and ‘--no-power10-stubs’ allow you to override the linker’s selection of stub instructions. ‘--power10-stubs=auto’ allows the user to select the default auto d6826 1 a6826 1 6.13 ‘ld’ and S/390 ELF Support d6829 2 a6830 2 ‘--s390-pgste’ This option marks the result file with a ‘PT_S390_PGSTE’ segment. d6837 1 a6837 1 6.14 ‘ld’ and SPU ELF Support d6840 1 a6840 1 ‘--plugin’ d6843 2 a6844 2 ‘--no-overlays’ Normally, ‘ld’ recognizes calls to functions within overlay d6846 1 a6846 1 ‘ld’ also provides a built-in overlay manager. This option turns d6849 2 a6850 2 ‘--emit-stub-syms’ This option causes ‘ld’ to label overlay stubs with a local symbol d6853 2 a6854 2 ‘--extra-overlay-stubs’ This option causes ‘ld’ to add overlay call stubs on all function d6858 2 a6859 2 ‘--local-store=lo:hi’ ‘ld’ usually checks that a final executable for SPU fits in the d6861 1 a6861 1 range. Disable the check entirely with ‘--local-store=0:0’. d6863 1 a6863 1 ‘--stack-analysis’ d6867 1 a6867 1 option, ‘ld’ will provide an estimate of maximum stack usage. ‘ld’ d6877 1 a6877 1 link map is requested, detailed information about each function’s d6880 6 a6885 6 ‘--emit-stack-syms’ This option, if given along with ‘--stack-analysis’ will result in ‘ld’ emitting stack sizing symbols for each function. These take the form ‘__stack_’ for global functions, and ‘__stack__’ for static functions. ‘’ is the section id in hex. The value of such symbols is d6887 2 a6888 2 size will be zero, type ‘STT_NOTYPE’, binding ‘STB_LOCAL’, and section ‘SHN_ABS’. d6893 1 a6893 1 6.15 ‘ld’’s Support for Various TI COFF Versions d6896 1 a6896 1 The ‘--format’ switch allows selection of one of the various TI COFF d6899 1 a6899 1 ‘ld’ will read any version or byte order, but the output header format d6905 1 a6905 1 6.16 ‘ld’ and WIN32 (cygwin/mingw) d6908 1 a6908 1 This section describes some of the win32 specific ‘ld’ issues. See d6914 1 a6914 1 libraries, which contains information for linking to dll’s. They d6916 2 a6917 2 archive. The cygwin and mingw ports of ‘ld’ have specific support for creating such libraries provided with the ‘--out-implib’ a6919 29 _Resource only DLLs_ It is possible to create a DLL that only contains resources, ie just a ‘.rsrc’ section, but in order to do so a custom linker script must be used. This is because the built-in default linker scripts will always create ‘.text’ and ‘.idata’ sections, even if there is no input to go into them. The script should look like this, although the ‘OUTPUT_FORMAT’ should be changed to match the desired format. OUTPUT_FORMAT(pei-i386) SECTIONS { . = SIZEOF_HEADERS; . = ALIGN(__section_alignment__); .rsrc __image_base__ + __section_alignment__ : ALIGN(4) { KEEP (*(.rsrc)) KEEP (*(.rsrc$*)) } /DISCARD/ : { *(*) } } With this script saved to a file called, eg ‘rsrc.ld’, a command line like this can be used to create the resource only DLL ‘rsrc.dll’ from an input file called ‘rsrc.o’: ld -dll --subsystem windows -e 0 -s rsrc.o -o rsrc.dll -T rsrc.ld d6921 1 a6921 1 The cygwin/mingw ‘ld’ has several ways to export symbols for dll’s. d6924 1 a6924 1 By default ‘ld’ exports symbols with the auto-export d6928 5 a6932 5 • –export-all-symbols [This is the default] • –exclude-symbols • –exclude-libs • –exclude-modules-for-implib • –version-script d6934 1 a6934 1 When auto-export is in operation, ‘ld’ will export all the d6936 1 a6936 1 the exception of a few symbols known to belong to the system’s d6938 1 a6938 1 export all of a DLL’s symbols, which may include private d6941 1 a6941 1 symbols out from the list for exporting. The ‘--output-def’ d6945 1 a6945 1 If ‘--export-all-symbols’ is not given explicitly on the d6949 2 a6950 2 • A DEF file is used. • Any symbol in any object file was marked with the d6957 3 a6959 3 ‘.def’ and is added as any other object file to the linker’s command line. The file’s name must end in ‘.def’ or ‘.DEF’. d6964 1 a6964 1 unless the ‘--export-all-symbols’ option is also used. d6967 1 a6967 1 ‘xyz.dll’: d6982 12 a6993 12 ‘_bar’ is an alias for the second. The fourth symbol, ‘another_foo’ is resolved by "forwarding" to another module and treating it as an alias for ‘afoo’ exported from the DLL ‘abc.dll’. The final symbol ‘var1’ is declared to be a data object. The ‘doo’ symbol in export library is an alias of ‘foo’, which gets the string name in export table ‘foo2’. The ‘eoo’ symbol is an data export symbol, which gets in export table the name ‘var1’. The optional ‘LIBRARY ’ command indicates the _internal_ name of the output DLL. If ‘’ does not include a suffix, the default library suffix, ‘.DLL’ is appended. d6996 3 a6998 3 than a library, the ‘NAME ’ command should be used instead of ‘LIBRARY’. If ‘’ does not include a suffix, the default executable suffix, ‘.EXE’ is appended. d7000 2 a7001 2 With either ‘LIBRARY ’ or ‘NAME ’ the optional specification ‘BASE = ’ may be used to specify a d7004 1 a7004 1 If neither ‘LIBRARY ’ nor ‘NAME ’ is specified, or d7015 6 a7020 6 Declares ‘’ as an exported symbol from the DLL, or declares ‘’ as an exported alias for ‘’; or declares ‘’ as a "forward" alias for the symbol ‘’ in the DLL ‘’. Optionally, the symbol may be exported by the specified ordinal ‘’ alias. The optional ‘’ is the to be used string in d7025 1 a7025 1 ‘NONAME’: Do not put the symbol name in the DLL’s export d7030 1 a7030 1 ‘PRIVATE’ is also specified. d7032 1 a7032 1 ‘DATA’: The symbol is a variable or object, rather than a d7034 2 a7035 2 reference to ‘foo’ as the symbol ‘_imp__foo’ (ie, ‘foo’ must be resolved as ‘*_imp__foo’). d7037 3 a7039 3 ‘CONSTANT’: Like ‘DATA’, but put the undecorated ‘foo’ as well as ‘_imp__foo’ into the import library. Both refer to the read-only import address table’s pointer to the variable, not d7041 1 a7041 1 code fails to add the ‘dllimport’ attribute and also fails to d7045 1 a7045 1 ‘PRIVATE’: Put the symbol in the DLL’s export table, but do d7048 1 a7048 1 the ‘LoadLibrary/GetProcAddress’ API at runtime or by using d7055 2 a7056 2 While linking a shared dll, ‘ld’ is able to create a DEF file with the ‘--output-def ’ command-line option. d7069 1 a7069 1 unless the ‘--export-all-symbols’ option is also used. d7084 2 a7085 2 declaration completely. See ‘--enable-auto-import’ and ‘automatic data imports’ for more information. d7096 1 a7096 1 This feature is enabled with the ‘--enable-auto-import’ d7098 1 a7098 1 cygwin/mingw. The ‘--enable-auto-import’ option itself now serves d7100 1 a7100 1 linked objects trigger the feature’s use. d7105 2 a7106 2 "variable ’’ can’t be auto-imported. Please read the documentation for ld’s ‘--enable-auto-import’ for details." d7108 1 a7108 1 The ‘--enable-auto-import’ documentation explains why this error d7115 1 a7115 1 variable and an offset (_addend_) within the variable–to specify a d7123 1 a7123 1 The ‘--enable-runtime-pseudo-relocs’ switch allows these references d7129 1 a7129 1 is only necessary on the developer’s platform; the compiled result d7132 1 a7132 1 ‘--enable-runtime-pseudo-relocs’ is not the default; it must be d7136 1 a7136 1 The cygwin/mingw ports of ‘ld’ support the direct linking, d7140 1 a7140 1 large libraries or applications. When ‘ld’ creates an import lib, d7143 1 a7143 1 overhead involved in storing, loading, and processing so many bfd’s d7149 1 a7149 1 than ‘-L’ and ‘-l’, because ‘ld’ already searches for a number of d7151 1 a7151 1 developer’s perspective is an understanding of this search, in d7154 1 a7154 1 For instance, when ld is called with the argument ‘-lxxx’ it will d7168 5 a7172 5 (*) Actually, this is not ‘cygxxx.dll’ but in fact is ‘xxx.dll’, where ‘’ is set by the ‘ld’ option ‘--dll-search-prefix=’. In the case of cygwin, the standard gcc spec file includes ‘--dll-search-prefix=cyg’, so in effect we actually search for ‘cygxxx.dll’. d7175 1 a7175 1 other ‘’es, although at present only cygwin makes use of d7177 1 a7177 1 conflicts among dll’s built for the various win32/un*x d7181 2 a7182 2 The generic cygwin/mingw path layout uses a ‘bin’ directory for applications and dll’s and a ‘lib’ directory for the import d7194 1 a7194 1 1. Use the dll directly by adding the ‘bin’ path to the link line d7197 3 a7199 3 However, as the dll’s often have version numbers appended to their names (‘cygncurses-5.dll’) this will often fail, unless one specifies ‘-L../bin -lncurses-5’ to include the version. Import d7202 1 a7202 1 2. Create a symbolic link from the dll to a file in the ‘lib’ d7223 1 a7223 1 ‘--enable-runtime-pseudo-relocs’ is used. d7233 1 a7233 1 the import library (which otherwise contains only bfd’s for d7239 1 a7239 1 is critical when linking against OS-supplied dll’s (eg, the win32 d7254 2 a7255 2 names. A symbol ‘foo’ will be exported as ‘foo’, but it can also be exported as ‘_foo’ by using special directives in the d7266 1 a7266 1 The line ‘_foo = foo’ maps the symbol ‘foo’ to ‘_foo’. d7279 2 a7280 2 cygwin kernel does this regularly. A symbol ‘_foo’ can be exported as ‘foo’ but not as ‘_foo’ by using special d7289 2 a7290 2 The line ‘_foo = foo’ maps the exported symbol ‘foo’ to ‘_foo’. d7293 1 a7293 1 unless the ‘--export-all-symbols’ command-line option is used. If, d7296 1 a7296 1 are not being renamed, and do _not_ use the ‘--export-all-symbols’ d7298 1 a7298 1 use ‘--export-all-symbols’ to handle the other symbols, then the d7300 1 a7300 1 will be exported. In effect, you’d be aliasing those symbols, not d7308 1 a7308 1 • Definition is searched for in objects and libraries, d7310 1 a7310 1 • Definition is searched for only in other objects, not in d7312 1 a7312 1 • No search; the symbol is an alias. This form is not presently d7322 2 a7323 2 GNU-specific commands carried in the object file’s ‘.drectve’ section, which are recognized by ‘ld’ and respected when laying out d7332 1 a7332 1 6.17 ‘ld’ and Xtensa Processors d7335 2 a7336 2 The default ‘ld’ behavior for Xtensa processors is to interpret ‘SECTIONS’ commands so that lists of explicitly named sections in a d7348 1 a7348 1 ‘ld’ may interleave some of the ‘.literal’ and ‘.text’ sections from d7351 3 a7353 3 ‘.literal’ sections from an initial group of files followed by the ‘.text’ sections of that group of files. Then, the ‘.literal’ sections from the rest of the files and the ‘.text’ sections from the rest of the d7356 1 a7356 1 Relaxation is enabled by default for the Xtensa version of ‘ld’ and d7359 1 a7359 1 literal will be removed and all the ‘L32R’ instructions that use it will d7361 1 a7361 1 the replacement literal is within the offset range of all the ‘L32R’ d7363 2 a7364 2 from assembler-generated “longcall” sequences of ‘L32R’/‘CALLXN’ when the target functions are within range of direct ‘CALLN’ instructions. d7367 4 a7370 4 optimized to a direct call, the linker will change the ‘CALLXN’ instruction to a ‘CALLN’ instruction, remove the ‘L32R’ instruction, and remove the literal referenced by the ‘L32R’ instruction if it is not used for anything else. Removing the ‘L32R’ instruction always reduces d7375 2 a7376 2 a no-op in place of the ‘L32R’ instruction that was removed. If code size is more important than performance, the ‘--size-opt’ option can be d7384 1 a7384 1 ‘--size-opt’ d7391 2 a7392 2 ‘--abi-windowed’ ‘--abi-call0’ d7397 1 a7397 1 ‘.xtensa.info’ section of the first input object. A warning is d7404 1 a7404 1 7 BFD d7413 1 a7413 1 object file formats available. You can use ‘objdump -i’ (*note objdump: d7437 1 a7437 1 7.1 How It Works: An Outline of BFD d7443 1 a7443 1 the object file’s data structures. d7448 1 a7448 1 BFD back end provides a routine for converting between the object file’s d7454 1 a7454 1 writes the output file’s symbol table, another BFD back end routine is d7466 1 a7466 1 7.1.1 Information Loss d7472 3 a7474 3 of this is alignment information in ‘b.out’. There is nowhere in an ‘a.out’ format file to store alignment information on the contained data, so when a file is linked from ‘b.out’ and an ‘a.out’ image is d7482 1 a7482 1 (e.g., ‘a.out’) or has sections without names (e.g., the Oasys format), d7505 1 a7505 1 or copying big endian COFF to little endian COFF, or ‘a.out’ to ‘b.out’. d7512 1 a7512 1 7.1.2 The BFD canonical object-file format d7526 2 a7527 2 magic numbers is not stored here—only the magic numbers’ meaning, so a ‘ZMAGIC’ file would have both the demand pageable bit and the d7534 1 a7534 1 the section’s original address in the object file, size and d7547 1 a7547 1 that symbol is accessible. ‘ld’ can operate on a collection of d7553 1 a7553 1 symbol information is not worth retaining; in ‘a.out’, type d7593 1 a7593 1 8 Reporting Bugs d7596 1 a7596 1 Your bug reports play an essential role in making ‘ld’ reliable. d7600 2 a7601 2 is to help the entire community by making the next version of ‘ld’ work better. Bug reports are your contribution to the maintenance of ‘ld’. d7614 1 a7614 1 8.1 Have You Found a Bug? d7620 2 a7621 2 • If the linker gets a fatal signal, for any input whatever, that is a ‘ld’ bug. Reliable linkers never crash. d7623 1 a7623 1 • If ‘ld’ produces an error message for valid input, that is a bug. d7625 1 a7625 1 • If ‘ld’ does not produce an error message for invalid input, that d7629 2 a7630 2 • If you are an experienced user of linkers, your suggestions for improvement of ‘ld’ are welcome in any case. d7635 1 a7635 1 8.2 How to Report Bugs d7639 1 a7639 1 If you obtained ‘ld’ from a support organization, we recommend you d7643 1 a7643 1 individuals in the file ‘etc/SERVICE’ in the GNU Emacs distribution. d7645 1 a7645 1 Otherwise, send bug reports for ‘ld’ to d7666 2 a7667 2 Sometimes people give a few sketchy facts and ask, “Does this ring a bell?” This cannot help us fix a bug, so it is basically useless. We d7673 2 a7674 2 • The version of ‘ld’. ‘ld’ announces it if you start it with the ‘--version’ argument. d7677 1 a7677 1 looking for the bug in the current version of ‘ld’. d7679 2 a7680 2 • Any patches you may have applied to the ‘ld’ source, including any patches made to the ‘BFD’ library. d7682 1 a7682 1 • The type of machine you are using, and the operating system name d7685 2 a7686 2 • What compiler (and its version) was used to compile ‘ld’—e.g. “‘gcc-2.7’”. d7688 1 a7688 1 • The command arguments you gave the linker to link your example and d7696 1 a7696 1 • A complete input file, or set of input files, that will reproduce d7705 2 a7706 2 If the source files were assembled using ‘gas’ or compiled using ‘gcc’, then it may be OK to send the source files rather than the d7708 2 a7709 2 ‘gas’ or ‘gcc’ was used to produce the object files. Also say how ‘gas’ or ‘gcc’ were configured. d7711 2 a7712 2 • A description of what behavior you observe that you believe is incorrect. For example, “It gets a fatal signal.” d7714 1 a7714 1 Of course, if the bug is that ‘ld’ gets a fatal signal, then we d7721 1 a7721 1 such as, your copy of ‘ld’ is out of sync, or you have encountered d7729 2 a7730 2 • If you wish to suggest changes to the ‘ld’ source, send us context diffs, as generated by ‘diff’ with the ‘-u’, ‘-c’, or ‘-p’ option. d7732 1 a7732 1 discuss something in the ‘ld’ source, refer to it by context, not d7741 1 a7741 1 • A description of the envelope of the bug. d7761 1 a7761 1 • A patch for the bug. d7769 1 a7769 1 Sometimes with a program as complicated as ‘ld’ it is very hard to d7779 1 a7779 1 • A guess about what the bug is or what it depends on. d7790 1 a7790 1 To aid users making the transition to GNU ‘ld’ from the MRI linker, ‘ld’ d7794 1 a7794 1 scripting language otherwise used with ‘ld’. GNU ‘ld’ supports the most d7797 1 a7797 1 In general, MRI scripts aren’t of much use with the ‘a.out’ object d7802 1 a7802 1 ‘-c’ command-line option. d7807 1 a7807 1 MRI-compatible script begins with an unrecognized keyword, ‘ld’ issues a d7810 1 a7810 1 Lines beginning with ‘*’ are comments. d7813 1 a7813 1 lower case; for example, ‘chip’ is the same as ‘CHIP’. The following d7816 3 a7818 3 ‘ABSOLUTE SECNAME’ ‘ABSOLUTE SECNAME, SECNAME, ... SECNAME’ Normally, ‘ld’ includes in the output file all sections from all d7820 2 a7821 2 the ‘ABSOLUTE’ command to restrict the sections that will be present in your output program. If the ‘ABSOLUTE’ command is used d7823 1 a7823 1 ‘ABSOLUTE’ commands will appear in the linker output. You can d7825 1 a7825 1 line, or using ‘LOAD’) to resolve addresses in the output file. d7827 1 a7827 1 ‘ALIAS OUT-SECNAME, IN-SECNAME’ d7833 1 a7833 1 ‘ALIGN SECNAME = EXPRESSION’ d7837 1 a7837 1 ‘BASE EXPRESSION’ d7841 2 a7842 2 ‘CHIP EXPRESSION’ ‘CHIP EXPRESSION, EXPRESSION’ d7845 2 a7846 2 ‘END’ This command does nothing whatever; it’s only accepted for d7849 3 a7851 3 ‘FORMAT OUTPUT-FORMAT’ Similar to the ‘OUTPUT_FORMAT’ command in the more general linker language, but restricted to S-records, if OUTPUT-FORMAT is ‘S’ d7853 1 a7853 1 ‘LIST ANYTHING...’ d7855 1 a7855 1 ‘ld’ command-line option ‘-M’. d7857 1 a7857 1 The keyword ‘LIST’ may be followed by anything on the same line, d7860 2 a7861 2 ‘LOAD FILENAME’ ‘LOAD FILENAME, FILENAME, ... FILENAME’ d7863 1 a7863 1 same effect as specifying FILENAME directly on the ‘ld’ command d7866 8 a7873 8 ‘NAME OUTPUT-NAME’ OUTPUT-NAME is the name for the program produced by ‘ld’; the MRI-compatible command ‘NAME’ is equivalent to the command-line option ‘-o’ or the general script language command ‘OUTPUT’. ‘ORDER SECNAME, SECNAME, ... SECNAME’ ‘ORDER SECNAME SECNAME SECNAME’ Normally, ‘ld’ orders the sections in its output file in the order d7876 1 a7876 1 ‘ORDER’ command. The sections you list with ‘ORDER’ will appear d7879 3 a7881 3 ‘PUBLIC NAME=EXPRESSION’ ‘PUBLIC NAME,EXPRESSION’ ‘PUBLIC NAME EXPRESSION’ d7885 4 a7888 4 ‘SECT SECNAME, EXPRESSION’ ‘SECT SECNAME=EXPRESSION’ ‘SECT SECNAME EXPRESSION’ You can use any of these three forms of the ‘SECT’ command to d7890 1 a7890 1 have more than one ‘SECT’ statement for the same SECNAME, only the d7901 1 a7901 1 Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. d7910 1 a7910 1 functional and useful document “free” in the sense of freedom: to d7917 1 a7917 1 This License is a kind of “copyleft”, which means that derivative d7938 2 a7939 2 “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept d7943 1 a7943 1 A “Modified Version” of the Document means any work containing the d7947 1 a7947 1 A “Secondary Section” is a named appendix or a front-matter section d7949 1 a7949 1 publishers or authors of the Document to the Document’s overall d7958 1 a7958 1 The “Invariant Sections” are certain Secondary Sections whose d7966 1 a7966 1 The “Cover Texts” are certain short passages of text that are d7972 1 a7972 1 A “Transparent” copy of the Document means a machine-readable copy, d7984 1 a7984 1 “Transparent” is called “Opaque”. d7997 1 a7997 1 The “Title Page” means, for a printed book, the title page itself, d8000 3 a8002 3 works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. d8004 1 a8004 1 The “publisher” means any person or entity that distributes copies d8007 1 a8007 1 A section “Entitled XYZ” means a named subunit of the Document d8011 3 a8013 3 “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according d8043 1 a8043 1 the Document’s license notice requires Cover Texts, you must d8115 1 a8115 1 Sections and required Cover Texts given in the Document’s d8120 1 a8120 1 I. Preserve the section Entitled “History”, Preserve its Title, d8123 1 a8123 1 Title Page. If there is no section Entitled “History” in the d8133 1 a8133 1 “History” section. You may omit a network location for a work d8138 1 a8138 1 K. For any section Entitled “Acknowledgements” or “Dedications”, d8147 1 a8147 1 M. Delete any section Entitled “Endorsements”. Such a section d8151 1 a8151 1 “Endorsements” or to conflict in title with any Invariant d8160 1 a8160 1 titles to the list of Invariant Sections in the Modified Version’s d8164 1 a8164 1 You may add a section Entitled “Endorsements”, provided it contains d8166 3 a8168 3 parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. d8206 4 a8209 4 “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.” d8230 1 a8230 1 storage or distribution medium, is called an “aggregate” if the d8232 1 a8232 1 legal rights of the compilation’s users beyond what the individual d8239 1 a8239 1 of the entire aggregate, the Document’s Cover Texts may be placed d8261 2 a8262 2 If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to d8303 1 a8303 1 version of this License “or any later version” applies to it, you d8311 1 a8311 1 proxy’s public statement of acceptance of a version permanently d8316 1 a8316 1 “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any d8320 1 a8320 1 A “Massive Multiauthor Collaboration” (or “MMC”) contained in the d8324 1 a8324 1 “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 d8330 1 a8330 1 “Incorporate” means to publish or republish a Document, in whole or d8333 1 a8333 1 An MMC is “eligible for relicensing” if it is licensed under this d8360 1 a8360 1 Texts, replace the “with...Texts.” line with this: d8385 7 a8391 7 * -(: Options. (line 1218) * --accept-unknown-input-arch: Options. (line 1236) * --add-needed: Options. (line 1267) * --add-stdcall-alias: Options. (line 2453) * --allow-multiple-definition: Options. (line 1646) * --allow-shlib-undefined: Options. (line 1652) * --as-needed: Options. (line 1246) d8393 3 a8395 3 * --auxiliary=NAME: Options. (line 308) * --bank-window: Options. (line 2949) * --base-file: Options. (line 2458) d8397 1 a8397 1 * --branch-stub on C-SKY: Options. (line 2921) d8399 3 a8401 3 * --build-id: Options. (line 2405) * --build-id=STYLE: Options. (line 2405) * --check-sections: Options. (line 1349) d8404 9 a8412 10 * --compact-branches: Options. (line 2994) * --compress-debug-sections=none: Options. (line 2354) * --compress-debug-sections=zlib: Options. (line 2354) * --compress-debug-sections=zlib-gabi: Options. (line 2354) * --compress-debug-sections=zlib-gnu: Options. (line 2354) * --compress-debug-sections=zstd: Options. (line 2354) * --copy-dt-needed-entries: Options. (line 1361) * --cref: Options. (line 1381) * --ctf-share-types: Options. (line 1405) * --ctf-variables: Options. (line 1394) d8414 5 a8418 5 * --default-imported-symver: Options. (line 1702) * --default-script=SCRIPT: Options. (line 743) * --default-symver: Options. (line 1698) * --defsym=SYMBOL=EXP: Options. (line 1449) * --demangle[=STYLE]: Options. (line 1469) d8420 8 a8427 9 * --dependency-file=DEPFILE: Options. (line 609) * --disable-auto-image-base: Options. (line 2635) * --disable-auto-import: Options. (line 2774) * --disable-large-address-aware: Options. (line 2583) * --disable-linker-version: Options. (line 184) * --disable-long-section-names: Options. (line 2468) * --disable-multiple-abs-defs: Options. (line 1500) * --disable-new-dtags: Options. (line 2328) * --disable-runtime-pseudo-reloc: Options. (line 2787) d8429 5 a8433 5 * --disable-stdcall-fixup: Options. (line 2490) * --discard-all: Options. (line 836) * --discard-locals: Options. (line 840) * --dll: Options. (line 2463) * --dll-search-prefix: Options. (line 2641) d8435 11 a8445 11 * --dsbt-index: Options. (line 2908) * --dsbt-size: Options. (line 2903) * --dynamic-linker=FILE: Options. (line 1482) * --dynamic-list-cpp-new: Options. (line 1341) * --dynamic-list-cpp-typeinfo: Options. (line 1345) * --dynamic-list-data: Options. (line 1338) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 1325) * --dynamicbase: Options. (line 2831) * --eh-frame-hdr: Options. (line 2315) * --embedded-relocs: Options. (line 1495) * --emit-relocs: Options. (line 669) d8450 21 a8470 24 * --enable-auto-image-base: Options. (line 2626) * --enable-auto-import: Options. (line 2650) * --enable-extra-pe-debug: Options. (line 2792) * --enable-linker-version: Options. (line 174) * --enable-long-section-names: Options. (line 2468) * --enable-new-dtags: Options. (line 2328) * --enable-non-contiguous-regions: Options. (line 188) * --enable-non-contiguous-regions-warnings: Options. (line 220) * --enable-reloc-section: Options. (line 2890) * --enable-runtime-pseudo-reloc: Options. (line 2779) * --enable-stdcall-fixup: Options. (line 2490) * --entry=ENTRY: Options. (line 226) * --error-execstack: Options. (line 2176) * --error-handling-script=SCRIPTNAME: Options. (line 1679) * --error-rwx-segments: Options. (line 2219) * --error-unresolved-symbols: Options. (line 2251) * --exclude-all-symbols: Options. (line 2543) * --exclude-libs: Options. (line 236) * --exclude-modules-for-implib: Options. (line 247) * --exclude-symbols: Options. (line 2537) * --export-all-symbols: Options. (line 2513) * --export-dynamic: Options. (line 260) * --export-dynamic-symbol-list=FILE: Options. (line 296) * --export-dynamic-symbol=GLOB: Options. (line 287) d8472 3 a8474 3 * --fatal-warnings: Options. (line 1504) * --file-alignment: Options. (line 2547) * --filter=NAME: Options. (line 329) d8481 4 a8484 4 * --force-dynamic: Options. (line 678) * --force-exe-suffix: Options. (line 1516) * --force-group-allocation: Options. (line 1441) * --forceinteg: Options. (line 2839) d8487 3 a8489 3 * --gc-keep-exported: Options. (line 1564) * --gc-sections: Options. (line 1526) * --got: Options. (line 2961) d8491 7 a8497 7 * --gpsize=VALUE: Options. (line 361) * --hash-size=NUMBER: Options. (line 2338) * --hash-style=STYLE: Options. (line 2346) * --heap: Options. (line 2553) * --help: Options. (line 1592) * --high-entropy-va: Options. (line 2823) * --ignore-branch-isa: Options. (line 2982) d8499 2 a8500 2 * --image-base: Options. (line 2560) * --imagic: Options. (line 3031) d8502 2 a8503 2 * --insert-timestamp: Options. (line 2874) * --insn32: Options. (line 2973) d8505 7 a8511 7 * --just-symbols=FILE: Options. (line 700) * --kill-at: Options. (line 2569) * --large-address-aware: Options. (line 2574) * --ld-generated-unwind-info: Options. (line 2321) * --leading-underscore: Options. (line 2507) * --library-path=DIR: Options. (line 419) * --library=NAMESPEC: Options. (line 386) d8514 4 a8517 4 * --major-image-version: Options. (line 2590) * --major-os-version: Options. (line 2595) * --major-subsystem-version: Options. (line 2599) * --max-cache-size=SIZE: Options. (line 2400) d8519 3 a8521 3 * --minor-image-version: Options. (line 2604) * --minor-os-version: Options. (line 2609) * --minor-subsystem-version: Options. (line 2613) d8524 5 a8528 5 * --nmagic: Options. (line 582) * --nmagic <1>: Options. (line 3021) * --no-accept-unknown-input-arch: Options. (line 1236) * --no-add-needed: Options. (line 1267) * --no-allow-shlib-undefined: Options. (line 1652) d8530 8 a8537 8 * --no-as-needed: Options. (line 1246) * --no-bind: Options. (line 2860) * --no-check-sections: Options. (line 1349) * --no-compact-branches: Options. (line 2995) * --no-copy-dt-needed-entries: Options. (line 1361) * --no-ctf-variables: Options. (line 1394) * --no-define-common: Options. (line 1425) * --no-demangle: Options. (line 1469) d8539 2 a8540 2 * --no-dynamic-linker: Options. (line 1489) * --no-eh-frame-hdr: Options. (line 2315) d8542 2 a8543 2 * --no-export-dynamic: Options. (line 260) * --no-fatal-warnings: Options. (line 1504) d8547 2 a8548 2 * --no-gc-sections: Options. (line 1526) * --no-ignore-branch-isa: Options. (line 2983) d8551 1 a8551 1 * --no-insn32: Options. (line 2974) d8553 4 a8556 4 * --no-isolation: Options. (line 2850) * --no-keep-memory: Options. (line 1629) * --no-leading-underscore: Options. (line 2507) * --no-merge-exidx-entries: Options. (line 2915) d8559 2 a8560 2 * --no-omagic: Options. (line 597) * --no-omagic <1>: Options. (line 3045) d8568 2 a8569 3 * --no-print-gc-sections: Options. (line 1555) * --no-print-map-discarded: Options. (line 569) * --no-print-map-locals: Options. (line 574) d8571 2 a8572 2 * --no-seh: Options. (line 2855) * --no-strip-discarded: Options. (line 720) d8579 5 a8583 6 * --no-trampoline: Options. (line 2943) * --no-undefined: Options. (line 1636) * --no-undefined-version: Options. (line 1693) * --no-warn-mismatch: Options. (line 1706) * --no-warn-search-mismatch: Options. (line 1715) * --no-warnings: Options. (line 1509) d8585 2 a8586 2 * --no-whole-archive: Options. (line 1719) * --noinhibit-exec: Options. (line 1723) d8588 10 a8597 10 * --nxcompat: Options. (line 2844) * --oformat=OUTPUT-FORMAT: Options. (line 1734) * --omagic: Options. (line 588) * --omagic <1>: Options. (line 3010) * --orphan-handling=MODE: Options. (line 792) * --out-implib: Options. (line 1747) * --output-def: Options. (line 2618) * --output=OUTPUT: Options. (line 603) * --package-metadata=JSON: Options. (line 2427) * --pic-executable: Options. (line 1756) d8604 1 a8604 1 * --pop-state: Options. (line 665) d8606 8 a8613 9 * --print-gc-sections: Options. (line 1555) * --print-map: Options. (line 506) * --print-map-discarded: Options. (line 569) * --print-map-locals: Options. (line 574) * --print-memory-usage: Options. (line 1580) * --print-output-format: Options. (line 1574) * --push-state: Options. (line 647) * --reduce-memory-overheads: Options. (line 2386) * --relax: Options. (line 1775) d8617 3 a8619 5 * --relocatable: Options. (line 682) * --remap-inputs-file=file: Options. (line 454) * --remap-inputs=pattern=filename: Options. (line 454) * --require-defined=SYMBOL: Options. (line 769) * --retain-symbols-file=FILENAME: Options. (line 1801) d8622 1 a8622 1 * --script=SCRIPT: Options. (line 733) d8624 2 a8625 2 * --section-alignment: Options. (line 2797) * --section-start=SECTIONNAME=ORG: Options. (line 1996) d8627 7 a8633 7 * --sort-common: Options. (line 1928) * --sort-section=alignment: Options. (line 1943) * --sort-section=name: Options. (line 1939) * --spare-dynamic-tags: Options. (line 1947) * --split-by-file: Options. (line 1952) * --split-by-reloc: Options. (line 1957) * --stack: Options. (line 2803) d8635 4 a8638 4 * --stats: Options. (line 1970) * --strip-all: Options. (line 711) * --strip-debug: Options. (line 715) * --strip-discarded: Options. (line 720) d8640 1 a8640 1 * --stub-group-size on C-SKY: Options. (line 2928) d8643 1 a8643 1 * --subsystem: Options. (line 2810) d8645 2 a8646 2 * --sysroot=DIRECTORY: Options. (line 1974) * --target-help: Options. (line 1596) d8650 1 a8650 1 * --task-link: Options. (line 1979) d8654 7 a8660 7 * --trace: Options. (line 725) * --trace-symbol=SYMBOL: Options. (line 846) * --traditional-format: Options. (line 1984) * --tsaware: Options. (line 2869) * --undefined=SYMBOL: Options. (line 756) * --unique[=SECTION]: Options. (line 818) * --unresolved-symbols: Options. (line 2026) d8663 3 a8665 3 * --verbose[=NUMBER]: Options. (line 2055) * --version: Options. (line 827) * --version-script=VERSION-SCRIPTFILE: Options. (line 2063) d8667 13 a8679 13 * --warn-alternate-em: Options. (line 2243) * --warn-common: Options. (line 2073) * --warn-constructors: Options. (line 2141) * --warn-execstack: Options. (line 2146) * --warn-multiple-gp: Options. (line 2188) * --warn-once: Options. (line 2202) * --warn-rwx-segments: Options. (line 2206) * --warn-section-align: Options. (line 2232) * --warn-textrel: Options. (line 2239) * --warn-unresolved-symbols: Options. (line 2246) * --wdmdriver: Options. (line 2864) * --whole-archive: Options. (line 2255) * --wrap=SYMBOL: Options. (line 2269) d8681 1 a8681 1 * -assert KEYWORD: Options. (line 1274) d8683 7 a8689 7 * -Bdynamic: Options. (line 1277) * -Bgroup: Options. (line 1287) * -Bno-symbolic: Options. (line 1321) * -Bshareable: Options. (line 1921) * -Bstatic: Options. (line 1294) * -Bsymbolic: Options. (line 1308) * -Bsymbolic-functions: Options. (line 1315) d8691 1 a8691 1 * -call_shared: Options. (line 1277) d8694 1 a8694 1 * -dn: Options. (line 1294) d8696 30 a8725 30 * -dT SCRIPT: Options. (line 743) * -dy: Options. (line 1277) * -E: Options. (line 260) * -e ENTRY: Options. (line 226) * -EB: Options. (line 301) * -EL: Options. (line 304) * -f NAME: Options. (line 308) * -F NAME: Options. (line 329) * -fini=NAME: Options. (line 352) * -g: Options. (line 358) * -G VALUE: Options. (line 361) * -h NAME: Options. (line 368) * -i: Options. (line 377) * -IFILE: Options. (line 1482) * -init=NAME: Options. (line 380) * -L DIR: Options. (line 419) * -l NAMESPEC: Options. (line 386) * -M: Options. (line 506) * -m EMULATION: Options. (line 444) * -Map=MAPFILE: Options. (line 1600) * -n: Options. (line 582) * -N: Options. (line 588) * -N <1>: Options. (line 3009) * -n <1>: Options. (line 3020) * -no-pie: Options. (line 1766) * –no-relax: Options. (line 1775) * -non_shared: Options. (line 1294) * -nostdlib: Options. (line 1729) * -O LEVEL: Options. (line 622) * -o OUTPUT: Options. (line 603) d8727 35 a8761 36 * -pie: Options. (line 1756) * -plugin NAME: Options. (line 632) * -q: Options. (line 669) * -qmagic: Options. (line 1769) * -Qy: Options. (line 1772) * -r: Options. (line 682) * -R FILE: Options. (line 700) * -rpath-link=DIR: Options. (line 1842) * -rpath=DIR: Options. (line 1815) * -s: Options. (line 711) * -S: Options. (line 715) * -shared: Options. (line 1921) * -soname=NAME: Options. (line 368) * -static: Options. (line 1294) * -t: Options. (line 725) * -T SCRIPT: Options. (line 733) * -Tbss=ORG: Options. (line 2005) * -Tdata=ORG: Options. (line 2005) * -Tldata-segment=ORG: Options. (line 2021) * -Trodata-segment=ORG: Options. (line 2015) * -Ttext-segment=ORG: Options. (line 2011) * -Ttext=ORG: Options. (line 2005) * -u SYMBOL: Options. (line 756) * -Ur: Options. (line 777) * -v: Options. (line 827) * -V: Options. (line 827) * -w: Options. (line 1509) * -x: Options. (line 836) * -X: Options. (line 840) * -Y PATH: Options. (line 855) * -y SYMBOL: Options. (line 846) * -z: Options. (line 3030) * -z defs: Options. (line 1636) * -z KEYWORD: Options. (line 859) * -z muldefs: Options. (line 1646) * -z undefs: Options. (line 1636) d8790 1 a8790 1 * aligned common symbols: WIN32. (line 445) d8794 2 a8795 2 (line 127) * archive files, from cmd line: Options. (line 386) a8800 2 * ASCIZ ``STRING'': Output Section Data. (line 6) d8809 1 a8809 1 * automatic data imports: WIN32. (line 214) d8815 1 a8815 1 * big-endian objects: Options. (line 301) d8817 1 a8817 1 * BLOCK(EXP): Builtin Functions. (line 79) d8827 2 a8828 2 * combining symbols, warnings on: Options. (line 2073) * COMDAT: Options. (line 1441) d8834 1 a8834 1 * common allocation <1>: Options. (line 1425) d8847 1 a8847 1 * constructors: Options. (line 777) d8857 2 a8858 2 * creating a DEF file: WIN32. (line 182) * cross reference table: Options. (line 1381) d8860 1 a8860 1 (line 94) d8862 3 a8864 3 (line 110) * ctf type sharing: Options. (line 1405) * ctf variables: Options. (line 1394) d8869 5 a8873 5 (line 84) * DATA_SEGMENT_END(EXP): Builtin Functions. (line 108) * DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 114) * dbx: Options. (line 1989) * DEF files, creating: Options. (line 2618) d8876 3 a8878 3 * defined symbol: Options. (line 769) * DEFINED(SYMBOL): Builtin Functions. (line 127) * deleting local symbols: Options. (line 836) d8880 3 a8882 3 * demangling, from command line: Options. (line 1469) * dependency file: Options. (line 609) * direct linking to a dll: WIN32. (line 262) d8886 4 a8889 4 * DLLs, creating: Options. (line 2513) * DLLs, creating <1>: Options. (line 2618) * DLLs, creating <2>: Options. (line 2626) * DLLs, linking to: Options. (line 2641) d8893 2 a8894 2 * dynamic linker, from command line: Options. (line 1482) * dynamic symbol table: Options. (line 260) d8896 2 a8897 2 * ELF symbol visibility: Options. (line 1174) * emulation: Options. (line 444) d8900 1 a8900 1 * endianness: Options. (line 301) d8902 1 a8902 1 * entry point, from command line: Options. (line 226) d8909 5 a8913 5 * executable segments, warnings on: Options. (line 2206) * executable stack, warnings on: Options. (line 2146) * export dynamic symbol: Options. (line 287) * export dynamic symbol list: Options. (line 296) * exporting DLL symbols: WIN32. (line 48) d8929 2 a8930 2 (line 49) * finalization function: Options. (line 352) d8943 1 a8943 1 * forcing the creation of dynamic sections: Options. (line 678) d8946 3 a8948 3 * garbage collection: Options. (line 1526) * garbage collection <1>: Options. (line 1555) * garbage collection <2>: Options. (line 1564) d8950 1 a8950 1 * generating optimized output: Options. (line 622) d8953 1 a8953 1 * group allocation in linker script: Options. (line 1441) d8958 1 a8958 1 * groups of archives: Options. (line 1218) d8960 3 a8962 3 * header size: Builtin Functions. (line 197) * heap size: Options. (line 2553) * help: Options. (line 1592) d8966 1 a8966 1 (line 49) d8969 1 a8969 1 * image base: Options. (line 2560) d8975 2 a8976 2 * including an entire archive: Options. (line 2255) * incremental link: Options. (line 377) d8979 1 a8979 1 * initialization function: Options. (line 380) d8985 1 a8985 1 * input files, displaying: Options. (line 725) d9011 1 a9011 1 * ldata segment origin, cmd line: Options. (line 2022) d9014 1 a9014 1 (line 133) d9017 1 a9017 1 * LENGTH(MEMORY): Builtin Functions. (line 144) d9019 3 a9021 3 * link map: Options. (line 506) * link map discarded: Options. (line 569) * link-time runtime library search path: Options. (line 1842) a9031 4 * LINKER_VERSION: Output Section Data. (line 96) * LINKER_VERSION <1>: Output Section Data. (line 96) d9033 1 a9033 1 * little-endian objects: Options. (line 304) d9036 1 a9036 1 * LOADADDR(SECTION): Builtin Functions. (line 147) d9038 2 a9039 2 (line 49) * local symbols, deleting: Options. (line 840) d9041 1 a9041 1 * LOG2CEIL(EXP): Builtin Functions. (line 151) d9047 1 a9047 1 (line 127) d9050 1 a9050 1 * MAX: Builtin Functions. (line 154) d9057 2 a9058 2 * memory usage: Options. (line 1580) * memory usage <1>: Options. (line 1629) d9060 1 a9060 1 * MIN: Builtin Functions. (line 157) d9071 2 a9072 2 * naming the output file: Options. (line 603) * NEXT(EXP): Builtin Functions. (line 161) d9074 1 a9074 1 * NMAGIC: Options. (line 582) d9076 1 a9076 1 (line 94) d9078 1 a9078 1 (line 110) d9080 2 a9081 2 (line 49) * not enough room for program headers: Builtin Functions. (line 202) d9089 3 a9091 3 * object size: Options. (line 361) * OMAGIC: Options. (line 588) * OMAGIC <1>: Options. (line 597) d9102 1 a9102 1 * ORIGIN(MEMORY): Builtin Functions. (line 167) d9104 2 a9105 2 * orphan sections: Options. (line 792) * output file after errors: Options. (line 1723) d9108 1 a9108 1 * output format: Options. (line 1574) d9117 1 a9117 1 (line 127) d9123 1 a9123 1 * partial link: Options. (line 682) d9130 3 a9132 3 * pop state governing input file handling: Options. (line 665) * position dependent executables: Options. (line 1767) * position independent executables: Options. (line 1758) d9161 1 a9161 1 (line 49) d9165 1 a9165 1 * program headers, not enough room: Builtin Functions. (line 202) d9170 1 a9170 1 * push state governing input file handling: Options. (line 647) d9174 2 a9175 2 * read-only text: Options. (line 582) * read/write from cmd line: Options. (line 588) d9181 1 a9181 1 * relaxing addressing modes: Options. (line 1775) d9187 1 a9187 2 * relocatable output: Options. (line 682) * remapping inputs: Options. (line 454) d9192 3 a9194 5 * retain relocations in final executable: Options. (line 669) * retaining specified symbols: Options. (line 1801) * REVERSE: Input Section Wildcards. (line 60) * rodata segment origin, cmd line: Options. (line 2016) d9198 3 a9200 3 * runtime library name: Options. (line 368) * runtime library search path: Options. (line 1815) * runtime pseudo-relocation: WIN32. (line 240) d9206 2 a9207 2 * script files: Options. (line 733) * script files <1>: Options. (line 743) d9209 1 a9209 1 * search directory, from cmd line: Options. (line 419) d9217 1 a9217 1 * section alignment, warnings on: Options. (line 2232) d9222 1 a9222 1 * section groups: Options. (line 1441) d9226 1 a9226 1 * section load address in expression: Builtin Functions. (line 147) d9231 1 a9231 1 * section size: Builtin Functions. (line 178) d9239 1 a9239 1 * sections, orphan: Options. (line 792) d9241 1 a9241 1 * segment origins, cmd line: Options. (line 2005) d9243 2 a9244 2 * SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 170) * shared libraries: Options. (line 1923) d9247 2 a9248 2 * SIZEOF(SECTION): Builtin Functions. (line 178) * SIZEOF_HEADERS: Builtin Functions. (line 197) d9260 1 a9260 1 (line 119) d9271 1 a9271 1 * stack size: Options. (line 2803) d9274 1 a9274 1 * start-stop-gc: Options. (line 1159) d9278 3 a9280 3 * strip all symbols: Options. (line 711) * strip debugger symbols: Options. (line 715) * stripping all but some symbols: Options. (line 1801) d9285 1 a9285 1 * symbol defaults: Builtin Functions. (line 127) d9288 1 a9288 1 * symbol tracing: Options. (line 846) d9290 1 a9290 1 * symbol-only input: Options. (line 700) d9292 1 a9292 1 * symbols, from command line: Options. (line 1449) d9294 3 a9296 3 * symbols, require defined: Options. (line 769) * symbols, retaining selectively: Options. (line 1801) * synthesizing linker: Options. (line 1775) d9301 1 a9301 1 * text segment origin, cmd line: Options. (line 2012) d9304 1 a9304 1 * traditional format: Options. (line 1984) d9307 2 a9308 2 * unallocated address, next: Builtin Functions. (line 161) * undefined symbol: Options. (line 756) d9311 1 a9311 1 * undefined symbols, warnings on: Options. (line 2202) d9315 2 a9316 2 (line 49) * usage: Options. (line 1592) d9318 3 a9320 3 * using a DEF file: WIN32. (line 81) * using auto-export functionality: WIN32. (line 51) * Using decorations: WIN32. (line 186) d9322 2 a9323 2 * verbose[=NUMBER]: Options. (line 2055) * version: Options. (line 827) d9325 1 a9325 1 * version script, symbol versions: Options. (line 2063) d9329 7 a9335 7 * visibility: Options. (line 1174) * warnings, on combining symbols: Options. (line 2073) * warnings, on executable stack: Options. (line 2146) * warnings, on section alignment: Options. (line 2232) * warnings, on undefined symbols: Options. (line 2202) * warnings, on writeable and exectuable segments: Options. (line 2206) * weak externals: WIN32. (line 430) d9345 88 a9432 89 Node: Top708 Node: Overview1589 Node: Invocation2736 Node: Options3148 Node: Environment148320 Node: Scripts150169 Node: Basic Script Concepts151913 Node: Script Format154693 Node: Simple Example155564 Node: Simple Commands158800 Node: Entry Point159305 Node: File Commands160379 Node: Format Commands164906 Node: REGION_ALIAS166954 Node: Miscellaneous Commands171949 Node: Assignments178260 Node: Simple Assignments178771 Node: HIDDEN180574 Node: PROVIDE181211 Node: PROVIDE_HIDDEN182789 Node: Source Code Reference183039 Node: SECTIONS187002 Node: Output Section Description188922 Node: Output Section Name190171 Node: Output Section Address191072 Node: Input Section193325 Node: Input Section Basics194126 Node: Input Section Wildcards199280 Node: Input Section Common205523 Node: Input Section Keep207033 Node: Input Section Example207541 Node: Output Section Data209012 Node: Output Section Keywords214353 Node: Output Section Discarding218028 Node: Output Section Attributes219970 Node: Output Section Type221091 Node: Output Section LMA223476 Node: Forced Output Alignment226619 Node: Forced Input Alignment227050 Node: Output Section Constraint227438 Node: Output Section Region227874 Node: Output Section Phdr228311 Node: Output Section Fill228987 Node: Overlay Description230374 Node: MEMORY234919 Node: PHDRS239671 Node: VERSION245149 Node: Expressions253440 Node: Constants254453 Node: Symbolic Constants255395 Node: Symbols255962 Node: Orphan Sections256717 Node: Location Counter258310 Node: Operators262888 Node: Evaluation263918 Node: Expression Section265290 Node: Builtin Functions269368 Node: Implicit Linker Scripts278449 Node: Plugins279236 Node: libdep Plugin279796 Node: Special Sections281641 Node: Machine Dependent283799 Node: H8/300284972 Node: M68HC11/68HC12287173 Node: ARM288680 Node: HPPA ELF32301108 Node: M68K302783 Node: MIPS303732 Node: MMIX304892 Node: MSP430306113 Node: NDS32308106 Node: Nios II309154 Node: PowerPC ELF32310526 Node: PowerPC64 ELF64313471 Node: S/390 ELF323589 Node: SPU ELF323948 Node: TI COFF326674 Node: WIN32327214 Node: Xtensa348969 Node: BFD352524 Node: BFD outline353986 Node: BFD information loss355280 Node: Canonical format357834 Node: Reporting Bugs362179 Node: Bug Criteria362885 Node: Bug Reporting363608 Node: MRI370781 Node: GNU Free Documentation License375460 Node: LD Index400800 @ 1.1.1.11 log @Import binutils-2.42 (last was 2.39) 2024-01-15 Nick Clifton * 2.42 branch point. 2023-11-15 Arsen Arsenović * intl: Remove directory. Replaced with out-of-tree GNU gettext. * .gitignore: Add '/gettext*'. * configure.ac (host_libs): Replace intl with gettext. (hbaseargs, bbaseargs, baseargs): Split baseargs into {h,b}baseargs. (skip_barg): New flag. Skips appending current flag to bbaseargs. : Exempt --with-libintl-{type,prefix} from target and build machine argument passing. * configure: Regenerate. * Makefile.def (host_modules): Replace intl module with gettext module. (configure-ld): Depend on configure-gettext. * Makefile.in: Regenerate. * src-release.sh: Remove references to the intl/ directory. 2023-07-03 Nick Clifton 2.41 Branch Point. 2023-06-26 Nick Clifton * Import these updates to the config scripts commit 4ad4bb7c30aca1e705448ba8d51a210bbd47bb52 Author: Paul Eggert Date: Fri Jun 23 09:55:10 2023 -0700 Quote 'like this', not `like this'. commit 63acb96f92473ceb5e21d873d7c0aee266b3d6d3 Author: Paul Eggert Date: Sat Jan 21 00:15:01 2023 -0600 Fix config.sub spelling typo for "athlon" commit 4ce12a5c9125cedc0d0ba584444a6865396923ec Author: Dmitry V. Levin Date: Sun Jan 1 08:00:00 2023 +0000 Update copyright years commit c397e2c040bce50bcdccb131f90115ba7e8bfc19 Author: Arsen Arsenovi Date: Sat Sep 17 23:34:48 2022 +0200 config.sub: add linux-mlibc targets commit 9f9f9b0b13197269848c76e3e057a3ed0680b4bf Author: Arsen Arsenovi Date: Sat Sep 17 23:34:47 2022 +0200 config.guess: support running on Managarm systems commit 87e6687749da7bb2ab158a79fa83721c19ed9246 Author: Arsen Arsenovi Date: Sat Sep 17 23:34:46 2022 +0200 config.sub: add managarm-{mlibc,kernel} targets commit 20403c5701973a4cbd7e0b4bbeb627fcd424a0f1 Author: Xiaotian Wu Date: Mon Aug 1 16:05:29 2022 +0800 Remove loongarchx32 commit 02ba26b218d3d3db6c56e014655faf463cefa983 Author: Alexander von Gluck IV Date: Wed May 25 15:43:13 2022 -0500 config.guess: Update Haiku guesses commit f56a7140386d08a531bcfd444d632b28c61a6329 Author: Bruno Haible Date: Sun May 8 19:08:08 2022 +0200 config.guess (x86_64:Linux:*:*): Detect 32-bit ABI. 2023-04-20 Nick Clifton * SECURITY.txt: New file. * src-release.sh (DEVO_SUPPORT): Add SECURITY.txt. 2022-12-31 Nick Clifton * 2.40 binutils branch created. 2022-10-10 Nick Clifton * src-release.sh: Add "-r " option to create reproducible tarballs based upon a fixed timestamp of . * binutils/README-how-to-make-a-release: Add a line showing how to use -r when creating a binutils release. 2022-10-04 Nick Clifton * README-maintainer-mode: Add a minimum version of dejagnu requirement. 2022-09-08 Nick Clifton * README-maintainer-mode: Update minimum version of gettext required. @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 7.0.2 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.42. d5 1 a5 1 Copyright © 1991-2024 Free Software Foundation, Inc. d11 2 a12 2 Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.42. d28 1 a28 1 the section entitled “GNU Free Documentation License”. a35 1 * Special Sections:: Special Sections d50 1 a50 1 ‘ld’ combines a number of object and archive files, relocates their data d52 1 a52 1 program is to run ‘ld’. d54 2 a55 2 ‘ld’ accepts Linker Command Language files written in a superset of AT&T’s Link Editor Command Language syntax, to provide explicit and d58 3 a60 3 This version of ‘ld’ uses the general purpose BFD libraries to operate on object files. This allows ‘ld’ to read, combine, and write object files in many different formats—for example, COFF or ‘a.out’. d67 1 a67 1 ‘ld’ continues executing, allowing you to identify other errors (or, in d76 1 a76 1 The GNU linker ‘ld’ is meant to cover a broad range of situations, and d93 1 a93 1 a frequent use of ‘ld’ is to link standard Unix object files on a d95 1 a95 1 ‘hello.o’: d99 2 a100 2 This tells ‘ld’ to produce a file called OUTPUT as the result of linking the file ‘/lib/crt0.o’ with ‘hello.o’ and the library ‘libc.a’, d102 1 a102 1 discussion of the ‘-l’ option below.) d104 1 a104 1 Some of the command-line options to ‘ld’ may be specified at any d106 1 a106 1 as ‘-l’ or ‘-T’, cause the file to be read at the point at which the d120 1 a120 1 can specify other forms of binary input files using ‘-l’, ‘-R’, and the d123 1 a123 1 message ‘No input files’. d128 1 a128 1 linker script or the one specified by using ‘-T’). This feature permits d130 2 a131 2 archive, but actually merely defines some symbol values, or uses ‘INPUT’ or ‘GROUP’ to load other objects. Specifying a script in this way d133 2 a134 2 after the main script; use the ‘-T’ option to replace the default linker script entirely, but note the effect of the ‘INSERT’ command. *Note d143 6 a148 6 can precede the option name; for example, ‘-trace-symbol’ and ‘--trace-symbol’ are equivalent. Note—there is one exception to this rule. Multiple letter options that start with a lower case ’o’ can only be preceded by two dashes. This is to reduce confusion with the ‘-o’ option. So for example ‘-omagic’ sets the output file name to ‘magic’ whereas ‘--omagic’ sets the NMAGIC flag on the output. d153 1 a153 1 ‘--trace-symbol foo’ and ‘--trace-symbol=foo’ are equivalent. Unique d156 3 a158 3 Note—if the linker is being invoked indirectly, via a compiler driver (e.g. ‘gcc’) then all the linker command-line options should be prefixed by ‘-Wl,’ (or whatever is appropriate for the particular d176 1 a176 1 ‘@@FILE’ d189 1 a189 1 ‘-a KEYWORD’ d191 2 a192 2 argument must be one of the strings ‘archive’, ‘shared’, or ‘default’. ‘-aarchive’ is functionally equivalent to ‘-Bstatic’, d194 1 a194 1 ‘-Bdynamic’. This option may be used any number of times. d196 2 a197 2 ‘--audit AUDITLIB’ Adds AUDITLIB to the ‘DT_AUDIT’ entry of the dynamic section. d200 1 a200 1 ‘DT_AUDIT’ will contain a colon separated list of audit interfaces d203 1 a203 1 ‘DT_DEPAUDIT’ entry in the output file. This option is only d206 4 a209 4 ‘-b INPUT-FORMAT’ ‘--format=INPUT-FORMAT’ ‘ld’ may be configured to support more than one kind of object file. If your ‘ld’ is configured this way, you can use the ‘-b’ d211 3 a213 3 follow this option on the command line. Even when ‘ld’ is configured to support alternative object formats, you don’t usually need to specify this, as ‘ld’ should be configured to expect as a d217 1 a217 1 formats with ‘objdump -i’.) *Note BFD::. d220 1 a220 1 unusual binary format. You can also use ‘-b’ to switch formats d222 1 a222 1 including ‘-b INPUT-FORMAT’ before each group of object files in a d226 2 a227 2 ‘GNUTARGET’. *Note Environment::. You can also define the input format from a script, using the command ‘TARGET’; see *note Format d230 3 a232 3 ‘-c MRI-COMMANDFILE’ ‘--mri-script=MRI-COMMANDFILE’ For compatibility with linkers produced by MRI, ‘ld’ accepts script d235 8 a242 8 script files with the option ‘-c’; use the ‘-T’ option to run linker scripts written in the general-purpose ‘ld’ scripting language. If MRI-CMDFILE does not exist, ‘ld’ looks for it in the directories specified by any ‘-L’ options. ‘-d’ ‘-dc’ ‘-dp’ d245 2 a246 2 symbols even if a relocatable output file is specified (with ‘-r’). The script command ‘FORCE_COMMON_ALLOCATION’ has the same effect. d249 3 a251 3 ‘--depaudit AUDITLIB’ ‘-P AUDITLIB’ Adds AUDITLIB to the ‘DT_DEPAUDIT’ entry of the dynamic section. d254 1 a254 1 ‘DT_DEPAUDIT’ will contain a colon separated list of audit d259 1 a259 15 ‘--enable-linker-version’ Enables the ‘LINKER_VERSION’ linker script directive, described in *note Output Section Data::. If this directive is used in a linker script and this option has been enabled then a string containing the linker version will be inserted at the current point. Note - this location of this option on the linker command line is significant. It will only affect linker scripts that come after it on the command line, or which are built into the linker. ‘--disable-linker-version’ Disables the ‘LINKER_VERSION’ linker script directive, so that it does not insert a version string. This is the default. ‘--enable-non-contiguous-regions’ d270 3 a272 3 MEM1 (rwx) : ORIGIN = 0x1000, LENGTH = 0x14 MEM2 (rwx) : ORIGIN = 0x1000, LENGTH = 0x40 MEM3 (rwx) : ORIGIN = 0x2000, LENGTH = 0x40 d277 1 a277 1 mem3 : { *(.data.*); } > MEM3 d291 2 a292 2 ‘--enable-non-contiguous-regions-warnings’ This option enables warnings when ‘--enable-non-contiguous-regions’ d297 2 a298 2 ‘-e ENTRY’ ‘--entry=ENTRY’ d303 2 a304 2 in base 10; you may use a leading ‘0x’ for base 16, or a leading ‘0’ for base 8). *Note Entry Point::, for a discussion of defaults d307 1 a307 1 ‘--exclude-libs LIB,LIB,...’ d310 1 a310 1 commas or colons. Specifying ‘--exclude-libs ALL’ excludes symbols d318 1 a318 1 ‘--exclude-modules-for-implib MODULE,MODULE,...’ d323 1 a323 1 must match exactly the filenames used by ‘ld’ to open the files; d326 1 a326 1 used to specify the input file on the linker’s command-line. This d331 5 a335 5 ‘-E’ ‘--export-dynamic’ ‘--no-export-dynamic’ When creating a dynamically linked executable, using the ‘-E’ option or the ‘--export-dynamic’ option causes the linker to add d341 1 a341 1 ‘--no-export-dynamic’ option to restore the default behavior), the d345 1 a345 1 If you use ‘dlopen’ to load a dynamic object which needs to refer d352 1 a352 1 See the description of ‘--dynamic-list’. d356 1 a356 1 or EXE; see the description of ‘--export-all-symbols’ below. d358 1 a358 1 ‘--export-dynamic-symbol=GLOB’ d363 2 a364 2 a no-op when creating a shared library and ‘-Bsymbolic’ or ‘--dynamic-list’ are not specified. This option is only meaningful d367 2 a368 2 ‘--export-dynamic-symbol-list=FILE’ Specify a ‘--export-dynamic-symbol’ for each pattern in the file. d372 1 a372 1 ‘-EB’ d375 1 a375 1 ‘-EL’ d379 2 a380 2 ‘-f NAME’ ‘--auxiliary=NAME’ d400 2 a401 2 ‘-F NAME’ ‘--filter=NAME’ d415 1 a415 1 Some older linkers used the ‘-F’ option throughout a compilation d418 3 a420 3 purpose: the ‘-b’, ‘--format’, ‘--oformat’ options, the ‘TARGET’ command in linker scripts, and the ‘GNUTARGET’ environment variable. The GNU linker will ignore the ‘-F’ option when not d423 1 a423 1 ‘-fini=NAME’ d426 1 a426 1 the address of the function. By default, the linker uses ‘_fini’ d429 1 a429 1 ‘-g’ d432 2 a433 2 ‘-G VALUE’ ‘--gpsize=VALUE’ d439 2 a440 2 ‘-h NAME’ ‘-soname=NAME’ d448 2 a449 2 ‘-i’ Perform an incremental link (same as option ‘-r’). d451 1 a451 1 ‘-init=NAME’ d454 1 a454 1 the address of the function. By default, the linker uses ‘_init’ d457 2 a458 2 ‘-l NAMESPEC’ ‘--library=NAMESPEC’ d461 1 a461 1 NAMESPEC is of the form ‘:FILENAME’, ‘ld’ will search the library d463 1 a463 1 library path for a file called ‘libNAMESPEC.a’. d465 6 a470 6 On systems which support shared libraries, ‘ld’ may also search for files other than ‘libNAMESPEC.a’. Specifically, on ELF and SunOS systems, ‘ld’ will search a directory for a library called ‘libNAMESPEC.so’ before searching for one called ‘libNAMESPEC.a’. (By convention, a ‘.so’ extension indicates a shared library.) Note that this behavior does not apply to ‘:FILENAME’, which always d481 1 a481 1 See the ‘-(’ option for a way to force the linker to search d487 1 a487 1 However, if you are using ‘ld’ on AIX, note that it is different d490 4 a493 4 ‘-L SEARCHDIR’ ‘--library-path=SEARCHDIR’ Add path SEARCHDIR to the list of paths that ‘ld’ will search for archive libraries and ‘ld’ control scripts. You may use this d497 3 a499 3 directories. All ‘-L’ options apply to all ‘-l’ options, regardless of the order in which the options appear. ‘-L’ options do not affect how ‘ld’ searches for a linker script unless ‘-T’ d502 2 a503 2 If SEARCHDIR begins with ‘=’ or ‘$SYSROOT’, then this prefix will be replaced by the “sysroot prefix”, controlled by the ‘--sysroot’ d507 1 a507 1 ‘-L’) depends on which emulation mode ‘ld’ is using, and in some d511 1 a511 1 ‘SEARCH_DIR’ command. Directories specified this way are searched d515 1 a515 1 ‘-m EMULATION’ d517 1 a517 1 emulations with the ‘--verbose’ or ‘-V’ options. d519 2 a520 2 If the ‘-m’ option is not used, the emulation is taken from the ‘LDEMULATION’ environment variable, if that is defined. d525 2 a526 54 ‘--remap-inputs=pattern=filename’ ‘--remap-inputs-file=file’ These options allow the names of input files to be changed before the linker attempts to open them. The option ‘--remap-inputs=foo.o=bar.o’ will cause any attempt to load a file called ‘foo.o’ to instead try to load a file called ‘bar.o’. Wildcard patterns are permitted in the first filename, so ‘--remap-inputs=foo*.o=bar.o’ will rename any input file that matches ‘foo*.o’ to ‘bar.o’. An alternative form of the option ‘--remap-inputs-file=filename’ allows the remappings to be read from a file. Each line in the file can contain a single remapping. Blank lines are ignored. Anything from a hash character (‘#’) to the end of a line is considered to be a comment and is also ignored. The mapping pattern can be separated from the filename by whitespace or an equals (‘=’) character. The options can be specified multiple times. Their contents accumulate. The remappings will be processed in the order in which they occur on the command line, and if they come from a file, in the order in which they occur in the file. If a match is made, no further checking for that filename will be performed. If the replacement filename is ‘/dev/null’ or just ‘NUL’ then the remapping will actually cause the input file to be ignored. This can be a convenient way to experiment with removing input files from a complicated build environment. Note that this option is position dependent and only affects filenames that come after it on the command line. Thus: ld foo.o --remap-inputs=foo.o=bar.o Will have no effect, whereas: ld --remap-inputs=foo.o=bar.o foo.o Will rename the input file ‘foo.o’ to ‘bar.o’. Note - these options also affect files referenced by _INPUT_ statements in linker scripts. But since linker scripts are processed after the entire command line is read, the position of the remap options on the command line is not significant. If the ‘verbose’ option is enabled then any mappings that match will be reported, although again the ‘verbose’ option needs to be enabled on the command line _before_ the remaped filenames appear. If the ‘-Map’ or ‘--print-map’ options are enabled then the remapping list will be included in the map output. ‘-M’ ‘--print-map’ d530 3 a532 3 • Where object files are mapped into memory. • How common symbols are allocated. • All archive members included in the link, with a mention of d534 1 a534 1 • The values assigned to symbols. d549 1 a549 1 will produce the following output in the link map if the ‘-M’ d559 1 a559 1 • How GNU properties are merged. d569 2 a570 2 when merging properties in ‘foo.o’, whose property 0xc0000002 value is 0x1, and ‘bar.o’, which doesn’t have property d576 2 a577 2 0x1 in output when merging properties in ‘foo.o’, whose 0xc0010001 property value is 0x1, and ‘bar.o’, whose d580 2 a581 10 • On some ELF targets, a list of fixups inserted by ‘--relax’ foo.o: Adjusting branch at 0x00000008 towards "far" in section .text This indicates that the branch at 0x00000008 in foo.o, targeting the symbol "far" in section .text, has been replaced by a trampoline. ‘--print-map-discarded’ ‘--no-print-map-discarded’ d585 2 a586 10 ‘--print-map-locals’ ‘--no-print-map-locals’ Print (or do not print) local symbols in the link map. Local symbols will have the text ‘(local)’ printed before their name, and will be listed after all of the global symbols in a given section. Temporary local symbols (typically those that start with ‘.L’) will not be included in the output. Disabled by default. ‘-n’ ‘--nmagic’ d589 1 a589 1 numbers, mark the output as ‘NMAGIC’. d591 2 a592 2 ‘-N’ ‘--omagic’ d596 1 a596 1 numbers, mark the output as ‘OMAGIC’. Note: Although a writable d600 2 a601 2 ‘--no-omagic’ This option negates most of the effects of the ‘-N’ option. It d604 1 a604 1 against shared libraries. Use ‘-Bdynamic’ for this. d606 9 a614 9 ‘-o OUTPUT’ ‘--output=OUTPUT’ Use OUTPUT as the name for the program produced by ‘ld’; if this option is not specified, the name ‘a.out’ is used by default. The script command ‘OUTPUT’ can also specify the output file name. ‘--dependency-file=DEPFILE’ Write a “dependency file” to DEPFILE. This file contains a rule suitable for ‘make’ describing the output file and all the input d616 1 a616 1 compiler’s output with ‘-M -MP’ (*note Options Controlling the d618 1 a618 1 no option like the compiler’s ‘-MM’, to exclude “system files” d620 2 a621 2 “system headers” in the compiler). So the output from ‘--dependency-file’ is always specific to the exact state of the d625 2 a626 2 ‘-O LEVEL’ If LEVEL is a numeric values greater than zero ‘ld’ optimizes the d631 1 a631 1 Also currently there is no difference in the linker’s behaviour for d635 1 a635 1 ‘-plugin NAME’ d643 1 a643 1 different from the place where the ‘ar’, ‘nm’ and ‘ranlib’ programs d646 1 a646 1 ‘${libdir}/bfd-plugins’ directory. All gcc based linker plugins d650 2 a651 2 ‘--push-state’ The ‘--push-state’ allows one to preserve the current state of the d653 1 a653 1 restored with one corresponding ‘--pop-state’ option. d655 5 a659 5 The option which are covered are: ‘-Bdynamic’, ‘-Bstatic’, ‘-dn’, ‘-dy’, ‘-call_shared’, ‘-non_shared’, ‘-static’, ‘-N’, ‘-n’, ‘--whole-archive’, ‘--no-whole-archive’, ‘-r’, ‘-Ur’, ‘--copy-dt-needed-entries’, ‘--no-copy-dt-needed-entries’, ‘--as-needed’, ‘--no-as-needed’, and ‘-a’. d661 2 a662 2 One target for this option are specifications for ‘pkg-config’. When used with the ‘--libs’ option all possibly needed libraries d668 2 a669 2 ‘--pop-state’ Undoes the effect of –push-state, restores the previous values of d672 2 a673 2 ‘-q’ ‘--emit-relocs’ d681 1 a681 1 ‘--force-dynamic’ d685 7 a691 7 ‘-r’ ‘--relocatable’ Generate relocatable output—i.e., generate an output file that can in turn serve as input to ‘ld’. This is often called “partial linking”. As a side effect, in environments that support standard Unix magic numbers, this option also sets the output file’s magic number to ‘OMAGIC’. If this option is not specified, an absolute d693 1 a693 1 not_ resolve references to constructors; to do that, use ‘-Ur’. d698 1 a698 1 restrictions; for example some ‘a.out’-based formats do not support d701 1 a701 1 This option does the same thing as ‘-i’. d703 2 a704 2 ‘-R FILENAME’ ‘--just-symbols=FILENAME’ d710 1 a710 1 For compatibility with other ELF linkers, if the ‘-R’ option is d712 1 a712 1 treated as the ‘-rpath’ option. d714 2 a715 2 ‘-s’ ‘--strip-all’ d718 2 a719 2 ‘-S’ ‘--strip-debug’ d723 2 a724 2 ‘--strip-discarded’ ‘--no-strip-discarded’ d728 4 a731 4 ‘-t’ ‘--trace’ Print the names of the input files as ‘ld’ processes them. If ‘-t’ is given twice then members within archives are also printed. ‘-t’ d736 8 a743 9 ‘-T SCRIPTFILE’ ‘--script=SCRIPTFILE’ Use SCRIPTFILE as the linker script. This script replaces ‘ld’’s default linker script (rather than adding to it), unless the script contains ‘INSERT’, so COMMANDFILE must specify everything necessary to describe the output file. *Note Scripts::. If SCRIPTFILE does not exist in the current directory, ‘ld’ looks for it in the directories specified by any preceding ‘-L’ options. Multiple ‘-T’ options accumulate. d745 2 a746 2 ‘-dT SCRIPTFILE’ ‘--default-script=SCRIPTFILE’ d749 1 a749 1 This option is similar to the ‘--script’ option except that d752 1 a752 1 the ‘--default-script’ option on the command line to affect the d756 1 a756 1 as ‘gcc’). d758 2 a759 2 ‘-u SYMBOL’ ‘--undefined=SYMBOL’ d762 1 a762 1 modules from standard libraries. ‘-u’ may be repeated with d764 1 a764 1 This option is equivalent to the ‘EXTERN’ linker script command. d768 1 a768 1 remain undefined, then the option ‘--require-defined’ should be d771 1 a771 1 ‘--require-defined=SYMBOL’ d773 1 a773 1 the same as option ‘--undefined’ except that if SYMBOL is not d776 1 a776 1 ‘EXTERN’, ‘ASSERT’ and ‘DEFINED’ together. This option can be used d779 8 a786 13 ‘-Ur’ For programs that do not use constructors or destructors, or for ELF based systems this option is equivalent to ‘-r’: it generates relocatable output—i.e., an output file that can in turn serve as input to ‘ld’. For other binaries however the ‘-Ur’ option is similar to ‘-r’ but it also resolves references to constructors and destructors. For those systems where ‘-r’ and ‘-Ur’ behave differently, it does not work to use ‘-Ur’ on files that were themselves linked with ‘-Ur’; once the constructor table has been built, it cannot be added to. Use ‘-Ur’ only for the last partial link, and ‘-r’ for d789 1 a789 1 ‘--orphan-handling=MODE’ d796 1 a796 1 ‘place’ d799 1 a799 1 The option ‘--unique’ also affects how sections are placed. d801 1 a801 1 ‘discard’ d803 1 a803 1 ‘/DISCARD/’ section (*note Output Section Discarding::). d805 2 a806 2 ‘warn’ The linker will place the orphan section as for ‘place’ and d809 1 a809 1 ‘error’ d813 1 a813 1 The default if ‘--orphan-handling’ is not given is ‘place’. d815 1 a815 1 ‘--unique[=SECTION]’ d824 5 a828 8 ‘-v’ ‘--version’ ‘-V’ Display the version number for ‘ld’. The ‘-V’ option also lists the supported emulations. See also the description of the ‘--enable-linker-version’ in *note Command-line Options: Options. which can be used to insert the linker version string into a binary. d830 2 a831 2 ‘-x’ ‘--discard-all’ d834 2 a835 2 ‘-X’ ‘--discard-locals’ d837 2 a838 2 system-specific local label prefixes, typically ‘.L’ for ELF systems or ‘L’ for traditional a.out systems.) d840 2 a841 2 ‘-y SYMBOL’ ‘--trace-symbol=SYMBOL’ d847 1 a847 1 link but don’t know where the reference is coming from. d849 1 a849 1 ‘-Y PATH’ d853 1 a853 1 ‘-z KEYWORD’ d856 9 a864 5 ‘call-nop=prefix-addr’ ‘call-nop=suffix-nop’ ‘call-nop=prefix-BYTE’ ‘call-nop=suffix-BYTE’ Specify the 1-byte ‘NOP’ padding when transforming indirect d866 4 a869 4 ‘call-nop=prefix-addr’ generates ‘0x67 call foo’. ‘call-nop=suffix-nop’ generates ‘call foo 0x90’. ‘call-nop=prefix-BYTE’ generates ‘BYTE call foo’. ‘call-nop=suffix-BYTE’ generates ‘call foo BYTE’. Supported d872 3 a874 3 ‘cet-report=none’ ‘cet-report=warning’ ‘cet-report=error’ d878 1 a878 1 .note.gnu.property section. ‘cet-report=none’, which is the d880 1 a880 1 input files. ‘cet-report=warning’ will make the linker issue d882 2 a883 2 ‘cet-report=error’ will make the linker issue an error for missing properties in input files. Note that ‘ibt’ will turn d885 1 a885 1 and ‘shstk’ will turn off the missing d889 2 a890 2 ‘combreloc’ ‘nocombreloc’ d893 1 a893 1 ‘nocombreloc’. d895 2 a896 2 ‘common’ ‘nocommon’ d898 1 a898 1 relocatable link. Use STT_OBJECT type if ‘nocommon’. d900 1 a900 1 ‘common-page-size=VALUE’ d905 1 a905 1 ‘defs’ d908 1 a908 1 shared library. This option is the inverse of ‘-z undefs’. d910 2 a911 2 ‘dynamic-undefined-weak’ ‘nodynamic-undefined-weak’ d915 1 a915 1 make them dynamic if ‘nodynamic-undefined-weak’. If neither d920 1 a920 1 ‘execstack’ d923 1 a923 1 ‘global’ d928 1 a928 1 ‘globalaudit’ d931 3 a933 3 global auditing by setting the ‘DF_1_GLOBAUDIT’ bit in the ‘DT_FLAGS_1’ dynamic tag. Global auditing requires that any auditing library defined via the ‘--depaudit’ or ‘-P’ d937 1 a937 1 ‘ibtplt’ d941 1 a941 1 ‘ibt’ d944 1 a944 1 ‘ibtplt’. Supported for Linux/i386 and Linux/x86_64. d946 2 a947 2 ‘indirect-extern-access’ ‘noindirect-extern-access’ d952 1 a952 1 ‘noextern-protected-data’ and ‘nocopyreloc’. Supported for d955 1 a955 1 ‘noindirect-extern-access’ removes d959 1 a959 1 ‘initfirst’ d967 1 a967 1 ‘interpose’ d972 2 a973 2 ‘unique’ ‘nounique’ d977 1 a977 1 ‘dlmopen’). This is primarily used to mark fundamental d980 1 a980 1 themselves. This behaviour can be overridden by the ‘dlmopen’ d984 1 a984 1 ‘lam-u48’ d989 1 a989 1 ‘lam-u57’ d994 3 a996 3 ‘lam-u48-report=none’ ‘lam-u48-report=warning’ ‘lam-u48-report=error’ d999 1 a999 1 .note.gnu.property section. ‘lam-u48-report=none’, which is d1001 1 a1001 1 properties in input files. ‘lam-u48-report=warning’ will make d1003 1 a1003 1 files. ‘lam-u48-report=error’ will make the linker issue an d1007 3 a1009 3 ‘lam-u57-report=none’ ‘lam-u57-report=warning’ ‘lam-u57-report=error’ d1012 1 a1012 1 .note.gnu.property section. ‘lam-u57-report=none’, which is d1014 1 a1014 1 properties in input files. ‘lam-u57-report=warning’ will make d1016 1 a1016 1 files. ‘lam-u57-report=error’ will make the linker issue an d1020 3 a1022 3 ‘lam-report=none’ ‘lam-report=warning’ ‘lam-report=error’ d1026 1 a1026 1 .note.gnu.property section. ‘lam-report=none’, which is the d1028 1 a1028 1 input files. ‘lam-report=warning’ will make the linker issue d1030 1 a1030 1 ‘lam-report=error’ will make the linker issue an error for d1034 1 a1034 1 ‘lazy’ d1040 2 a1041 2 ‘loadfltr’ Specify that the object’s filters be processed immediately at d1044 1 a1044 1 ‘max-page-size=VALUE’ d1047 1 a1047 13 ‘mark-plt’ ‘nomark-plt’ Mark PLT entries with dynamic tags, DT_X86_64_PLT, DT_X86_64_PLTSZ and DT_X86_64_PLTENT. Since this option stores a non-zero value in the r_addend field of R_X86_64_JUMP_SLOT relocations, the resulting executables and shared libraries are incompatible with dynamic linkers, such as those in older versions of glibc without the change to ignore r_addend in R_X86_64_GLOB_DAT and R_X86_64_JUMP_SLOT relocations, which don’t ignore the r_addend field of R_X86_64_JUMP_SLOT relocations. Supported for x86_64. ‘muldefs’ d1050 1 a1050 1 ‘nocopyreloc’ d1055 1 a1055 1 ‘nodefaultlib’ d1059 2 a1060 2 ‘nodelete’ Specify that the object shouldn’t be unloaded at runtime. d1062 2 a1063 2 ‘nodlopen’ Specify that the object is not available to ‘dlopen’. d1065 2 a1066 2 ‘nodump’ Specify that the object can not be dumped by ‘dldump’. d1068 1 a1068 1 ‘noexecstack’ d1071 2 a1072 2 ‘noextern-protected-data’ Don’t treat protected data symbols as external when building a d1076 1 a1076 1 on protected data symbols by another module aren’t visible to d1079 1 a1079 1 ‘noreloc-overflow’ d1084 1 a1084 1 ‘now’ d1091 2 a1092 2 ‘origin’ Specify that the object requires ‘$ORIGIN’ handling in paths. d1094 2 a1095 2 ‘pack-relative-relocs’ ‘nopack-relative-relocs’ d1097 2 a1098 2 executable and shared library. It adds ‘DT_RELR’, ‘DT_RELRSZ’ and ‘DT_RELRENT’ entries to the dynamic section. It is d1100 1 a1100 1 relocatable output. ‘nopack-relative-relocs’ is the default, d1106 3 a1108 3 ‘relro’ ‘norelro’ Create an ELF ‘PT_GNU_RELRO’ segment header in the object. d1110 1 a1110 1 after relocation, if supported. Specifying ‘common-page-size’ d1112 2 a1113 2 ineffective. Don’t create an ELF ‘PT_GNU_RELRO’ segment if ‘norelro’. d1115 1 a1115 1 ‘report-relative-reloc’ d1119 3 a1121 8 ‘sectionheader’ ‘nosectionheader’ Generate section header. Don’t generate section header if ‘nosectionheader’ is used. ‘sectionheader’ is the default. ‘separate-code’ ‘noseparate-code’ Create separate code ‘PT_LOAD’ segment header in the object. d1124 2 a1125 2 other data. Don’t create separate code ‘PT_LOAD’ segment if ‘noseparate-code’ is used. d1127 1 a1127 1 ‘shstk’ d1133 2 a1134 2 ‘stack-size=VALUE’ Specify a stack size for an ELF ‘PT_GNU_STACK’ segment. d1136 1 a1136 1 ‘PT_GNU_STACK’ segment creation. d1138 8 a1145 8 ‘start-stop-gc’ ‘nostart-stop-gc’ When ‘--gc-sections’ is in effect, a reference from a retained section to ‘__start_SECNAME’ or ‘__stop_SECNAME’ causes all input sections named ‘SECNAME’ to also be retained, if ‘SECNAME’ is representable as a C identifier and either ‘__start_SECNAME’ or ‘__stop_SECNAME’ is synthesized by the linker. ‘-z start-stop-gc’ disables this effect, allowing d1147 2 a1148 2 symbols were not defined. ‘-z start-stop-gc’ has no effect on a definition of ‘__start_SECNAME’ or ‘__stop_SECNAME’ in an d1150 2 a1151 2 the linker providing a synthesized ‘__start_SECNAME’ or ‘__stop_SECNAME’ respectively, and therefore the special d1154 1 a1154 1 ‘start-stop-visibility=VALUE’ d1156 6 a1161 6 ‘__start_SECNAME’ and ‘__stop_SECNAME’ symbols (*note Input Section Example::). VALUE must be exactly ‘default’, ‘internal’, ‘hidden’, or ‘protected’. If no ‘-z start-stop-visibility’ option is given, ‘protected’ is used for compatibility with historical practice. However, it’s highly recommended to use ‘-z start-stop-visibility=hidden’ in d1164 1 a1164 1 what’s intended. d1166 3 a1168 3 ‘text’ ‘notext’ ‘textoff’ d1171 2 a1172 2 in read-only sections. Don’t report an error if ‘notext’ or ‘textoff’. d1174 1 a1174 1 ‘undefs’ d1177 1 a1177 1 shared library. This option is the inverse of ‘-z defs’. d1179 2 a1180 2 ‘unique-symbol’ ‘nounique-symbol’ d1182 2 a1183 2 table. Append ".‘number’" to duplicated local symbol names if ‘unique-symbol’ is used. ‘nounique-symbol’ is the default. d1185 4 a1188 4 ‘x86-64-baseline’ ‘x86-64-v2’ ‘x86-64-v3’ ‘x86-64-v4’ d1190 5 a1194 5 section. ‘x86-64-baseline’ generates ‘GNU_PROPERTY_X86_ISA_1_BASELINE’. ‘x86-64-v2’ generates ‘GNU_PROPERTY_X86_ISA_1_V2’. ‘x86-64-v3’ generates ‘GNU_PROPERTY_X86_ISA_1_V3’. ‘x86-64-v4’ generates ‘GNU_PROPERTY_X86_ISA_1_V4’. Supported for Linux/i386 and d1199 2 a1200 2 ‘-( ARCHIVES -)’ ‘--start-group ARCHIVES --end-group’ d1202 1 a1202 1 explicit file names, or ‘-l’ options. d1217 2 a1218 2 ‘--accept-unknown-input-arch’ ‘--no-accept-unknown-input-arch’ d1224 1 a1224 1 input files, and so the ‘--accept-unknown-input-arch’ option has d1227 2 a1228 2 ‘--as-needed’ ‘--no-as-needed’ d1230 1 a1230 1 mentioned on the command line after the ‘--as-needed’ option. d1233 1 a1233 1 library is actually needed or not. ‘--as-needed’ causes a d1242 1 a1242 1 archives. ‘--no-as-needed’ restores the default behaviour. d1244 3 a1246 3 Note: On Linux based systems the ‘--as-needed’ option also has an affect on the behaviour of the ‘--rpath’ and ‘--rpath-link’ options. See the description of ‘--rpath-link’ for more details. d1248 2 a1249 2 ‘--add-needed’ ‘--no-add-needed’ d1251 3 a1253 3 their names to the ‘--as-needed’ and ‘--no-as-needed’ options. They have been replaced by ‘--copy-dt-needed-entries’ and ‘--no-copy-dt-needed-entries’. d1255 1 a1255 1 ‘-assert KEYWORD’ d1258 3 a1260 3 ‘-Bdynamic’ ‘-dy’ ‘-call_shared’ d1266 1 a1266 1 library searching for ‘-l’ options which follow it. d1268 2 a1269 2 ‘-Bgroup’ Set the ‘DF_1_GROUP’ flag in the ‘DT_FLAGS_1’ entry in the dynamic d1272 1 a1272 1 ‘--unresolved-symbols=report-all’ is implied. This option is only d1275 4 a1278 4 ‘-Bstatic’ ‘-dn’ ‘-non_shared’ ‘-static’ d1283 4 a1286 4 affects library searching for ‘-l’ options which follow it. This option also implies ‘--unresolved-symbols=report-all’. This option can be used with ‘-shared’. Doing so means that a shared library is being created but that all of the library’s external references d1289 1 a1289 1 ‘-Bsymbolic’ d1296 1 a1296 1 ‘-Bsymbolic-functions’ d1302 3 a1304 3 ‘-Bno-symbolic’ This option can cancel previously specified ‘-Bsymbolic’ and ‘-Bsymbolic-functions’. d1306 1 a1306 1 ‘--dynamic-list=DYNAMIC-LIST-FILE’ d1309 1 a1309 1 global symbols whose references shouldn’t be bound to the d1319 1 a1319 1 ‘--dynamic-list-data’ d1322 1 a1322 1 ‘--dynamic-list-cpp-new’ d1326 1 a1326 1 ‘--dynamic-list-cpp-typeinfo’ d1330 2 a1331 2 ‘--check-sections’ ‘--no-check-sections’ d1338 1 a1338 1 ‘--check-sections’. Section overlap is not usually checked for d1340 1 a1340 1 the ‘--check-sections’ option. d1342 2 a1343 2 ‘--copy-dt-needed-entries’ ‘--no-copy-dt-needed-entries’ d1346 1 a1346 1 command line. Normally the linker won’t add a DT_NEEDED tag to the d1348 1 a1348 1 input dynamic library. With ‘--copy-dt-needed-entries’ specified d1351 1 a1351 1 be restored with ‘--no-copy-dt-needed-entries’. d1354 1 a1354 1 dynamic libraries. With ‘--copy-dt-needed-entries’ dynamic d1362 1 a1362 1 ‘--cref’ d1375 2 a1376 2 ‘--ctf-variables’ ‘--no-ctf-variables’ d1382 1 a1382 1 the names are often not. ‘--ctf-variables’ causes the generation d1384 1 a1384 1 ‘--no-ctf-variables’. d1386 1 a1386 1 ‘--ctf-share-types=METHOD’ d1390 1 a1390 1 ‘share-unconflicted’ d1396 1 a1396 1 ‘share-duplicated’ d1406 1 a1406 1 ‘--no-define-common’ d1408 1 a1408 1 The script command ‘INHIBIT_COMMON_ALLOCATION’ has the same effect. d1411 1 a1411 1 The ‘--no-define-common’ option allows decoupling the decision to d1414 1 a1414 1 addresses to Common symbols. Using ‘--no-define-common’ allows d1422 1 a1422 1 ‘--force-group-allocation’ d1426 2 a1427 2 to change the behaviour of a relocatable link (‘-r’). The script command ‘FORCE_GROUP_ALLOCATION’ has the same effect. *Note d1430 1 a1430 1 ‘--defsym=SYMBOL=EXPRESSION’ d1436 1 a1436 1 existing symbol, or use ‘+’ and ‘-’ to add or subtract hexadecimal d1440 1 a1440 1 SYMBOL, the equals sign (“<=>”), and EXPRESSION. d1442 4 a1445 4 The linker processes ‘--defsym’ arguments and ‘-T’ arguments in order, placing ‘--defsym’ before ‘-T’ will define the symbol before the linker script from ‘-T’ is processed, while placing ‘--defsym’ after ‘-T’ will define the symbol after the linker script has been d1447 1 a1447 1 the linker script that use the ‘--defsym’ symbols, which order is d1450 2 a1451 2 ‘--demangle[=STYLE]’ ‘--no-demangle’ d1460 1 a1460 1 default unless the environment variable ‘COLLECT_NO_DEMANGLE’ is d1463 2 a1464 2 ‘-IFILE’ ‘--dynamic-linker=FILE’ d1467 1 a1467 1 linker is normally correct; don’t use this unless you know what you d1470 1 a1470 1 ‘--no-dynamic-linker’ d1476 2 a1477 2 ‘--embedded-relocs’ This option is similar to the ‘--emit-relocs’ option except that d1479 1 a1479 1 only supported by the ‘BFIN’, ‘CR16’ and _M68K_ targets. d1481 1 a1481 1 ‘--disable-multiple-abs-defs’ d1483 1 a1483 1 invoked by -R or –just-symbols d1485 2 a1486 2 ‘--fatal-warnings’ ‘--no-fatal-warnings’ d1488 1 a1488 1 restored with the option ‘--no-fatal-warnings’. d1490 1 a1490 8 ‘-w’ ‘--no-warnings’ Do not display any warning or error messages. This overrides ‘--fatal-warnings’ if it has been enabled. This option can be used when it is known that the output binary will not work, but there is still a need to create it. ‘--force-exe-suffix’ d1494 2 a1495 2 ‘.exe’ or ‘.dll’ suffix, this option forces the linker to copy the output file to one of the same name with a ‘.exe’ suffix. This d1497 2 a1498 2 Microsoft Windows host, since some versions of Windows won’t run an image unless it ends in a ‘.exe’ suffix. d1500 2 a1501 2 ‘--gc-sections’ ‘--no-gc-sections’ d1505 1 a1505 1 specifying ‘--no-gc-sections’ on the command line. Note that d1509 1 a1509 1 ‘--gc-sections’ decides which input sections are used by examining d1517 2 a1518 2 relocations. See ‘--entry’, ‘--undefined’, and ‘--gc-keep-exported’. d1521 3 a1523 3 option ‘-r’). In this case the root of symbols kept must be explicitly specified either by one of the options ‘--entry’, ‘--undefined’, or ‘--gc-keep-exported’ or by a ‘ENTRY’ command in d1527 1 a1527 1 ‘SHF_GNU_RETAIN’ flag will not be garbage collected. d1529 2 a1530 2 ‘--print-gc-sections’ ‘--no-print-gc-sections’ d1533 1 a1533 1 collection has been enabled via the ‘--gc-sections’) option. The d1535 1 a1535 1 can be restored by specifying ‘--no-print-gc-sections’ on the d1538 2 a1539 2 ‘--gc-keep-exported’ When ‘--gc-sections’ is enabled, this option prevents garbage d1548 1 a1548 1 ‘--print-output-format’ d1551 1 a1551 1 in an ‘OUTPUT_FORMAT’ linker script command (*note File d1554 1 a1554 1 ‘--print-memory-usage’ d1566 1 a1566 1 ‘--help’ d1570 1 a1570 1 ‘--target-help’ d1574 1 a1574 1 ‘-Map=MAPFILE’ d1576 1 a1576 1 ‘-M’ option, above. If MAPFILE is just the character ‘-’ then the d1582 1 a1582 1 with ‘.map’ appended. If however the special character ‘%’ is used d1585 1 a1585 1 ‘.map’ will no longer be appended. d1598 1 a1598 1 It is an error to specify more than one ‘%’ character. d1603 3 a1605 3 ‘--no-keep-memory’ ‘ld’ normally optimizes for speed over memory usage by caching the symbol tables of input files in memory. This option tells ‘ld’ to d1607 1 a1607 1 as necessary. This may be required if ‘ld’ runs out of memory d1610 2 a1611 2 ‘--no-undefined’ ‘-z defs’ d1614 1 a1614 1 library. The switch ‘--[no-]allow-shlib-undefined’ controls the d1618 1 a1618 1 The effects of this option can be reverted by using ‘-z undefs’. d1620 2 a1621 2 ‘--allow-multiple-definition’ ‘-z muldefs’ d1626 2 a1627 2 ‘--allow-shlib-undefined’ ‘--no-allow-shlib-undefined’ d1629 1 a1629 1 switch is similar to ‘--no-undefined’ except that it determines the d1642 1 a1642 1 • A shared library specified at link time may not be the same as d1645 1 a1645 1 • There are some operating systems, eg BeOS and HPPA, where d1653 1 a1653 1 ‘--error-handling-script=SCRIPTNAME’ d1657 2 a1658 2 arguments will be passed to script: the keyword “undefined-symbol” or ‘missing-lib” and the NAME of the undefined symbol or missing d1667 1 a1667 1 ‘--no-undefined-version’ d1672 1 a1672 1 ‘--default-symver’ d1676 1 a1676 1 ‘--default-imported-symver’ d1680 2 a1681 2 ‘--no-warn-mismatch’ Normally ‘ld’ will give an error if you try to link together input d1684 1 a1684 1 endiannesses. This option tells ‘ld’ that it should silently d1689 2 a1690 2 ‘--no-warn-search-mismatch’ Normally ‘ld’ will give a warning if it finds an incompatible d1693 2 a1694 2 ‘--no-whole-archive’ Turn off the effect of the ‘--whole-archive’ option for subsequent d1697 1 a1697 1 ‘--noinhibit-exec’ d1703 1 a1703 1 ‘-nostdlib’ d1708 6 a1713 6 ‘--oformat=OUTPUT-FORMAT’ ‘ld’ may be configured to support more than one kind of object file. If your ‘ld’ is configured this way, you can use the ‘--oformat’ option to specify the binary format for the output object file. Even when ‘ld’ is configured to support alternative object formats, you don’t usually need to specify this, as ‘ld’ d1717 2 a1718 2 can list the available binary formats with ‘objdump -i’.) The script command ‘OUTPUT_FORMAT’ can also specify the output format, d1721 1 a1721 1 ‘--out-implib FILE’ d1724 1 a1724 1 library (which should be called ‘*.dll.a’ or ‘*.a’ for DLLs) may be d1727 1 a1727 1 creation step (eg. ‘dlltool’ for DLLs). This option is only d1730 2 a1731 2 ‘-pie’ ‘--pic-executable’ d1740 1 a1740 1 ‘-no-pie’ d1743 1 a1743 1 ‘-qmagic’ d1746 1 a1746 1 ‘-Qy’ d1749 2 a1750 2 ‘--relax’ ‘--no-relax’ d1752 4 a1755 4 supported on a few targets. *Note ‘ld’ and the H8/300: H8/300. *Note ‘ld’ and Xtensa Processors: Xtensa. *Note ‘ld’ and the 68HC11 and 68HC12: M68HC11/68HC12. *Note ‘ld’ and the Altera Nios II: Nios II. *Note ‘ld’ and PowerPC 32-bit ELF Support: PowerPC d1758 1 a1758 1 On some platforms the ‘--relax’ option performs target specific, d1770 1 a1770 1 ‘--no-relax’ will disable it. d1772 2 a1773 2 On platforms where the feature is not supported, both ‘--relax’ and ‘--no-relax’ are accepted, but ignored. d1775 1 a1775 1 ‘--retain-symbols-file=FILENAME’ d1782 1 a1782 1 ‘--retain-symbols-file’ does _not_ discard undefined symbols, or d1785 2 a1786 2 You may only specify ‘--retain-symbols-file’ once in the command line. It overrides ‘-s’ and ‘-S’. d1788 1 a1788 1 ‘-rpath=DIR’ d1790 1 a1790 1 when linking an ELF executable with shared objects. All ‘-rpath’ d1794 1 a1794 1 The ‘-rpath’ option is also used when locating shared objects which d1796 1 a1796 1 the description of the ‘-rpath-link’ option. Searching ‘-rpath’ in d1798 1 a1798 1 which have been configured with the ‘--with-sysroot’ option. d1800 2 a1801 2 If ‘-rpath’ is not used when linking an ELF executable, the contents of the environment variable ‘LD_RUN_PATH’ will be used if d1804 1 a1804 1 The ‘-rpath’ option may also be used on SunOS. By default, on d1806 4 a1809 4 ‘-L’ options it is given. If a ‘-rpath’ option is used, the runtime search path will be formed exclusively using the ‘-rpath’ options, ignoring the ‘-L’ options. This can be useful when using gcc, which adds many ‘-L’ options which may be on NFS mounted file d1812 1 a1812 1 For compatibility with other ELF linkers, if the ‘-R’ option is d1814 1 a1814 1 treated as the ‘-rpath’ option. d1816 1 a1816 1 ‘-rpath-link=DIR’ d1818 1 a1818 1 This happens when an ‘ld -shared’ link includes a shared library as d1824 1 a1824 1 it is not included explicitly. In such a case, the ‘-rpath-link’ d1826 1 a1826 1 ‘-rpath-link’ option may specify a sequence of directory names d1833 1 a1833 1 ‘lib’ - for 32-bit binaries - or ‘lib64’ - for 64-bit binaries - in d1847 6 a1852 6 1. Any directories specified by ‘-rpath-link’ options. 2. Any directories specified by ‘-rpath’ options. The difference between ‘-rpath’ and ‘-rpath-link’ is that directories specified by ‘-rpath’ options are included in the executable and used at runtime, whereas the ‘-rpath-link’ option is only effective at link time. Searching ‘-rpath’ in this way is d1854 6 a1859 6 been configured with the ‘--with-sysroot’ option. 3. On an ELF system, for native linkers, if the ‘-rpath’ and ‘-rpath-link’ options were not used, search the contents of the environment variable ‘LD_RUN_PATH’. 4. On SunOS, if the ‘-rpath’ option was not used, search any directories specified using ‘-L’ options. d1861 6 a1866 6 variable ‘LD_LIBRARY_PATH’. 6. For a native ELF linker, the directories in ‘DT_RUNPATH’ or ‘DT_RPATH’ of a shared library are searched for shared libraries needed by it. The ‘DT_RPATH’ entries are ignored if ‘DT_RUNPATH’ entries exist. 7. For a linker for a Linux system, if the file ‘/etc/ld.so.conf’ d1868 3 a1870 3 path to this file is prefixed with the ‘sysroot’ value, if that is defined, and then any ‘prefix’ string if the linker was configured with the ‘--prefix=’ option. d1872 3 a1874 3 specified by the ‘_PATH_ELF_HINTS’ macro defined in the ‘elf-hints.h’ header file. 9. Any directories specified by a ‘SEARCH_DIR’ command in a d1876 2 a1877 2 specified by ‘-T’ (but not ‘-dT’). 10. The default directories, normally ‘/lib’ and ‘/usr/lib’. d1880 1 a1880 1 12. Any directories specified by a ‘SEARCH_DIR’ command in a d1884 1 a1884 1 If the ‘--as-needed’ option is active _and_ a shared library is d1886 1 a1886 1 does not have DT_NEEDED tag for ‘libc.so’ _and_ there is a shared d1889 1 a1889 1 DT_NEEDED tag for ‘libc.so’ _then_ the second library will be d1895 2 a1896 2 ‘-shared’ ‘-Bshareable’ d1899 1 a1899 1 create a shared library if the ‘-e’ option is not used and there d1902 4 a1905 4 ‘--sort-common’ ‘--sort-common=ascending’ ‘--sort-common=descending’ This option tells ‘ld’ to sort the common symbols by alignment in d1913 2 a1914 2 ‘--sort-section=name’ This option will apply ‘SORT_BY_NAME’ to all wildcard section d1917 2 a1918 2 ‘--sort-section=alignment’ This option will apply ‘SORT_BY_ALIGNMENT’ to all wildcard section d1921 1 a1921 1 ‘--spare-dynamic-tags=COUNT’ d1926 2 a1927 2 ‘--split-by-file[=SIZE]’ Similar to ‘--split-by-reloc’ but creates a new output section for d1931 1 a1931 1 ‘--split-by-reloc[=COUNT]’ d1944 1 a1944 1 ‘--stats’ d1948 1 a1948 1 ‘--sysroot=DIRECTORY’ d1951 1 a1951 1 that were configured using ‘--with-sysroot’. d1953 1 a1953 1 ‘--task-link’ d1958 3 a1960 3 ‘--traditional-format’ For some targets, the output of ‘ld’ is different in some ways from the output of some existing linker. This switch requests ‘ld’ to d1963 1 a1963 1 For example, on SunOS, ‘ld’ combines duplicate entries in the d1966 2 a1967 2 the SunOS ‘dbx’ program can not read the resulting program (‘gdb’ has no trouble). The ‘--traditional-format’ switch tells ‘ld’ to d1970 1 a1970 1 ‘--section-start=SECTIONNAME=ORG’ d1975 1 a1975 1 omit the leading ‘0x’ usually associated with hexadecimal values. d1977 1 a1977 1 equals sign (“<=>”), and ORG. d1979 4 a1982 4 ‘-Tbss=ORG’ ‘-Tdata=ORG’ ‘-Ttext=ORG’ Same as ‘--section-start’, with ‘.bss’, ‘.data’ or ‘.text’ as the d1985 1 a1985 1 ‘-Ttext-segment=ORG’ d1989 1 a1989 1 ‘-Trodata-segment=ORG’ d1995 1 a1995 1 ‘-Tldata-segment=ORG’ d2000 1 a2000 1 ‘--unresolved-symbols=METHOD’ d2002 1 a2002 1 possible values for ‘method’: d2004 1 a2004 1 ‘ignore-all’ d2007 1 a2007 1 ‘report-all’ d2010 1 a2010 1 ‘ignore-in-object-files’ d2015 1 a2015 1 ‘ignore-in-shared-libs’ d2020 1 a2020 1 included on the linker’s command line. d2023 1 a2023 1 controlled by the ‘--[no-]allow-shlib-undefined’ option. d2027 1 a2027 1 ‘--warn-unresolved-symbols’ can change this to a warning. d2029 3 a2031 3 ‘--dll-verbose’ ‘--verbose[=NUMBER]’ Display the version number for ‘ld’ and list the linker emulations d2037 1 a2037 1 ‘--version-script=VERSION-SCRIPTFILE’ d2045 1 a2045 1 ‘local’ in the version script will not be exported. *Note WIN32::. d2047 1 a2047 1 ‘--warn-common’ d2059 1 a2059 1 ‘int i = 1;’ d2063 1 a2063 1 ‘extern int i;’ d2068 1 a2068 1 ‘int i;’ d2077 1 a2077 1 The ‘--warn-common’ option can produce five kinds of warnings. d2115 1 a2115 1 ‘--warn-constructors’ d2120 23 a2142 41 ‘--warn-execstack’ ‘--warn-execstack-objects’ ‘--no-warn-execstack’ On ELF platforms the linker may generate warning messages if it is asked to create an output file that contains an executable stack. There are three possible states: 1. Do not generate any warnings. 2. Always generate warnings, even if the executable stack is requested via the ‘-z execstack’ command line option. 3. Only generate a warning if an object file requests an executable stack, but not if the ‘-z execstack’ option is used. The default state depends upon how the linker was configured when it was built. The ‘--no-warn-execstack’ option always puts the linker into the no-warnings state. The ‘--warn-execstack’ option puts the linker into the warn-always state. The ‘--warn-execstack-objects’ option puts the linker into the warn-for-object-files-only state. Note: ELF format input files can specify that they need an executable stack by having a .NOTE.GNU-STACK section with the executable bit set in its section flags. They can specify that they do not need an executable stack by having the same section, but without the executable flag bit set. If an input file does not have a .NOTE.GNU-STACK section then the default behaviour is target specific. For some targets, then absence of such a section implies that an executable stack _is_ required. This is often a problem for hand crafted assembler files. ‘--error-execstack’ ‘--no-error-execstack’ If the linker is going to generate a warning message about an executable stack then the ‘--error-execstack’ option will instead change that warning into an error. Note - this option does not change the linker’s execstack warning generation state. Use ‘--warn-execstack’ or ‘--warn-execstack-objects’ to set a specific warning state. The ‘--no-error-execstack’ option will restore the default behaviour of generating warning messages. d2144 1 a2144 1 ‘--warn-multiple-gp’ d2158 1 a2158 1 ‘--warn-once’ d2162 2 a2163 2 ‘--warn-rwx-segments’ ‘--no-warn-rwx-segments’ d2172 2 a2173 15 the ‘--no-warn-rwx-segments’ option and re-enabled via the ‘--warn-rwx-segments’ option. ‘--error-rwx-segments’ ‘--no-error-rwx-segments’ If the linker is going to generate a warning message about an executable, writeable segment, or an executable TLS segment, then the ‘--error-rwx-segments’ option will turn this warning into an error instead. The ‘--no-error-rwx-segments’ option will restore the default behaviour of just generating a warning message. Note - the ‘--error-rwx-segments’ option does not by itself turn on warnings about these segments. These warnings are either enabled by default, if the linker was configured that way, or via the ‘--warn-rwx-segments’ command line option. d2175 1 a2175 1 ‘--warn-section-align’ d2179 1 a2179 1 specified; that is, if the ‘SECTIONS’ command does not specify a d2182 1 a2182 1 ‘--warn-textrel’ d2186 1 a2186 1 ‘--warn-alternate-em’ d2189 1 a2189 1 ‘--warn-unresolved-symbols’ d2191 1 a2191 1 option ‘--unresolved-symbols’) it will normally generate an error. d2194 2 a2195 2 ‘--error-unresolved-symbols’ This restores the linker’s default behaviour of generating errors d2198 1 a2198 1 ‘--whole-archive’ d2200 1 a2200 1 ‘--whole-archive’ option, include every object file in the archive d2206 3 a2208 3 Two notes when using this option from gcc: First, gcc doesn’t know about this option, so you have to use ‘-Wl,-whole-archive’. Second, don’t forget to use ‘-Wl,-no-whole-archive’ after your list d2212 1 a2212 1 ‘--wrap=SYMBOL’ d2214 2 a2215 2 SYMBOL will be resolved to ‘__wrap_SYMBOL’. Any undefined reference to ‘__real_SYMBOL’ will be resolved to SYMBOL. d2218 2 a2219 2 wrapper function should be called ‘__wrap_SYMBOL’. If it wishes to call the system function, it should call ‘__real_SYMBOL’. d2230 10 a2239 10 If you link other code with this file using ‘--wrap malloc’, then all calls to ‘malloc’ will call the function ‘__wrap_malloc’ instead. The call to ‘__real_malloc’ in ‘__wrap_malloc’ will call the real ‘malloc’ function. You may wish to provide a ‘__real_malloc’ function as well, so that links without the ‘--wrap’ option will succeed. If you do this, you should not put the definition of ‘__real_malloc’ in the same file as ‘__wrap_malloc’; if you do, the assembler may resolve the call before the linker has a chance to wrap it to ‘malloc’. d2243 2 a2244 2 ‘__wrap_SYMBOL’. In the next example, the call to ‘f’ in ‘g’ is not resolved to ‘__wrap_f’. d2258 4 a2261 4 ‘--eh-frame-hdr’ ‘--no-eh-frame-hdr’ Request (‘--eh-frame-hdr’) or suppress (‘--no-eh-frame-hdr’) the creation of ‘.eh_frame_hdr’ section and ELF ‘PT_GNU_EH_FRAME’ d2264 2 a2265 2 ‘--no-ld-generated-unwind-info’ Request creation of ‘.eh_frame’ unwind info for linker generated d2267 1 a2267 3 generated unwind info is supported. This option also controls the generation of ‘.sframe’ stack trace info for linker generated code sections like PLT. d2269 2 a2270 2 ‘--enable-new-dtags’ ‘--disable-new-dtags’ d2273 1 a2273 1 ‘--enable-new-dtags’, the new dynamic tags will be created as d2275 1 a2275 1 ‘--disable-new-dtags’, no new dynamic tags will be created. By d2279 2 a2280 2 ‘--hash-size=NUMBER’ Set the default size of the linker’s hash tables to a prime number d2283 1 a2283 1 increasing the linker’s memory requirements. Similarly reducing d2287 5 a2291 5 ‘--hash-style=STYLE’ Set the type of linker’s hash table(s). STYLE can be either ‘sysv’ for classic ELF ‘.hash’ section, ‘gnu’ for new style GNU ‘.gnu.hash’ section or ‘both’ for both the classic ELF ‘.hash’ and new style GNU ‘.gnu.hash’ hash tables. The default depends upon d2293 1 a2293 1 will be ‘both’. d2295 4 a2298 5 ‘--compress-debug-sections=none’ ‘--compress-debug-sections=zlib’ ‘--compress-debug-sections=zlib-gnu’ ‘--compress-debug-sections=zlib-gabi’ ‘--compress-debug-sections=zstd’ d2302 4 a2305 4 ‘--compress-debug-sections=none’ doesn’t compress DWARF debug sections. ‘--compress-debug-sections=zlib-gnu’ compresses DWARF debug sections and renames them to begin with ‘.zdebug’ instead of ‘.debug’. ‘--compress-debug-sections=zlib-gabi’ also compresses d2307 1 a2307 1 SHF_COMPRESSED flag in the sections’ headers. d2309 2 a2310 5 The ‘--compress-debug-sections=zlib’ option is an alias for ‘--compress-debug-sections=zlib-gabi’. ‘--compress-debug-sections=zstd’ compresses DWARF debug sections using zstd. d2314 1 a2314 1 ‘--compress-debug-sections=none’ for example, then any compressed d2321 1 a2321 1 linker’s ‘--help’ option. d2323 1 a2323 1 ‘--reduce-memory-overheads’ d2331 1 a2331 1 linker’s run time. This is not done however if the ‘--hash-size’ d2334 1 a2334 1 The ‘--reduce-memory-overheads’ switch may be also be used to d2337 2 a2338 2 ‘--max-cache-size=SIZE’ ‘ld’ normally caches the relocation information and symbol tables d2342 8 a2349 8 ‘--build-id’ ‘--build-id=STYLE’ Request the creation of a ‘.note.gnu.build-id’ ELF note section or a ‘.buildid’ COFF section. The contents of the note are unique bits identifying this linked file. STYLE can be ‘uuid’ to use 128 random bits, ‘sha1’ to use a 160-bit SHA1 hash on the normative parts of the output contents, ‘md5’ to use a 128-bit MD5 hash on the normative parts of the output contents, or ‘0xHEXSTRING’ to use d2351 2 a2352 2 digits (‘-’ and ‘:’ characters between digit pairs are ignored). If STYLE is omitted, ‘sha1’ is used. d2354 1 a2354 1 The ‘md5’ and ‘sha1’ styles produces an identifier that is always d2357 1 a2357 1 checksum for the file’s contents. A linked file may be changed d2361 1 a2361 1 Passing ‘none’ for STYLE disables the setting from any ‘--build-id’ d2364 2 a2365 2 ‘--package-metadata=JSON’ Request the creation of a ‘.note.package’ ELF note section. The d2371 1 a2371 1 –package-metadata option. If the linker has been built with d2377 1 a2377 1 The i386 PE linker supports the ‘-shared’ option, which causes the d2379 2 a2380 2 executable. You should name the output ‘*.dll’ when you use this option. In addition, the linker fully supports the standard ‘*.def’ d2390 1 a2390 1 ‘--add-stdcall-alias’ d2395 1 a2395 1 ‘--base-file FILE’ d2397 1 a2397 1 of all the relocations needed for generating DLLs with ‘dlltool’. d2400 1 a2400 1 ‘--dll’ d2402 1 a2402 1 ‘-shared’ or specify a ‘LIBRARY’ in a given ‘.def’ file. [This d2405 2 a2406 2 ‘--enable-long-section-names’ ‘--disable-long-section-names’ d2421 1 a2421 1 command-line, ‘ld’ will enable long section names, overriding the d2427 2 a2428 2 ‘--enable-stdcall-fixup’ ‘--disable-stdcall-fixup’ d2430 1 a2430 1 to do “fuzzy linking” by looking for another defined symbol that d2433 3 a2435 3 the undefined symbol ‘_foo’ might be linked to the function ‘_foo@@12’, or the undefined symbol ‘_bar@@16’ might be linked to the function ‘_bar’. When the linker does this, it prints a warning, d2438 1 a2438 1 be usable. If you specify ‘--enable-stdcall-fixup’, this feature d2440 1 a2440 1 ‘--disable-stdcall-fixup’, this feature is disabled and such d2444 2 a2445 2 ‘--leading-underscore’ ‘--no-leading-underscore’ d2447 1 a2447 1 defined in target’s description. By this option it is possible to d2450 1 a2450 1 ‘--export-all-symbols’ d2453 1 a2453 1 otherwise wouldn’t be any exported symbols. When symbols are d2456 2 a2457 2 unless this option is given. Note that the symbols ‘DllMain@@12’, ‘DllEntryPoint@@0’, ‘DllMainCRTStartup@@12’, and ‘impure_ptr’ will d2459 5 a2463 5 DLLs will not be re-exported, nor will symbols specifying the DLL’s internal layout such as those beginning with ‘_head_’ or ending with ‘_iname’. In addition, no symbols from ‘libgcc’, ‘libstd++’, ‘libmingw32’, or ‘crtX.o’ will be exported. Symbols whose names begin with ‘__rtti_’ or ‘__builtin_’ will not be exported, to help d2467 5 a2471 5 cygwin-excludes are: ‘_cygwin_dll_entry@@12’, ‘_cygwin_crt0_common@@8’, ‘_cygwin_noncygwin_dll_entry@@12’, ‘_fmode’, ‘_impure_ptr’, ‘cygwin_attach_dll’, ‘cygwin_premain0’, ‘cygwin_premain1’, ‘cygwin_premain2’, ‘cygwin_premain3’, and ‘environ’. [This option is specific to the i386 PE targeted port d2474 1 a2474 1 ‘--exclude-symbols SYMBOL,SYMBOL,...’ d2480 1 a2480 1 ‘--exclude-all-symbols’ d2484 1 a2484 1 ‘--file-alignment’ d2490 2 a2491 2 ‘--heap RESERVE’ ‘--heap RESERVE,COMMIT’ d2497 1 a2497 1 ‘--image-base VALUE’ d2506 1 a2506 1 ‘--kill-at’ d2511 2 a2512 2 ‘--large-address-aware’ If given, the appropriate bit in the “Characteristics” field of the d2516 1 a2516 1 “[operating systems]” section of the BOOT.INI. Otherwise, this bit d2520 3 a2522 3 ‘--disable-large-address-aware’ Reverts the effect of a previous ‘--large-address-aware’ option. This is useful if ‘--large-address-aware’ is always set by the d2527 2 a2528 2 ‘--major-image-version VALUE’ Sets the major number of the “image version”. Defaults to 1. d2532 2 a2533 2 ‘--major-os-version VALUE’ Sets the major number of the “os version”. Defaults to 4. [This d2536 2 a2537 2 ‘--major-subsystem-version VALUE’ Sets the major number of the “subsystem version”. Defaults to 4. d2541 2 a2542 2 ‘--minor-image-version VALUE’ Sets the minor number of the “image version”. Defaults to 0. d2546 2 a2547 2 ‘--minor-os-version VALUE’ Sets the minor number of the “os version”. Defaults to 0. [This d2550 2 a2551 2 ‘--minor-subsystem-version VALUE’ Sets the minor number of the “subsystem version”. Defaults to 0. d2555 1 a2555 1 ‘--output-def FILE’ d2558 2 a2559 2 (which should be called ‘*.def’) may be used to create an import library with ‘dlltool’ or may be used as a reference to d2563 2 a2564 2 ‘--enable-auto-image-base’ ‘--enable-auto-image-base=VALUE’ d2566 1 a2566 1 with base VALUE, unless one is specified using the ‘--image-base’ d2572 1 a2572 1 ‘--disable-auto-image-base’ d2574 1 a2574 1 user-specified image base (‘--image-base’) then use the platform d2578 1 a2578 1 ‘--dll-search-prefix STRING’ d2580 1 a2580 1 for ‘.dll’ in preference to ‘lib.dll’. d2583 1 a2583 1 instance, cygwin DLLs typically use ‘--dll-search-prefix=cyg’. d2587 2 a2588 2 ‘--enable-auto-import’ Do sophisticated linking of ‘_symbol’ to ‘__imp__symbol’ for DATA d2597 1 a2597 1 Note: Use of the ’auto-import’ extension will cause the text d2601 1 a2601 1 Note - use of the ’auto-import’ extension will also cause read only d2607 1 a2607 1 Using ’auto-import’ generally will ’just work’ – but sometimes you d2610 2 a2611 2 "variable ’’ can’t be auto-imported. Please read the documentation for ld’s ‘--enable-auto-import’ for details." d2626 1 a2626 1 One way is to use –enable-runtime-pseudo-reloc switch. This leaves d2631 2 a2632 2 A second solution is to force one of the ’constants’ to be a variable – that is, unknown and un-optimizable at compile time. d2634 1 a2634 1 array’s address) a variable, or b) make the ’constant’ index a d2662 2 a2663 2 ’auto-import’ for the offending symbol and mark it with ‘__declspec(dllimport)’. However, in practice that requires using d2667 2 a2668 2 the various methods of resolving the ’direct address with constant offset’ problem, you should consider typical real-world usage: d2711 3 a2713 3 ‘--disable-auto-import’ Do not attempt to do sophisticated linking of ‘_symbol’ to ‘__imp__symbol’ for DATA imports from DLLs. [This option is d2716 2 a2717 2 ‘--enable-runtime-pseudo-reloc’ If your code contains expressions described in –enable-auto-import d2719 1 a2719 1 switch will create a vector of ’runtime pseudo relocations’ which d2724 1 a2724 1 ‘--disable-runtime-pseudo-reloc’ d2729 1 a2729 1 ‘--enable-extra-pe-debug’ d2734 1 a2734 1 ‘--section-alignment’ d2740 2 a2741 2 ‘--stack RESERVE’ ‘--stack RESERVE,COMMIT’ d2747 3 a2749 3 ‘--subsystem WHICH’ ‘--subsystem WHICH:MAJOR’ ‘--subsystem WHICH:MAJOR.MINOR’ d2751 2 a2752 2 legal values for WHICH are ‘native’, ‘windows’, ‘console’, ‘posix’, and ‘xbox’. You may optionally set the subsystem version also. d2756 1 a2756 1 The following options set flags in the ‘DllCharacteristics’ field d2760 2 a2761 2 ‘--high-entropy-va’ ‘--disable-high-entropy-va’ d2765 2 a2766 2 This option also implies ‘--dynamicbase’ and ‘--enable-reloc-section’. d2768 2 a2769 2 ‘--dynamicbase’ ‘--disable-dynamicbase’ d2773 2 a2774 2 can be disabled via the ‘--disable-dynamicbase’ option. This option also implies ‘--enable-reloc-section’. d2776 2 a2777 2 ‘--forceinteg’ ‘--disable-forceinteg’ d2781 2 a2782 2 ‘--nxcompat’ ‘--disable-nxcompat’ d2787 2 a2788 2 ‘--no-isolation’ ‘--disable-no-isolation’ d2792 2 a2793 2 ‘--no-seh’ ‘--disable-no-seh’ d2797 2 a2798 2 ‘--no-bind’ ‘--disable-no-bind’ d2801 2 a2802 2 ‘--wdmdriver’ ‘--disable-wdmdriver’ d2806 2 a2807 2 ‘--tsaware’ ‘--disable-tsaware’ d2811 2 a2812 2 ‘--insert-timestamp’ ‘--no-insert-timestamp’ d2818 1 a2818 1 ‘--no-insert-timestamp’ can be used to insert a zero value for the d2822 2 a2823 7 If ‘--insert-timestamp’ is active then the time inserted is either the time that the linking takes place or, if the ‘SOURCE_DATE_EPOCH’ environment variable is defined, the number of seconds since Unix epoch as specified by that variable. ‘--enable-reloc-section’ ‘--disable-reloc-section’ d2835 1 a2835 1 ‘--dsbt-size SIZE’ d2840 1 a2840 1 ‘--dsbt-index INDEX’ d2844 1 a2844 1 DSBT index of 0, the ‘R_C6000_DSBT_INDEX’ relocs are copied into d2847 1 a2847 1 The ‘--no-merge-exidx-entries’ switch disables the merging of d2853 1 a2853 1 ‘--branch-stub’ d2860 1 a2860 1 ‘--stub-group-size=N’ d2866 1 a2866 1 ‘1’ or ‘-1’ indicate that the linker should choose suitable d2875 1 a2875 1 ‘--no-trampoline’ d2878 1 a2878 1 a ‘jsr’ instruction (this happens when a pointer to a far function d2881 1 a2881 1 ‘--bank-window NAME’ d2883 1 a2883 1 in the ‘MEMORY’ specification that describes the memory bank d2893 1 a2893 1 ‘--got=TYPE’ d2895 2 a2896 2 TYPE should be one of ‘single’, ‘negative’, ‘multigot’ or ‘target’. For more information refer to the Info entry for ‘ld’. d2905 2 a2906 2 ‘--insn32’ ‘--no-insn32’ d2909 1 a2909 1 binding stubs, or in relaxation. If ‘--insn32’ is used, then the d2911 1 a2911 1 ‘--no-insn32’ is used, all instruction encodings are used, d2914 2 a2915 2 ‘--ignore-branch-isa’ ‘--no-ignore-branch-isa’ d2917 1 a2917 1 transitions. If ‘--ignore-branch-isa’ is used, then the linker d2919 1 a2919 1 is lost in relocation calculation, except for some cases of ‘BAL’ d2921 2 a2922 2 equivalent ‘JALX’ instructions as the associated relocation is calculated. By default or if ‘--no-ignore-branch-isa’ is used a d2926 2 a2927 2 ‘--compact-branches’ ‘--no-compact-branches’ d2936 2 a2937 2 pdp11-aout is the ‘--omagic’ option, whereas for other targets ‘--nmagic’ is the default. The ‘--imagic’ option is defined only for d2941 2 a2942 2 ‘-N’ ‘--omagic’ d2944 1 a2944 1 Mark the output as ‘OMAGIC’ (0407) in the ‘a.out’ header to d2949 1 a2949 1 executable programs and is the default for ‘ld’ on PDP11 Unix d2952 2 a2953 2 ‘-n’ ‘--nmagic’ d2955 1 a2955 1 Mark the output as ‘NMAGIC’ (0410) in the ‘a.out’ header to d2962 2 a2963 2 ‘-z’ ‘--imagic’ d2965 1 a2965 1 Mark the output as ‘IMAGIC’ (0411) in the ‘a.out’ header to d2974 1 a2974 1 0. The ‘-z’ option selected this format in 2.11BSD. This option d2977 1 a2977 1 ‘--no-omagic’ d2979 1 a2979 1 Equivalent to ‘--nmagic’ for pdp11-aout. d2987 2 a2988 2 You can change the behaviour of ‘ld’ with the environment variables ‘GNUTARGET’, ‘LDEMULATION’ and ‘COLLECT_NO_DEMANGLE’. d2990 5 a2994 5 ‘GNUTARGET’ determines the input-file object format if you don’t use ‘-b’ (or its synonym ‘--format’). Its value should be one of the BFD names for an input format (*note BFD::). If there is no ‘GNUTARGET’ in the environment, ‘ld’ uses the natural format of the target. If ‘GNUTARGET’ is set to ‘default’ then BFD attempts to discover the input d3002 2 a3003 2 ‘LDEMULATION’ determines the default emulation if you don’t use the ‘-m’ option. The emulation can affect various aspects of linker d3005 2 a3006 2 available emulations with the ‘--verbose’ or ‘-V’ options. If the ‘-m’ option is not used, and the ‘LDEMULATION’ environment variable is not d3011 1 a3011 1 ‘COLLECT_NO_DEMANGLE’ is set in the environment, then it will default to d3013 2 a3014 2 fashion by the ‘gcc’ linker wrapper program. The default may be overridden by the ‘--demangle’ and ‘--no-demangle’ options. d3022 1 a3022 1 Every link is controlled by a “linker script”. This script is written d3034 1 a3034 1 linker executable. You can use the ‘--verbose’ command-line option to d3036 1 a3036 1 as ‘-r’ or ‘-N’, will affect the default linker script. d3038 1 a3038 1 You may supply your own linker script by using the ‘-T’ command line d3071 2 a3072 2 “object file format”. Each file is called an “object file”. The output file is often called an “executable”, but for our purposes we will also d3074 3 a3076 3 list of “sections”. We sometimes refer to a section in an input file as an “input section”; similarly, a section in the output file is an “output section”. d3079 2 a3080 2 also have an associated block of data, known as the “section contents”. A section may be marked as “loadable”, which means that the contents d3082 1 a3082 1 with no contents may be “allocatable”, which means that an area in d3089 2 a3090 2 first is the “VMA”, or virtual memory address. This is the address the section will have when the output file is run. The second is the “LMA”, d3099 2 a3100 2 You can see the sections in an object file by using the ‘objdump’ program with the ‘-h’ option. d3102 2 a3103 2 Every object file also has a list of “symbols”, known as the “symbol table”. A symbol may be defined or undefined. Each symbol has a name, d3110 2 a3111 2 You can see the symbols in an object file by using the ‘nm’ program, or by using the ‘objdump’ program with the ‘-t’ option. d3133 1 a3133 1 ‘/*’ and ‘*/’. As in C, comments are syntactically equivalent to d3144 2 a3145 2 The simplest possible linker script has just one command: ‘SECTIONS’. You use the ‘SECTIONS’ command to describe the memory layout of the d3148 4 a3151 4 The ‘SECTIONS’ command is a powerful command. Here we will describe a simple use of it. Let’s assume your program consists only of code, initialized data, and uninitialized data. These will be in the ‘.text’, ‘.data’, and ‘.bss’ sections, respectively. Let’s assume further that d3154 1 a3154 1 For this example, let’s say that the code should be loaded at address d3166 1 a3166 1 You write the ‘SECTIONS’ command as the keyword ‘SECTIONS’, followed d3170 2 a3171 2 The first line inside the ‘SECTIONS’ command of the above example sets the value of the special symbol ‘.’, which is the location counter. d3175 2 a3176 2 by the size of the output section. At the start of the ‘SECTIONS’ command, the location counter has the value ‘0’. d3178 1 a3178 1 The second line defines an output section, ‘.text’. The colon is d3181 14 a3194 14 which should be placed into this output section. The ‘*’ is a wildcard which matches any file name. The expression ‘*(.text)’ means all ‘.text’ input sections in all input files. Since the location counter is ‘0x10000’ when the output section ‘.text’ is defined, the linker will set the address of the ‘.text’ section in the output file to be ‘0x10000’. The remaining lines define the ‘.data’ and ‘.bss’ sections in the output file. The linker will place the ‘.data’ output section at address ‘0x8000000’. After the linker places the ‘.data’ output section, the value of the location counter will be ‘0x8000000’ plus the size of the ‘.data’ output section. The effect is that the linker will place the ‘.bss’ output section immediately after the ‘.data’ output d3199 1 a3199 1 example, the specified addresses for the ‘.text’ and ‘.data’ sections d3201 1 a3201 1 to create a small gap between the ‘.data’ and ‘.bss’ sections. d3203 1 a3203 1 That’s it! That’s a simple and complete linker script. d3228 2 a3229 2 The first instruction to execute in a program is called the “entry point”. You can use the ‘ENTRY’ linker script command to set the entry d3236 4 a3239 4 • the ‘-e’ ENTRY command-line option; • the ‘ENTRY(SYMBOL)’ command in a linker script; • the value of a target-specific symbol, if it is defined; For many targets this is ‘start’, but PE- and BeOS-based systems for example d3242 1 a3242 1 • the address of the first byte of the code section, if present and d3244 2 a3245 2 ‘.text’, but can be something else; • The address ‘0’. d3255 1 a3255 1 ‘INCLUDE FILENAME’ d3258 1 a3258 1 specified with the ‘-L’ option. You can nest calls to ‘INCLUDE’ up d3261 2 a3262 2 You can place ‘INCLUDE’ directives at the top level, in ‘MEMORY’ or ‘SECTIONS’ commands, or in output section descriptions. d3264 3 a3266 3 ‘INPUT(FILE, FILE, ...)’ ‘INPUT(FILE FILE ...)’ The ‘INPUT’ command directs the linker to include the named files d3269 3 a3271 3 For example, if you always want to include ‘subr.o’ any time you do a link, but you can’t be bothered to put it on every link command line, then you can put ‘INPUT (subr.o)’ in your linker script. d3274 1 a3274 1 linker script, and then invoke the linker with nothing but a ‘-T’ d3277 7 a3283 7 In case a “sysroot prefix” is configured, and the filename starts with the ‘/’ character, and the script being processed was located inside the “sysroot prefix”, the filename will be looked for in the “sysroot prefix”. The “sysroot prefix” can also be forced by specifying ‘=’ as the first character in the filename path, or prefixing the filename path with ‘$SYSROOT’. See also the description of ‘-L’ in *note Command-line Options: Options. d3285 1 a3285 1 If a “sysroot prefix” is not used then the linker will try to open d3291 2 a3292 2 If you use ‘INPUT (-lFILE)’, ‘ld’ will transform the name to ‘libFILE.a’, as with the command-line argument ‘-l’. d3294 1 a3294 1 When you use the ‘INPUT’ command in an implicit linker script, the d3298 3 a3300 3 ‘GROUP(FILE, FILE, ...)’ ‘GROUP(FILE FILE ...)’ The ‘GROUP’ command is like ‘INPUT’, except that the named files d3302 1 a3302 1 new undefined references are created. See the description of ‘-(’ d3305 3 a3307 3 ‘AS_NEEDED(FILE, FILE, ...)’ ‘AS_NEEDED(FILE FILE ...)’ This construct can appear only inside of the ‘INPUT’ or ‘GROUP’ d3309 1 a3309 1 as if they appear directly in the ‘INPUT’ or ‘GROUP’ commands, with d3312 2 a3313 2 ‘--as-needed’ option for all the files listed inside of it and restores previous ‘--as-needed’ resp. ‘--no-as-needed’ setting d3316 4 a3319 4 ‘OUTPUT(FILENAME)’ The ‘OUTPUT’ command names the output file. Using ‘OUTPUT(FILENAME)’ in the linker script is exactly like using ‘-o FILENAME’ on the command line (*note Command Line Options: d3323 2 a3324 2 You can use the ‘OUTPUT’ command to define a default name for the output file other than the usual default of ‘a.out’. d3326 4 a3329 4 ‘SEARCH_DIR(PATH)’ The ‘SEARCH_DIR’ command adds PATH to the list of paths where ‘ld’ looks for archive libraries. Using ‘SEARCH_DIR(PATH)’ is exactly like using ‘-L PATH’ on the command line (*note Command-line d3334 2 a3335 2 ‘STARTUP(FILENAME)’ The ‘STARTUP’ command is just like the ‘INPUT’ command, except that d3349 5 a3353 5 ‘OUTPUT_FORMAT(BFDNAME)’ ‘OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)’ The ‘OUTPUT_FORMAT’ command names the BFD format to use for the output file (*note BFD::). Using ‘OUTPUT_FORMAT(BFDNAME)’ is exactly like using ‘--oformat BFDNAME’ on the command line (*note d3357 2 a3358 2 You can use ‘OUTPUT_FORMAT’ with three arguments to use different formats based on the ‘-EB’ and ‘-EL’ command-line options. This d3362 3 a3364 3 If neither ‘-EB’ nor ‘-EL’ are used, then the output format will be the first argument, DEFAULT. If ‘-EB’ is used, the output format will be the second argument, BIG. If ‘-EL’ is used, the output d3371 2 a3372 2 ‘elf32-bigmips’, but if the user uses the ‘-EL’ command-line option, the output file will be created in the ‘elf32-littlemips’ d3375 6 a3380 6 ‘TARGET(BFDNAME)’ The ‘TARGET’ command names the BFD format to use when reading input files. It affects subsequent ‘INPUT’ and ‘GROUP’ commands. This command is like using ‘-b BFDNAME’ on the command line (*note Command-line Options: Options.). If the ‘TARGET’ command is used but ‘OUTPUT_FORMAT’ is not, then the last ‘TARGET’ command is also d3395 1 a3395 1 The ‘REGION_ALIAS’ function creates an alias name ALIAS for the d3401 2 a3402 2 memory ‘RAM’ that allows code execution or data storage. Some may have a read-only, non-volatile memory ‘ROM’ that allows code execution and d3404 1 a3404 1 memory ‘ROM2’ with read-only data access and no code execution d3407 4 a3410 4 • ‘.text’ program code; • ‘.rodata’ read-only data; • ‘.data’ read-write initialized data; • ‘.bss’ read-write zero initialized data. d3416 1 a3416 1 ‘A’, ‘B’ and ‘C’: d3422 4 a3425 4 The notation ‘RAM/ROM’ or ‘RAM/ROM2’ means that this section is loaded into region ‘ROM’ or ‘ROM2’ respectively. Please note that the load address of the ‘.data’ section starts in all three variants at the end of the ‘.rodata’ section. d3428 1 a3428 1 It includes the system dependent ‘linkcmds.memory’ file that describes d3456 5 a3460 5 Now we need three different ‘linkcmds.memory’ files to define memory regions and alias names. The content of ‘linkcmds.memory’ for the three variants ‘A’, ‘B’ and ‘C’: ‘A’ Here everything goes into the ‘RAM’. d3470 5 a3474 5 ‘B’ Program code and read-only data go into the ‘ROM’. Read-write data goes into the ‘RAM’. An image of the initialized data is loaded into the ‘ROM’ and will be copied during system start into the ‘RAM’. d3485 5 a3489 5 ‘C’ Program code goes into the ‘ROM’. Read-only data goes into the ‘ROM2’. Read-write data goes into the ‘RAM’. An image of the initialized data is loaded into the ‘ROM2’ and will be copied during system start into the ‘RAM’. d3503 1 a3503 1 copy the ‘.data’ section from ‘ROM’ or ‘ROM2’ into the ‘RAM’ if d3527 1 a3527 1 ‘ASSERT(EXP, MESSAGE)’ d3544 1 a3544 1 will fail if ‘__stack_size’ is not defined elsewhere. Symbols d3557 1 a3557 1 ‘EXTERN(SYMBOL SYMBOL ...)’ d3561 2 a3562 2 each ‘EXTERN’, and you may use ‘EXTERN’ multiple times. This command has the same effect as the ‘-u’ command-line option. d3564 8 a3571 8 ‘FORCE_COMMON_ALLOCATION’ This command has the same effect as the ‘-d’ command-line option: to make ‘ld’ assign space to common symbols even if a relocatable output file is specified (‘-r’). ‘INHIBIT_COMMON_ALLOCATION’ This command has the same effect as the ‘--no-define-common’ command-line option: to make ‘ld’ omit the assignment of addresses d3574 3 a3576 3 ‘FORCE_GROUP_ALLOCATION’ This command has the same effect as the ‘--force-group-allocation’ command-line option: to make ‘ld’ place section group members like d3578 1 a3578 1 relocatable output file is specified (‘-r’). d3580 3 a3582 3 ‘INSERT [ AFTER | BEFORE ] OUTPUT_SECTION’ This command is typically used in a script specified by ‘-T’ to augment the default ‘SECTIONS’ with, for example, overlays. It d3584 1 a3584 1 OUTPUT_SECTION, and also causes ‘-T’ to not override the default d3588 2 a3589 2 the insertion, since ‘-T’ scripts are parsed before the default linker script, statements in the ‘-T’ script occur before the d3592 3 a3594 3 assignments will be made to ‘-T’ output sections before those in the default script. Here is an example of how a ‘-T’ script using ‘INSERT’ might look: d3606 2 a3607 8 Note that when ‘-T’ is used twice, once to override the default script and once to augment that script using ‘INSERT’ the order of parsing and section assignments apply as for the default script. The script with ‘INSERT’ should be specified _first_ on the command line. ‘NOCROSSREFS(SECTION SECTION ...)’ This command may be used to tell ‘ld’ to issue an error about any d3616 2 a3617 2 The ‘NOCROSSREFS’ command takes a list of output section names. If ‘ld’ detects any cross references between the sections, it reports d3619 1 a3619 1 ‘NOCROSSREFS’ command uses output section names, not input section d3622 2 a3623 2 ‘NOCROSSREFS_TO(TOSECTION FROMSECTION ...)’ This command may be used to tell ‘ld’ to issue an error about any d3626 1 a3626 1 The ‘NOCROSSREFS’ command is useful when ensuring that two or more d3632 1 a3632 1 The ‘NOCROSSREFS_TO’ command takes a list of output section names. d3634 1 a3634 1 sections. If ‘ld’ detects any references to the first section from d3636 1 a3636 1 non-zero exit status. Note that the ‘NOCROSSREFS_TO’ command uses d3639 1 a3639 1 ‘OUTPUT_ARCH(BFDARCH)’ d3642 2 a3643 2 see the architecture of an object file by using the ‘objdump’ program with the ‘-f’ option. d3645 3 a3647 3 ‘LD_FEATURE(STRING)’ This command may be used to modify ‘ld’ behavior. If STRING is ‘"SANE_EXPR"’ then absolute symbols and numbers in a script are d3675 9 a3683 9 ‘SYMBOL = EXPRESSION ;’ ‘SYMBOL += EXPRESSION ;’ ‘SYMBOL -= EXPRESSION ;’ ‘SYMBOL *= EXPRESSION ;’ ‘SYMBOL /= EXPRESSION ;’ ‘SYMBOL <<= EXPRESSION ;’ ‘SYMBOL >>= EXPRESSION ;’ ‘SYMBOL &= EXPRESSION ;’ ‘SYMBOL |= EXPRESSION ;’ d3689 2 a3690 2 The special symbol name ‘.’ indicates the location counter. You may only use this within a ‘SECTIONS’ command. *Note Location Counter::. d3697 2 a3698 2 as statements within a ‘SECTIONS’ command, or as part of an output section description in a ‘SECTIONS’ command. d3717 4 a3720 4 In this example, the symbol ‘floating_point’ will be defined as zero. The symbol ‘_etext’ will be defined as the address following the last ‘.text’ input section. The symbol ‘_bdata’ will be defined as the address following the ‘.text’ output section aligned upward to a 4 byte d3729 2 a3730 2 For ELF targeted ports, define a symbol that will be hidden and won’t be exported. The syntax is ‘HIDDEN(SYMBOL = EXPRESSION)’. d3733 1 a3733 1 ‘HIDDEN’: d3757 5 a3761 5 the link. For example, traditional linkers defined the symbol ‘etext’. However, ANSI C requires that the user be able to use ‘etext’ as a function name without encountering an error. The ‘PROVIDE’ keyword may be used to define a symbol, such as ‘etext’, only if it is referenced but not defined. The syntax is ‘PROVIDE(SYMBOL = EXPRESSION)’. d3763 1 a3763 1 Here is an example of using ‘PROVIDE’ to define ‘etext’: d3774 1 a3774 1 In this example, if the program defines ‘_etext’ (with a leading d3776 1 a3776 1 on the other hand, the program defines ‘etext’ (with no leading d3778 1 a3778 1 If the program references ‘etext’ but does not define it, the linker d3781 1 a3781 1 Note - the ‘PROVIDE’ directive considers a common symbol to be d3783 1 a3783 1 that the ‘PROVIDE’ would create. This is particularly important when d3785 1 a3785 1 ‘__CTOR_LIST__’ as these are often defined as common symbols. d3793 2 a3794 2 Similar to ‘PROVIDE’. For ELF targeted ports, the symbol will be hidden and won’t be exported. d3810 2 a3811 2 prepend or append an underscore, and C++ performs extensive ‘name mangling’. Therefore there might be a discrepancy between the name of a d3827 4 a3830 4 the program’s memory to hold the _value_ of the symbol. The second is that the compiler creates an entry in the program’s symbol table which holds the symbol’s _address_. ie the symbol table contains the address of the block of memory holding the symbol’s value. So for example the d3835 2 a3836 2 creates an entry called ‘foo’ in the symbol table. This entry holds the address of an ‘int’ sized block of memory where the number 1000 is d3840 1 a3840 1 first accesses the symbol table to find the address of the symbol’s d3846 1 a3846 1 looks up the symbol ‘foo’ in the symbol table, gets the address d3852 1 a3852 1 looks up the symbol ‘foo’ in the symbol table, gets its address and d3854 1 a3854 1 variable ‘a’. d3862 1 a3862 1 creates an entry in the symbol table called ‘foo’ which holds the d3884 1 a3884 1 Note the use of the ‘&’ operators. These are correct. Alternatively d3892 1 a3892 1 Note how using this method does not require the use of ‘&’ operators. d3900 1 a3900 1 The ‘SECTIONS’ command tells the linker how to map input sections into d3903 1 a3903 1 The format of the ‘SECTIONS’ command is: d3913 4 a3916 4 • an ‘ENTRY’ command (*note Entry command: Entry Point.) • a symbol assignment (*note Assignments::) • an output section description • an overlay description d3918 2 a3919 2 The ‘ENTRY’ command and symbol assignments are permitted inside the ‘SECTIONS’ command for convenience in using the location counter in d3927 1 a3927 1 If you do not use a ‘SECTIONS’ command in your linker script, the d3975 4 a3978 4 • a symbol assignment (*note Assignments::) • an input section description (*note Input Section::) • data values to include directly (*note Output Section Data::) • a special output section keyword (*note Output Section Keywords::) d3988 3 a3990 3 limited number of sections, such as ‘a.out’, the name must be one of the names supported by the format (‘a.out’, for example, allows only ‘.text’, ‘.data’ or ‘.bss’). If the output format supports any number d3996 1 a3996 1 The output section name ‘/DISCARD/’ is special; *note Output Section d4017 1 a4017 1 • If an output memory REGION is set for the section then it is added d4021 1 a4021 1 • If the MEMORY command has been used to create a list of memory d4023 1 a4023 1 the section is selected to contain it. The section’s output d4027 1 a4027 1 • If no memory regions were specified, or none match the section then d4039 1 a4039 1 are subtly different. The first will set the address of the ‘.text’ d4042 1 a4042 1 strictest alignment of any of the ‘.text’ input sections. d4049 1 a4049 1 This works because ‘ALIGN’ returns the current location counter aligned d4091 1 a4091 1 include all input ‘.text’ sections, you would write: d4093 1 a4093 1 Here the ‘*’ is a wildcard which matches any file name. To exclude a d4098 2 a4099 2 will cause all .ctors sections from all files except ‘crtend.o’ and ‘otherfile.o’ to be included. The EXCLUDE_FILE can also be placed d4109 2 a4110 2 The difference between these is the order in which the ‘.text’ and ‘.rdata’ input sections will appear in the output section. In the first d4112 2 a4113 2 are found in the linker input. In the second example, all ‘.text’ input sections will appear first, followed by all ‘.rdata’ input sections. d4119 4 a4122 4 will cause all ‘.text’ sections from all files except ‘somefile.o’ to be included, while all ‘.rdata’ sections from all files, including ‘somefile.o’, will be included. To exclude the ‘.rdata’ sections from ‘somefile.o’ the example could be modified to: d4145 1 a4145 1 In this example, the output section ‘.text’ will be comprised of any d4147 1 a4147 1 ‘SHF_MERGE’ and ‘SHF_STRINGS’ are set. The output section ‘.text2’ will d4149 1 a4149 1 section header flag ‘SHF_WRITE’ is clear. d4155 1 a4155 1 ‘archive:file’ d4157 1 a4157 1 ‘archive:’ d4159 1 a4159 1 ‘:file’ d4162 1 a4162 1 Either one or both of ‘archive’ and ‘file’ can contain shell d4164 3 a4166 3 single letter followed by a colon is a drive specifier, so ‘c:myfile.o’ is a simple file specification, not ‘myfile.o’ within an archive called ‘c’. ‘archive:file’ filespecs may also be used within an ‘EXCLUDE_FILE’ d4168 2 a4169 2 you cannot extract a file from an archive by using ‘archive:file’ in an ‘INPUT’ command. d4176 1 a4176 1 When you use a file name which is not an ‘archive:file’ specifier and d4179 1 a4179 1 ‘INPUT’ command. If you did not, the linker will attempt to open the d4181 1 a4181 1 that this differs from an ‘INPUT’ command, because the linker will not d4193 1 a4193 1 The file name of ‘*’ seen in many examples is a simple wildcard d4198 1 a4198 1 ‘*’ d4200 1 a4200 1 ‘?’ d4202 3 a4204 3 ‘[CHARS]’ matches a single instance of any of the CHARS; the ‘-’ character may be used to specify a range of characters, as in ‘[a-z]’ to d4206 1 a4206 1 ‘\’ d4210 1 a4210 1 specified on the command line or in an ‘INPUT’ command. The linker does d4217 1 a4217 1 ‘data.o’ rule will not be used: d4223 3 a4225 3 change this by using the ‘SORT_BY_NAME’ keyword, which appears before a wildcard pattern in parentheses (e.g., ‘SORT_BY_NAME(.text*)’). When the ‘SORT_BY_NAME’ keyword is used, the linker will sort the files or d4229 2 a4230 2 ‘SORT_BY_ALIGNMENT’ is similar to ‘SORT_BY_NAME’. ‘SORT_BY_ALIGNMENT’ will sort sections into descending order of d4235 2 a4236 2 ‘SORT_BY_INIT_PRIORITY’ is also similar to ‘SORT_BY_NAME’. ‘SORT_BY_INIT_PRIORITY’ will sort sections into ascending numerical d4238 5 a4242 24 before placing them in the output file. In ‘.init_array.NNNNN’ and ‘.fini_array.NNNNN’, ‘NNNNN’ is the init_priority. In ‘.ctors.NNNNN’ and ‘.dtors.NNNNN’, ‘NNNNN’ is 65535 minus the init_priority. ‘SORT’ is an alias for ‘SORT_BY_NAME’. ‘REVERSE’ indicates that the sorting should be reversed. If used on its own then ‘REVERSE’ implies ‘SORT_BY_NAME’, otherwise it reverses the enclosed ‘SORT..’ command. Note - reverse sorting of alignment is not currently supported. Note - the sorting commands only accept a single wildcard pattern. So for example the following will not work: *(REVERSE(.text* .init*)) To resolve this problem list the patterns individually, like this: *(REVERSE(.text*)) *(REVERSE(.init*)) Note - you can put the ‘EXCLUDE_FILE’ command inside a sorting command, but not the other way around. So for example: *(SORT_BY_NAME(EXCLUDE_FILE(foo) .text*)) will work, but: *(EXCLUDE_FILE(foo) SORT_BY_NAME(.text*)) will not. d4247 1 a4247 1 1. ‘SORT_BY_NAME’ (‘SORT_BY_ALIGNMENT’ (wildcard section pattern)). d4250 1 a4250 1 2. ‘SORT_BY_ALIGNMENT’ (‘SORT_BY_NAME’ (wildcard section pattern)). d4253 4 a4256 4 3. ‘SORT_BY_NAME’ (‘SORT_BY_NAME’ (wildcard section pattern)) is treated the same as ‘SORT_BY_NAME’ (wildcard section pattern). 4. ‘SORT_BY_ALIGNMENT’ (‘SORT_BY_ALIGNMENT’ (wildcard section pattern)) is treated the same as ‘SORT_BY_ALIGNMENT’ (wildcard d4258 1 a4258 7 5. ‘SORT_BY_NAME’ (‘REVERSE’ (wildcard section pattern)) reverse sorts by name. 6. ‘REVERSE’ (‘SORT_BY_NAME’ (wildcard section pattern)) reverse sorts by name. 7. ‘SORT_BY_INIT_PRIORITY’ (‘REVERSE’ (wildcard section pattern)) reverse sorts by init priority. 8. All other nested section sorting commands are invalid. d4264 1 a4264 1 If the section sorting command in linker script isn’t nested, the d4268 2 a4269 2 1. ‘SORT_BY_NAME’ (wildcard section pattern ) with ‘--sort-sections alignment’ is equivalent to ‘SORT_BY_NAME’ (‘SORT_BY_ALIGNMENT’ d4271 2 a4272 2 2. ‘SORT_BY_ALIGNMENT’ (wildcard section pattern) with ‘--sort-section name’ is equivalent to ‘SORT_BY_ALIGNMENT’ (‘SORT_BY_NAME’ d4278 1 a4278 1 ‘SORT_NONE’ disables section sorting by ignoring the command-line d4282 1 a4282 1 the ‘-M’ linker option to generate a map file. The map file shows d4286 5 a4290 5 files. This linker script directs the linker to place all ‘.text’ sections in ‘.text’ and all ‘.bss’ sections in ‘.bss’. The linker will place the ‘.data’ section from all files beginning with an upper case character in ‘.DATA’; for all other files, the linker will place the ‘.data’ section in ‘.data’. d4307 1 a4307 1 named ‘COMMON’. d4309 1 a4309 1 You may use file names with the ‘COMMON’ section just as with any d4315 1 a4315 1 ‘.bss’ section in the output file. For example: d4322 2 a4323 2 In the case of MIPS ELF, the linker uses ‘COMMON’ for standard common symbols and ‘.scommon’ for small common symbols. This permits you to d4327 2 a4328 2 You will sometimes see ‘[COMMON]’ in old linker scripts. This notation is now considered obsolete. It is equivalent to ‘*(COMMON)’. d4336 1 a4336 1 When link-time garbage collection is in use (‘--gc-sections’), it is d4338 2 a4339 2 accomplished by surrounding an input section’s wildcard entry with ‘KEEP()’, as in ‘KEEP(*(.init))’ or ‘KEEP(SORT_BY_NAME(*)(.ctors))’. d4348 7 a4354 7 to read all of the sections from file ‘all.o’ and place them at the start of output section ‘outputa’ which starts at location ‘0x10000’. All of section ‘.input1’ from file ‘foo.o’ follows immediately, in the same output section. All of section ‘.input2’ from ‘foo.o’ goes into output section ‘outputb’, followed by section ‘.input1’ from ‘foo1.o’. All of the remaining ‘.input1’ and ‘.input2’ sections from any files are written to output section ‘outputc’. d4374 1 a4374 1 If an output section’s name is the same as the input section’s name d4380 1 a4380 1 identifiers because they contain a ‘.’ character. d4389 1 a4389 1 ‘BYTE’, ‘SHORT’, ‘LONG’, ‘QUAD’, or ‘SQUAD’ as an output section d4394 1 a4394 1 The ‘BYTE’, ‘SHORT’, ‘LONG’, and ‘QUAD’ commands store one, two, d4399 1 a4399 1 value of the symbol ‘addr’: d4403 1 a4403 1 When using a 64 bit host or target, ‘QUAD’ and ‘SQUAD’ are the same; d4405 2 a4406 2 are 32 bits, an expression is computed as 32 bits. In this case ‘QUAD’ stores a 32 bit value zero extended to 64 bits, and ‘SQUAD’ stores a 32 d4415 1 a4415 11 You can include a zero-terminated string in an output section by using ‘ASCIZ’. The keyword is followed by a string which is stored at the current value of the location counter adding a zero byte at the end. If the string includes spaces it must be enclosed in double quotes. The string may contain ’\n’, ’\r’, ’\t’ and octal numbers. Hex numbers are not supported. For example, this string of 16 characters will create a 17 byte area ASCIZ "This is 16 bytes" Note—these commands only work inside a section description and not d4421 1 a4421 1 You may use the ‘FILL’ command to set the fill pattern for the d4425 1 a4425 1 with the value of the expression, repeated as necessary. A ‘FILL’ d4427 1 a4427 1 the section definition; by including more than one ‘FILL’ statement, you d4432 1 a4432 1 value ‘0x90’: d4435 1 a4435 1 The ‘FILL’ command is similar to the ‘=FILLEXP’ output section d4437 2 a4438 2 ‘FILL’ command, rather than the entire section. If both are used, the ‘FILL’ command takes precedence. *Note Output Section Fill::, for a4440 35 Note - normally the value of ‘expression’ is zero extended to 4 bytes when used to fill gaps. Thus ‘FILL(144)’ will fill a region with repeats of the pattern ‘0 0 0 144’. The value is treated as a big-endian number, so for example ‘FILL(22 * 256 + 23)’ will fill the region with repeats of the pattern ‘0 0 22 23’. If the expression results in a value with more than 4 significant bytes only the least 4 bytes of the value will be used. The above rules do not apply when the ‘expression’ is a simple hexadecimal number. In this case zero extension is not performed and all bytes are significant. So ‘FILL(0x90)’ will fill a region with repeats of ‘0x90’ with no zero bytes, and ‘FILL(0x9192)’ will fill the region with repeats of ‘0x91 0x92’. Zero bytes in a hexadecimal expression are significant even at the start, so ‘FILL(0x0090)’ will fill a region with repeats of ‘0x00 0x90’. Hexadecimal numbers can be longer than 4 bytes, and all of the bytes are significant, so ‘FILL(0x123456789a)’ will fill a region with repeats of the 5 byte sequence ‘0x12 0x34 0x56 0x78 0x9a’. Excess bytes in a hexadecimal value beyond the size of a region will be silently ignored. The above only applies to hexadecimal numbers specified as ‘0x[0-9][a-f][A-F]’. Hexadecimal numbers specified with a ‘$’ prefix, or a ‘h’, ‘H’, ‘x’ or ‘X’ suffix will follow the normal fill value rules. This also applies to expressions that involve hexadecimal numbers, and hexadecimal numbers that have a magnitude suffix. The ‘LINKER_VERSION’ command inserts a string containing the version of the linker at the current point. Note - by default this directive is disabled and will do nothing. It only becomes active if the ‘--enable-linker-version’ command line option is used. Built-in linker scripts for ELF based targets already include this directive in their ‘.comment’ section. d4450 1 a4450 1 ‘CREATE_OBJECT_SYMBOLS’ d4454 1 a4454 1 output section in which the ‘CREATE_OBJECT_SYMBOLS’ command d4460 1 a4460 1 ‘CONSTRUCTORS’ d4466 1 a4466 1 name. For these object file formats, the ‘CONSTRUCTORS’ command d4468 2 a4469 2 section where the ‘CONSTRUCTORS’ command appears. The ‘CONSTRUCTORS’ command is ignored for other object file formats. d4471 3 a4473 3 The symbol ‘__CTOR_LIST__’ marks the start of the global constructors, and the symbol ‘__CTOR_END__’ marks the end. Similarly, ‘__DTOR_LIST__’ and ‘__DTOR_END__’ mark the start and d4478 4 a4481 4 normally calls constructors from a subroutine ‘__main’; a call to ‘__main’ is automatically inserted into the startup code for ‘main’. GNU C++ normally runs destructors either by using ‘atexit’, or directly from the function ‘exit’. d4483 1 a4483 1 For object file formats such as ‘COFF’ or ‘ELF’ which support d4485 2 a4486 2 addresses of global constructors and destructors into the ‘.ctors’ and ‘.dtors’ sections. Placing the following sequence into your d4505 4 a4508 4 the ‘CONSTRUCTORS’ command, use ‘SORT_BY_NAME(CONSTRUCTORS)’ instead. When using the ‘.ctors’ and ‘.dtors’ sections, use ‘*(SORT_BY_NAME(.ctors))’ and ‘*(SORT_BY_NAME(.dtors))’ instead of just ‘*(.ctors)’ and ‘*(.dtors)’. d4525 2 a4526 2 will only create a ‘.foo’ section in the output file if there is a ‘.foo’ section in at least one input file, and if the input sections are d4530 4 a4533 4 for ‘. = 0’, ‘. = . + 0’, ‘. = sym’, ‘. = . + sym’ and ‘. = ALIGN (. != 0, expr, 1)’ when ‘sym’ is an absolute symbol of value 0 defined in the script. This allows you to force output of an empty section with ‘. = .’. d4541 1 a4541 1 The special output section name ‘/DISCARD/’ may be used to discard d4543 1 a4543 1 section named ‘/DISCARD/’ are not included in the output file. d4546 1 a4546 1 ‘SHF_GNU_RETAIN’, which would otherwise have been saved from linker d4549 1 a4549 1 Note, sections that match the ‘/DISCARD/’ output section will be d4574 1 a4574 1 We’ve already described SECTION, ADDRESS, and OUTPUT-SECTION-COMMAND. d4597 1 a4597 1 ‘NOLOAD’ d4600 1 a4600 2 ‘READONLY’ d4602 4 a4605 5 ‘DSECT’ ‘COPY’ ‘INFO’ ‘OVERLAY’ d4610 1 a4610 2 ‘TYPE = TYPE’ d4612 3 a4614 3 output file, type names ‘SHT_PROGBITS’, ‘SHT_STRTAB’, ‘SHT_NOTE’, ‘SHT_NOBITS’, ‘SHT_INIT_ARRAY’, ‘SHT_FINI_ARRAY’, and ‘SHT_PREINIT_ARRAY’ are also allowed for TYPE. It is the user’s d4617 1 a4617 14 Note - the TYPE only is used if some or all of the contents of the section do not have an implicit type of their own. So for example: .foo . TYPE = SHT_PROGBITS { *(.bar) } will set the type of section ‘.foo’ to the type of the section ‘.bar’ in the input files, which may not be the SHT_PROGBITS type. Whereas: .foo . TYPE = SHT_PROGBITS { BYTE(1) } will set the type of ‘.foo’ to SHT_PROGBBITS. If it is necessary to override the type of incoming sections and force the output section type then an extra piece of untyped data will be needed: .foo . TYPE = SHT_PROGBITS { BYTE(1); *(.bar) } ‘READONLY ( TYPE = TYPE )’ d4623 2 a4624 2 the section type. For example, in the script sample below, the ‘ROM’ section is addressed at memory location ‘0’ and does not need to be d4640 1 a4640 1 specified by the ‘AT’ or ‘AT>’ keywords. Specifying a load address is d4643 2 a4644 2 The ‘AT’ keyword takes an expression as an argument. This specifies the exact load address of the section. The ‘AT>’ keyword takes the name d4647 1 a4647 1 the section’s alignment requirements. d4649 1 a4649 1 If neither ‘AT’ nor ‘AT>’ is specified for an allocatable section, d4653 1 a4653 1 • If the section has a specific VMA address, then this is used as the d4656 1 a4656 1 • If the section is not allocatable then its LMA is set to its VMA. d4658 1 a4658 1 • Otherwise if a memory region can be found that is compatible with d4664 1 a4664 1 • If no memory regions have been declared then a default region that d4667 1 a4667 1 • If no suitable region could be found, or there was no previous d4672 4 a4675 4 called ‘.text’, which starts at ‘0x1000’, one called ‘.mdata’, which is loaded at the end of the ‘.text’ section even though its VMA is ‘0x2000’, and one called ‘.bss’ to hold uninitialized data at address ‘0x3000’. The symbol ‘_data’ is defined with the value ‘0x2000’, which d4712 1 a4712 1 You can increase an output section’s alignment by using ALIGN. As an d4735 1 a4735 1 read-write by using the keyword ‘ONLY_IF_RO’ and ‘ONLY_IF_RW’ d4745 1 a4745 1 using ‘>REGION’. *Note MEMORY::. d4758 1 a4758 1 using ‘:PHDR’. *Note PHDRS::. If a section is assigned to one or more d4760 2 a4761 2 those segments as well, unless they use an explicitly ‘:PHDR’ modifier. You can use ‘:NONE’ to tell the linker to not put the section in any d4774 1 a4774 1 You can set the fill pattern for an entire section by using ‘=FILLEXP’. d4779 2 a4780 2 a simple hex number, ie. a string of hex digit starting with ‘0x’ and without a trailing ‘k’ or ‘M’, then an arbitrarily long sequence of hex d4783 3 a4785 9 parentheses or a unary ‘+’, the fill pattern is the four least significant bytes of the value of the expression. If the value is less than four bytes in size then it will be zero extended to four bytes. In all cases, the number is big-endian. Fill Value Fill Pattern 0x90 90 90 90 90 0x0090 00 90 00 90 144 00 00 00 90 d4787 1 a4787 1 You can also change the fill value with a ‘FILL’ command in the d4807 3 a4809 3 Overlays are described using the ‘OVERLAY’ command. The ‘OVERLAY’ command is used within a ‘SECTIONS’ command, like an output section description. The full syntax of the ‘OVERLAY’ command is as follows: d4827 1 a4827 1 Everything is optional except ‘OVERLAY’ (a keyword), and each section d4829 3 a4831 3 within the ‘OVERLAY’ construct are identical to those within the general ‘SECTIONS’ construct (*note SECTIONS::), except that no addresses and no memory regions may be defined for sections within an ‘OVERLAY’. d4839 1 a4839 1 ‘OVERLAY’ as a whole (as with normal section definitions, the load d4844 1 a4844 1 If the ‘NOCROSSREFS’ keyword is used, and there are any references d4850 2 a4851 2 For each section within the ‘OVERLAY’, the linker automatically provides two symbols. The symbol ‘__load_start_SECNAME’ is defined as d4853 1 a4853 1 ‘__load_stop_SECNAME’ is defined as the final load address of the d4863 1 a4863 1 ‘SECTIONS’ construct. d4869 5 a4873 5 This will define both ‘.text0’ and ‘.text1’ to start at address 0x1000. ‘.text0’ will be loaded at address 0x4000, and ‘.text1’ will be loaded immediately after ‘.text0’. The following symbols will be defined if referenced: ‘__load_start_text0’, ‘__load_stop_text0’, ‘__load_start_text1’, ‘__load_stop_text1’. d4875 1 a4875 1 C code to copy overlay ‘.text1’ into the overlay area might look like d4882 1 a4882 1 Note that the ‘OVERLAY’ command is just syntactic sugar, since d4900 2 a4901 2 The linker’s default configuration permits allocation of all available memory. You can override this by using the ‘MEMORY’ command. d4903 1 a4903 1 The ‘MEMORY’ command describes the location and size of blocks of d4911 1 a4911 1 A linker script may contain many uses of the ‘MEMORY’ command, d4913 1 a4913 1 inside a single ‘MEMORY’ command. The syntax for ‘MEMORY’ is: d4924 1 a4924 1 have a distinct name within the ‘MEMORY’ command. However you can add d4937 1 a4937 1 ‘R’ d4939 1 a4939 1 ‘W’ d4941 1 a4941 1 ‘X’ d4943 1 a4943 1 ‘A’ d4945 1 a4945 1 ‘I’ d4947 3 a4949 3 ‘L’ Same as ‘I’ ‘!’ d4953 1 a4953 1 than ‘!’, it will be placed in the memory region. The ‘!’ attribute d4957 3 a4959 3 ‘RW!X’ will match any unmapped section that has either or both of the ‘R’ and ‘W’ attributes, but only as long as the section does not also have the ‘X’ attribute. d4963 2 a4964 2 involve any symbols. The keyword ‘ORIGIN’ may be abbreviated to ‘org’ or ‘o’ (but not, for example, ‘ORG’). d4968 2 a4969 2 must evaluate to a constant. The keyword ‘LENGTH’ may be abbreviated to ‘len’ or ‘l’. d4972 3 a4974 3 regions available for allocation: one starting at ‘0’ for 256 kilobytes, and the other starting at ‘0x40000000’ for four megabytes. The linker will place into the ‘rom’ memory region every section which is not d4977 1 a4977 1 explicitly mapped into a memory region into the ‘ram’ memory region. d4986 1 a4986 1 specific output sections into that memory region by using the ‘>REGION’ d4988 1 a4988 1 named ‘mem’, you would use ‘>mem’ in the output section definition. d4996 1 a4996 1 expression via the ‘ORIGIN(MEMORY)’ and ‘LENGTH(MEMORY)’ functions: d5006 4 a5009 4 The ELF object file format uses “program headers”, also knows as “segments”. The program headers describe how the program should be loaded into memory. You can print them out by using the ‘objdump’ program with the ‘-p’ option. d5019 2 a5020 2 precisely. You may use the ‘PHDRS’ command for this purpose. When the linker sees the ‘PHDRS’ command in the linker script, it will not create d5023 1 a5023 1 The linker only pays attention to the ‘PHDRS’ command when generating d5025 1 a5025 1 ‘PHDRS’. d5027 2 a5028 2 This is the syntax of the ‘PHDRS’ command. The words ‘PHDRS’, ‘FILEHDR’, ‘AT’, and ‘FLAGS’ are keywords. d5036 1 a5036 1 The NAME is used only for reference in the ‘SECTIONS’ command of the d5046 1 a5046 1 sections in the segments. You use the ‘:PHDR’ output section attribute d5052 1 a5052 1 repeat ‘:PHDR’, using it once for each segment which should contain the d5055 1 a5055 1 If you place a section in one or more segments using ‘:PHDR’, then d5057 1 a5057 1 specify ‘:PHDR’ in the same segments. This is for convenience, since d5059 1 a5059 1 segment. You can use ‘:NONE’ to override the default segment and tell d5062 1 a5062 1 You may use the ‘FILEHDR’ and ‘PHDRS’ keywords after the program d5064 2 a5065 2 ‘FILEHDR’ keyword means that the segment should include the ELF file header. The ‘PHDRS’ keyword means that the segment should include the d5067 1 a5067 1 (‘PT_LOAD’), all prior loadable segments must have one of these d5073 1 a5073 1 ‘PT_NULL’ (0) d5076 1 a5076 1 ‘PT_LOAD’ (1) d5080 1 a5080 1 ‘PT_DYNAMIC’ (2) d5083 1 a5083 1 ‘PT_INTERP’ (3) d5087 1 a5087 1 ‘PT_NOTE’ (4) d5090 1 a5090 1 ‘PT_SHLIB’ (5) d5094 1 a5094 1 ‘PT_PHDR’ (6) d5097 1 a5097 1 ‘PT_TLS’ (7) d5105 3 a5107 3 address in memory by using an ‘AT’ expression. This is identical to the ‘AT’ command used as an output section attribute (*note Output Section LMA::). The ‘AT’ command for a program header overrides the output d5111 1 a5111 1 which comprise the segment. You may use the ‘FLAGS’ keyword to d5113 1 a5113 1 integer. It is used to set the ‘p_flags’ field of the program header. d5115 1 a5115 1 Here is an example of ‘PHDRS’. This shows a typical set of program d5154 1 a5154 1 can also use the ‘--version-script’ linker option. d5156 1 a5156 1 The syntax of the ‘VERSION’ command is simply d5160 1 a5160 1 by Sun’s linker in Solaris 2.5. The version script defines a tree of d5192 2 a5193 2 version node defined is ‘VERS_1.1’; it has no other dependencies. The script binds the symbol ‘foo1’ to ‘VERS_1.1’. It reduces a number of d5196 1 a5196 1 whose name begins with ‘old’, ‘original’, or ‘new’ is matched. The d5198 1 a5198 1 matching filenames (also known as “globbing”). However, if you specify d5202 7 a5208 7 Next, the version script defines node ‘VERS_1.2’. This node depends upon ‘VERS_1.1’. The script binds the symbol ‘foo2’ to the version node ‘VERS_1.2’. Finally, the version script defines node ‘VERS_2.0’. This node depends upon ‘VERS_1.2’. The scripts binds the symbols ‘bar1’ and ‘bar2’ are bound to the version node ‘VERS_2.0’. d5213 2 a5214 2 unspecified symbols to a given version node by using ‘global: *;’ somewhere in the version script. Note that it’s slightly crazy to use d5217 1 a5217 1 set exported for an old version. That’s wrong since older versions d5221 2 a5222 2 what they might suggest to the person reading them. The ‘2.0’ version could just as well have appeared in between ‘1.1’ and ‘1.2’. However, d5226 1 a5226 1 version script. Such version script doesn’t assign any versions to d5228 1 a5228 1 which won’t. d5253 1 a5253 1 There are several GNU extensions to Sun’s versioning approach. The d5259 4 a5262 4 in the C source file. This renames the function ‘original_foo’ to be an alias for ‘foo’ bound to the version node ‘VERS_1.1’. The ‘local:’ directive can be used to prevent the symbol ‘original_foo’ from being exported. A ‘.symver’ directive takes precedence over a version script. d5270 1 a5270 1 To do this, you must use multiple ‘.symver’ directives in the source d5278 1 a5278 1 In this example, ‘foo@@’ represents the symbol ‘foo’ bound to the d5280 2 a5281 2 this example would define 4 C functions: ‘original_foo’, ‘old_foo’, ‘old_foo1’, and ‘new_foo’. d5285 2 a5286 2 this symbol will be bound. You can do this with the ‘foo@@@@VERS_2.0’ type of ‘.symver’ directive. You can only declare one version of a d5292 1 a5292 1 ‘old_foo’), or you can use the ‘.symver’ directive to specifically bind d5299 1 a5299 1 The supported ‘lang’s are ‘C’, ‘C++’, and ‘Java’. The linker will d5301 2 a5302 2 according to ‘lang’ before matching them to the patterns specified in ‘version-script-commands’. The default ‘lang’ is ‘C’. d5351 4 a5354 4 As in C, the linker considers an integer beginning with ‘0’ to be octal, and an integer beginning with ‘0x’ or ‘0X’ to be hexadecimal. Alternatively the linker accepts suffixes of ‘h’ or ‘H’ for hexadecimal, ‘o’ or ‘O’ for octal, ‘b’ or ‘B’ for binary and ‘d’ or ‘D’ for decimal. d5358 2 a5359 2 In addition, you can use the suffixes ‘K’ and ‘M’ to scale a constant by ‘1024’ or ‘1024*1024’ respectively. For example, the following all d5367 1 a5367 1 Note - the ‘K’ and ‘M’ suffixes cannot be used in conjunction with d5377 1 a5377 1 ‘CONSTANT(NAME)’ operator, where NAME is one of: d5379 2 a5380 2 ‘MAXPAGESIZE’ The target’s maximum page size. d5382 2 a5383 2 ‘COMMONPAGESIZE’ The target’s default page size. d5407 2 a5408 2 safest to delimit symbols with spaces. For example, ‘A-B’ is one symbol, whereas ‘A - B’ is an expression involving subtraction. d5440 1 a5440 1 The command-line options ‘--orphan-handling’ and ‘--unique’ (*note d5450 4 a5453 4 The special linker variable “dot” ‘.’ always contains the current output location counter. Since the ‘.’ always refers to a location in an output section, it may only appear in an expression within a ‘SECTIONS’ command. The ‘.’ symbol may appear anywhere that an ordinary symbol is d5456 1 a5456 1 Assigning a value to ‘.’ will cause the location counter to be moved. d5473 5 a5477 5 In the previous example, the ‘.text’ section from ‘file1’ is located at the beginning of the output section ‘output’. It is followed by a 1000 byte gap. Then the ‘.text’ section from ‘file2’ appears, also with a 1000 byte gap following before the ‘.text’ section from ‘file3’. The notation ‘= 0x12345678’ specifies what data to write in the gaps (*note d5480 4 a5483 4 Note: ‘.’ actually refers to the byte offset from the start of the current containing object. Normally this is the ‘SECTIONS’ statement, whose start address is 0, hence ‘.’ can be used as an absolute address. If ‘.’ is used inside a section description however, it refers to the d5501 1 a5501 1 The ‘.text’ section will be assigned a starting address of 0x100 and d5503 3 a5505 3 ‘.text’ input sections to fill this area. (If there is too much data, an error will be produced because this would be an attempt to move ‘.’ backwards). The ‘.data’ section will start at 0x500 and it will have an d5507 1 a5507 1 ‘.data’ input sections and before the end of the ‘.data’ output section d5525 1 a5525 1 If the linker needs to place some input section, e.g. ‘.rodata’, not d5527 1 a5527 1 ‘.text’ and ‘.data’. You might think the linker should place ‘.rodata’ d5529 1 a5529 1 particular significance to the linker. As well, the linker doesn’t d5532 2 a5533 2 output section, except for the special case of an assignment to ‘.’. I.e., the linker will place the orphan ‘.rodata’ section as if the d5548 2 a5549 2 This may or may not be the script author’s intention for the value of ‘start_of_data’. One way to influence the orphan section placement is d5551 1 a5551 1 assignment to ‘.’ is setting the start address of a following output d5567 2 a5568 2 Now, the orphan ‘.rodata’ section will be placed between ‘end_of_text’ and ‘start_of_data’. d5578 1 a5578 1 precedence associativity Operators Notes d5580 1 a5580 1 1 left ! - ~ (1) d5584 7 a5590 9 5 left > < <= >= 6 left == != 7 left & 8 left ^ 9 left | 10 left && 11 left || 12 right ? : 13 right += -= *= /= <<= >>= &= |= ^= (2) d5618 1 a5618 1 ‘.’, must be evaluated during section allocation. d5628 2 a5629 2 will cause the error message ‘non constant expression for initial address’. d5639 1 a5639 1 the ‘-r’ option, a further link operation may change the value of a d5645 1 a5645 1 address, such as ‘ADDR’, ‘LOADADDR’, ‘ORIGIN’ and ‘SEGMENT_START’. d5647 2 a5648 2 non-address value, such as ‘LENGTH’. One complication is that unless you set ‘LD_FEATURE ("SANE_EXPR")’ (*note Miscellaneous Commands::), d5650 1 a5650 1 location, for compatibility with older versions of ‘ld’. Expressions d5653 2 a5654 2 definition treat absolute symbols as numbers. If ‘LD_FEATURE ("SANE_EXPR")’ is given, then absolute symbols and numbers are simply d5672 3 a5674 3 both ‘.’ and ‘__executable_start’ are set to the absolute address 0x100 in the first two assignments, then both ‘.’ and ‘__data_start’ are set to 0x10 relative to the ‘.data’ section in the second two d5680 1 a5680 1 • Unary operations on an absolute address or number, and binary d5683 1 a5683 1 • Unary operations on a relative address, and binary operations on d5687 1 a5687 1 • Other binary operations, that is, between two relative addresses d5694 3 a5696 3 • An operation involving only numbers results in a number. • The result of comparisons, ‘&&’ and ‘||’ is also a number. • The result of other binary arithmetic and logical operations on two d5698 2 a5699 2 (after above conversions) is also a number when ‘LD_FEATURE ("SANE_EXPR")’ or inside an output section definition but an d5701 1 a5701 1 • The result of other operations on relative addresses or one d5704 1 a5704 1 • The result of other operations on absolute addresses (after above d5707 1 a5707 1 You can use the builtin function ‘ABSOLUTE’ to force an expression to d5710 1 a5710 1 ‘.data’: d5715 1 a5715 1 If ‘ABSOLUTE’ were not used, ‘_edata’ would be relative to the ‘.data’ d5718 1 a5718 1 Using ‘LOADADDR’ also forces an expression absolute, since this d5730 1 a5730 1 ‘ABSOLUTE(EXP)’ d5737 1 a5737 1 ‘ADDR(SECTION)’ d5740 3 a5742 3 following example, ‘start_of_output_1’, ‘symbol_1’ and ‘symbol_2’ are assigned equivalent values, except that ‘symbol_1’ will be relative to the ‘.output1’ section while the other two will be d5757 12 a5768 12 ‘ALIGN(ALIGN)’ ‘ALIGN(EXP,ALIGN)’ Return the location counter (‘.’) or arbitrary expression aligned to the next ALIGN boundary. The single operand ‘ALIGN’ doesn’t change the value of the location counter—it just does arithmetic on it. The two operand ‘ALIGN’ allows an arbitrary expression to be aligned upwards (‘ALIGN(ALIGN)’ is equivalent to ‘ALIGN(ABSOLUTE(.), ALIGN)’). Here is an example which aligns the output ‘.data’ section to the next ‘0x2000’ byte boundary after the preceding section and sets a variable within the section to the next ‘0x8000’ boundary after the d5776 1 a5776 1 The first use of ‘ALIGN’ in this example specifies the location of d5779 1 a5779 1 use of ‘ALIGN’ is used to defines the value of a symbol. d5781 1 a5781 1 The builtin function ‘NEXT’ is closely related to ‘ALIGN’. d5783 1 a5783 1 ‘ALIGNOF(SECTION)’ d5785 3 a5787 6 has been allocated, or zero if the section has not been allocated. If the section does not exist in the linker script the linker will report an error. If SECTION is ‘NEXT_SECTION’ then ‘ALIGNOF’ will return the alignment of the next allocated section specified in the linker script, or zero if there is no such section. In the following example, the alignment of the ‘.output’ section is stored d5796 2 a5797 2 ‘BLOCK(EXP)’ This is a synonym for ‘ALIGN’, for compatibility with older linker d5801 1 a5801 1 ‘DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)’ d5809 1 a5809 1 expression and ‘DATA_SEGMENT_END’) than the former or not. If the d5814 1 a5814 1 This expression can only be used directly in ‘SECTIONS’ commands, d5819 1 a5819 1 however that ‘-z relro’ protection will not be effective if the d5825 2 a5826 2 ‘DATA_SEGMENT_END(EXP)’ This defines the end of data segment for ‘DATA_SEGMENT_ALIGN’ d5831 6 a5836 6 ‘DATA_SEGMENT_RELRO_END(OFFSET, EXP)’ This defines the end of the ‘PT_GNU_RELRO’ segment when ‘-z relro’ option is used. When ‘-z relro’ option is not present, ‘DATA_SEGMENT_RELRO_END’ does nothing, otherwise ‘DATA_SEGMENT_ALIGN’ is padded so that EXP + OFFSET is aligned to the COMMONPAGESIZE argument given to ‘DATA_SEGMENT_ALIGN’. If d5838 1 a5838 1 ‘DATA_SEGMENT_ALIGN’ and ‘DATA_SEGMENT_END’. Evaluates to the d5840 1 a5840 1 ‘PT_GNU_RELRO’ segment due to section alignment. d5844 1 a5844 1 ‘DEFINED(SYMBOL)’ d5849 2 a5850 2 set a global symbol ‘begin’ to the first location in the ‘.text’ section—but if a symbol called ‘begin’ already existed, its value d5861 1 a5861 1 ‘LENGTH(MEMORY)’ d5864 1 a5864 1 ‘LOADADDR(SECTION)’ d5868 1 a5868 1 ‘LOG2CEIL(EXP)’ d5870 1 a5870 1 ‘LOG2CEIL(0)’ returns 0. d5872 1 a5872 1 ‘MAX(EXP1, EXP2)’ d5875 1 a5875 1 ‘MIN(EXP1, EXP2)’ d5878 1 a5878 1 ‘NEXT(EXP)’ d5880 2 a5881 2 This function is closely related to ‘ALIGN(EXP)’; unless you use the ‘MEMORY’ command to define discontinuous memory for the output d5884 1 a5884 1 ‘ORIGIN(MEMORY)’ d5887 1 a5887 1 ‘SEGMENT_START(SEGMENT, DEFAULT)’ d5889 1 a5889 1 has already been given for this segment (with a command-line ‘-T’ d5891 3 a5893 3 be DEFAULT. At present, the ‘-T’ command-line option can only be used to set the base address for the “text”, “data”, and “bss” sections, but you can use ‘SEGMENT_START’ with any segment name. d5895 1 a5895 1 ‘SIZEOF(SECTION)’ d5897 3 a5899 7 been allocated, or zero if the section has not been allocated. If the section does not exist in the linker script the linker will report an error. If SECTION is ‘NEXT_SECTION’ then ‘SIZEOF’ will return the alignment of the next allocated section specified in the linker script, or zero if there is no such section. In the following example, ‘symbol_1’ and ‘symbol_2’ are assigned identical values: d5910 2 a5911 2 ‘SIZEOF_HEADERS’ Return the size in bytes of the output file’s headers. This is d5917 1 a5917 1 ‘SIZEOF_HEADERS’ builtin function, the linker must compute the d5920 3 a5922 3 additional program headers, it will report an error ‘not enough room for program headers’. To avoid this error, you must avoid using the ‘SIZEOF_HEADERS’ function, or you must rework your linker d5925 1 a5925 1 ‘PHDRS’ command (*note PHDRS::). d5941 1 a5941 1 assignments, or the ‘INPUT’, ‘GROUP’, or ‘VERSION’ commands. d5948 1 a5948 1 File: ld.info, Node: Plugins, Next: Special Sections, Prev: Scripts, Up: Top a5959 3 Plugins are enabled via the use of the ‘-plugin NAME’ command line option. *Note Options::. d5986 2 a5987 2 The GNU ‘ar’ utility now supports a ‘--record-libdeps’ option to embed dependency lists into static libraries as well, and the ‘libdep’ d5989 2 a5990 2 The dependency information is stored as a single string, carrying ‘-l’ and ‘-L’ arguments as they would normally appear in a linker command d5992 1 a5992 1 stored into any archive, even if GNU ‘ar’ is not being used to create d5994 1 a5994 1 ‘__.LIBDEP’. d5996 3 a5998 3 For example, given a library ‘libssl.a’ that depends on another library ‘libcrypto.a’ which may be found in ‘/usr/local/lib’, the ‘__.LIBDEP’ member of ‘libssl.a’ would contain d6003 1 a6003 44 File: ld.info, Node: Special Sections, Next: Machine Dependent, Prev: Plugins, Up: Top 5 Special Sections ****************** When linking ELF format object files ‘ld’ treats some sections in a special, non standard manner. This part of the manual describes these sections. ‘.gnu.warning’ The contents of any section with this name are assumed to be an ascii format warning message. The contents will be displayed to the user if the sections appears in any input file, but the section will not be copied into the output image. If the ‘--fatal-warnings’ option is enabled then the warnings - if any are encountered - will also stop the link from completing. Note - the ‘.gnu.warning’ section is not subject to linker garbage collection or orphan handling. ‘.gnu.warning.SYM’ The contents of any section whoes name starts with the prefix ‘.gnu.warning.’ and then finishes with the name of a symbol is treated in a similar fashion to the ‘.gnu.warning’ section, but only if the named symbol is referenced. So for example the contents of a section called ‘.gnu.warning.foo’ will be displayed as warning message if, and only if, the symbol ‘foo’ is referenced by one or more of the input files. This includes object files pulled in from static libraries, shared objects needed to complete the link and so on. Note - because these warning messages are generated before the linker performs garbage collection (if enabled) it is possible for a warning to be displayed for a symbol that is later removed and then never appears in the final output. ‘.note.gnu.property’ When the linker combines sections of this name it will merge them together according to various rules encoded into the notes themselves. Therefore the contents of the output .note.gnu.property section may not correspond to a simple concatenation of the input sections. If the ‘-Map’ option has been used to request a linker map then details of any property merging will be included in the map. d6005 1 a6005 4  File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Special Sections, Up: Top 6 Machine Dependent Features d6008 2 a6009 2 ‘ld’ has additional features on some platforms; the following sections describe them. Machines where ‘ld’ has no additional functionality are d6014 17 a6030 17 * H8/300:: ‘ld’ and the H8/300 * M68HC11/68HC12:: ‘ld’ and the Motorola 68HC11 and 68HC12 families * ARM:: ‘ld’ and the ARM family * HPPA ELF32:: ‘ld’ and HPPA 32-bit ELF * M68K:: ‘ld’ and the Motorola 68K family * MIPS:: ‘ld’ and the MIPS family * MMIX:: ‘ld’ and MMIX * MSP430:: ‘ld’ and MSP430 * NDS32:: ‘ld’ and NDS32 * Nios II:: ‘ld’ and the Altera Nios II * PowerPC ELF32:: ‘ld’ and PowerPC 32-bit ELF Support * PowerPC64 ELF64:: ‘ld’ and PowerPC64 64-bit ELF Support * S/390 ELF:: ‘ld’ and S/390 ELF Support * SPU ELF:: ‘ld’ and SPU ELF Support * TI COFF:: ‘ld’ and TI COFF * WIN32:: ‘ld’ and WIN32 (cygwin/mingw) * Xtensa:: ‘ld’ and Xtensa Processors d6035 1 a6035 1 6.1 ‘ld’ and the H8/300 d6038 2 a6039 2 For the H8/300, ‘ld’ can perform these global optimizations when you specify the ‘--relax’ command-line option. d6042 1 a6042 1 ‘ld’ finds all ‘jsr’ and ‘jmp’ instructions whose targets are d6044 1 a6044 1 relative ‘bsr’ and ‘bra’ instructions, respectively. d6047 1 a6047 1 ‘ld’ finds all ‘mov.b’ instructions which use the sixteen-bit d6050 1 a6050 1 linker turns ‘mov.b ‘@@’AA:16’ into ‘mov.b ‘@@’AA:8’ whenever the d6053 1 a6053 1 ‘ld’ finds all ‘mov’ instructions which use the register indirect d6057 1 a6057 1 ‘mov.b ‘@@’D:32,ERx’ into ‘mov.b ‘@@’D:16,ERx’ whenever the d6062 1 a6062 1 ‘ld’ finds all bit manipulation instructions like ‘band, bclr, d6064 1 a6064 1 bxor’ which use 32 bit and 16 bit absolute address form, but refer d6066 2 a6067 2 address form. (That is: the linker turns ‘bset #xx:3,‘@@’AA:32’ into ‘bset #xx:3,‘@@’AA:8’ whenever the address AA is in the top d6071 1 a6071 1 ‘ld’ finds all ‘ldc.w, stc.w’ instructions which use the 32 bit d6074 1 a6074 1 turns ‘ldc.w ‘@@’AA:32,ccr’ into ‘ldc.w ‘@@’AA:16,ccr’ whenever the d6080 1 a6080 1 6.2 ‘ld’ and the Motorola 68HC11 and 68HC12 families d6083 1 a6083 1 6.2.1 Linker Relaxation d6086 2 a6087 2 For the Motorola 68HC11, ‘ld’ can perform these global optimizations when you specify the ‘--relax’ command-line option. d6090 1 a6090 1 ‘ld’ finds all ‘jsr’ and ‘jmp’ instructions whose targets are d6092 1 a6092 1 relative ‘bsr’ and ‘bra’ instructions, respectively. d6094 1 a6094 1 ‘ld’ also looks at all 16-bit extended addressing modes and d6099 1 a6099 1 When ‘gcc’ is called with ‘-mrelax’, it can emit group of d6101 1 a6101 1 addressing mode. These instructions consists of ‘bclr’ or ‘bset’ d6104 1 a6104 1 6.2.2 Trampoline Generation d6107 2 a6108 2 For 68HC11 and 68HC12, ‘ld’ can generate trampoline code to call a far function using a normal ‘jsr’ instruction. The linker will also change d6117 1 a6117 1 6.3 ‘ld’ and the ARM family d6120 1 a6120 1 For the ARM, ‘ld’ will generate code stubs to allow functions calls d6122 1 a6122 1 been compiled and assembled with the ‘-mthumb-interwork’ command line d6125 1 a6125 1 option then the ‘--support-old-code’ command-line switch should be given d6131 2 a6132 2 The ‘--thumb-entry’ switch is a duplicate of the generic ‘--entry’ switch, in that it sets the program’s starting address. But it also d6137 1 a6137 1 The ‘--use-nul-prefixed-import-tables’ switch is specifying, that the d6142 1 a6142 1 The ‘--be8’ switch instructs ‘ld’ to generate BE8 format executables. d6144 1 a6144 1 which have been assembled with the ‘-EB’ option. The resulting image d6147 4 a6150 4 The ‘R_ARM_TARGET1’ relocation is typically used for entries in the ‘.init_array’ section. It is interpreted as either ‘R_ARM_REL32’ or ‘R_ARM_ABS32’, depending on the target. The ‘--target1-rel’ and ‘--target1-abs’ switches override the default. d6152 2 a6153 2 The ‘--target2=type’ switch overrides the default definition of the ‘R_ARM_TARGET2’ relocation. Valid values for ‘type’, their meanings, d6155 6 a6160 6 ‘rel’ ‘R_ARM_REL32’ (arm*-*-elf, arm*-*-eabi) ‘abs’ ‘R_ARM_ABS32’ ‘got-rel’ ‘R_ARM_GOT_PREL’ (arm*-*-linux, arm*-*-*bsd) d6162 1 a6162 1 The ‘R_ARM_V4BX’ relocation (defined by the ARM AAELF specification) d6168 3 a6170 3 In the latter case, the switch ‘--fix-v4bx’ must be passed to the linker, which causes v4t ‘BX rM’ instructions to be rewritten as ‘MOV PC,rM’, since v4 processors do not have a ‘BX’ instruction. d6172 1 a6172 1 In the former case, the switch should not be used, and ‘R_ARM_V4BX’ d6175 1 a6175 1 Replace ‘BX rM’ instructions identified by ‘R_ARM_V4BX’ relocations d6187 1 a6187 1 The ‘--use-blx’ switch enables the linker to use ARM/Thumb BLX d6193 1 a6193 1 The ‘--vfp11-denorm-fix’ switch enables a link-time workaround for a d6208 2 a6209 2 workaround by specifying the linker option ‘--vfp-denorm-fix=scalar’ if you are using the VFP11 scalar mode only, or ‘--vfp-denorm-fix=vector’ d6211 1 a6211 1 The default is ‘--vfp-denorm-fix=none’. d6222 1 a6222 1 The ‘--fix-arm1176’ switch enables a link-time workaround for an d6225 1 a6225 1 can be disabled unconditionally by specifying ‘--no-fix-arm1176’. d6227 2 a6228 2 Further information is available in the “ARM1176JZ-S and ARM1176JZF-S Programmer Advice Notice” available on the ARM documentation website at: d6231 1 a6231 1 The ‘--fix-stm32l4xx-629360’ switch enables a link-time workaround d6244 1 a6244 1 ‘--fix-stm32l4xx-629360=none’. If you know you are using buggy d6246 2 a6247 2 linker option ‘--fix-stm32l4xx-629360’, or the equivalent ‘--fix-stm32l4xx-629360=default’. d6265 1 a6265 1 PC-relative branch instruction if the ‘.text’ section is too large. In d6269 1 a6269 1 The ‘--no-enum-size-warning’ switch prevents the linker from warning d6276 2 a6277 2 The ‘--no-wchar-size-warning’ switch prevents the linker from warning when linking object files that specify incompatible EABI ‘wchar_t’ size d6279 1 a6279 1 file using 32-bit ‘wchar_t’ values with another using 16-bit ‘wchar_t’ d6282 1 a6282 1 The ‘--pic-veneer’ switch makes the linker use PIC sequences for d6284 1 a6284 1 PIC. This avoids problems on uClinux targets where ‘--emit-relocs’ is d6291 1 a6291 1 command-line option ‘--stub-group-size=N’. The placement is important d6297 1 a6297 1 The value of ‘N’, the parameter to the ‘--stub-group-size=’ option d6301 1 a6301 1 branches that need them. If the value of ‘N’ is 1 (either +1 or -1) d6303 1 a6303 1 using its built in heuristics. A value of ‘N’ greater than 1 (or d6305 1 a6305 1 service at most ‘N’ bytes from the input sections. d6307 1 a6307 1 The default, if ‘--stub-group-size=’ is not specified, is ‘N = +1’. d6313 1 a6313 1 The ‘--fix-cortex-a8’ switch enables a link-time workaround for an d6316 2 a6317 2 be enabled otherwise by specifying ‘--fix-cortex-a8’, or disabled unconditionally by specifying ‘--no-fix-cortex-a8’. d6322 1 a6322 1 The ‘--fix-cortex-a53-835769’ switch enables a link-time workaround d6325 2 a6326 2 by specifying ‘--fix-cortex-a53-835769’, or disabled unconditionally by specifying ‘--no-fix-cortex-a53-835769’. d6330 1 a6330 1 The ‘--no-merge-exidx-entries’ switch disables the merging of d6333 1 a6333 1 The ‘--long-plt’ option enables the use of 16 byte PLT entries which d6337 1 a6337 1 The ‘--no-apply-dynamic-relocs’ option makes AArch64 linker do not d6341 2 a6342 2 ‘.gnu.sgstubs’. Its start address must be set, either with the command-line option ‘--section-start’ or in a linker script, to indicate d6345 2 a6346 2 The ‘--cmse-implib’ option requests that the import libraries specified by the ‘--out-implib’ and ‘--in-implib’ options are secure d6350 1 a6350 1 The ‘--in-implib=file’ specifies an input import library whose d6352 1 a6352 1 warning is given if no ‘--out-implib’ is given but new symbols have been d6354 1 a6354 1 library. Otherwise, if ‘--out-implib’ is specified, the symbols are d6358 1 a6358 1 libraries, ie. when ‘--cmse-implib’ is specified. d6363 1 a6363 1 6.4 ‘ld’ and HPPA 32-bit ELF Support d6366 1 a6366 1 When generating a shared library, ‘ld’ will by default generate import d6368 1 a6368 1 ‘--multi-subspace’ switch causes ‘ld’ to generate export stubs, and d6372 2 a6373 2 Long branch stubs and import/export stubs are placed by ‘ld’ in stub sections located between groups of input sections. ‘--stub-group-size’ d6379 1 a6379 1 serve one group of input sections. A negative value for ‘N’ chooses d6381 2 a6382 2 offset. Two special values of ‘N’ are recognized, ‘1’ and ‘-1’. These both instruct ‘ld’ to automatically size input section groups for the d6384 1 a6384 1 as other positive or negative values of ‘N’ respectively. d6386 1 a6386 1 Note that ‘--stub-group-size’ does not split input sections. A d6394 1 a6394 1 6.5 ‘ld’ and the Motorola 68K family d6397 5 a6401 5 The ‘--got=TYPE’ option lets you choose the GOT generation scheme. The choices are ‘single’, ‘negative’, ‘multigot’ and ‘target’. When ‘target’ is selected the linker chooses the default GOT generation scheme for the current target. ‘single’ tells the linker to generate a single GOT with entries only at non-negative offsets. ‘negative’ d6404 1 a6404 1 ‘multigot’ allows the linker to generate several GOTs in the output d6412 1 a6412 1 6.6 ‘ld’ and the MIPS family d6415 1 a6415 1 The ‘--insn32’ and ‘--no-insn32’ options control the choice of microMIPS d6417 1 a6417 1 PLT or lazy binding stubs, or in relaxation. If ‘--insn32’ is used, d6419 1 a6419 1 if ‘--no-insn32’ is used, all instruction encodings are used, including d6422 1 a6422 1 The ‘--ignore-branch-isa’ and ‘--no-ignore-branch-isa’ options d6424 1 a6424 1 ‘--ignore-branch-isa’ is used, then the linker accepts any branch d6426 2 a6427 2 calculation, except for some cases of ‘BAL’ instructions which meet relaxation conditions and are converted to equivalent ‘JALX’ d6429 1 a6429 1 if ‘--no-ignore-branch-isa’ is used a check is made causing the loss of d6435 1 a6435 1 6.7 ‘ld’ and MMIX d6438 3 a6440 3 For MMIX, there is a choice of generating ‘ELF’ object files or ‘mmo’ object files when linking. The simulator ‘mmix’ understands the ‘mmo’ format. The binutils ‘objcopy’ utility can translate between the two d6443 1 a6443 1 There is one special section, the ‘.MMIX.reg_contents’ section. d6447 2 a6448 2 ‘.MMIX.reg_contents’ section corresponds to the first allocated global register multiplied by 8. Register ‘$255’ is not included in this d6450 1 a6450 1 ‘Main’ for ‘mmo’ files. d6452 2 a6453 2 Global symbols with the prefix ‘__.MMIX.start.’, for example ‘__.MMIX.start..text’ and ‘__.MMIX.start..data’ are special. The d6463 1 a6463 1 6.8 ‘ld’ and MSP430 d6467 2 a6468 2 ‘-m [mpu type]’ will select an appropriate linker script for selected MPU type. (To get a list of known MPUs just pass ‘-m help’ option to d6474 1 a6474 1 ‘‘.vectors’’ d6477 1 a6477 1 ‘‘.bootloader’’ d6481 1 a6481 1 ‘‘.infomem’’ d6485 2 a6486 2 ‘‘.infomemnobits’’ This is the same as the ‘.infomem’ section except that any code in d6489 2 a6490 2 ‘‘.noinit’’ Denotes a portion of RAM located above ‘.bss’ section. d6494 1 a6494 1 ‘--code-region=[either,lower,upper,none]’ d6499 1 a6499 1 ‘--data-region=[either,lower,upper,none]’ d6505 1 a6505 1 ‘--disable-sec-transformation’ d6507 1 a6507 1 ‘--code-region’ and ‘--data-region’ options. This is useful if you d6515 1 a6515 1 6.9 ‘ld’ and NDS32 d6521 1 a6521 1 ‘‘--m[no-]fp-as-gp’’ d6524 1 a6524 1 ‘‘--mexport-symbols=FILE’’ d6527 1 a6527 1 ‘‘--m[no-]ex9’’ d6530 1 a6530 1 ‘‘--mexport-ex9=FILE’’ d6533 1 a6533 1 ‘‘--mimport-ex9=FILE’’ d6536 1 a6536 1 ‘‘--mupdate-ex9’’ d6539 1 a6539 1 ‘‘--mex9-limit=NUM’’ d6542 1 a6542 1 ‘‘--mex9-loop-aware’’ d6545 1 a6545 1 ‘‘--m[no-]ifc’’ d6548 1 a6548 1 ‘‘--mifc-loop-aware’’ d6554 1 a6554 1 6.10 ‘ld’ and the Altera Nios II d6559 2 a6560 2 which may result in ‘ld’ giving ‘relocation truncated to fit’ errors with very large programs. The command-line option ‘--relax’ enables the d6562 1 a6562 1 space for calls outside the normal ‘call’ and ‘jmpi’ address range. d6567 1 a6567 1 The ‘--relax’ option is enabled by default unless ‘-r’ is also d6569 3 a6571 3 ‘--no-relax’ linker option. You can also disable this optimization locally by using the ‘set .noat’ directive in assembly-language source files, as the linker-inserted trampolines use the ‘at’ register as a d6574 3 a6576 3 Note that the linker ‘--relax’ option is independent of assembler relaxation options, and that using the GNU assembler’s ‘-relax-all’ option interferes with the linker’s more selective call instruction d6582 1 a6582 1 6.11 ‘ld’ and PowerPC 32-bit ELF Support d6586 2 a6587 2 displacement, which may result in ‘ld’ giving ‘relocation truncated to fit’ errors with very large programs. ‘--relax’ enables the generation d6590 2 a6591 2 reachable if an input section exceeds 33M in size. You may combine ‘-r’ and ‘--relax’ to add trampolines in a partial link. In that case both d6595 2 a6596 2 ‘--bss-plt’ Current PowerPC GCC accepts a ‘-msecure-plt’ option that generates d6600 1 a6600 1 ‘ld’ will generate this layout, including stubs to access the PLT, d6602 1 a6602 1 compiled with ‘-msecure-plt’. ‘--bss-plt’ forces the old BSS PLT d6605 3 a6607 3 ‘--secure-plt’ ‘ld’ will use the new PLT and GOT layout if it is linking new ‘-fpic’ or ‘-fPIC’ code, but does not do so automatically when d6612 1 a6612 1 ‘--sdata-got’ d6615 1 a6615 1 of ‘.plt’ must change because the new secure PLT is an initialized d6617 6 a6622 6 ‘.got’ change is more subtle: The new placement allows ‘.got’ to be read-only in applications linked with ‘-z relro -z now’. However, this placement means that ‘.sdata’ cannot always be used in shared libraries, because the PowerPC ABI accesses ‘.sdata’ in shared libraries from the GOT pointer. ‘--sdata-got’ forces the old GOT placement. PowerPC GCC doesn’t use ‘.sdata’ in shared libraries, d6626 2 a6627 2 ‘--emit-stub-syms’ This option causes ‘ld’ to label linker stubs with a local symbol d6630 2 a6631 2 ‘--no-tls-optimize’ PowerPC ‘ld’ normally performs some optimization of code sequences d6638 1 a6638 1 6.12 ‘ld’ and PowerPC64 64-bit ELF Support d6641 1 a6641 1 ‘--stub-group-size’ d6643 2 a6644 2 placed by ‘ld’ in stub sections located between groups of input sections. ‘--stub-group-size’ specifies the maximum size of a d6650 1 a6650 1 serve one group of input sections. A negative value for ‘N’ d6652 2 a6653 2 negative offset. Two special values of ‘N’ are recognized, ‘1’ and ‘-1’. These both instruct ‘ld’ to automatically size input section d6656 1 a6656 1 ‘N’ respectively. d6658 1 a6658 1 Note that ‘--stub-group-size’ does not split input sections. A d6664 2 a6665 2 ‘--emit-stub-syms’ This option causes ‘ld’ to label linker stubs with a local symbol d6668 3 a6670 3 ‘--dotsyms’ ‘--no-dotsyms’ These two options control how ‘ld’ interprets version patterns in a d6673 3 a6675 3 entry symbol with the name prefixed by a dot (‘.’). To properly version a function ‘foo’, the version script thus needs to control both ‘foo’ and ‘.foo’. The option ‘--dotsyms’, on by default, d6677 1 a6677 1 ‘--no-dotsyms’ to disable this feature. d6679 3 a6681 3 ‘--save-restore-funcs’ ‘--no-save-restore-funcs’ These two options control whether PowerPC64 ‘ld’ automatically d6683 1 a6683 1 ‘-Os’ code. The default is to provide any such referenced function d6686 2 a6687 2 ‘--no-tls-optimize’ PowerPC64 ‘ld’ normally performs some optimization of code d6691 3 a6693 3 ‘--tls-get-addr-optimize’ ‘--no-tls-get-addr-optimize’ These options control how PowerPC64 ‘ld’ uses a special stub to d6696 1 a6696 1 ‘__tls_get_addr’ for a given symbol to be resolved by the special d6699 2 a6700 2 __tls_get_addr_opt. Using ‘--tls-get-addr-optimize’ with an older glibc won’t do much besides slow down your applications, but may be d6703 1 a6703 1 glibc. ‘--tls-get-addr-regsave’ forces generation of a stub that d6707 1 a6707 1 stub to __tls_get_addr_opt. ‘--no-tls-get-addr-regsave’ disables d6710 2 a6711 2 ‘--no-opd-optimize’ PowerPC64 ‘ld’ normally removes ‘.opd’ section entries d6713 2 a6714 2 by the action of ‘--gc-sections’ or linker script ‘/DISCARD/’. Use this option to disable ‘.opd’ optimization. d6716 1 a6716 1 ‘--non-overlapping-opd’ d6718 1 a6718 1 ‘.opd’ entries spaced 16 bytes apart, overlapping the third word, d6722 2 a6723 2 ‘--no-toc-optimize’ PowerPC64 ‘ld’ normally removes unused ‘.toc’ section entries. d6736 5 a6740 5 ‘--no-inline-optimize’ PowerPC64 ‘ld’ normally replaces inline PLT call sequences marked with ‘R_PPC64_PLTSEQ’, ‘R_PPC64_PLTCALL’, ‘R_PPC64_PLT16_HA’ and ‘R_PPC64_PLT16_LO_DS’ relocations by a number of ‘nop’s and a direct call when the function is defined locally and can’t be d6744 3 a6746 3 ‘--no-multi-toc’ If given any toc option besides ‘-mcmodel=medium’ or ‘-mcmodel=large’, PowerPC64 GCC generates code for a TOC model d6748 1 a6748 1 limits the total TOC size to 64K. PowerPC64 ‘ld’ extends this limit d6751 3 a6753 3 inter-group calls. ‘ld’ does not split apart input sections, so cannot help if a single input file has a ‘.toc’ section that exceeds 64K, most likely from linking multiple files with ‘ld -r’. d6756 3 a6758 3 ‘--no-toc-sort’ By default, ‘ld’ sorts TOC sections so that those whose file happens to have a section called ‘.init’ or ‘.fini’ are placed d6760 3 a6762 3 PowerPC64 gcc’s ‘-mcmodel=small’, and lastly TOC sections referenced only by code generated with PowerPC64 gcc’s ‘-mcmodel=medium’ or ‘-mcmodel=large’ options. Doing this results d6766 2 a6767 2 ‘--plt-align’ ‘--no-plt-align’ d6770 1 a6770 1 boundary when using ‘--plt-align=’. A negative value may be d6777 2 a6778 2 ‘--plt-static-chain’ ‘--no-plt-static-chain’ d6780 1 a6780 1 chain pointer (r11). ‘ld’ defaults to not loading the static chain d6783 3 a6785 3 ‘--plt-thread-safe’ ‘--no-plt-thread-safe’ With power7’s weakly ordered memory model, it is possible when d6791 1 a6791 1 default, ‘ld’ looks for calls to commonly used functions that d6795 2 a6796 2 ‘--plt-localentry’ ‘--no-localentry’ d6808 1 a6808 1 The option is experimental, use with care. ‘--no-plt-localentry’ d6811 3 a6813 3 ‘--power10-stubs’ ‘--no-power10-stubs’ When PowerPC64 ‘ld’ links input object files containing relocations d6816 1 a6816 1 ‘@@notoc’ PLT calls where ‘r2’ is not known. The power10 notoc d6818 3 a6820 3 ‘--power10-stubs’ and ‘--no-power10-stubs’ allow you to override the linker’s selection of stub instructions. ‘--power10-stubs=auto’ allows the user to select the default auto d6826 1 a6826 1 6.13 ‘ld’ and S/390 ELF Support d6829 2 a6830 2 ‘--s390-pgste’ This option marks the result file with a ‘PT_S390_PGSTE’ segment. d6837 1 a6837 1 6.14 ‘ld’ and SPU ELF Support d6840 1 a6840 1 ‘--plugin’ d6843 2 a6844 2 ‘--no-overlays’ Normally, ‘ld’ recognizes calls to functions within overlay d6846 1 a6846 1 ‘ld’ also provides a built-in overlay manager. This option turns d6849 2 a6850 2 ‘--emit-stub-syms’ This option causes ‘ld’ to label overlay stubs with a local symbol d6853 2 a6854 2 ‘--extra-overlay-stubs’ This option causes ‘ld’ to add overlay call stubs on all function d6858 2 a6859 2 ‘--local-store=lo:hi’ ‘ld’ usually checks that a final executable for SPU fits in the d6861 1 a6861 1 range. Disable the check entirely with ‘--local-store=0:0’. d6863 1 a6863 1 ‘--stack-analysis’ d6867 1 a6867 1 option, ‘ld’ will provide an estimate of maximum stack usage. ‘ld’ d6877 1 a6877 1 link map is requested, detailed information about each function’s d6880 6 a6885 6 ‘--emit-stack-syms’ This option, if given along with ‘--stack-analysis’ will result in ‘ld’ emitting stack sizing symbols for each function. These take the form ‘__stack_’ for global functions, and ‘__stack__’ for static functions. ‘’ is the section id in hex. The value of such symbols is d6887 2 a6888 2 size will be zero, type ‘STT_NOTYPE’, binding ‘STB_LOCAL’, and section ‘SHN_ABS’. d6893 1 a6893 1 6.15 ‘ld’’s Support for Various TI COFF Versions d6896 1 a6896 1 The ‘--format’ switch allows selection of one of the various TI COFF d6899 1 a6899 1 ‘ld’ will read any version or byte order, but the output header format d6905 1 a6905 1 6.16 ‘ld’ and WIN32 (cygwin/mingw) d6908 1 a6908 1 This section describes some of the win32 specific ‘ld’ issues. See d6914 1 a6914 1 libraries, which contains information for linking to dll’s. They d6916 2 a6917 2 archive. The cygwin and mingw ports of ‘ld’ have specific support for creating such libraries provided with the ‘--out-implib’ a6919 29 _Resource only DLLs_ It is possible to create a DLL that only contains resources, ie just a ‘.rsrc’ section, but in order to do so a custom linker script must be used. This is because the built-in default linker scripts will always create ‘.text’ and ‘.idata’ sections, even if there is no input to go into them. The script should look like this, although the ‘OUTPUT_FORMAT’ should be changed to match the desired format. OUTPUT_FORMAT(pei-i386) SECTIONS { . = SIZEOF_HEADERS; . = ALIGN(__section_alignment__); .rsrc __image_base__ + __section_alignment__ : ALIGN(4) { KEEP (*(.rsrc)) KEEP (*(.rsrc$*)) } /DISCARD/ : { *(*) } } With this script saved to a file called, eg ‘rsrc.ld’, a command line like this can be used to create the resource only DLL ‘rsrc.dll’ from an input file called ‘rsrc.o’: ld -dll --subsystem windows -e 0 -s rsrc.o -o rsrc.dll -T rsrc.ld d6921 1 a6921 1 The cygwin/mingw ‘ld’ has several ways to export symbols for dll’s. d6924 1 a6924 1 By default ‘ld’ exports symbols with the auto-export d6928 5 a6932 5 • –export-all-symbols [This is the default] • –exclude-symbols • –exclude-libs • –exclude-modules-for-implib • –version-script d6934 1 a6934 1 When auto-export is in operation, ‘ld’ will export all the d6936 1 a6936 1 the exception of a few symbols known to belong to the system’s d6938 1 a6938 1 export all of a DLL’s symbols, which may include private d6941 1 a6941 1 symbols out from the list for exporting. The ‘--output-def’ d6945 1 a6945 1 If ‘--export-all-symbols’ is not given explicitly on the d6949 2 a6950 2 • A DEF file is used. • Any symbol in any object file was marked with the d6957 3 a6959 3 ‘.def’ and is added as any other object file to the linker’s command line. The file’s name must end in ‘.def’ or ‘.DEF’. d6964 1 a6964 1 unless the ‘--export-all-symbols’ option is also used. d6967 1 a6967 1 ‘xyz.dll’: d6982 12 a6993 12 ‘_bar’ is an alias for the second. The fourth symbol, ‘another_foo’ is resolved by "forwarding" to another module and treating it as an alias for ‘afoo’ exported from the DLL ‘abc.dll’. The final symbol ‘var1’ is declared to be a data object. The ‘doo’ symbol in export library is an alias of ‘foo’, which gets the string name in export table ‘foo2’. The ‘eoo’ symbol is an data export symbol, which gets in export table the name ‘var1’. The optional ‘LIBRARY ’ command indicates the _internal_ name of the output DLL. If ‘’ does not include a suffix, the default library suffix, ‘.DLL’ is appended. d6996 3 a6998 3 than a library, the ‘NAME ’ command should be used instead of ‘LIBRARY’. If ‘’ does not include a suffix, the default executable suffix, ‘.EXE’ is appended. d7000 2 a7001 2 With either ‘LIBRARY ’ or ‘NAME ’ the optional specification ‘BASE = ’ may be used to specify a d7004 1 a7004 1 If neither ‘LIBRARY ’ nor ‘NAME ’ is specified, or d7015 6 a7020 6 Declares ‘’ as an exported symbol from the DLL, or declares ‘’ as an exported alias for ‘’; or declares ‘’ as a "forward" alias for the symbol ‘’ in the DLL ‘’. Optionally, the symbol may be exported by the specified ordinal ‘’ alias. The optional ‘’ is the to be used string in d7025 1 a7025 1 ‘NONAME’: Do not put the symbol name in the DLL’s export d7030 1 a7030 1 ‘PRIVATE’ is also specified. d7032 1 a7032 1 ‘DATA’: The symbol is a variable or object, rather than a d7034 2 a7035 2 reference to ‘foo’ as the symbol ‘_imp__foo’ (ie, ‘foo’ must be resolved as ‘*_imp__foo’). d7037 3 a7039 3 ‘CONSTANT’: Like ‘DATA’, but put the undecorated ‘foo’ as well as ‘_imp__foo’ into the import library. Both refer to the read-only import address table’s pointer to the variable, not d7041 1 a7041 1 code fails to add the ‘dllimport’ attribute and also fails to d7045 1 a7045 1 ‘PRIVATE’: Put the symbol in the DLL’s export table, but do d7048 1 a7048 1 the ‘LoadLibrary/GetProcAddress’ API at runtime or by using d7055 2 a7056 2 While linking a shared dll, ‘ld’ is able to create a DEF file with the ‘--output-def ’ command-line option. d7069 1 a7069 1 unless the ‘--export-all-symbols’ option is also used. d7084 2 a7085 2 declaration completely. See ‘--enable-auto-import’ and ‘automatic data imports’ for more information. d7096 1 a7096 1 This feature is enabled with the ‘--enable-auto-import’ d7098 1 a7098 1 cygwin/mingw. The ‘--enable-auto-import’ option itself now serves d7100 1 a7100 1 linked objects trigger the feature’s use. d7105 2 a7106 2 "variable ’’ can’t be auto-imported. Please read the documentation for ld’s ‘--enable-auto-import’ for details." d7108 1 a7108 1 The ‘--enable-auto-import’ documentation explains why this error d7115 1 a7115 1 variable and an offset (_addend_) within the variable–to specify a d7123 1 a7123 1 The ‘--enable-runtime-pseudo-relocs’ switch allows these references d7129 1 a7129 1 is only necessary on the developer’s platform; the compiled result d7132 1 a7132 1 ‘--enable-runtime-pseudo-relocs’ is not the default; it must be d7136 1 a7136 1 The cygwin/mingw ports of ‘ld’ support the direct linking, d7140 1 a7140 1 large libraries or applications. When ‘ld’ creates an import lib, d7143 1 a7143 1 overhead involved in storing, loading, and processing so many bfd’s d7149 1 a7149 1 than ‘-L’ and ‘-l’, because ‘ld’ already searches for a number of d7151 1 a7151 1 developer’s perspective is an understanding of this search, in d7154 1 a7154 1 For instance, when ld is called with the argument ‘-lxxx’ it will d7168 5 a7172 5 (*) Actually, this is not ‘cygxxx.dll’ but in fact is ‘xxx.dll’, where ‘’ is set by the ‘ld’ option ‘--dll-search-prefix=’. In the case of cygwin, the standard gcc spec file includes ‘--dll-search-prefix=cyg’, so in effect we actually search for ‘cygxxx.dll’. d7175 1 a7175 1 other ‘’es, although at present only cygwin makes use of d7177 1 a7177 1 conflicts among dll’s built for the various win32/un*x d7181 2 a7182 2 The generic cygwin/mingw path layout uses a ‘bin’ directory for applications and dll’s and a ‘lib’ directory for the import d7194 1 a7194 1 1. Use the dll directly by adding the ‘bin’ path to the link line d7197 3 a7199 3 However, as the dll’s often have version numbers appended to their names (‘cygncurses-5.dll’) this will often fail, unless one specifies ‘-L../bin -lncurses-5’ to include the version. Import d7202 1 a7202 1 2. Create a symbolic link from the dll to a file in the ‘lib’ d7223 1 a7223 1 ‘--enable-runtime-pseudo-relocs’ is used. d7233 1 a7233 1 the import library (which otherwise contains only bfd’s for d7239 1 a7239 1 is critical when linking against OS-supplied dll’s (eg, the win32 d7254 2 a7255 2 names. A symbol ‘foo’ will be exported as ‘foo’, but it can also be exported as ‘_foo’ by using special directives in the d7266 1 a7266 1 The line ‘_foo = foo’ maps the symbol ‘foo’ to ‘_foo’. d7279 2 a7280 2 cygwin kernel does this regularly. A symbol ‘_foo’ can be exported as ‘foo’ but not as ‘_foo’ by using special d7289 2 a7290 2 The line ‘_foo = foo’ maps the exported symbol ‘foo’ to ‘_foo’. d7293 1 a7293 1 unless the ‘--export-all-symbols’ command-line option is used. If, d7296 1 a7296 1 are not being renamed, and do _not_ use the ‘--export-all-symbols’ d7298 1 a7298 1 use ‘--export-all-symbols’ to handle the other symbols, then the d7300 1 a7300 1 will be exported. In effect, you’d be aliasing those symbols, not d7308 1 a7308 1 • Definition is searched for in objects and libraries, d7310 1 a7310 1 • Definition is searched for only in other objects, not in d7312 1 a7312 1 • No search; the symbol is an alias. This form is not presently d7322 2 a7323 2 GNU-specific commands carried in the object file’s ‘.drectve’ section, which are recognized by ‘ld’ and respected when laying out d7332 1 a7332 1 6.17 ‘ld’ and Xtensa Processors d7335 2 a7336 2 The default ‘ld’ behavior for Xtensa processors is to interpret ‘SECTIONS’ commands so that lists of explicitly named sections in a d7348 1 a7348 1 ‘ld’ may interleave some of the ‘.literal’ and ‘.text’ sections from d7351 3 a7353 3 ‘.literal’ sections from an initial group of files followed by the ‘.text’ sections of that group of files. Then, the ‘.literal’ sections from the rest of the files and the ‘.text’ sections from the rest of the d7356 1 a7356 1 Relaxation is enabled by default for the Xtensa version of ‘ld’ and d7359 1 a7359 1 literal will be removed and all the ‘L32R’ instructions that use it will d7361 1 a7361 1 the replacement literal is within the offset range of all the ‘L32R’ d7363 2 a7364 2 from assembler-generated “longcall” sequences of ‘L32R’/‘CALLXN’ when the target functions are within range of direct ‘CALLN’ instructions. d7367 4 a7370 4 optimized to a direct call, the linker will change the ‘CALLXN’ instruction to a ‘CALLN’ instruction, remove the ‘L32R’ instruction, and remove the literal referenced by the ‘L32R’ instruction if it is not used for anything else. Removing the ‘L32R’ instruction always reduces d7375 2 a7376 2 a no-op in place of the ‘L32R’ instruction that was removed. If code size is more important than performance, the ‘--size-opt’ option can be d7384 1 a7384 1 ‘--size-opt’ d7391 2 a7392 2 ‘--abi-windowed’ ‘--abi-call0’ d7397 1 a7397 1 ‘.xtensa.info’ section of the first input object. A warning is d7404 1 a7404 1 7 BFD d7413 1 a7413 1 object file formats available. You can use ‘objdump -i’ (*note objdump: d7437 1 a7437 1 7.1 How It Works: An Outline of BFD d7443 1 a7443 1 the object file’s data structures. d7448 1 a7448 1 BFD back end provides a routine for converting between the object file’s d7454 1 a7454 1 writes the output file’s symbol table, another BFD back end routine is d7466 1 a7466 1 7.1.1 Information Loss d7472 3 a7474 3 of this is alignment information in ‘b.out’. There is nowhere in an ‘a.out’ format file to store alignment information on the contained data, so when a file is linked from ‘b.out’ and an ‘a.out’ image is d7482 1 a7482 1 (e.g., ‘a.out’) or has sections without names (e.g., the Oasys format), d7505 1 a7505 1 or copying big endian COFF to little endian COFF, or ‘a.out’ to ‘b.out’. d7512 1 a7512 1 7.1.2 The BFD canonical object-file format d7526 2 a7527 2 magic numbers is not stored here—only the magic numbers’ meaning, so a ‘ZMAGIC’ file would have both the demand pageable bit and the d7534 1 a7534 1 the section’s original address in the object file, size and d7547 1 a7547 1 that symbol is accessible. ‘ld’ can operate on a collection of d7553 1 a7553 1 symbol information is not worth retaining; in ‘a.out’, type d7593 1 a7593 1 8 Reporting Bugs d7596 1 a7596 1 Your bug reports play an essential role in making ‘ld’ reliable. d7600 2 a7601 2 is to help the entire community by making the next version of ‘ld’ work better. Bug reports are your contribution to the maintenance of ‘ld’. d7614 1 a7614 1 8.1 Have You Found a Bug? d7620 2 a7621 2 • If the linker gets a fatal signal, for any input whatever, that is a ‘ld’ bug. Reliable linkers never crash. d7623 1 a7623 1 • If ‘ld’ produces an error message for valid input, that is a bug. d7625 1 a7625 1 • If ‘ld’ does not produce an error message for invalid input, that d7629 2 a7630 2 • If you are an experienced user of linkers, your suggestions for improvement of ‘ld’ are welcome in any case. d7635 1 a7635 1 8.2 How to Report Bugs d7639 1 a7639 1 If you obtained ‘ld’ from a support organization, we recommend you d7643 1 a7643 1 individuals in the file ‘etc/SERVICE’ in the GNU Emacs distribution. d7645 1 a7645 1 Otherwise, send bug reports for ‘ld’ to d7666 2 a7667 2 Sometimes people give a few sketchy facts and ask, “Does this ring a bell?” This cannot help us fix a bug, so it is basically useless. We d7673 2 a7674 2 • The version of ‘ld’. ‘ld’ announces it if you start it with the ‘--version’ argument. d7677 1 a7677 1 looking for the bug in the current version of ‘ld’. d7679 2 a7680 2 • Any patches you may have applied to the ‘ld’ source, including any patches made to the ‘BFD’ library. d7682 1 a7682 1 • The type of machine you are using, and the operating system name d7685 2 a7686 2 • What compiler (and its version) was used to compile ‘ld’—e.g. “‘gcc-2.7’”. d7688 1 a7688 1 • The command arguments you gave the linker to link your example and d7696 1 a7696 1 • A complete input file, or set of input files, that will reproduce d7705 2 a7706 2 If the source files were assembled using ‘gas’ or compiled using ‘gcc’, then it may be OK to send the source files rather than the d7708 2 a7709 2 ‘gas’ or ‘gcc’ was used to produce the object files. Also say how ‘gas’ or ‘gcc’ were configured. d7711 2 a7712 2 • A description of what behavior you observe that you believe is incorrect. For example, “It gets a fatal signal.” d7714 1 a7714 1 Of course, if the bug is that ‘ld’ gets a fatal signal, then we d7721 1 a7721 1 such as, your copy of ‘ld’ is out of sync, or you have encountered d7729 2 a7730 2 • If you wish to suggest changes to the ‘ld’ source, send us context diffs, as generated by ‘diff’ with the ‘-u’, ‘-c’, or ‘-p’ option. d7732 1 a7732 1 discuss something in the ‘ld’ source, refer to it by context, not d7741 1 a7741 1 • A description of the envelope of the bug. d7761 1 a7761 1 • A patch for the bug. d7769 1 a7769 1 Sometimes with a program as complicated as ‘ld’ it is very hard to d7779 1 a7779 1 • A guess about what the bug is or what it depends on. d7790 1 a7790 1 To aid users making the transition to GNU ‘ld’ from the MRI linker, ‘ld’ d7794 1 a7794 1 scripting language otherwise used with ‘ld’. GNU ‘ld’ supports the most d7797 1 a7797 1 In general, MRI scripts aren’t of much use with the ‘a.out’ object d7802 1 a7802 1 ‘-c’ command-line option. d7807 1 a7807 1 MRI-compatible script begins with an unrecognized keyword, ‘ld’ issues a d7810 1 a7810 1 Lines beginning with ‘*’ are comments. d7813 1 a7813 1 lower case; for example, ‘chip’ is the same as ‘CHIP’. The following d7816 3 a7818 3 ‘ABSOLUTE SECNAME’ ‘ABSOLUTE SECNAME, SECNAME, ... SECNAME’ Normally, ‘ld’ includes in the output file all sections from all d7820 2 a7821 2 the ‘ABSOLUTE’ command to restrict the sections that will be present in your output program. If the ‘ABSOLUTE’ command is used d7823 1 a7823 1 ‘ABSOLUTE’ commands will appear in the linker output. You can d7825 1 a7825 1 line, or using ‘LOAD’) to resolve addresses in the output file. d7827 1 a7827 1 ‘ALIAS OUT-SECNAME, IN-SECNAME’ d7833 1 a7833 1 ‘ALIGN SECNAME = EXPRESSION’ d7837 1 a7837 1 ‘BASE EXPRESSION’ d7841 2 a7842 2 ‘CHIP EXPRESSION’ ‘CHIP EXPRESSION, EXPRESSION’ d7845 2 a7846 2 ‘END’ This command does nothing whatever; it’s only accepted for d7849 3 a7851 3 ‘FORMAT OUTPUT-FORMAT’ Similar to the ‘OUTPUT_FORMAT’ command in the more general linker language, but restricted to S-records, if OUTPUT-FORMAT is ‘S’ d7853 1 a7853 1 ‘LIST ANYTHING...’ d7855 1 a7855 1 ‘ld’ command-line option ‘-M’. d7857 1 a7857 1 The keyword ‘LIST’ may be followed by anything on the same line, d7860 2 a7861 2 ‘LOAD FILENAME’ ‘LOAD FILENAME, FILENAME, ... FILENAME’ d7863 1 a7863 1 same effect as specifying FILENAME directly on the ‘ld’ command d7866 8 a7873 8 ‘NAME OUTPUT-NAME’ OUTPUT-NAME is the name for the program produced by ‘ld’; the MRI-compatible command ‘NAME’ is equivalent to the command-line option ‘-o’ or the general script language command ‘OUTPUT’. ‘ORDER SECNAME, SECNAME, ... SECNAME’ ‘ORDER SECNAME SECNAME SECNAME’ Normally, ‘ld’ orders the sections in its output file in the order d7876 1 a7876 1 ‘ORDER’ command. The sections you list with ‘ORDER’ will appear d7879 3 a7881 3 ‘PUBLIC NAME=EXPRESSION’ ‘PUBLIC NAME,EXPRESSION’ ‘PUBLIC NAME EXPRESSION’ d7885 4 a7888 4 ‘SECT SECNAME, EXPRESSION’ ‘SECT SECNAME=EXPRESSION’ ‘SECT SECNAME EXPRESSION’ You can use any of these three forms of the ‘SECT’ command to d7890 1 a7890 1 have more than one ‘SECT’ statement for the same SECNAME, only the d7901 1 a7901 1 Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. d7910 1 a7910 1 functional and useful document “free” in the sense of freedom: to d7917 1 a7917 1 This License is a kind of “copyleft”, which means that derivative d7938 2 a7939 2 “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept d7943 1 a7943 1 A “Modified Version” of the Document means any work containing the d7947 1 a7947 1 A “Secondary Section” is a named appendix or a front-matter section d7949 1 a7949 1 publishers or authors of the Document to the Document’s overall d7958 1 a7958 1 The “Invariant Sections” are certain Secondary Sections whose d7966 1 a7966 1 The “Cover Texts” are certain short passages of text that are d7972 1 a7972 1 A “Transparent” copy of the Document means a machine-readable copy, d7984 1 a7984 1 “Transparent” is called “Opaque”. d7997 1 a7997 1 The “Title Page” means, for a printed book, the title page itself, d8000 3 a8002 3 works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. d8004 1 a8004 1 The “publisher” means any person or entity that distributes copies d8007 1 a8007 1 A section “Entitled XYZ” means a named subunit of the Document d8011 3 a8013 3 “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according d8043 1 a8043 1 the Document’s license notice requires Cover Texts, you must d8115 1 a8115 1 Sections and required Cover Texts given in the Document’s d8120 1 a8120 1 I. Preserve the section Entitled “History”, Preserve its Title, d8123 1 a8123 1 Title Page. If there is no section Entitled “History” in the d8133 1 a8133 1 “History” section. You may omit a network location for a work d8138 1 a8138 1 K. For any section Entitled “Acknowledgements” or “Dedications”, d8147 1 a8147 1 M. Delete any section Entitled “Endorsements”. Such a section d8151 1 a8151 1 “Endorsements” or to conflict in title with any Invariant d8160 1 a8160 1 titles to the list of Invariant Sections in the Modified Version’s d8164 1 a8164 1 You may add a section Entitled “Endorsements”, provided it contains d8166 3 a8168 3 parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. d8206 4 a8209 4 “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.” d8230 1 a8230 1 storage or distribution medium, is called an “aggregate” if the d8232 1 a8232 1 legal rights of the compilation’s users beyond what the individual d8239 1 a8239 1 of the entire aggregate, the Document’s Cover Texts may be placed d8261 2 a8262 2 If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to d8303 1 a8303 1 version of this License “or any later version” applies to it, you d8311 1 a8311 1 proxy’s public statement of acceptance of a version permanently d8316 1 a8316 1 “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any d8320 1 a8320 1 A “Massive Multiauthor Collaboration” (or “MMC”) contained in the d8324 1 a8324 1 “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 d8330 1 a8330 1 “Incorporate” means to publish or republish a Document, in whole or d8333 1 a8333 1 An MMC is “eligible for relicensing” if it is licensed under this d8360 1 a8360 1 Texts, replace the “with...Texts.” line with this: d8385 7 a8391 7 * -(: Options. (line 1218) * --accept-unknown-input-arch: Options. (line 1236) * --add-needed: Options. (line 1267) * --add-stdcall-alias: Options. (line 2453) * --allow-multiple-definition: Options. (line 1646) * --allow-shlib-undefined: Options. (line 1652) * --as-needed: Options. (line 1246) d8393 3 a8395 3 * --auxiliary=NAME: Options. (line 308) * --bank-window: Options. (line 2949) * --base-file: Options. (line 2458) d8397 1 a8397 1 * --branch-stub on C-SKY: Options. (line 2921) d8399 3 a8401 3 * --build-id: Options. (line 2405) * --build-id=STYLE: Options. (line 2405) * --check-sections: Options. (line 1349) d8404 9 a8412 10 * --compact-branches: Options. (line 2994) * --compress-debug-sections=none: Options. (line 2354) * --compress-debug-sections=zlib: Options. (line 2354) * --compress-debug-sections=zlib-gabi: Options. (line 2354) * --compress-debug-sections=zlib-gnu: Options. (line 2354) * --compress-debug-sections=zstd: Options. (line 2354) * --copy-dt-needed-entries: Options. (line 1361) * --cref: Options. (line 1381) * --ctf-share-types: Options. (line 1405) * --ctf-variables: Options. (line 1394) d8414 5 a8418 5 * --default-imported-symver: Options. (line 1702) * --default-script=SCRIPT: Options. (line 743) * --default-symver: Options. (line 1698) * --defsym=SYMBOL=EXP: Options. (line 1449) * --demangle[=STYLE]: Options. (line 1469) d8420 8 a8427 9 * --dependency-file=DEPFILE: Options. (line 609) * --disable-auto-image-base: Options. (line 2635) * --disable-auto-import: Options. (line 2774) * --disable-large-address-aware: Options. (line 2583) * --disable-linker-version: Options. (line 184) * --disable-long-section-names: Options. (line 2468) * --disable-multiple-abs-defs: Options. (line 1500) * --disable-new-dtags: Options. (line 2328) * --disable-runtime-pseudo-reloc: Options. (line 2787) d8429 5 a8433 5 * --disable-stdcall-fixup: Options. (line 2490) * --discard-all: Options. (line 836) * --discard-locals: Options. (line 840) * --dll: Options. (line 2463) * --dll-search-prefix: Options. (line 2641) d8435 11 a8445 11 * --dsbt-index: Options. (line 2908) * --dsbt-size: Options. (line 2903) * --dynamic-linker=FILE: Options. (line 1482) * --dynamic-list-cpp-new: Options. (line 1341) * --dynamic-list-cpp-typeinfo: Options. (line 1345) * --dynamic-list-data: Options. (line 1338) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 1325) * --dynamicbase: Options. (line 2831) * --eh-frame-hdr: Options. (line 2315) * --embedded-relocs: Options. (line 1495) * --emit-relocs: Options. (line 669) d8450 21 a8470 24 * --enable-auto-image-base: Options. (line 2626) * --enable-auto-import: Options. (line 2650) * --enable-extra-pe-debug: Options. (line 2792) * --enable-linker-version: Options. (line 174) * --enable-long-section-names: Options. (line 2468) * --enable-new-dtags: Options. (line 2328) * --enable-non-contiguous-regions: Options. (line 188) * --enable-non-contiguous-regions-warnings: Options. (line 220) * --enable-reloc-section: Options. (line 2890) * --enable-runtime-pseudo-reloc: Options. (line 2779) * --enable-stdcall-fixup: Options. (line 2490) * --entry=ENTRY: Options. (line 226) * --error-execstack: Options. (line 2176) * --error-handling-script=SCRIPTNAME: Options. (line 1679) * --error-rwx-segments: Options. (line 2219) * --error-unresolved-symbols: Options. (line 2251) * --exclude-all-symbols: Options. (line 2543) * --exclude-libs: Options. (line 236) * --exclude-modules-for-implib: Options. (line 247) * --exclude-symbols: Options. (line 2537) * --export-all-symbols: Options. (line 2513) * --export-dynamic: Options. (line 260) * --export-dynamic-symbol-list=FILE: Options. (line 296) * --export-dynamic-symbol=GLOB: Options. (line 287) d8472 3 a8474 3 * --fatal-warnings: Options. (line 1504) * --file-alignment: Options. (line 2547) * --filter=NAME: Options. (line 329) d8481 4 a8484 4 * --force-dynamic: Options. (line 678) * --force-exe-suffix: Options. (line 1516) * --force-group-allocation: Options. (line 1441) * --forceinteg: Options. (line 2839) d8487 3 a8489 3 * --gc-keep-exported: Options. (line 1564) * --gc-sections: Options. (line 1526) * --got: Options. (line 2961) d8491 7 a8497 7 * --gpsize=VALUE: Options. (line 361) * --hash-size=NUMBER: Options. (line 2338) * --hash-style=STYLE: Options. (line 2346) * --heap: Options. (line 2553) * --help: Options. (line 1592) * --high-entropy-va: Options. (line 2823) * --ignore-branch-isa: Options. (line 2982) d8499 2 a8500 2 * --image-base: Options. (line 2560) * --imagic: Options. (line 3031) d8502 2 a8503 2 * --insert-timestamp: Options. (line 2874) * --insn32: Options. (line 2973) d8505 7 a8511 7 * --just-symbols=FILE: Options. (line 700) * --kill-at: Options. (line 2569) * --large-address-aware: Options. (line 2574) * --ld-generated-unwind-info: Options. (line 2321) * --leading-underscore: Options. (line 2507) * --library-path=DIR: Options. (line 419) * --library=NAMESPEC: Options. (line 386) d8514 4 a8517 4 * --major-image-version: Options. (line 2590) * --major-os-version: Options. (line 2595) * --major-subsystem-version: Options. (line 2599) * --max-cache-size=SIZE: Options. (line 2400) d8519 3 a8521 3 * --minor-image-version: Options. (line 2604) * --minor-os-version: Options. (line 2609) * --minor-subsystem-version: Options. (line 2613) d8524 5 a8528 5 * --nmagic: Options. (line 582) * --nmagic <1>: Options. (line 3021) * --no-accept-unknown-input-arch: Options. (line 1236) * --no-add-needed: Options. (line 1267) * --no-allow-shlib-undefined: Options. (line 1652) d8530 8 a8537 8 * --no-as-needed: Options. (line 1246) * --no-bind: Options. (line 2860) * --no-check-sections: Options. (line 1349) * --no-compact-branches: Options. (line 2995) * --no-copy-dt-needed-entries: Options. (line 1361) * --no-ctf-variables: Options. (line 1394) * --no-define-common: Options. (line 1425) * --no-demangle: Options. (line 1469) d8539 2 a8540 2 * --no-dynamic-linker: Options. (line 1489) * --no-eh-frame-hdr: Options. (line 2315) d8542 2 a8543 2 * --no-export-dynamic: Options. (line 260) * --no-fatal-warnings: Options. (line 1504) d8547 2 a8548 2 * --no-gc-sections: Options. (line 1526) * --no-ignore-branch-isa: Options. (line 2983) d8551 1 a8551 1 * --no-insn32: Options. (line 2974) d8553 4 a8556 4 * --no-isolation: Options. (line 2850) * --no-keep-memory: Options. (line 1629) * --no-leading-underscore: Options. (line 2507) * --no-merge-exidx-entries: Options. (line 2915) d8559 2 a8560 2 * --no-omagic: Options. (line 597) * --no-omagic <1>: Options. (line 3045) d8568 2 a8569 3 * --no-print-gc-sections: Options. (line 1555) * --no-print-map-discarded: Options. (line 569) * --no-print-map-locals: Options. (line 574) d8571 2 a8572 2 * --no-seh: Options. (line 2855) * --no-strip-discarded: Options. (line 720) d8579 5 a8583 6 * --no-trampoline: Options. (line 2943) * --no-undefined: Options. (line 1636) * --no-undefined-version: Options. (line 1693) * --no-warn-mismatch: Options. (line 1706) * --no-warn-search-mismatch: Options. (line 1715) * --no-warnings: Options. (line 1509) d8585 2 a8586 2 * --no-whole-archive: Options. (line 1719) * --noinhibit-exec: Options. (line 1723) d8588 10 a8597 10 * --nxcompat: Options. (line 2844) * --oformat=OUTPUT-FORMAT: Options. (line 1734) * --omagic: Options. (line 588) * --omagic <1>: Options. (line 3010) * --orphan-handling=MODE: Options. (line 792) * --out-implib: Options. (line 1747) * --output-def: Options. (line 2618) * --output=OUTPUT: Options. (line 603) * --package-metadata=JSON: Options. (line 2427) * --pic-executable: Options. (line 1756) d8604 1 a8604 1 * --pop-state: Options. (line 665) d8606 8 a8613 9 * --print-gc-sections: Options. (line 1555) * --print-map: Options. (line 506) * --print-map-discarded: Options. (line 569) * --print-map-locals: Options. (line 574) * --print-memory-usage: Options. (line 1580) * --print-output-format: Options. (line 1574) * --push-state: Options. (line 647) * --reduce-memory-overheads: Options. (line 2386) * --relax: Options. (line 1775) d8617 3 a8619 5 * --relocatable: Options. (line 682) * --remap-inputs-file=file: Options. (line 454) * --remap-inputs=pattern=filename: Options. (line 454) * --require-defined=SYMBOL: Options. (line 769) * --retain-symbols-file=FILENAME: Options. (line 1801) d8622 1 a8622 1 * --script=SCRIPT: Options. (line 733) d8624 2 a8625 2 * --section-alignment: Options. (line 2797) * --section-start=SECTIONNAME=ORG: Options. (line 1996) d8627 7 a8633 7 * --sort-common: Options. (line 1928) * --sort-section=alignment: Options. (line 1943) * --sort-section=name: Options. (line 1939) * --spare-dynamic-tags: Options. (line 1947) * --split-by-file: Options. (line 1952) * --split-by-reloc: Options. (line 1957) * --stack: Options. (line 2803) d8635 4 a8638 4 * --stats: Options. (line 1970) * --strip-all: Options. (line 711) * --strip-debug: Options. (line 715) * --strip-discarded: Options. (line 720) d8640 1 a8640 1 * --stub-group-size on C-SKY: Options. (line 2928) d8643 1 a8643 1 * --subsystem: Options. (line 2810) d8645 2 a8646 2 * --sysroot=DIRECTORY: Options. (line 1974) * --target-help: Options. (line 1596) d8650 1 a8650 1 * --task-link: Options. (line 1979) d8654 7 a8660 7 * --trace: Options. (line 725) * --trace-symbol=SYMBOL: Options. (line 846) * --traditional-format: Options. (line 1984) * --tsaware: Options. (line 2869) * --undefined=SYMBOL: Options. (line 756) * --unique[=SECTION]: Options. (line 818) * --unresolved-symbols: Options. (line 2026) d8663 3 a8665 3 * --verbose[=NUMBER]: Options. (line 2055) * --version: Options. (line 827) * --version-script=VERSION-SCRIPTFILE: Options. (line 2063) d8667 13 a8679 13 * --warn-alternate-em: Options. (line 2243) * --warn-common: Options. (line 2073) * --warn-constructors: Options. (line 2141) * --warn-execstack: Options. (line 2146) * --warn-multiple-gp: Options. (line 2188) * --warn-once: Options. (line 2202) * --warn-rwx-segments: Options. (line 2206) * --warn-section-align: Options. (line 2232) * --warn-textrel: Options. (line 2239) * --warn-unresolved-symbols: Options. (line 2246) * --wdmdriver: Options. (line 2864) * --whole-archive: Options. (line 2255) * --wrap=SYMBOL: Options. (line 2269) d8681 1 a8681 1 * -assert KEYWORD: Options. (line 1274) d8683 7 a8689 7 * -Bdynamic: Options. (line 1277) * -Bgroup: Options. (line 1287) * -Bno-symbolic: Options. (line 1321) * -Bshareable: Options. (line 1921) * -Bstatic: Options. (line 1294) * -Bsymbolic: Options. (line 1308) * -Bsymbolic-functions: Options. (line 1315) d8691 1 a8691 1 * -call_shared: Options. (line 1277) d8694 1 a8694 1 * -dn: Options. (line 1294) d8696 30 a8725 30 * -dT SCRIPT: Options. (line 743) * -dy: Options. (line 1277) * -E: Options. (line 260) * -e ENTRY: Options. (line 226) * -EB: Options. (line 301) * -EL: Options. (line 304) * -f NAME: Options. (line 308) * -F NAME: Options. (line 329) * -fini=NAME: Options. (line 352) * -g: Options. (line 358) * -G VALUE: Options. (line 361) * -h NAME: Options. (line 368) * -i: Options. (line 377) * -IFILE: Options. (line 1482) * -init=NAME: Options. (line 380) * -L DIR: Options. (line 419) * -l NAMESPEC: Options. (line 386) * -M: Options. (line 506) * -m EMULATION: Options. (line 444) * -Map=MAPFILE: Options. (line 1600) * -n: Options. (line 582) * -N: Options. (line 588) * -N <1>: Options. (line 3009) * -n <1>: Options. (line 3020) * -no-pie: Options. (line 1766) * –no-relax: Options. (line 1775) * -non_shared: Options. (line 1294) * -nostdlib: Options. (line 1729) * -O LEVEL: Options. (line 622) * -o OUTPUT: Options. (line 603) d8727 35 a8761 36 * -pie: Options. (line 1756) * -plugin NAME: Options. (line 632) * -q: Options. (line 669) * -qmagic: Options. (line 1769) * -Qy: Options. (line 1772) * -r: Options. (line 682) * -R FILE: Options. (line 700) * -rpath-link=DIR: Options. (line 1842) * -rpath=DIR: Options. (line 1815) * -s: Options. (line 711) * -S: Options. (line 715) * -shared: Options. (line 1921) * -soname=NAME: Options. (line 368) * -static: Options. (line 1294) * -t: Options. (line 725) * -T SCRIPT: Options. (line 733) * -Tbss=ORG: Options. (line 2005) * -Tdata=ORG: Options. (line 2005) * -Tldata-segment=ORG: Options. (line 2021) * -Trodata-segment=ORG: Options. (line 2015) * -Ttext-segment=ORG: Options. (line 2011) * -Ttext=ORG: Options. (line 2005) * -u SYMBOL: Options. (line 756) * -Ur: Options. (line 777) * -v: Options. (line 827) * -V: Options. (line 827) * -w: Options. (line 1509) * -x: Options. (line 836) * -X: Options. (line 840) * -Y PATH: Options. (line 855) * -y SYMBOL: Options. (line 846) * -z: Options. (line 3030) * -z defs: Options. (line 1636) * -z KEYWORD: Options. (line 859) * -z muldefs: Options. (line 1646) * -z undefs: Options. (line 1636) d8790 1 a8790 1 * aligned common symbols: WIN32. (line 445) d8794 2 a8795 2 (line 127) * archive files, from cmd line: Options. (line 386) a8800 2 * ASCIZ ``STRING'': Output Section Data. (line 6) d8809 1 a8809 1 * automatic data imports: WIN32. (line 214) d8815 1 a8815 1 * big-endian objects: Options. (line 301) d8817 1 a8817 1 * BLOCK(EXP): Builtin Functions. (line 79) d8827 2 a8828 2 * combining symbols, warnings on: Options. (line 2073) * COMDAT: Options. (line 1441) d8834 1 a8834 1 * common allocation <1>: Options. (line 1425) d8847 1 a8847 1 * constructors: Options. (line 777) d8857 2 a8858 2 * creating a DEF file: WIN32. (line 182) * cross reference table: Options. (line 1381) d8860 1 a8860 1 (line 94) d8862 3 a8864 3 (line 110) * ctf type sharing: Options. (line 1405) * ctf variables: Options. (line 1394) d8869 5 a8873 5 (line 84) * DATA_SEGMENT_END(EXP): Builtin Functions. (line 108) * DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 114) * dbx: Options. (line 1989) * DEF files, creating: Options. (line 2618) d8876 3 a8878 3 * defined symbol: Options. (line 769) * DEFINED(SYMBOL): Builtin Functions. (line 127) * deleting local symbols: Options. (line 836) d8880 3 a8882 3 * demangling, from command line: Options. (line 1469) * dependency file: Options. (line 609) * direct linking to a dll: WIN32. (line 262) d8886 4 a8889 4 * DLLs, creating: Options. (line 2513) * DLLs, creating <1>: Options. (line 2618) * DLLs, creating <2>: Options. (line 2626) * DLLs, linking to: Options. (line 2641) d8893 2 a8894 2 * dynamic linker, from command line: Options. (line 1482) * dynamic symbol table: Options. (line 260) d8896 2 a8897 2 * ELF symbol visibility: Options. (line 1174) * emulation: Options. (line 444) d8900 1 a8900 1 * endianness: Options. (line 301) d8902 1 a8902 1 * entry point, from command line: Options. (line 226) d8909 5 a8913 5 * executable segments, warnings on: Options. (line 2206) * executable stack, warnings on: Options. (line 2146) * export dynamic symbol: Options. (line 287) * export dynamic symbol list: Options. (line 296) * exporting DLL symbols: WIN32. (line 48) d8929 2 a8930 2 (line 49) * finalization function: Options. (line 352) d8943 1 a8943 1 * forcing the creation of dynamic sections: Options. (line 678) d8946 3 a8948 3 * garbage collection: Options. (line 1526) * garbage collection <1>: Options. (line 1555) * garbage collection <2>: Options. (line 1564) d8950 1 a8950 1 * generating optimized output: Options. (line 622) d8953 1 a8953 1 * group allocation in linker script: Options. (line 1441) d8958 1 a8958 1 * groups of archives: Options. (line 1218) d8960 3 a8962 3 * header size: Builtin Functions. (line 197) * heap size: Options. (line 2553) * help: Options. (line 1592) d8966 1 a8966 1 (line 49) d8969 1 a8969 1 * image base: Options. (line 2560) d8975 2 a8976 2 * including an entire archive: Options. (line 2255) * incremental link: Options. (line 377) d8979 1 a8979 1 * initialization function: Options. (line 380) d8985 1 a8985 1 * input files, displaying: Options. (line 725) d9011 1 a9011 1 * ldata segment origin, cmd line: Options. (line 2022) d9014 1 a9014 1 (line 133) d9017 1 a9017 1 * LENGTH(MEMORY): Builtin Functions. (line 144) d9019 3 a9021 3 * link map: Options. (line 506) * link map discarded: Options. (line 569) * link-time runtime library search path: Options. (line 1842) a9031 4 * LINKER_VERSION: Output Section Data. (line 96) * LINKER_VERSION <1>: Output Section Data. (line 96) d9033 1 a9033 1 * little-endian objects: Options. (line 304) d9036 1 a9036 1 * LOADADDR(SECTION): Builtin Functions. (line 147) d9038 2 a9039 2 (line 49) * local symbols, deleting: Options. (line 840) d9041 1 a9041 1 * LOG2CEIL(EXP): Builtin Functions. (line 151) d9047 1 a9047 1 (line 127) d9050 1 a9050 1 * MAX: Builtin Functions. (line 154) d9057 2 a9058 2 * memory usage: Options. (line 1580) * memory usage <1>: Options. (line 1629) d9060 1 a9060 1 * MIN: Builtin Functions. (line 157) d9071 2 a9072 2 * naming the output file: Options. (line 603) * NEXT(EXP): Builtin Functions. (line 161) d9074 1 a9074 1 * NMAGIC: Options. (line 582) d9076 1 a9076 1 (line 94) d9078 1 a9078 1 (line 110) d9080 2 a9081 2 (line 49) * not enough room for program headers: Builtin Functions. (line 202) d9089 3 a9091 3 * object size: Options. (line 361) * OMAGIC: Options. (line 588) * OMAGIC <1>: Options. (line 597) d9102 1 a9102 1 * ORIGIN(MEMORY): Builtin Functions. (line 167) d9104 2 a9105 2 * orphan sections: Options. (line 792) * output file after errors: Options. (line 1723) d9108 1 a9108 1 * output format: Options. (line 1574) d9117 1 a9117 1 (line 127) d9123 1 a9123 1 * partial link: Options. (line 682) d9130 3 a9132 3 * pop state governing input file handling: Options. (line 665) * position dependent executables: Options. (line 1767) * position independent executables: Options. (line 1758) d9161 1 a9161 1 (line 49) d9165 1 a9165 1 * program headers, not enough room: Builtin Functions. (line 202) d9170 1 a9170 1 * push state governing input file handling: Options. (line 647) d9174 2 a9175 2 * read-only text: Options. (line 582) * read/write from cmd line: Options. (line 588) d9181 1 a9181 1 * relaxing addressing modes: Options. (line 1775) d9187 1 a9187 2 * relocatable output: Options. (line 682) * remapping inputs: Options. (line 454) d9192 3 a9194 5 * retain relocations in final executable: Options. (line 669) * retaining specified symbols: Options. (line 1801) * REVERSE: Input Section Wildcards. (line 60) * rodata segment origin, cmd line: Options. (line 2016) d9198 3 a9200 3 * runtime library name: Options. (line 368) * runtime library search path: Options. (line 1815) * runtime pseudo-relocation: WIN32. (line 240) d9206 2 a9207 2 * script files: Options. (line 733) * script files <1>: Options. (line 743) d9209 1 a9209 1 * search directory, from cmd line: Options. (line 419) d9217 1 a9217 1 * section alignment, warnings on: Options. (line 2232) d9222 1 a9222 1 * section groups: Options. (line 1441) d9226 1 a9226 1 * section load address in expression: Builtin Functions. (line 147) d9231 1 a9231 1 * section size: Builtin Functions. (line 178) d9239 1 a9239 1 * sections, orphan: Options. (line 792) d9241 1 a9241 1 * segment origins, cmd line: Options. (line 2005) d9243 2 a9244 2 * SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 170) * shared libraries: Options. (line 1923) d9247 2 a9248 2 * SIZEOF(SECTION): Builtin Functions. (line 178) * SIZEOF_HEADERS: Builtin Functions. (line 197) d9260 1 a9260 1 (line 119) d9271 1 a9271 1 * stack size: Options. (line 2803) d9274 1 a9274 1 * start-stop-gc: Options. (line 1159) d9278 3 a9280 3 * strip all symbols: Options. (line 711) * strip debugger symbols: Options. (line 715) * stripping all but some symbols: Options. (line 1801) d9285 1 a9285 1 * symbol defaults: Builtin Functions. (line 127) d9288 1 a9288 1 * symbol tracing: Options. (line 846) d9290 1 a9290 1 * symbol-only input: Options. (line 700) d9292 1 a9292 1 * symbols, from command line: Options. (line 1449) d9294 3 a9296 3 * symbols, require defined: Options. (line 769) * symbols, retaining selectively: Options. (line 1801) * synthesizing linker: Options. (line 1775) d9301 1 a9301 1 * text segment origin, cmd line: Options. (line 2012) d9304 1 a9304 1 * traditional format: Options. (line 1984) d9307 2 a9308 2 * unallocated address, next: Builtin Functions. (line 161) * undefined symbol: Options. (line 756) d9311 1 a9311 1 * undefined symbols, warnings on: Options. (line 2202) d9315 2 a9316 2 (line 49) * usage: Options. (line 1592) d9318 3 a9320 3 * using a DEF file: WIN32. (line 81) * using auto-export functionality: WIN32. (line 51) * Using decorations: WIN32. (line 186) d9322 2 a9323 2 * verbose[=NUMBER]: Options. (line 2055) * version: Options. (line 827) d9325 1 a9325 1 * version script, symbol versions: Options. (line 2063) d9329 7 a9335 7 * visibility: Options. (line 1174) * warnings, on combining symbols: Options. (line 2073) * warnings, on executable stack: Options. (line 2146) * warnings, on section alignment: Options. (line 2232) * warnings, on undefined symbols: Options. (line 2202) * warnings, on writeable and exectuable segments: Options. (line 2206) * weak externals: WIN32. (line 430) d9345 88 a9432 89 Node: Top708 Node: Overview1589 Node: Invocation2736 Node: Options3148 Node: Environment148320 Node: Scripts150169 Node: Basic Script Concepts151913 Node: Script Format154693 Node: Simple Example155564 Node: Simple Commands158800 Node: Entry Point159305 Node: File Commands160379 Node: Format Commands164906 Node: REGION_ALIAS166954 Node: Miscellaneous Commands171949 Node: Assignments178260 Node: Simple Assignments178771 Node: HIDDEN180574 Node: PROVIDE181211 Node: PROVIDE_HIDDEN182789 Node: Source Code Reference183039 Node: SECTIONS187002 Node: Output Section Description188922 Node: Output Section Name190171 Node: Output Section Address191072 Node: Input Section193325 Node: Input Section Basics194126 Node: Input Section Wildcards199280 Node: Input Section Common205523 Node: Input Section Keep207033 Node: Input Section Example207541 Node: Output Section Data209012 Node: Output Section Keywords214353 Node: Output Section Discarding218028 Node: Output Section Attributes219970 Node: Output Section Type221091 Node: Output Section LMA223476 Node: Forced Output Alignment226619 Node: Forced Input Alignment227050 Node: Output Section Constraint227438 Node: Output Section Region227874 Node: Output Section Phdr228311 Node: Output Section Fill228987 Node: Overlay Description230374 Node: MEMORY234919 Node: PHDRS239671 Node: VERSION245149 Node: Expressions253440 Node: Constants254453 Node: Symbolic Constants255395 Node: Symbols255962 Node: Orphan Sections256717 Node: Location Counter258310 Node: Operators262888 Node: Evaluation263918 Node: Expression Section265290 Node: Builtin Functions269368 Node: Implicit Linker Scripts278449 Node: Plugins279236 Node: libdep Plugin279796 Node: Special Sections281641 Node: Machine Dependent283799 Node: H8/300284972 Node: M68HC11/68HC12287173 Node: ARM288680 Node: HPPA ELF32301108 Node: M68K302783 Node: MIPS303732 Node: MMIX304892 Node: MSP430306113 Node: NDS32308106 Node: Nios II309154 Node: PowerPC ELF32310526 Node: PowerPC64 ELF64313471 Node: S/390 ELF323589 Node: SPU ELF323948 Node: TI COFF326674 Node: WIN32327214 Node: Xtensa348969 Node: BFD352524 Node: BFD outline353986 Node: BFD information loss355280 Node: Canonical format357834 Node: Reporting Bugs362179 Node: Bug Criteria362885 Node: Bug Reporting363608 Node: MRI370781 Node: GNU Free Documentation License375460 Node: LD Index400800 @ 1.1.1.12 log @Import binutils 2.45 (previous was 2.42) 2.45 Release Notes ------------------ Assembler: All sframe information generated by the assembler is now in compliance with the SFrame V2 specification. The assembler now supports .errif and .warnif directives, permitting user-controlled diagnostics with conditionals that are evaluated only at the end of assembly. The assembler predefines the symbol "GAS(version)". The assembler now supports the generation of SFrame stack trace information (.sframe) from CFI directives on s390 64-bit (s390x). For RISC-V, the ".option arch, -ext" format is deprecated due to its controversial use. For RISC-V, stop generating mapping symbols $x and replace with $x. The $x was defined to have the same ISA as previous $x, but now is defined to have the same ISA as elf architecture attribute. Once both used .option arch/rvc/norvc/push/pop directives (some code have different architectures with file attribute) and data directives in text, then the file need to be rebuilt since 2.45. The assembler supports the latest architecture extensions for the RISC-V, LoongArch and AArch64 architectures. Linker: The linker's --stats option can take an optional argument which if used is interpreted as a filename into which resource usage information should be stored. As an alternative mechanism the LD_STATS environment variable can also be used to achieve the same results. Resource usage information for various phases of the linking operation is now included in the report. If a map file is being produced then the information is also included there. The --no-stats option can be used to disable stat reporting, should it have been enabled. On s390 64-bit (s390x), generate SFrame stack trace information (.sframe) for the linker generated .plt section. On s390 32-bit, generate ".eh_frame" unwind information for the linker generated .plt section. Both features are enabled by default and can be disabled using linker option --no-ld-generated-unwind-info. On RISC-V, add new PLT formats, and GNU property merge rules for zicfiss and zicfilp extensions. On AVR, the default linker scripts now assert that the .progmem sections don't extend past 0xffff since they are accessed by means of LPM. For data in program memory that may be located past 0xffff, a .progmemx section should be used. On LoongArch, linker relaxation time complexity is no longer quadratic with respect to relocation counts. Linking time of large software should be improved. In addition R_LARCH_32_PCREL records are now checked for overflow. Other binary utilities: New versioned release of libsframe: libsframe.so.2. This release introduces versioned symbols with version node name LIBSFRAME_2.0. Some new symbols have been added to support the new flag SFRAME_F_FDE_FUNC_START_PCREL and retrieving flags from SFrame decoder and encoder objects: - Addition of sframe_decoder_get_flags, sframe_decoder_get_offsetof_fde_start_addr, sframe_encoder_get_flags, sframe_encoder_get_offsetof_fde_start_addr. This release also includes backward-incompatible ABI changes: - Removal of sframe_get_funcdesc_with_addr. - Change in the behavior of sframe_decoder_get_funcdesc_v2, sframe_encoder_add_funcdesc_v2 and sframe_encoder_write. For SFrame stack trace format, the function start address in each SFrame FDE has a changed encoding: The 32-bit signed integer now holds the offset of the start PC of the associated function from the sfde_func_start_address field itself (instead of the earlier where it was the offset from the start of the SFrame section itself). All SFrame sections generated by gas and ld now default to this new encoding, setting the (new) SFRAME_F_FDE_FUNC_START_PCREL flag. Relocatable SFrame links are now fixed. Readelf now recognizes RISC-V GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS and GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED for zicfiss and zicfilp extensions. The LoongArch disassembler now properly accepts multiple disassembly options given by -M, such as "-M no-aliases,numeric". (Previously only the first option took effect.) 2.44 Release Notes ------------------ Assembler: Support for new architecture extensions for AArch64, Risc-V and x86. Linker: The default maximum page size was changed from 16KiB to 64KiB for LoongArch. This now supports mixed LTO and non-LTO object files in relocatable output. The ELF forms of the linker support a --image-base= option for compatibility with LLD. The --build-id= option now accepts an argument of "xx" which enables the use of the xxhash library. This produces a 128-bit hash and is 2-4x faster than md5 or sha1. The ELF linker option --package-metadata supports percent-encoded and %[string] encoded JSON payloads. Disassembler: The RISC-V disassembler now supports -M,max option like QEMU to dump instruction without checking architecture support as usual. GprofNG: Support added for hardware event counters for Neoverse-N1, Ampere-1, and Appliedmicro processors. Support for the Nios II target has been removed. 2.43 Release Notes ------------------ Assembler: * Add a .base64 directive to the assembler which allows base64 encoded binary data to be provided as strings. * Assembler macros as well as the bodies of .irp / .irpc / .rept can now use the syntax \+ to access the number of times a given macro has been executed. This is similar to the already existing \@@ syntax, except that the count is maintained on a per-macro basis. * References to FB and dollar labels, when supported, are no longer permitted in a radix other than 10. (Note that definitions of such labels were already thus restricted, except that leading zeroes were permitted). Linker: * Add support for DT_RELR type compressed runtime relocations for the AArch64 and LoongArch architectures. * Add --rosegment option which changes the -z separate-code option so that only one read-only segment is created (instead of two). * Add --section-ordering-file option to add extra mapping of input sections to output sections. * Add -plugin-save-temps to store plugin intermediate files permanently. Utilities: * Readelf will now display DT_RELR relocations in full detail. * Readelf now has a -j/--display-section option which takes the name or index of a section and displays its contents according to its type. The option can be used multiple times on the command line to display multiple sections. * When objdump or readelf are used to display the contents of a .eh_frame section they will now also display the contents of the .eh_frame_hdr section, if present. Gprofng: * Improved the support for hardware event counters: - Re-designed and streamlined the implementation. - Defined a common set of events for ARM processors. - Added specific events for AMD ZEN3 / ZEN4, and Intel Ice Lake processors. * Added a minimal support for RISC-V. General: * Target specific improvements for many architectures. @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 7.1.1 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.45. d5 1 a5 1 Copyright © 1991-2025 Free Software Foundation, Inc. d11 2 a12 2 Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.45. d28 1 a28 1 the section entitled "GNU Free Documentation License". d56 1 a56 1 AT&T's Link Editor Command Language syntax, to provide explicit and d61 1 a61 1 object files in many different formats--for example, COFF or ‘a.out’. d145 2 a146 2 ‘--trace-symbol’ are equivalent. Note--there is one exception to this rule. Multiple letter options that start with a lower case 'o' can only d157 2 a158 2 Note--if the linker is being invoked indirectly, via a compiler driver (e.g. ‘gcc’) then all the linker command-line options should be d213 1 a213 1 configured to support alternative object formats, you don't usually d320 1 a320 3 and other ways of specifying the entry point. For i386 PE, ENTRY can be also the original function name (without the leading underscore and/or the trailing stdcall ‘@@number’ when applicable). d341 1 a341 1 used to specify the input file on the linker's command-line. This d637 1 a637 1 value is 0x1, and ‘bar.o’, which doesn't have property a694 20 Note - the linker will delete the output file before it starts to write to it. It will do this even if it turns out that the link cannot be completed due to errors. Note - the linker will check to make sure that the output file name does not match the name of any of the input files, but that is all. In particular it will not complain if the output file might overwrite a source file or some other important file. Therefore in build systems it is recommended to use the ‘-o’ option as the last option on the linker command line. For example consider: ld -o $(EXE) $(OBJS) ld $(OBJS) -o $(EXE) If the ‘EXE’ variable is not defined for some reason, the first version of the linker command could end up deleting one of the object files (the first one in the ‘OBJS’ list) whereas the second version of the linker command will generate an error message and not delete anything. d699 8 a706 8 compiler's output with ‘-M -MP’ (*note Options Controlling the Preprocessor: (gcc)Preprocessor Options.). Note that there is no option like the compiler's ‘-MM’, to exclude "system files" (which is not a well-specified concept in the linker, unlike "system headers" in the compiler). So the output from ‘--dependency-file’ is always specific to the exact state of the installation where it was produced, and should not be copied into distributed makefiles without careful editing. d714 1 a714 1 Also currently there is no difference in the linker's behaviour for d752 1 a752 1 Undoes the effect of -push-state, restores the previous values of d770 1 a770 1 Generate relocatable output--i.e., generate an output file that can d773 1 a773 1 Unix magic numbers, this option also sets the output file's magic a783 12 When the relocatable output contains both contents which require link-time optimization (LTO) and contents which don't require LTO, a .gnu_object_only section will be created to contain a relocatable object file, as if ‘-r’ is applied to all relocatable inputs which don't require LTO. When processing a relocatable input with a .gnu_object_only section, the linker will extract the .gnu_object_only section as a separate input. Note that since ‘-r’ groups some sections from different input files together, there may be negative impacts on code size and locality in final executable or shared library. a796 16 ‘--rosegment’ ‘--no-rosegment’ Attempt to ensure that only a single read-only, non-code segment is created. Only useful when used in conjunction with the ‘-z separate-code’ option. The resulting binaries should be smaller than if ‘-z separate-code’ is used on its own. Without this option, or if ‘--no-rosegment’ is specified, the ‘-z separate-code’ option will create two read-only segments, one before the code segment and one after it. The name of the options are misleading, but they have been chosen in order for the linker to be compatible with the LLD and GOLD linkers. Thse options are only supported by ELF targets. a810 3 ‘-plugin-save-temps’ Store the plugin "temporary" intermediate files permanently. d821 1 a821 1 Use SCRIPTFILE as the linker script. This script replaces ‘ld’'s d824 4 a827 15 to describe the output file. *Note Scripts::. If SCRIPTFILE does not exist in the current directory, ‘ld’ looks for it in the directories specified by any preceding ‘-L’ options. Command line options that appear before the ‘-T’ option can affect the script, but command line options that appear after it do not. Multiple ‘-T’ options will accumulate if they are augmenting the current script, otherwise the last, non-augmenting, ‘-T’ option will be used. There are other ways of specifying linker scripts. See *Note --default-script::, *Note --section-ordering-file::, and *Note unrecognised-input-files::. d867 1 a867 1 relocatable output--i.e., an output file that can in turn serve as d939 1 a939 1 link but don't know where the reference is coming from. d1129 1 a1129 1 Specify that the object's filters be processed immediately at d1144 1 a1144 1 don't ignore the r_addend field of R_X86_64_JUMP_SLOT d1160 1 a1160 1 Specify that the object shouldn't be unloaded at runtime. d1172 1 a1172 1 Don't treat protected data symbols as external when building a d1176 1 a1176 1 on protected data symbols by another module aren't visible to a1183 9 ‘memory-seal’ ‘nomemory-seal’ Instruct the executable or shared library that the all PT_LOAD segments should be sealed to avoid further manipulation (such as changing the protection flags, the segment size, or remove the mapping). This is a security hardening that requires system support. This generates GNU_PROPERTY_MEMORY_SEAL in .note.gnu.property section d1212 1 a1212 1 ineffective. Don't create an ELF ‘PT_GNU_RELRO’ segment if d1221 1 a1221 1 Generate section header. Don't generate section header if d1229 1 a1229 1 other data. Don't create separate code ‘PT_LOAD’ segment if d1265 1 a1265 1 for compatibility with historical practice. However, it's d1269 1 a1269 1 what's intended. d1276 1 a1276 1 in read-only sections. Don't report an error if ‘notext’ or a1301 14 ‘isa-level-report=none’ ‘isa-level-report=all’ ‘isa-level-report=needed’ ‘isa-level-report=used’ Specify how to report x86-64 ISA levels in input relocatable files. ‘isa-level-report=none’, which is the default, will make the linker not report x86-64 ISA levels in input files. ‘isa-level-report=all’ will make the linker report needed and used x86-64 ISA levels in input files. ‘isa-level-report=needed’ will make the linker report needed x86-64 ISA levels in input files. ‘isa-level-report=used’ will make the linker report used x86-64 ISA levels in input files. Supported for Linux/i386 and Linux/x86_64. d1391 1 a1391 1 is being created but that all of the library's external references d1414 1 a1414 1 global symbols whose references shouldn't be bound to the d1451 1 a1451 1 command line. Normally the linker won't add a DT_NEEDED tag to the d1545 1 a1545 1 SYMBOL, the equals sign ("<=>"), and EXPRESSION. d1572 1 a1572 1 linker is normally correct; don't use this unless you know what you d1588 1 a1588 1 invoked by -R or -just-symbols d1609 1 a1609 1 Microsoft Windows host, since some versions of Windows won't run an a1677 3 Note: if you want to find out about the memory usage of the linker itself, then the ‘--stats’ option will do this. d1769 2 a1770 2 arguments will be passed to script: the keyword "undefined-symbol" or 'missing-lib" and the NAME of the undefined symbol or missing d1825 1 a1825 1 object formats, you don't usually need to specify this, as ‘ld’ d1846 5 a1850 6 relocated by the dynamic linker to the virtual address the OS chooses for them, which can vary between invocations. They are marked ET_DYN in the ELF file header, but differ from shared libraries in a number of ways. In particular, defined symbols in a PIE by default can not be overridden by another object as they can be in a shared library. d1866 3 a1868 2 68HC11 and 68HC12: M68HC11/68HC12. *Note ‘ld’ and PowerPC 32-bit ELF Support: PowerPC ELF32. d1936 5 a1940 5 it is not included explicitly. In such a case, several directories are searched as described below. The ‘-rpath-link’ option specifies the first set of directories to search. This option may specify a sequence of directory names either by providing a list of names separated by colons, or by appearing multiple times. d1951 4 a1954 5 The ‘--rpath-link’ option should be used with caution as it overrides the search path that may have been hard compiled into a shared library. In such a case it is possible to unintentionally use a different search path than the runtime linker would have used. d1956 2 a1957 7 When additional shared libraries are required, the linker will search directories in the order listed below in order to find them. Note however that this only applies to additional libraries needed to satisfy already included shared libraries. It does _not_ apply to libraries that are included via the ‘-l’ command line option. Searches for ‘-l’ libraries are only conducted in directories specified by the ‘-L’ option (*note -L::). a2006 39 ‘--section-ordering-file=SCRIPT’ This option is used to augment the current linker script with additional mapping of input sections to output sections. This file must use the same syntax for ‘SECTIONS’ as is used in normal linker scripts, but it should not do anything other than place input sections into output sections. *note SECTIONS:: A second constraint on the section ordering script is that it can only reference output sections that are already defined by whichever linker script is currently in use. (Ie the default linker script or a script specified on the command line). The benefit of the section ordering script however is that the input sections are mapped to the start of the output sections, so that they can ensure the ordering of sections in the output section. For example, imagine that the default linker script looks like this: SECTIONS { .text : { *(.text.hot) ; *(.text .text.*) } .data : { *(.data.big) ; *(.data .data.*) } } Then if a section ordering file like this is used: .text : { *(.text.first) ; *(.text.z*) } .data : { foo.o(.data.first) ; *(.data.small) } This would be equivalent to a linker script like this: SECTIONS { .text : { *(.text.first) ; *(.text.z*) ; *(.text.hot) ; *(.text .text.*) } .data : { foo.o(.data.first) ; *(.data.small) ; *(.data.big) ; *(.data .data.*) } } The advantage of the section ordering file is that it can be used to order those sections that matter to the user without having to worry about any other sections, or memory regions, or anything else. d2056 1 a2056 1 ‘--stats[=FILENAME]’ a2059 62 If the optional FILENAME argument is not supplied then only basic information is reported, and it is sent to the standard error output stream. If the FILENAME argument is supplied then extended information is written to the named file. If FILENAME is set to just the - symbol, then the extended information is sent to the standard output stream. If the FILENAME starts with + then the file is opened in append mode rather than overwrite mode. If the ‘-Map’ option has been enabled then the information is also recorded in the map file as well. Note: if both the ‘--stats’ option and the ‘-Map’ options have been given FILENAME arguments and they match, then the information will only be written out once not twice. If the ‘LD_STATS’ environment variable is defined then this behaves likes the ‘--stats’ option. If the variable's value is a string then this will used as the name of a file into which the information should be recorded. Otherwise the information will be sent to the standard output stream. Using the environment variable allows stats to be recorded without having to alter the linker's command line. Note: if both the environment variable and the ‘--stats’ option are used then the ‘--stats’ option takes precedence. The extended information reported includes the cpu time used and, if the GETRUSAGE() system library call is available then memory use is recorded as well. This information is reported for individual parts of the linking process which are referred to as _phases_. In addition the information is also reported for a special phase called _ALL_ which covers the entire linking process. Note that individual phases can contain or overlap with each other so it should not be assumed that the overall resources used by the linker is the sum of the resources used by the individual phases. In addition when extended information is being reported the linker version, command line arguments and linker start time are also included. This makes it easier to handle the situation where multiple links are being invoked by a build system and to indentify exactly which arguments were responsible for producing the statistics that are reported. The extended output looks something like this: Stats: linker version: (GNU Binutils) 2.44.50.20250401 Stats: linker started: Wed Apr 2 09:36:41 2025 Stats: args: ld -z norelro -z nomemory-seal -z no-separate-code -o a.out [...] Stats: phase cpu time memory user time system time Stats: name (microsec) (KiB) (seconds) (seconds) Stats: ALL 390082 217740 0 0 Stats: ctf processing 12 0 0 0 Stats: string merge 1324 0 0 0 Stats: parsing 349 288 0 0 Stats: plugins 1 0 0 0 Stats: processing files 259616 214524 0 0 Stats: write 116493 0 0 0 ‘--no-stats’ Disables the reporting of usage statistics, should it have been enabled via the ‘--stats’ command line option or the LD_STATS environment variable. d2089 1 a2089 12 equals sign ("<=>"), and ORG. ‘--image-base=ORG’ When using ELF, same as ‘-Ttext-segment’, with both options effectively setting the base address of the ELF executable. When using PE, use VALUE as the base address of your program or dll. This is the lowest memory location that will be used when your program or dll is loaded. To reduce the need to relocate and improve performance of your dlls, each should have a unique base address and not overlap any other dlls. The default is 0x400000 for executables, and 0x10000000 for dlls. d2099 1 a2099 4 first byte of the first segment. Note that when ‘-pie’ is used with ‘-Ttext-segment=ORG’, the output executable is marked ET_EXEC so that the address of the first byte of the text segment will be guaranteed to be ORG at run time. d2132 1 a2132 1 included on the linker's command line. d2267 1 a2267 1 change the linker's execstack warning generation state. Use d2338 1 a2338 1 This restores the linker's default behaviour of generating errors d2349 1 a2349 1 Two notes when using this option from gcc: First, gcc doesn't know d2351 1 a2351 1 Second, don't forget to use ‘-Wl,-no-whole-archive’ after your list d2425 1 a2425 1 Set the default size of the linker's hash tables to a prime number d2428 1 a2428 1 increasing the linker's memory requirements. Similarly reducing d2433 1 a2433 1 Set the type of linker's hash table(s). STYLE can be either ‘sysv’ d2448 1 a2448 1 ‘--compress-debug-sections=none’ doesn't compress DWARF debug d2453 1 a2453 1 SHF_COMPRESSED flag in the sections' headers. d2470 1 a2470 1 linker's ‘--help’ option. d2480 1 a2480 1 linker's run time. This is not done however if the ‘--hash-size’ d2496 13 a2508 13 random bits; ‘sha1’ to use a 160-bit SHA1 hash, ‘md5’ to use a 128-bit MD5 hash, or ‘xx’ to use a 128-bit XXHASH on the normative parts of the output contents; or ‘0xHEXSTRING’ to use a chosen bit string specified as an even number of hexadecimal digits (‘-’ and ‘:’ characters between digit pairs are ignored). If STYLE is omitted, ‘sha1’ is used. The ‘md5’, ‘sha1’, and ‘xx’ styles produces an identifier that is always the same in an identical output file, but are almost certainly unique among all nonidentical output files. It is not intended to be compared as a checksum for the file's contents. A linked file may be changed later by other tools, but the build ID bit string identifying the original linked file does not change. d2517 1 a2517 5 https://systemd.io/ELF_PACKAGE_METADATA/ The JSON argument support percent-encoding and following %[string] (where string refers to the name in HTML's Named Character References) encoding: ‘%[comma]’ for ‘,’, ‘%[lbrace]’ for ‘{’, ‘%[quot]’ for ‘"’, ‘%[rbrace]’ for ‘}’, and ‘%[space]’ for space character. If the JSON argument is d2520 1 a2520 1 -package-metadata option. If the linker has been built with d2579 1 a2579 1 to do "fuzzy linking" by looking for another defined symbol that d2596 1 a2596 1 defined in target's description. By this option it is possible to d2602 1 a2602 1 otherwise wouldn't be any exported symbols. When symbols are d2608 1 a2608 1 DLLs will not be re-exported, nor will symbols specifying the DLL's d2646 9 d2661 1 a2661 1 If given, the appropriate bit in the "Characteristics" field of the d2665 1 a2665 1 "[operating systems]" section of the BOOT.INI. Otherwise, this bit d2677 1 a2677 1 Sets the major number of the "image version". Defaults to 1. d2682 1 a2682 1 Sets the major number of the "os version". Defaults to 4. [This d2686 1 a2686 1 Sets the major number of the "subsystem version". Defaults to 4. d2691 1 a2691 1 Sets the minor number of the "image version". Defaults to 0. d2696 1 a2696 1 Sets the minor number of the "os version". Defaults to 0. [This d2700 1 a2700 1 Sets the minor number of the "subsystem version". Defaults to 0. d2746 1 a2746 1 Note: Use of the 'auto-import' extension will cause the text d2750 1 a2750 1 Note - use of the 'auto-import' extension will also cause read only d2756 1 a2756 1 Using 'auto-import' generally will 'just work' - but sometimes you d2759 2 a2760 2 "variable '' can't be auto-imported. Please read the documentation for ld's ‘--enable-auto-import’ for details." d2775 1 a2775 1 One way is to use -enable-runtime-pseudo-reloc switch. This leaves d2780 2 a2781 2 A second solution is to force one of the 'constants' to be a variable - that is, unknown and un-optimizable at compile time. d2783 1 a2783 1 array's address) a variable, or b) make the 'constant' index a d2811 1 a2811 1 'auto-import' for the offending symbol and mark it with d2816 2 a2817 2 the various methods of resolving the 'direct address with constant offset' problem, you should consider typical real-world usage: d2866 1 a2866 1 If your code contains expressions described in -enable-auto-import d2868 1 a2868 1 switch will create a vector of 'runtime pseudo relocations' which d2912 1 a2912 2 (ASLR). This option is enabled by default for 64-bit PE images in MinGW targets. d2921 3 a2923 3 Vista for i386 PE targets. This option is enabled by default for MinGW targets but can be disabled via the ‘--disable-dynamicbase’ option. This option also implies ‘--enable-reloc-section’. d2934 1 a2934 1 The option is enabled by default for MinGW targets. d3144 1 a3144 1 ‘GNUTARGET’ determines the input-file object format if you don't use d3156 1 a3156 1 ‘LDEMULATION’ determines the default emulation if you don't use the a3169 12 If the PE/COFF specific ‘--insert-timestamp’ is active and the ‘SOURCE_DATE_EPOCH’ environment variable is defined, then the timestamp value in this variable will be inserted into the COFF header instead of the current time. If the ‘LD_STATS’ environment variable is defined then linker resource use information will be recorded, just as if the ‘--stats’ option had been used. If the ‘LD_STATS’ variable has a string value then this will used as the name of a file into which the information should be stored. Otherwise the information will be sent to the standard output stream. d3303 1 a3303 1 a simple use of it. Let's assume your program consists only of code, d3305 1 a3305 1 ‘.data’, and ‘.bss’ sections, respectively. Let's assume further that d3308 1 a3308 1 For this example, let's say that the code should be loaded at address d3357 1 a3357 1 That's it! That's a simple and complete linker script. d3424 1 a3424 1 a link, but you can't be bothered to put it on every link command d3889 1 a3889 1 For ELF targeted ports, define a symbol that will be hidden and won't be d3954 1 a3954 1 and won't be exported. d3987 4 a3990 4 the program's memory to hold the _value_ of the symbol. The second is that the compiler creates an entry in the program's symbol table which holds the symbol's _address_. ie the symbol table contains the address of the block of memory holding the symbol's value. So for example the d4000 1 a4000 1 first accesses the symbol table to find the address of the symbol's d4183 1 a4183 1 the section is selected to contain it. The section's output d4449 1 a4449 1 If the section sorting command in linker script isn't nested, the d4523 1 a4523 1 accomplished by surrounding an input section's wildcard entry with d4559 1 a4559 1 If an output section's name is the same as the input section's name d4604 1 a4604 1 string may contain '\n', '\r', '\t' and octal numbers. Hex numbers are d4610 1 a4610 1 Note--these commands only work inside a section description and not d4804 1 a4804 1 We've already described SECTION, ADDRESS, and OUTPUT-SECTION-COMMAND. d4829 1 a4829 7 be loaded into memory when the program is run. When generating an ELF output file, the memory space is allocated for the section at run-time, except for SHT_NOTE sections. For other output files, no memory space is allocated at run-time. Note - the ELF behaviour is a bug that may change to be consistent with non-ELF targets. d4847 1 a4847 1 ‘SHT_PREINIT_ARRAY’ are also allowed for TYPE. It is the user's d4853 1 a4853 1 .foo . (TYPE = SHT_PROGBITS) : { *(.bar) } d4857 1 a4857 1 .foo . (TYPE = SHT_PROGBITS) : { BYTE(1) } d4861 1 a4861 1 .foo . (TYPE = SHT_PROGBITS) : { BYTE(1); *(.bar) } d4893 1 a4893 1 the section's alignment requirements. d4958 1 a4958 1 You can increase an output section's alignment by using ALIGN. As an d5152 1 a5152 1 The linker's default configuration permits allocation of all available d5412 1 a5412 1 by Sun's linker in Solaris 2.5. The version script defines a tree of d5450 1 a5450 1 matching filenames (also known as "globbing"). However, if you specify d5466 1 a5466 1 somewhere in the version script. Note that it's slightly crazy to use d5469 1 a5469 1 set exported for an old version. That's wrong since older versions d5478 1 a5478 1 version script. Such version script doesn't assign any versions to d5480 1 a5480 1 which won't. d5505 1 a5505 1 There are several GNU extensions to Sun's versioning approach. The d5632 1 a5632 1 The target's maximum page size. d5635 1 a5635 1 The target's default page size. d5781 1 a5781 1 particular significance to the linker. As well, the linker doesn't d5800 1 a5800 1 This may or may not be the script author's intention for the value of d6014 4 a6017 4 to the next ALIGN boundary. The single operand ‘ALIGN’ doesn't change the value of the location counter--it just does arithmetic on it. The two operand ‘ALIGN’ allows an arbitrary expression to be aligned upwards (‘ALIGN(ALIGN)’ is equivalent to d6107 1 a6107 1 section--but if a symbol called ‘begin’ already existed, its value d6149 1 a6149 1 used to set the base address for the "text", "data", and "bss" d6172 1 a6172 1 Return the size in bytes of the output file's headers. This is d6333 1 d6442 1 a6442 1 switch, in that it sets the program's starting address. But it also d6537 3 a6539 3 Further information is available in "ARM1176JZ-S and ARM1176JZF-S Programmer Advice Notice" (UAN0002) available on the Arm documentation website at . a6669 70 The ‘-z force-bti’ option turns on the verification of Branch Target Identification (BTI) in input objects, generates PLTs with BTI, and marks the output with BTI. If this option is omitted, but all input objects belonging to the link unit have the BTI marking, the linker implicitly generates PLTs with BTI, and marks the output with BTI. The ‘-z bti-report[=none|warning|error]’ option specifies how to report missing BTI markings on inputs, i.e. the GNU_PROPERTY_AARCH64_FEATURE_1_BTI property. By default, if the option is omitted and ‘-z force-bti’ is provided, warnings are emitted. • ‘none’ disables any warning messages. • ‘warning’ (the default value) emits warning messages when input objects composing the link unit are missing BTI markings. • ‘error’ turns the warning messages into errors. If issues are found, a maximum of 20 messages will be emitted, and then a summary with the total number of issues will be displayed at the end. The ‘-z pac-plt’ option enables the usage of pointer authentication in PLTs. The ‘-z gcs’ option controls the verification of Guarded Control Stack (GCS) markings on input objects and marks the output with GCS if all conditions are validated. • ‘implicit’ (default if ‘-z gcs’ is omitted) enables GCS marking on the output if, and only if, all input objects composing the link unit are marked with GCS. • ‘always’ forces the marking of the output with GCS. • ‘never’ ignores any GCS marking on the input objects, and does not mark the output with GCS. The ‘-z gcs-report[=none|warning|error]’ option specifies how to report the missing GCS markings on inputs, i.e. the GNU_PROPERTY_AARCH64_FEATURE_1_GCS property. By default, if the option is omitted and ‘-z gcs’ is provided, warnings are emitted. • ‘none’ disables any warning messages. • ‘warning’ (the default value) emits warning messages when input objects composing the link unit are missing GCS markings. • ‘error’ turns the warning messages into errors. If issues are found, a maximum of 20 messages will be emitted, and then a summary with the total number of issues will be displayed at the end. The ‘-z gcs-report-dynamic=none|warning|error’ option specifies how to report the missing GCS markings on dynamic input objects, i.e. the GNU_PROPERTY_AARCH64_FEATURE_1_GCS property. By default, if the option is omitted, it inherits the value of ‘-z gcs-report’. However, the inherited value is capped to ‘warning’ as some user might want to only report errors in the currently built module, and not the shared dependencies. It is therefore necessary to use an explicit ‘-z gcs-report-dynamic=error’ option if you want the linker to error on GCS issues in the shared libraries. • ‘none’ disables any warning messages. • ‘warning’ emits warning messages when dynamic objects are missing GCS markings. • ‘error’ turns the warning messages into errors. If issues are found, a maximum of 20 messages will be emitted, and then a summary with the total number of issues will be displayed at the end. The ‘-z memtag-mode=mode’ specifies the MTE mode of operation. The value of ‘mode’ can be one of ‘none’, ‘sync’ or ‘async’. The specified modes determine the value of the ‘DT_AARCH64_MEMTAG_MODE’ dynamic tag. The ‘sync’ mode implies precise exceptions, with the runtime providing the exact instruction where the fault occurred, and the exact faulting address. The ‘async’ mode implies imprecise exceptions. The ‘-z memtag-stack’ specifies that output object uses MTE instructions for stack memory usage. d6823 1 a6823 1 File: ld.info, Node: NDS32, Next: PowerPC ELF32, Prev: MSP430, Up: Machine Dependent d6862 26 a6887 1 File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: NDS32, Up: Machine Dependent d6889 4 a6892 1 6.10 ‘ld’ and PowerPC 32-bit ELF Support d6932 1 a6932 1 placement. PowerPC GCC doesn't use ‘.sdata’ in shared libraries, d6948 1 a6948 1 6.11 ‘ld’ and PowerPC64 64-bit ELF Support d7010 1 a7010 1 glibc won't do much besides slow down your applications, but may be d7050 1 a7050 1 direct call when the function is defined locally and can't be d7070 2 a7071 2 PowerPC64 gcc's ‘-mcmodel=small’, and lastly TOC sections referenced only by code generated with PowerPC64 gcc's d7095 1 a7095 1 With power7's weakly ordered memory model, it is possible when d7129 1 a7129 1 the linker's selection of stub instructions. d7136 1 a7136 1 6.12 ‘ld’ and S/390 ELF Support d7147 1 a7147 1 6.13 ‘ld’ and SPU ELF Support d7187 1 a7187 1 link map is requested, detailed information about each function's d7203 1 a7203 1 6.14 ‘ld’'s Support for Various TI COFF Versions d7215 1 a7215 1 6.15 ‘ld’ and WIN32 (cygwin/mingw) d7224 1 a7224 1 libraries, which contains information for linking to dll's. They d7260 1 a7260 1 The cygwin/mingw ‘ld’ has several ways to export symbols for dll's. d7267 5 a7271 5 • -export-all-symbols [This is the default] • -exclude-symbols • -exclude-libs • -exclude-modules-for-implib • -version-script d7275 1 a7275 1 the exception of a few symbols known to belong to the system's d7277 1 a7277 1 export all of a DLL's symbols, which may include private d7297 1 a7297 1 linker's command line. The file's name must end in ‘.def’ or d7364 1 a7364 1 ‘NONAME’: Do not put the symbol name in the DLL's export d7378 1 a7378 1 read-only import address table's pointer to the variable, not d7384 1 a7384 1 ‘PRIVATE’: Put the symbol in the DLL's export table, but do d7439 1 a7439 1 linked objects trigger the feature's use. d7444 2 a7445 2 "variable '' can't be auto-imported. Please read the documentation for ld's ‘--enable-auto-import’ for details." d7454 1 a7454 1 variable and an offset (_addend_) within the variable-to specify a d7468 1 a7468 1 is only necessary on the developer's platform; the compiled result d7482 1 a7482 1 overhead involved in storing, loading, and processing so many bfd's d7490 1 a7490 1 developer's perspective is an understanding of this search, in d7516 1 a7516 1 conflicts among dll's built for the various win32/un*x d7521 1 a7521 1 applications and dll's and a ‘lib’ directory for the import d7536 1 a7536 1 However, as the dll's often have version numbers appended to their d7572 1 a7572 1 the import library (which otherwise contains only bfd's for d7578 1 a7578 1 is critical when linking against OS-supplied dll's (eg, the win32 d7639 1 a7639 1 will be exported. In effect, you'd be aliasing those symbols, not d7661 1 a7661 1 GNU-specific commands carried in the object file's ‘.drectve’ d7671 1 a7671 1 6.16 ‘ld’ and Xtensa Processors d7702 1 a7702 1 from assembler-generated "longcall" sequences of ‘L32R’/‘CALLXN’ when d7753 1 a7753 1 (binutils)objdump.) to list all the formats available for your d7782 1 a7782 1 the object file's data structures. d7787 1 a7787 1 BFD back end provides a routine for converting between the object file's d7793 1 a7793 1 writes the output file's symbol table, another BFD back end routine is d7865 1 a7865 1 magic numbers is not stored here--only the magic numbers' meaning, d7873 1 a7873 1 the section's original address in the object file, size and d8005 2 a8006 2 Sometimes people give a few sketchy facts and ask, "Does this ring a bell?" This cannot help us fix a bug, so it is basically useless. We d8024 2 a8025 2 • What compiler (and its version) was used to compile ‘ld’--e.g. "‘gcc-2.7’". d8051 1 a8051 1 incorrect. For example, "It gets a fatal signal." d8136 1 a8136 1 In general, MRI scripts aren't of much use with the ‘a.out’ object d8185 1 a8185 1 This command does nothing whatever; it's only accepted for d8256 1 a8256 1 This License is a kind of "copyleft", which means that derivative d8277 2 a8278 2 "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept d8282 1 a8282 1 A "Modified Version" of the Document means any work containing the d8286 1 a8286 1 A "Secondary Section" is a named appendix or a front-matter section d8288 1 a8288 1 publishers or authors of the Document to the Document's overall d8297 1 a8297 1 The "Invariant Sections" are certain Secondary Sections whose d8305 1 a8305 1 The "Cover Texts" are certain short passages of text that are d8311 1 a8311 1 A "Transparent" copy of the Document means a machine-readable copy, d8323 1 a8323 1 "Transparent" is called "Opaque". d8336 1 a8336 1 The "Title Page" means, for a printed book, the title page itself, d8339 3 a8341 3 works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. d8343 1 a8343 1 The "publisher" means any person or entity that distributes copies d8346 1 a8346 1 A section "Entitled XYZ" means a named subunit of the Document d8350 3 a8352 3 "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according d8382 1 a8382 1 the Document's license notice requires Cover Texts, you must d8454 1 a8454 1 Sections and required Cover Texts given in the Document's d8459 1 a8459 1 I. Preserve the section Entitled "History", Preserve its Title, d8462 1 a8462 1 Title Page. If there is no section Entitled "History" in the d8472 1 a8472 1 "History" section. You may omit a network location for a work d8477 1 a8477 1 K. For any section Entitled "Acknowledgements" or "Dedications", d8486 1 a8486 1 M. Delete any section Entitled "Endorsements". Such a section d8490 1 a8490 1 "Endorsements" or to conflict in title with any Invariant d8499 1 a8499 1 titles to the list of Invariant Sections in the Modified Version's d8503 1 a8503 1 You may add a section Entitled "Endorsements", provided it contains d8505 3 a8507 3 parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. d8545 4 a8548 4 "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." d8569 1 a8569 1 storage or distribution medium, is called an "aggregate" if the d8571 1 a8571 1 legal rights of the compilation's users beyond what the individual d8578 1 a8578 1 of the entire aggregate, the Document's Cover Texts may be placed d8600 2 a8601 2 If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to d8642 1 a8642 1 version of this License "or any later version" applies to it, you d8650 1 a8650 1 proxy's public statement of acceptance of a version permanently d8655 1 a8655 1 "Massive Multiauthor Collaboration Site" (or "MMC Site") means any d8659 1 a8659 1 A "Massive Multiauthor Collaboration" (or "MMC") contained in the d8663 1 a8663 1 "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 d8669 1 a8669 1 "Incorporate" means to publish or republish a Document, in whole or d8672 1 a8672 1 An MMC is "eligible for relicensing" if it is licensed under this d8699 1 a8699 1 Texts, replace the "with...Texts." line with this: d8723 8 a8730 6 * --accept-unknown-input-arch: Options. (line 1323) * --add-needed: Options. (line 1354) * --add-stdcall-alias: Options. (line 2668) * --allow-multiple-definition: Options. (line 1736) * --allow-shlib-undefined: Options. (line 1742) * --as-needed: Options. (line 1333) d8732 3 a8734 3 * --auxiliary=NAME: Options. (line 310) * --bank-window: Options. (line 3156) * --base-file: Options. (line 2673) d8736 1 a8736 1 * --branch-stub on C-SKY: Options. (line 3128) d8738 3 a8740 3 * --build-id: Options. (line 2616) * --build-id=STYLE: Options. (line 2616) * --check-sections: Options. (line 1436) d8743 10 a8752 10 * --compact-branches: Options. (line 3201) * --compress-debug-sections=none: Options. (line 2565) * --compress-debug-sections=zlib: Options. (line 2565) * --compress-debug-sections=zlib-gabi: Options. (line 2565) * --compress-debug-sections=zlib-gnu: Options. (line 2565) * --compress-debug-sections=zstd: Options. (line 2565) * --copy-dt-needed-entries: Options. (line 1448) * --cref: Options. (line 1468) * --ctf-share-types: Options. (line 1492) * --ctf-variables: Options. (line 1481) d8754 5 a8758 5 * --default-imported-symver: Options. (line 1792) * --default-script=SCRIPT: Options. (line 807) * --default-symver: Options. (line 1788) * --defsym=SYMBOL=EXP: Options. (line 1536) * --demangle[=STYLE]: Options. (line 1556) d8760 4 a8763 4 * --dependency-file=DEPFILE: Options. (line 631) * --disable-auto-image-base: Options. (line 2841) * --disable-auto-import: Options. (line 2980) * --disable-large-address-aware: Options. (line 2789) d8765 4 a8768 4 * --disable-long-section-names: Options. (line 2683) * --disable-multiple-abs-defs: Options. (line 1587) * --disable-new-dtags: Options. (line 2539) * --disable-runtime-pseudo-reloc: Options. (line 2993) d8770 5 a8774 5 * --disable-stdcall-fixup: Options. (line 2705) * --discard-all: Options. (line 900) * --discard-locals: Options. (line 904) * --dll: Options. (line 2678) * --dll-search-prefix: Options. (line 2847) d8776 11 a8786 11 * --dsbt-index: Options. (line 3115) * --dsbt-size: Options. (line 3110) * --dynamic-linker=FILE: Options. (line 1569) * --dynamic-list-cpp-new: Options. (line 1428) * --dynamic-list-cpp-typeinfo: Options. (line 1432) * --dynamic-list-data: Options. (line 1425) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 1412) * --dynamicbase: Options. (line 3038) * --eh-frame-hdr: Options. (line 2526) * --embedded-relocs: Options. (line 1582) * --emit-relocs: Options. (line 691) d8791 3 a8793 3 * --enable-auto-image-base: Options. (line 2832) * --enable-auto-import: Options. (line 2856) * --enable-extra-pe-debug: Options. (line 2998) d8795 2 a8796 2 * --enable-long-section-names: Options. (line 2683) * --enable-new-dtags: Options. (line 2539) d8799 3 a8801 3 * --enable-reloc-section: Options. (line 3097) * --enable-runtime-pseudo-reloc: Options. (line 2985) * --enable-stdcall-fixup: Options. (line 2705) d8803 12 a8814 12 * --error-execstack: Options. (line 2387) * --error-handling-script=SCRIPTNAME: Options. (line 1769) * --error-rwx-segments: Options. (line 2430) * --error-unresolved-symbols: Options. (line 2462) * --exclude-all-symbols: Options. (line 2758) * --exclude-libs: Options. (line 238) * --exclude-modules-for-implib: Options. (line 249) * --exclude-symbols: Options. (line 2752) * --export-all-symbols: Options. (line 2728) * --export-dynamic: Options. (line 262) * --export-dynamic-symbol-list=FILE: Options. (line 298) * --export-dynamic-symbol=GLOB: Options. (line 289) d8816 3 a8818 3 * --fatal-warnings: Options. (line 1591) * --file-alignment: Options. (line 2762) * --filter=NAME: Options. (line 331) d8825 4 a8828 4 * --force-dynamic: Options. (line 700) * --force-exe-suffix: Options. (line 1603) * --force-group-allocation: Options. (line 1528) * --forceinteg: Options. (line 3046) d8831 3 a8833 3 * --gc-keep-exported: Options. (line 1651) * --gc-sections: Options. (line 1613) * --got: Options. (line 3168) d8835 7 a8841 7 * --gpsize=VALUE: Options. (line 363) * --hash-size=NUMBER: Options. (line 2549) * --hash-style=STYLE: Options. (line 2557) * --heap: Options. (line 2768) * --help: Options. (line 1682) * --high-entropy-va: Options. (line 3029) * --ignore-branch-isa: Options. (line 3189) d8843 2 a8844 2 * --image-base=ORG: Options. (line 2202) * --imagic: Options. (line 3238) d8846 2 a8847 2 * --insert-timestamp: Options. (line 3081) * --insn32: Options. (line 3180) d8849 7 a8855 7 * --just-symbols=FILE: Options. (line 734) * --kill-at: Options. (line 2775) * --large-address-aware: Options. (line 2780) * --ld-generated-unwind-info: Options. (line 2532) * --leading-underscore: Options. (line 2722) * --library-path=DIR: Options. (line 421) * --library=NAMESPEC: Options. (line 388) d8858 4 a8861 4 * --major-image-version: Options. (line 2796) * --major-os-version: Options. (line 2801) * --major-subsystem-version: Options. (line 2805) * --max-cache-size=SIZE: Options. (line 2611) d8863 3 a8865 3 * --minor-image-version: Options. (line 2810) * --minor-os-version: Options. (line 2815) * --minor-subsystem-version: Options. (line 2819) d8868 5 a8872 5 * --nmagic: Options. (line 584) * --nmagic <1>: Options. (line 3228) * --no-accept-unknown-input-arch: Options. (line 1323) * --no-add-needed: Options. (line 1354) * --no-allow-shlib-undefined: Options. (line 1742) d8874 8 a8881 8 * --no-as-needed: Options. (line 1333) * --no-bind: Options. (line 3067) * --no-check-sections: Options. (line 1436) * --no-compact-branches: Options. (line 3202) * --no-copy-dt-needed-entries: Options. (line 1448) * --no-ctf-variables: Options. (line 1481) * --no-define-common: Options. (line 1512) * --no-demangle: Options. (line 1556) d8883 2 a8884 2 * --no-dynamic-linker: Options. (line 1576) * --no-eh-frame-hdr: Options. (line 2526) d8886 2 a8887 2 * --no-export-dynamic: Options. (line 262) * --no-fatal-warnings: Options. (line 1591) d8891 2 a8892 2 * --no-gc-sections: Options. (line 1613) * --no-ignore-branch-isa: Options. (line 3190) d8895 1 a8895 1 * --no-insn32: Options. (line 3181) d8897 4 a8900 4 * --no-isolation: Options. (line 3057) * --no-keep-memory: Options. (line 1719) * --no-leading-underscore: Options. (line 2722) * --no-merge-exidx-entries: Options. (line 3122) d8903 2 a8904 2 * --no-omagic: Options. (line 599) * --no-omagic <1>: Options. (line 3252) d8912 3 a8914 3 * --no-print-gc-sections: Options. (line 1642) * --no-print-map-discarded: Options. (line 571) * --no-print-map-locals: Options. (line 576) d8916 2 a8917 3 * --no-seh: Options. (line 3062) * --no-stats: Options. (line 2166) * --no-strip-discarded: Options. (line 770) d8924 6 a8929 6 * --no-trampoline: Options. (line 3150) * --no-undefined: Options. (line 1726) * --no-undefined-version: Options. (line 1783) * --no-warn-mismatch: Options. (line 1796) * --no-warn-search-mismatch: Options. (line 1805) * --no-warnings: Options. (line 1596) d8931 2 a8932 2 * --no-whole-archive: Options. (line 1809) * --noinhibit-exec: Options. (line 1813) d8934 10 a8943 10 * --nxcompat: Options. (line 3051) * --oformat=OUTPUT-FORMAT: Options. (line 1824) * --omagic: Options. (line 590) * --omagic <1>: Options. (line 3217) * --orphan-handling=MODE: Options. (line 856) * --out-implib: Options. (line 1837) * --output-def: Options. (line 2824) * --output=OUTPUT: Options. (line 605) * --package-metadata=JSON: Options. (line 2638) * --pic-executable: Options. (line 1846) d8950 1 a8950 1 * --pop-state: Options. (line 687) d8952 10 a8961 9 * --print-gc-sections: Options. (line 1642) * --print-map: Options. (line 508) * --print-map-discarded: Options. (line 571) * --print-map-locals: Options. (line 576) * --print-memory-usage: Options. (line 1667) * --print-output-format: Options. (line 1661) * --push-state: Options. (line 669) * --reduce-memory-overheads: Options. (line 2597) * --relax: Options. (line 1866) d8964 5 a8968 5 * --relocatable: Options. (line 704) * --remap-inputs-file=file: Options. (line 456) * --remap-inputs=pattern=filename: Options. (line 456) * --require-defined=SYMBOL: Options. (line 833) * --retain-symbols-file=FILENAME: Options. (line 1891) d8971 1 a8971 1 * --script=SCRIPT: Options. (line 786) d8973 2 a8974 3 * --section-alignment: Options. (line 3003) * --section-ordering-file: Options. (line 2017) * --section-start=SECTIONNAME=ORG: Options. (line 2193) d8976 7 a8982 7 * --sort-common: Options. (line 2063) * --sort-section=alignment: Options. (line 2078) * --sort-section=name: Options. (line 2074) * --spare-dynamic-tags: Options. (line 2082) * --split-by-file: Options. (line 2087) * --split-by-reloc: Options. (line 2092) * --stack: Options. (line 3009) d8984 4 a8987 4 * --stats: Options. (line 2105) * --strip-all: Options. (line 761) * --strip-debug: Options. (line 765) * --strip-discarded: Options. (line 770) d8989 1 a8989 1 * --stub-group-size on C-SKY: Options. (line 3135) d8992 1 a8992 1 * --subsystem: Options. (line 3016) d8994 2 a8995 2 * --sysroot=DIRECTORY: Options. (line 2171) * --target-help: Options. (line 1686) d8999 1 a8999 1 * --task-link: Options. (line 2176) d9003 7 a9009 7 * --trace: Options. (line 778) * --trace-symbol=SYMBOL: Options. (line 910) * --traditional-format: Options. (line 2181) * --tsaware: Options. (line 3076) * --undefined=SYMBOL: Options. (line 820) * --unique[=SECTION]: Options. (line 882) * --unresolved-symbols: Options. (line 2237) d9012 3 a9014 3 * --verbose[=NUMBER]: Options. (line 2266) * --version: Options. (line 891) * --version-script=VERSION-SCRIPTFILE: Options. (line 2274) d9016 13 a9028 14 * --warn-alternate-em: Options. (line 2454) * --warn-common: Options. (line 2284) * --warn-constructors: Options. (line 2352) * --warn-execstack: Options. (line 2357) * --warn-multiple-gp: Options. (line 2399) * --warn-once: Options. (line 2413) * --warn-rwx-segments: Options. (line 2417) * --warn-section-align: Options. (line 2443) * --warn-textrel: Options. (line 2450) * --warn-unresolved-symbols: Options. (line 2457) * --wdmdriver: Options. (line 3071) * --whole-archive: Options. (line 2466) * --wrap=SYMBOL: Options. (line 2480) * -(: Options. (line 1305) d9030 1 a9030 1 * -assert KEYWORD: Options. (line 1361) d9032 7 a9038 7 * -Bdynamic: Options. (line 1364) * -Bgroup: Options. (line 1374) * -Bno-symbolic: Options. (line 1408) * -Bshareable: Options. (line 2056) * -Bstatic: Options. (line 1381) * -Bsymbolic: Options. (line 1395) * -Bsymbolic-functions: Options. (line 1402) d9040 1 a9040 1 * -call_shared: Options. (line 1364) d9043 1 a9043 1 * -dn: Options. (line 1381) d9045 3 a9047 3 * -dT SCRIPT: Options. (line 807) * -dy: Options. (line 1364) * -E: Options. (line 262) d9049 26 a9074 26 * -EB: Options. (line 303) * -EL: Options. (line 306) * -f NAME: Options. (line 310) * -F NAME: Options. (line 331) * -fini=NAME: Options. (line 354) * -g: Options. (line 360) * -G VALUE: Options. (line 363) * -h NAME: Options. (line 370) * -i: Options. (line 379) * -IFILE: Options. (line 1569) * -init=NAME: Options. (line 382) * -L DIR: Options. (line 421) * -l NAMESPEC: Options. (line 388) * -M: Options. (line 508) * -m EMULATION: Options. (line 446) * -Map=MAPFILE: Options. (line 1690) * -n: Options. (line 584) * -N: Options. (line 590) * -N <1>: Options. (line 3216) * -n <1>: Options. (line 3227) * -no-pie: Options. (line 1857) * -no-relax: Options. (line 1866) * -non_shared: Options. (line 1381) * -nostdlib: Options. (line 1819) * -O LEVEL: Options. (line 644) * -o OUTPUT: Options. (line 605) d9076 36 a9111 47 * -pie: Options. (line 1846) * -plugin NAME: Options. (line 654) * -plugin-save-temps: Options. (line 775) * -q: Options. (line 691) * -qmagic: Options. (line 1860) * -Qy: Options. (line 1863) * -r: Options. (line 704) * -R FILE: Options. (line 734) * -rpath-link=DIR: Options. (line 1932) * -rpath=DIR: Options. (line 1905) * -s: Options. (line 761) * -S: Options. (line 765) * -shared: Options. (line 2056) * -soname=NAME: Options. (line 370) * -static: Options. (line 1381) * -t: Options. (line 778) * -T SCRIPT: Options. (line 786) * -Tbss=ORG: Options. (line 2213) * -Tdata=ORG: Options. (line 2213) * -Tldata-segment=ORG: Options. (line 2232) * -Trodata-segment=ORG: Options. (line 2226) * -Ttext-segment=ORG: Options. (line 2219) * -Ttext=ORG: Options. (line 2213) * -u SYMBOL: Options. (line 820) * -Ur: Options. (line 841) * -v: Options. (line 891) * -V: Options. (line 891) * -w: Options. (line 1596) * -x: Options. (line 900) * -X: Options. (line 904) * -Y PATH: Options. (line 919) * -y SYMBOL: Options. (line 910) * -z: Options. (line 3237) * -z bti-report[=none|warning|error]: ARM. (line 252) * -z defs: Options. (line 1726) * -z force-bti: ARM. (line 246) * -z gcs-report-dynamic=none|warning|error: ARM. (line 289) * -z gcs-report[=none|warning|error]: ARM. (line 277) * -z gcs=[always|never|implicit]: ARM. (line 267) * -z KEYWORD: Options. (line 923) * -z memtag-mode=MODE: ARM. (line 306) * -z memtag-stack: ARM. (line 313) * -z muldefs: Options. (line 1736) * -z pac-plt: ARM. (line 264) * -z undefs: Options. (line 1726) * :PHDR: Output Section Phdr. (line 6) a9112 3 * ": Symbols. (line 6) * [COMMON]: Input Section Common. (line 29) d9115 3 d9122 2 a9123 1 * 32-bit PLT entries: ARM. (line 219) d9145 1 a9145 1 * archive files, from cmd line: Options. (line 388) a9150 1 * AS_NEEDED(FILES): File Commands. (line 60) d9158 1 d9167 1 a9167 1 * big-endian objects: Options. (line 303) d9179 2 a9180 2 * combining symbols, warnings on: Options. (line 2284) * COMDAT: Options. (line 1528) d9186 1 a9186 1 * common allocation <1>: Options. (line 1512) d9199 1 a9199 1 * constructors: Options. (line 841) a9203 6 * Control warnings for missing BTI markings.: ARM. (line 252) * Control warnings for missing GCS markings on dynamic input objects.: ARM. (line 289) * Control warnings for missing GCS markings.: ARM. (line 277) * Controls whether the output object supports the Guarded Control Stack (GCS) mechanism.: ARM. (line 267) d9210 1 a9210 1 * cross reference table: Options. (line 1468) d9215 2 a9216 2 * ctf type sharing: Options. (line 1492) * ctf variables: Options. (line 1481) d9224 2 a9225 2 * dbx: Options. (line 2186) * DEF files, creating: Options. (line 2824) d9228 1 a9228 1 * defined symbol: Options. (line 833) d9230 1 a9230 1 * deleting local symbols: Options. (line 900) d9232 2 a9233 2 * demangling, from command line: Options. (line 1556) * dependency file: Options. (line 631) d9238 4 a9241 4 * DLLs, creating: Options. (line 2728) * DLLs, creating <1>: Options. (line 2824) * DLLs, creating <2>: Options. (line 2832) * DLLs, linking to: Options. (line 2847) d9245 2 a9246 2 * dynamic linker, from command line: Options. (line 1569) * dynamic symbol table: Options. (line 262) d9248 2 a9249 2 * ELF symbol visibility: Options. (line 1247) * emulation: Options. (line 446) d9252 1 a9252 1 * endianness: Options. (line 303) d9261 4 a9264 4 * executable segments, warnings on: Options. (line 2417) * executable stack, warnings on: Options. (line 2357) * export dynamic symbol: Options. (line 289) * export dynamic symbol list: Options. (line 298) d9282 1 a9282 1 * finalization function: Options. (line 354) d9295 1 a9295 1 * forcing the creation of dynamic sections: Options. (line 700) d9298 3 a9300 3 * garbage collection: Options. (line 1613) * garbage collection <1>: Options. (line 1642) * garbage collection <2>: Options. (line 1651) d9302 1 a9302 1 * generating optimized output: Options. (line 644) d9305 1 a9305 1 * group allocation in linker script: Options. (line 1528) d9310 1 a9310 1 * groups of archives: Options. (line 1305) d9313 2 a9314 2 * heap size: Options. (line 2768) * help: Options. (line 1682) d9321 1 a9321 1 * image base address, cmd line: Options. (line 2203) d9327 2 a9328 2 * including an entire archive: Options. (line 2466) * incremental link: Options. (line 379) d9331 1 a9331 1 * initialization function: Options. (line 382) d9337 1 a9337 1 * input files, displaying: Options. (line 778) d9363 2 a9366 4 * LD_STATS: Environment. (line 40) * LD_STATS <1>: Environment. (line 40) * ldata segment origin, cmd line: Options. (line 2233) * LDEMULATION: Environment. (line 21) d9371 3 a9373 3 * link map: Options. (line 508) * link map discarded: Options. (line 571) * link-time runtime library search path: Options. (line 1932) d9389 1 a9389 1 * little-endian objects: Options. (line 306) d9394 2 a9395 2 (line 55) * local symbols, deleting: Options. (line 904) a9405 1 * Mark program stack for MTE protection: ARM. (line 313) d9413 2 a9414 2 * memory usage: Options. (line 1667) * memory usage <1>: Options. (line 1719) a9422 1 * MTE modes of operation: ARM. (line 306) d9427 1 a9427 1 * naming the output file: Options. (line 605) d9429 4 a9432 3 * NMAGIC: Options. (line 584) * NO_ENUM_SIZE_WARNING: ARM. (line 155) * NO_WCHAR_SIZE_WARNING: ARM. (line 162) a9434 2 * NOCROSSREFS(SECTIONS): Miscellaneous Commands. (line 94) d9436 1 a9436 1 (line 55) d9438 2 d9445 3 a9447 3 * object size: Options. (line 363) * OMAGIC: Options. (line 590) * OMAGIC <1>: Options. (line 599) d9460 2 a9461 2 * orphan sections: Options. (line 856) * output file after errors: Options. (line 1813) d9464 1 a9464 1 * output format: Options. (line 1661) d9471 1 a9474 1 * OUTPUT(FILENAME): File Commands. (line 70) d9479 1 a9479 1 * partial link: Options. (line 704) d9486 3 a9488 3 * pop state governing input file handling: Options. (line 687) * position dependent executables: Options. (line 1858) * position independent executables: Options. (line 1848) a9494 1 * PowerPC64 __tls_get_addr optimization: PowerPC64 ELF64. (line 56) d9514 1 d9517 1 a9517 1 (line 55) a9522 2 * Protect PLTs with Branch Target Identification: ARM. (line 246) * Protect PLTs with Returned Pointer Authentication: ARM. (line 264) d9526 1 a9526 1 * push state governing input file handling: Options. (line 669) d9530 2 a9531 2 * read-only text: Options. (line 584) * read/write from cmd line: Options. (line 590) d9534 1 a9535 1 * regions of memory: MEMORY. (line 6) d9537 1 a9537 1 * relaxing addressing modes: Options. (line 1866) d9543 2 a9544 2 * relocatable output: Options. (line 704) * remapping inputs: Options. (line 456) d9549 2 a9550 2 * retain relocations in final executable: Options. (line 691) * retaining specified symbols: Options. (line 1891) d9553 1 a9553 1 * rodata segment origin, cmd line: Options. (line 2227) d9557 2 a9558 2 * runtime library name: Options. (line 370) * runtime library search path: Options. (line 1905) d9565 2 a9566 2 * script files: Options. (line 786) * script files <1>: Options. (line 807) d9568 1 a9568 1 * search directory, from cmd line: Options. (line 421) d9576 1 a9576 1 * section alignment, warnings on: Options. (line 2443) d9581 1 a9581 1 * section groups: Options. (line 1528) d9598 1 a9598 1 * sections, orphan: Options. (line 856) d9600 2 a9601 1 * segment origins, cmd line: Options. (line 2213) d9603 1 a9603 2 * segments, ELF: PHDRS. (line 6) * shared libraries: Options. (line 2058) d9606 1 a9607 1 * SIZEOF(SECTION): Builtin Functions. (line 178) a9619 1 * SOURCE_DATE_EPOCH: Environment. (line 35) d9630 1 a9630 1 * stack size: Options. (line 3009) d9633 1 a9633 1 * start-stop-gc: Options. (line 1232) d9637 3 a9639 3 * strip all symbols: Options. (line 761) * strip debugger symbols: Options. (line 765) * stripping all but some symbols: Options. (line 1891) d9647 1 a9647 1 * symbol tracing: Options. (line 910) d9649 1 a9649 1 * symbol-only input: Options. (line 734) d9651 1 a9651 1 * symbols, from command line: Options. (line 1536) d9653 3 a9655 3 * symbols, require defined: Options. (line 833) * symbols, retaining selectively: Options. (line 1891) * synthesizing linker: Options. (line 1866) d9660 1 a9660 1 * text segment origin, cmd line: Options. (line 2220) d9663 1 a9663 2 * timestamps: Environment. (line 35) * traditional format: Options. (line 2181) d9667 1 a9667 1 * undefined symbol: Options. (line 820) d9670 1 a9670 1 * undefined symbols, warnings on: Options. (line 2413) d9675 1 a9675 1 * usage: Options. (line 1682) d9681 4 a9684 2 * verbose[=NUMBER]: Options. (line 2266) * version: Options. (line 891) a9685 2 * version script: VERSION. (line 6) * version script, symbol versions: Options. (line 2274) d9688 6 a9693 6 * visibility: Options. (line 1247) * warnings, on combining symbols: Options. (line 2284) * warnings, on executable stack: Options. (line 2357) * warnings, on section alignment: Options. (line 2443) * warnings, on undefined symbols: Options. (line 2413) * warnings, on writeable and exectuable segments: Options. (line 2417) d9704 89 a9792 92 Node: Top704 Node: Overview1581 Node: Invocation2725 Node: Options3137 Ref: unrecognised-input-files5010 Ref: -L24191 Ref: --default-script42075 Ref: --section-ordering-file101070 Node: Environment158989 Node: Scripts161444 Node: Basic Script Concepts163188 Node: Script Format165968 Node: Simple Example166839 Node: Simple Commands170065 Node: Entry Point170570 Node: File Commands171644 Node: Format Commands176169 Node: REGION_ALIAS178217 Node: Miscellaneous Commands183212 Node: Assignments189523 Node: Simple Assignments190034 Node: HIDDEN191837 Node: PROVIDE192472 Node: PROVIDE_HIDDEN194050 Node: Source Code Reference194298 Node: SECTIONS198251 Node: Output Section Description200171 Node: Output Section Name201420 Node: Output Section Address202321 Node: Input Section204572 Node: Input Section Basics205373 Node: Input Section Wildcards210527 Node: Input Section Common216768 Node: Input Section Keep218278 Node: Input Section Example218784 Node: Output Section Data220251 Node: Output Section Keywords225579 Node: Output Section Discarding229254 Node: Output Section Attributes231196 Node: Output Section Type232315 Node: Output Section LMA235018 Node: Forced Output Alignment238159 Node: Forced Input Alignment238588 Node: Output Section Constraint238976 Node: Output Section Region239412 Node: Output Section Phdr239849 Node: Output Section Fill240525 Node: Overlay Description241912 Node: MEMORY246457 Node: PHDRS251207 Node: VERSION256685 Node: Expressions264960 Node: Constants265973 Node: Symbolic Constants266915 Node: Symbols267478 Node: Orphan Sections268233 Node: Location Counter269826 Node: Operators274400 Node: Evaluation275430 Node: Expression Section276802 Node: Builtin Functions280880 Node: Implicit Linker Scripts289943 Node: Plugins290730 Node: libdep Plugin291290 Node: Special Sections293135 Node: Machine Dependent295293 Node: H8/300296420 Node: M68HC11/68HC12298621 Node: ARM300128 Node: HPPA ELF32316333 Node: M68K318008 Node: MIPS318957 Node: MMIX320117 Node: MSP430321338 Node: NDS32323331 Node: PowerPC ELF32324385 Node: PowerPC64 ELF64327326 Node: S/390 ELF337432 Node: SPU ELF337791 Node: TI COFF340515 Node: WIN32341053 Node: Xtensa362748 Node: BFD366299 Node: BFD outline367756 Node: BFD information loss369044 Node: Canonical format371598 Node: Reporting Bugs375938 Node: Bug Criteria376644 Node: Bug Reporting377367 Node: MRI384528 Node: GNU Free Documentation License389203 Node: LD Index414343 @ 1.1.1.13 log @Import binutils-2.46.0 (previous was 2.45) Changes in 2.45: * New versioned release of libsframe: libsframe.so.2. This release introduces versioned symbols with version node name LIBSFRAME_2.0. Some new symbols have been added to support the new flag SFRAME_F_FDE_FUNC_START_PCREL and retrieving flags from SFrame decoder and encoder objects: - Addition of sframe_decoder_get_flags, sframe_decoder_get_offsetof_fde_start_addr, sframe_encoder_get_flags, sframe_encoder_get_offsetof_fde_start_addr. This release also includes backward-incompatible ABI changes: - Removal of sframe_get_funcdesc_with_addr. - Change in the behavior of sframe_decoder_get_funcdesc_v2, sframe_encoder_add_funcdesc_v2 and sframe_encoder_write. * On s390 64-bit (s390x), gas, ld, objdump, and readelf now support generating and processing SFrame V2 stack trace information (.sframe). The assembler generates SFrame info from CFI directives with option "--gsframe". The linker generates SFrame info for the linker-generated .plt section and merges all .sframe sections. Both objdump and readelf dump SFrame info with option "--sframe[=]". * For SFrame stack trace format, the function start address in each SFrame FDE has a changed encoding: The 32-bit signed integer now holds the offset of the start PC of the associated function from the sfde_func_start_address field itself (instead of the earlier where it was the offset from the start of the SFrame section itself). All SFrame sections generated by gas and ld now default to this new encoding, setting the (new) SFRAME_F_FDE_FUNC_START_PCREL flag. Relocatable SFrame links are now fixed. * Readelf now recognizes RISC-V GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS and GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED for zicfiss and zicfilp extensions. * For RISC-V dis-assembler, the definition of mapping symbol $x is changed, so the file needs to be rebuilt since 2.45 once used .option arch directives. * The LoongArch disassembler now properly accepts multiple disassembly options given by -M, such as "-M no-aliases,numeric". (Previously only the first option took effect.) @ text @d1 1 a1 1 This is ld.info, produced by makeinfo version 7.2 from ld.texi. d3 1 a3 1 This file documents the GNU linker LD (GNU Binutils) version 2.46.0. d5 1 a5 1 Copyright © 1991-2026 Free Software Foundation, Inc. d24 1 a24 1 This file documents the GNU linker ld (GNU Binutils) version 2.46.0. d774 2 a775 2 Undoes the effect of ‘--push-state’, restores the previous values of the flags governing input file handling. a1390 28 ‘--gnu-tls-tag’ ‘--no-gnu-tls-tag’ Add ‘GLIBC_ABI_GNU_TLS’ version tag dependency in output programs and shared libraries when linking against glibc if input relocatable object files call ‘___tls_get_addr’. The output will fail to load and run at run-time against glibc which doesn't define the ‘GLIBC_ABI_GNU_TLS’ version tag. Unless disabled by the ‘--disable-gnu-tls-tag’ configure option at the linker build time, when no options are specified, linker will add the ‘GLIBC_ABI_GNU_TLS’ version tag dependency if inputs have ‘___tls_get_addr’ call and libc.so defines the ‘GLIBC_ABI_GNU_TLS’ version tag. Supported for Linux/i386. ‘--gnu2-tls-tag’ ‘--no-gnu2-tls-tag’ Add ‘GLIBC_ABI_GNU2_TLS’ version tag dependency in output programs and shared libraries when linking against glibc if input relocatable object files have ‘R_386_TLS_DESC_CALL’ or ‘R_X86_64_TLSDESC_CALL’ relocation. The output will fail to load and run at run-time against glibc which doesn't define the ‘GLIBC_ABI_GNU2_TLS’ version tag. Unless disabled by the ‘--disable-gnu2-tls-tag’ configure option at the linker build time, when no options are specified, linker will add the ‘GLIBC_ABI_GNU2_TLS’ version tag dependency if inputs have ‘R_386_TLS_DESC_CALL’ or ‘R_X86_64_TLSDESC_CALL’ relocation and libc.so defines the ‘GLIBC_ABI_GNU2_TLS’ version tag. Supported for Linux/i386 and Linux/x86_64. d2220 15 a2234 20 if the GETRUSAGE() system library call is available then maximum set size and the user and system run times as well. In addition if the MALLINFO or MALLINFO2 system library calls are available then the total memory usage is reported, The information is displayed for individual parts of the linking process which are referred to as _phases_. Note that individual phases can contain or overlap with each other so it should not be assumed that the overall resources used by the linker is the sum of the resources used by the individual phases. In addition the information is also reported for a special phase called _ALL_ which covers the entire linking process. When extended information is being reported the linker version, command line arguments and linker start time are also included. This makes it easier to handle the situation where multiple links are being invoked by a build system and to indentify exactly which arguments were responsible for producing the statistics that are reported. d2242 9 a2250 9 Stats: phase cpu time rss user time system time memory Stats: name (microsec) (KiB) (seconds) (seconds) (KiB) Stats: ALL 390082 217740 0 0 25219440 Stats: ctf processing 12 0 0 0 0 Stats: string merge 1324 0 0 0 406544 Stats: parsing 349 288 0 0 119792 Stats: plugins 1 0 0 0 0 Stats: processing files 259616 214524 0 0 31569120 Stats: write 116493 0 0 0 48096 d2621 3 a2623 6 generated unwind info is supported. ‘--discard-sframe’ Discard ‘.sframe’ stack trace info from the output. This option also prohibits the creation of SFrame stack trace data for linker generated code sections like PLT. This option is off by default. d2641 1 a2641 3 speed. The default value is 4051 under normal circumstances and 1021 if the ‘--reduce-memory-overheads’ command line option is used. d2700 1 a2700 3 the maximum cache size to SIZE. Note - if the ‘--no-keep-memory’ command line option has been used then the linker acts as if the maximum cache size has been set to 0 - ie nothing is retained. d5684 2 a5685 2 depends upon ‘VERS_1.2’. The script binds the symbols ‘bar1’ and ‘bar2’ to the version node ‘VERS_2.0’. d6919 2 a6920 2 the output if, and only if, all input static objects are marked with GCS. d6925 8 a6932 8 When ‘-z gcs=always’ is specified, then the ‘-z gcs-report[=none|warning|error]’ option can be used to specify how to report missing GCS markings (i.e. the GNU_PROPERTY_AARCH64_FEATURE_1_GCS property) on static inputs. • ‘none’ disables the diagnostic messages. • ‘warning’ (the default value) emits diagnostic messages as warnings. • ‘error’ emits diagnostic messages as errors. d6937 13 a6949 10 If ‘-z gcs’ is not specified on the command line, or if it has the value ‘implicit’ or ‘always’, then the ‘-z gcs-report-dynamic[=none|warning|error]’ option specifies how to report the missing GCS markings (i.e. the GNU_PROPERTY_AARCH64_FEATURE_1_GCS property) on dynamic input objects. • ‘none’ (default value when ‘-z gcs=implicit’) disables the diagnostic messages. • ‘warning’ (default value when ‘-z gcs=always’) emits diagnostic messages as warnings. • ‘error’ emits diagnostic messages as errors. d8989 6 a8994 6 * --accept-unknown-input-arch: Options. (line 1351) * --add-needed: Options. (line 1382) * --add-stdcall-alias: Options. (line 2708) * --allow-multiple-definition: Options. (line 1764) * --allow-shlib-undefined: Options. (line 1770) * --as-needed: Options. (line 1361) d8997 2 a8998 2 * --bank-window: Options. (line 3196) * --base-file: Options. (line 2713) d9000 1 a9000 1 * --branch-stub on C-SKY: Options. (line 3168) d9002 3 a9004 3 * --build-id: Options. (line 2656) * --build-id=STYLE: Options. (line 2656) * --check-sections: Options. (line 1464) d9007 10 a9016 10 * --compact-branches: Options. (line 3241) * --compress-debug-sections=none: Options. (line 2603) * --compress-debug-sections=zlib: Options. (line 2603) * --compress-debug-sections=zlib-gabi: Options. (line 2603) * --compress-debug-sections=zlib-gnu: Options. (line 2603) * --compress-debug-sections=zstd: Options. (line 2603) * --copy-dt-needed-entries: Options. (line 1476) * --cref: Options. (line 1496) * --ctf-share-types: Options. (line 1520) * --ctf-variables: Options. (line 1509) d9018 1 a9018 1 * --default-imported-symver: Options. (line 1820) d9020 3 a9022 3 * --default-symver: Options. (line 1816) * --defsym=SYMBOL=EXP: Options. (line 1564) * --demangle[=STYLE]: Options. (line 1584) d9025 3 a9027 3 * --disable-auto-image-base: Options. (line 2881) * --disable-auto-import: Options. (line 3020) * --disable-large-address-aware: Options. (line 2829) d9029 4 a9032 4 * --disable-long-section-names: Options. (line 2723) * --disable-multiple-abs-defs: Options. (line 1615) * --disable-new-dtags: Options. (line 2575) * --disable-runtime-pseudo-reloc: Options. (line 3033) d9034 1 a9034 1 * --disable-stdcall-fixup: Options. (line 2745) d9037 2 a9038 3 * --discard-sframe: Options. (line 2570) * --dll: Options. (line 2718) * --dll-search-prefix: Options. (line 2887) d9040 10 a9049 10 * --dsbt-index: Options. (line 3155) * --dsbt-size: Options. (line 3150) * --dynamic-linker=FILE: Options. (line 1597) * --dynamic-list-cpp-new: Options. (line 1456) * --dynamic-list-cpp-typeinfo: Options. (line 1460) * --dynamic-list-data: Options. (line 1453) * --dynamic-list=DYNAMIC-LIST-FILE: Options. (line 1440) * --dynamicbase: Options. (line 3078) * --eh-frame-hdr: Options. (line 2559) * --embedded-relocs: Options. (line 1610) d9055 3 a9057 3 * --enable-auto-image-base: Options. (line 2872) * --enable-auto-import: Options. (line 2896) * --enable-extra-pe-debug: Options. (line 3038) d9059 2 a9060 2 * --enable-long-section-names: Options. (line 2723) * --enable-new-dtags: Options. (line 2575) d9063 3 a9065 3 * --enable-reloc-section: Options. (line 3137) * --enable-runtime-pseudo-reloc: Options. (line 3025) * --enable-stdcall-fixup: Options. (line 2745) d9067 5 a9071 5 * --error-execstack: Options. (line 2420) * --error-handling-script=SCRIPTNAME: Options. (line 1797) * --error-rwx-segments: Options. (line 2463) * --error-unresolved-symbols: Options. (line 2495) * --exclude-all-symbols: Options. (line 2798) d9074 2 a9075 2 * --exclude-symbols: Options. (line 2792) * --export-all-symbols: Options. (line 2768) d9080 2 a9081 2 * --fatal-warnings: Options. (line 1619) * --file-alignment: Options. (line 2802) d9090 3 a9092 3 * --force-exe-suffix: Options. (line 1631) * --force-group-allocation: Options. (line 1556) * --forceinteg: Options. (line 3086) d9095 3 a9097 3 * --gc-keep-exported: Options. (line 1679) * --gc-sections: Options. (line 1641) * --got: Options. (line 3208) d9100 6 a9105 6 * --hash-size=NUMBER: Options. (line 2585) * --hash-style=STYLE: Options. (line 2595) * --heap: Options. (line 2808) * --help: Options. (line 1710) * --high-entropy-va: Options. (line 3069) * --ignore-branch-isa: Options. (line 3229) d9107 2 a9108 2 * --image-base=ORG: Options. (line 2235) * --imagic: Options. (line 3278) d9110 2 a9111 2 * --insert-timestamp: Options. (line 3121) * --insn32: Options. (line 3220) d9114 4 a9117 4 * --kill-at: Options. (line 2815) * --large-address-aware: Options. (line 2820) * --ld-generated-unwind-info: Options. (line 2565) * --leading-underscore: Options. (line 2762) d9122 4 a9125 4 * --major-image-version: Options. (line 2836) * --major-os-version: Options. (line 2841) * --major-subsystem-version: Options. (line 2845) * --max-cache-size=SIZE: Options. (line 2649) d9127 3 a9129 3 * --minor-image-version: Options. (line 2850) * --minor-os-version: Options. (line 2855) * --minor-subsystem-version: Options. (line 2859) d9133 4 a9136 4 * --nmagic <1>: Options. (line 3268) * --no-accept-unknown-input-arch: Options. (line 1351) * --no-add-needed: Options. (line 1382) * --no-allow-shlib-undefined: Options. (line 1770) d9138 8 a9145 8 * --no-as-needed: Options. (line 1361) * --no-bind: Options. (line 3107) * --no-check-sections: Options. (line 1464) * --no-compact-branches: Options. (line 3242) * --no-copy-dt-needed-entries: Options. (line 1476) * --no-ctf-variables: Options. (line 1509) * --no-define-common: Options. (line 1540) * --no-demangle: Options. (line 1584) d9147 2 a9148 2 * --no-dynamic-linker: Options. (line 1604) * --no-eh-frame-hdr: Options. (line 2559) d9151 1 a9151 1 * --no-fatal-warnings: Options. (line 1619) d9155 2 a9156 2 * --no-gc-sections: Options. (line 1641) * --no-ignore-branch-isa: Options. (line 3230) d9159 1 a9159 1 * --no-insn32: Options. (line 3221) d9161 4 a9164 4 * --no-isolation: Options. (line 3097) * --no-keep-memory: Options. (line 1747) * --no-leading-underscore: Options. (line 2762) * --no-merge-exidx-entries: Options. (line 3162) d9168 1 a9168 1 * --no-omagic <1>: Options. (line 3292) d9176 1 a9176 1 * --no-print-gc-sections: Options. (line 1670) d9180 2 a9181 2 * --no-seh: Options. (line 3102) * --no-stats: Options. (line 2199) d9189 6 a9194 6 * --no-trampoline: Options. (line 3190) * --no-undefined: Options. (line 1754) * --no-undefined-version: Options. (line 1811) * --no-warn-mismatch: Options. (line 1824) * --no-warn-search-mismatch: Options. (line 1833) * --no-warnings: Options. (line 1624) d9196 2 a9197 2 * --no-whole-archive: Options. (line 1837) * --noinhibit-exec: Options. (line 1841) d9199 2 a9200 2 * --nxcompat: Options. (line 3091) * --oformat=OUTPUT-FORMAT: Options. (line 1852) d9202 1 a9202 1 * --omagic <1>: Options. (line 3257) d9204 2 a9205 2 * --out-implib: Options. (line 1865) * --output-def: Options. (line 2864) d9207 2 a9208 2 * --package-metadata=JSON: Options. (line 2678) * --pic-executable: Options. (line 1874) d9217 1 a9217 1 * --print-gc-sections: Options. (line 1670) d9221 2 a9222 2 * --print-memory-usage: Options. (line 1695) * --print-output-format: Options. (line 1689) d9224 2 a9225 2 * --reduce-memory-overheads: Options. (line 2635) * --relax: Options. (line 1894) d9232 1 a9232 1 * --retain-symbols-file=FILENAME: Options. (line 1919) d9237 3 a9239 3 * --section-alignment: Options. (line 3043) * --section-ordering-file: Options. (line 2045) * --section-start=SECTIONNAME=ORG: Options. (line 2226) d9241 7 a9247 7 * --sort-common: Options. (line 2091) * --sort-section=alignment: Options. (line 2106) * --sort-section=name: Options. (line 2102) * --spare-dynamic-tags: Options. (line 2110) * --split-by-file: Options. (line 2115) * --split-by-reloc: Options. (line 2120) * --stack: Options. (line 3049) d9249 1 a9249 1 * --stats: Options. (line 2133) d9254 1 a9254 1 * --stub-group-size on C-SKY: Options. (line 3175) d9257 1 a9257 1 * --subsystem: Options. (line 3056) d9259 2 a9260 2 * --sysroot=DIRECTORY: Options. (line 2204) * --target-help: Options. (line 1714) d9264 1 a9264 1 * --task-link: Options. (line 2209) d9270 2 a9271 2 * --traditional-format: Options. (line 2214) * --tsaware: Options. (line 3116) d9274 1 a9274 1 * --unresolved-symbols: Options. (line 2270) d9277 1 a9277 1 * --verbose[=NUMBER]: Options. (line 2299) d9279 1 a9279 1 * --version-script=VERSION-SCRIPTFILE: Options. (line 2307) d9281 14 a9294 14 * --warn-alternate-em: Options. (line 2487) * --warn-common: Options. (line 2317) * --warn-constructors: Options. (line 2385) * --warn-execstack: Options. (line 2390) * --warn-multiple-gp: Options. (line 2432) * --warn-once: Options. (line 2446) * --warn-rwx-segments: Options. (line 2450) * --warn-section-align: Options. (line 2476) * --warn-textrel: Options. (line 2483) * --warn-unresolved-symbols: Options. (line 2490) * --wdmdriver: Options. (line 3111) * --whole-archive: Options. (line 2499) * --wrap=SYMBOL: Options. (line 2513) * -(: Options. (line 1333) d9296 1 a9296 1 * -assert KEYWORD: Options. (line 1389) d9298 7 a9304 7 * -Bdynamic: Options. (line 1392) * -Bgroup: Options. (line 1402) * -Bno-symbolic: Options. (line 1436) * -Bshareable: Options. (line 2084) * -Bstatic: Options. (line 1409) * -Bsymbolic: Options. (line 1423) * -Bsymbolic-functions: Options. (line 1430) d9306 1 a9306 1 * -call_shared: Options. (line 1392) d9309 1 a9309 1 * -dn: Options. (line 1409) d9312 1 a9312 1 * -dy: Options. (line 1392) d9324 1 a9324 1 * -IFILE: Options. (line 1597) d9330 1 a9330 1 * -Map=MAPFILE: Options. (line 1718) d9333 6 a9338 6 * -N <1>: Options. (line 3256) * -n <1>: Options. (line 3267) * -no-pie: Options. (line 1885) * -no-relax: Options. (line 1894) * -non_shared: Options. (line 1409) * -nostdlib: Options. (line 1847) d9342 1 a9342 1 * -pie: Options. (line 1874) d9346 2 a9347 2 * -qmagic: Options. (line 1888) * -Qy: Options. (line 1891) d9350 2 a9351 2 * -rpath-link=DIR: Options. (line 1960) * -rpath=DIR: Options. (line 1933) d9354 1 a9354 1 * -shared: Options. (line 2084) d9356 1 a9356 1 * -static: Options. (line 1409) d9359 6 a9364 6 * -Tbss=ORG: Options. (line 2246) * -Tdata=ORG: Options. (line 2246) * -Tldata-segment=ORG: Options. (line 2265) * -Trodata-segment=ORG: Options. (line 2259) * -Ttext-segment=ORG: Options. (line 2252) * -Ttext=ORG: Options. (line 2246) d9369 1 a9369 1 * -w: Options. (line 1624) d9374 1 a9374 1 * -z: Options. (line 3277) d9376 1 a9376 1 * -z defs: Options. (line 1754) d9378 1 a9378 1 * -z gcs-report-dynamic[=none|warning|error]: ARM. (line 289) d9382 3 a9384 3 * -z memtag-mode=MODE: ARM. (line 303) * -z memtag-stack: ARM. (line 310) * -z muldefs: Options. (line 1764) d9386 1 a9386 1 * -z undefs: Options. (line 1754) d9455 2 a9456 2 * combining symbols, warnings on: Options. (line 2317) * COMDAT: Options. (line 1556) d9462 1 a9462 1 * common allocation <1>: Options. (line 1540) d9480 2 a9481 1 * Control diagnostics for missing GCS markings on dynamic input objects.: ARM. d9483 1 a9483 3 * Control diagnostics for missing GCS markings on static input objects.: ARM. (line 277) * Control warnings for missing BTI markings.: ARM. (line 252) d9492 1 a9492 1 * cross reference table: Options. (line 1496) d9497 2 a9498 2 * ctf type sharing: Options. (line 1520) * ctf variables: Options. (line 1509) d9506 2 a9507 2 * dbx: Options. (line 2219) * DEF files, creating: Options. (line 2864) d9514 1 a9514 1 * demangling, from command line: Options. (line 1584) d9520 4 a9523 4 * DLLs, creating: Options. (line 2768) * DLLs, creating <1>: Options. (line 2864) * DLLs, creating <2>: Options. (line 2872) * DLLs, linking to: Options. (line 2887) d9527 1 a9527 1 * dynamic linker, from command line: Options. (line 1597) d9543 2 a9544 2 * executable segments, warnings on: Options. (line 2450) * executable stack, warnings on: Options. (line 2390) d9580 3 a9582 3 * garbage collection: Options. (line 1641) * garbage collection <1>: Options. (line 1670) * garbage collection <2>: Options. (line 1679) d9587 1 a9587 1 * group allocation in linker script: Options. (line 1556) d9592 1 a9592 1 * groups of archives: Options. (line 1333) d9595 2 a9596 2 * heap size: Options. (line 2808) * help: Options. (line 1710) d9603 1 a9603 1 * image base address, cmd line: Options. (line 2236) d9609 1 a9609 1 * including an entire archive: Options. (line 2499) d9649 1 a9649 1 * ldata segment origin, cmd line: Options. (line 2266) d9657 1 a9657 1 * link-time runtime library search path: Options. (line 1960) d9690 1 a9690 1 * Mark program stack for MTE protection: ARM. (line 310) d9698 2 a9699 2 * memory usage: Options. (line 1695) * memory usage <1>: Options. (line 1747) d9708 1 a9708 1 * MTE modes of operation: ARM. (line 303) d9746 1 a9746 1 * output file after errors: Options. (line 1841) d9749 1 a9749 1 * output format: Options. (line 1689) d9772 2 a9773 2 * position dependent executables: Options. (line 1886) * position independent executables: Options. (line 1876) d9824 1 a9824 1 * relaxing addressing modes: Options. (line 1894) d9837 1 a9837 1 * retaining specified symbols: Options. (line 1919) d9840 1 a9840 1 * rodata segment origin, cmd line: Options. (line 2260) d9845 1 a9845 1 * runtime library search path: Options. (line 1933) d9863 1 a9863 1 * section alignment, warnings on: Options. (line 2476) d9868 1 a9868 1 * section groups: Options. (line 1556) d9887 1 a9887 1 * segment origins, cmd line: Options. (line 2246) d9890 1 a9890 1 * shared libraries: Options. (line 2086) d9918 1 a9918 1 * stack size: Options. (line 3049) d9927 1 a9927 1 * stripping all but some symbols: Options. (line 1919) d9939 1 a9939 1 * symbols, from command line: Options. (line 1564) d9942 2 a9943 2 * symbols, retaining selectively: Options. (line 1919) * synthesizing linker: Options. (line 1894) d9948 1 a9948 1 * text segment origin, cmd line: Options. (line 2253) d9952 1 a9952 1 * traditional format: Options. (line 2214) d9959 1 a9959 1 * undefined symbols, warnings on: Options. (line 2446) d9964 1 a9964 1 * usage: Options. (line 1710) d9970 1 a9970 1 * verbose[=NUMBER]: Options. (line 2299) d9974 1 a9974 1 * version script, symbol versions: Options. (line 2307) d9978 5 a9982 5 * warnings, on combining symbols: Options. (line 2317) * warnings, on executable stack: Options. (line 2390) * warnings, on section alignment: Options. (line 2476) * warnings, on undefined symbols: Options. (line 2446) * warnings, on writeable and exectuable segments: Options. (line 2450) d9990 1 d9994 91 a10084 91 Node: Overview1583 Node: Invocation2727 Node: Options3139 Ref: unrecognised-input-files5012 Ref: -L24193 Ref: --default-script42084 Ref: --section-ordering-file102646 Node: Environment161237 Node: Scripts163692 Node: Basic Script Concepts165436 Node: Script Format168216 Node: Simple Example169087 Node: Simple Commands172313 Node: Entry Point172818 Node: File Commands173892 Node: Format Commands178417 Node: REGION_ALIAS180465 Node: Miscellaneous Commands185460 Node: Assignments191771 Node: Simple Assignments192282 Node: HIDDEN194085 Node: PROVIDE194720 Node: PROVIDE_HIDDEN196298 Node: Source Code Reference196546 Node: SECTIONS200499 Node: Output Section Description202419 Node: Output Section Name203668 Node: Output Section Address204569 Node: Input Section206820 Node: Input Section Basics207621 Node: Input Section Wildcards212775 Node: Input Section Common219016 Node: Input Section Keep220526 Node: Input Section Example221032 Node: Output Section Data222499 Node: Output Section Keywords227827 Node: Output Section Discarding231502 Node: Output Section Attributes233444 Node: Output Section Type234563 Node: Output Section LMA237266 Node: Forced Output Alignment240407 Node: Forced Input Alignment240836 Node: Output Section Constraint241224 Node: Output Section Region241660 Node: Output Section Phdr242097 Node: Output Section Fill242773 Node: Overlay Description244160 Node: MEMORY248705 Node: PHDRS253455 Node: VERSION258933 Node: Expressions267197 Node: Constants268210 Node: Symbolic Constants269152 Node: Symbols269715 Node: Orphan Sections270470 Node: Location Counter272063 Node: Operators276637 Node: Evaluation277667 Node: Expression Section279039 Node: Builtin Functions283117 Node: Implicit Linker Scripts292180 Node: Plugins292967 Node: libdep Plugin293527 Node: Special Sections295372 Node: Machine Dependent297530 Node: H8/300298657 Node: M68HC11/68HC12300858 Node: ARM302365 Node: HPPA ELF32318236 Node: M68K319911 Node: MIPS320860 Node: MMIX322020 Node: MSP430323241 Node: NDS32325234 Node: PowerPC ELF32326288 Node: PowerPC64 ELF64329229 Node: S/390 ELF339335 Node: SPU ELF339694 Node: TI COFF342418 Node: WIN32342956 Node: Xtensa364651 Node: BFD368202 Node: BFD outline369659 Node: BFD information loss370947 Node: Canonical format373501 Node: Reporting Bugs377841 Node: Bug Criteria378547 Node: Bug Reporting379270 Node: MRI386431 Node: GNU Free Documentation License391106 Node: LD Index416246 @