133965Sjdp-*- text -*- 2218822Sdim* Added support for National Semicondutor CompactRISC (ie CR16) target. 3130561Sobrien 4218822Sdim* -l:foo now searches the library path for a filename called foo, 5218822Sdim without converting it to libfoo.a or libfoo.so. 6218822Sdim 7218822Sdim* Add a new command line option '--default-script=FILE' or '-dT FILE' 8218822Sdim which specifies a replacement for the built in, default linker 9218822Sdim script. 10218822Sdim 11218822Sdim* ELF: Add -Bsymbolic-functions, --dynamic-list-cpp-new, which puts C++ 12218822Sdim operator new and delete on the dynamic list, and --dynamic-list-data, 13218822Sdim builtin list for --dynamic-list, which puts global data symbols on the 14218822Sdim dynamic list. 15218822Sdim 16218822Sdim* Add support for x86_64 PE+ target. 17218822Sdim 18218822Sdim* Add support for Score target. 19218822Sdim 20218822Sdim* ELF: Add --dynamic-list option to specify a list of global symbols 21218822Sdim whose references shouldn't be bound to the definition within the 22218822Sdim shared library, or a list of symbols which should be added to the 23218822Sdim symbol table in the executable. 24218822Sdim 25218822Sdim* The default output section LMA has changed for allocatable sections from 26218822Sdim being equal to VMA, to keeping the difference between LMA and VMA the same as 27218822Sdim the previous output section in the same region. This is a more useful 28218822Sdim default when using overlays and other cases where you specify an LMA 29218822Sdim differing from the VMA for some sections. 30218822Sdim 31218822Sdim* New switch: --print-gc-sections to list any sections removed by garabge 32218822Sdim collection. 33218822Sdim 34218822Sdim* ARM: Added --vfp11-denorm-fix option to work around an erratum in current 35218822SdimVFP11 coprocessors. 36218822Sdim 37218822SdimChanges in 2.17: 38218822Sdim 39218822Sdim* Support for the Infineon XC16X has been added by KPIT Cummins Infosystems. 40218822Sdim 41218822Sdim* Modify the Linux linker search order to better match ld.so search order. 42218822Sdim Look for DT_NEEDED libraries in paths specified by ld.so.conf before 43218822Sdim searching the default directories, rather than vice versa. 44218822Sdim Use $prefix/etc/ld.so.conf if it exists, otherwise /etc/ld.so.conf. 45218822Sdim 46218822Sdim* PE-COFF: Forward exports from DLL's can now be specified in .def files 47218822Sdim passed directly to ld. 48218822Sdim 49218822Sdim* Support for the Z80 processor family has been added. 50218822Sdim 51218822Sdim* Add support for the "@<file>" syntax to the command line, so that extra 52218822Sdim switches can be read from <file>. 53218822Sdim 54218822SdimChanges in 2.16: 55218822Sdim 56218822Sdim* Support for the R_ARM_V4BX relocation as defined in the ARM AAELF 57218822Sdim specification has been added via the --fix-v4bx command-line option. 58218822Sdim 59218822Sdim* New linker script construct AS_NEEDED(), which sets the --as-needed flag 60218822Sdim for input files listed inside of it. 61218822Sdim 62218822Sdim* A new command-line option, --sysroot, can be used to override the 63218822Sdim default sysroot location. It only applies to toolchains that were 64218822Sdim configured using --with-sysroot. 65218822Sdim 66218822Sdim* New linker script functions: ORIGIN() and LENGTH() which return information 67218822Sdim about a specified memory region. 68218822Sdim 69218822Sdim* Port to MAXQ processor contributed by HCL Tech. 70218822Sdim 71218822Sdim* Added SEGMENT_START to the linker script language to permit the user to 72218822Sdim override the base address for a segment from the command-line. 73218822Sdim 74218822Sdim* ELF: --warn-shared-textrel option to warn if adding a DT_TEXTREL to a shared 75218822Sdim object. 76218822Sdim 77218822Sdim* Added SORT_BY_NAME and SORT_BY_ALIGNMENT to the linker script 78218822Sdim language to permit sorting sections by section name or section 79218822Sdim maximum alignment. 80218822Sdim 81218822Sdim* Added a new linker command line switch, --sort-section name|alignment, 82218822Sdim to sort sections by section name or maximum alignment. 83218822Sdim 84218822Sdim* ELF: --add-needed/--no-add-needed options to control if a DT_NEEDED tag 85218822Sdim should be added when a shared library comes from DT_NEEDED tags. 86218822Sdim 87218822Sdim* Support for the crx-elf target added. 88218822Sdim 89218822Sdim* Support for the sh-symbianelf target added. 90218822Sdim 91218822Sdim* A new linker command line switch has been added which allows the hash table 92218822Sdim size to be set to a suitable prime value near to its argument. This switch 93218822Sdim is --hash-size=<NUMBER>. Also if the switch --reduce-memory-overheads is 94218822Sdim used, and --hash-size has not been used, then the default value will be set 95218822Sdim to 1021. 96218822Sdim 97218822Sdim* Linker map files are now generated with an O(N) algorithm for finding symbols 98218822Sdim that are defined in each section. This uses about 40% more memory for 99218822Sdim symbols than the old O(N^2) algorithm. You can use the new 100218822Sdim --reduce-memory-overheads option to select the old algorithm; this option 101218822Sdim might also be used in the future to select similar tradeoffs. 102218822Sdim 103218822SdimChanges in 2.15: 104218822Sdim 105218822Sdim* ELF: --as-needed/--no-as-needed options to control if a DT_NEEDED tag should 106218822Sdim be added only when a shared library is referenced. 107218822Sdim 108218822Sdim* PE: --large-address-aware option to indicate executables support virtual 109218822Sdim addresses greater than 2 gigabytes. 110218822Sdim 111218822Sdim* DWARF 2 support for i386pe added. 112218822Sdim 113130561Sobrien* The linker script operator DEFINED() will now yield 1 only for a symbol that 114130561Sobrien is defined before the statement where DEFINED is used. 115130561Sobrien 116130561Sobrien* The MIPS --embedded-relocs (used to embed relocations into binaries for 117130561Sobrien Embedded-PIC code) is deprecated and will be removed in a future release. 118130561Sobrien 119218822Sdim* cr16c support added by NSC. 120218822Sdim 121130561Sobrien* m32r Linux (ELF) support added by Renesas. 122130561Sobrien 123130561Sobrien* Improved linker's handling of unresolved symbols. The switch 124130561Sobrien --unresolved-symbols=<method> has been added to tell the linker when it 125130561Sobrien should report them and the switch --warn-unresolved-symbols has been added to 126130561Sobrien make reports be issued as warning messages rather than errors. 127130561Sobrien 128130561SobrienChanges in 2.14: 129130561Sobrien 130130561Sobrien* Added support for Xtensa architecture. 131130561Sobrien 132130561Sobrien* Added --with-sysroot configure switch to specify a target system root, for 133130561Sobrien linking against a target filesystem image. 134130561Sobrien 135130561Sobrien* Added --accept-unknown-linker-format to restore old linker behaviour (pre 136130561Sobrien 2.14) of silently accepting and linking in any files in an unknown binary 137130561Sobrien file format. 138130561Sobrien 139130561Sobrien* Added --no-omagic to undo the effects of the -N option. 140130561Sobrien 141130561Sobrien* Support for Texas Instruments TMS320C4x and TMS320C3x series of 142130561Sobrien DSP's contributed by Michael Hayes and Svein E. Seldal. 143130561Sobrien 144130561Sobrien* Added --with-lib-path configure switch to specify default value for 145130561Sobrien LIB_PATH. 146130561Sobrien 147130561Sobrien* ARM port to QNX operating system added by Graeme Peterson. 148130561Sobrien 149130561Sobrien* IP2K support added by Denis Chertykov. 150130561Sobrien 151104834SobrienChanges in 2.13: 15292828Sobrien 153104834Sobrien* Support for the Fujitsu FRV architecture added by Red Hat. Models for FR400 154104834Sobrien and FR500 included. 15592828Sobrien 156104834SobrienChanges in version 2.13: 157104834Sobrien 158104834Sobrien* DEC VAX ELF support, by Matt Thomas. 159104834Sobrien 160104834SobrienChanges in version 2.12: 161104834Sobrien 16291041Sobrien* Support for Don Knuth's MMIX, by Hans-Peter Nilsson. 16391041Sobrien 16491041Sobrien* Support for the OpenRISC 32-bit embedded processor by OpenCores. 16591041Sobrien 16689857Sobrien* Support for -z nocopyreloc in the x86 ELF linker, which disables 16789857Sobrien production of copy relocs. Warning: using this option may result in 16889857Sobrien non-sharable applications. 16933965Sjdp 17089857Sobrien* Support for -z combreloc in the ELF linker, which puts dynamic 17189857Sobrien relocations against the same symbol together, so that dynamic linker 17289857Sobrien can use an one-entry symbol lookup cache. 17389857Sobrien 17489857Sobrien* Support for ELF SHF_MERGE section merging, by Jakub Jelinek. 17589857Sobrien 176104834SobrienChanges in version 2.11: 17792828Sobrien 17877298Sobrien* Support for AMD x86-64 architecture, by Jan Hubicka, SuSE Labs. 17977298Sobrien 18077298Sobrien* Support added for eliminating duplicate DWARF2 debug information by 18177298Sobrien having the compiler generate the information in sections called 18277298Sobrien .gnu.linkonce.wi.XXXX where XXXX is a checksum for the contents. The 18377298Sobrien linker then merges these sections together into the normal .debug_info 18477298Sobrien section. 18577298Sobrien 18677298Sobrien* The native ELF linker now searches the directories in DT_RUNPATH or 18777298Sobrien DT_RPATH of a shared library for shared libraries needed by it. 18877298Sobrien 18977298Sobrien* TI C54x support, by Timothy Wall. 19077298Sobrien 19177298Sobrien* Added command line switch --section-start to set the start address of any 19277298Sobrien specified section. 19377298Sobrien 19477298Sobrien* Added ability to emit full relocation information in linked executables, 19577298Sobrien enabled by --emit-relocs. Some post-linkage optimization tools need 19677298Sobrien this information in order to be able to correctly identify and perform 19777298Sobrien symbol relative addressing in the event of changes in section contents 19877298Sobrien (instructions being added or deleted, extending data sections, etc.) 19977298Sobrien 20077298Sobrien* Support for i860, by Jason Eckhardt (preliminary, alpha quality). 20177298Sobrien 20277298Sobrien* Support for CRIS (Axis Communications ETRAX series). 20377298Sobrien 204130561Sobrien* Support for PDP-11 and 2.11BSD a.out format, by Lars Brinkhoff. 205130561Sobrien 20660484SobrienChanges in version 2.10: 20760484Sobrien 20868765Sobrien* Added AT> to the linker script language to allow load-time allocation of 20968765Sobrien sections into regions. 21068765Sobrien 21160484Sobrien* Added garbage collection of unused sections, enabled by --gc-sections. 21260484Sobrien It does require a bit of backend support; currently implemented are 21377298Sobrien arm-elf, avr-elf, d10v-elf, fr30-elf, i386-elf, m32r-elf, m68k-elf, 21477298Sobrien mcore-elf, mips-elf, mn10300-elf, ppc-elf, sh-elf, sparc-elf, and v850-elf. 21568765Sobrien Others will ignore the option. 21660484Sobrien 21760484Sobrien* Added SORT to the linker script language to permit sorting sections by file 21860484Sobrien name or section name. 21960484Sobrien 22060484Sobrien* Added EXTERN to the linker script language as an equivalent to the -u 22160484Sobrien command-line option. 22260484Sobrien 22360484Sobrien* Added ASSERT to the linker script language. 22460484Sobrien 22560484Sobrien* Added EXCLUDE_FILE to the linker script language for further control over 22660484Sobrien wildcard file names. 22760484Sobrien 22860484Sobrien* Added -O option to optimize linker output (as of this writing, this only 229130561Sobrien affects ELF shared library generation). 23060484Sobrien 23160484Sobrien* The -e option now accepts a number as well as a symbol name. 23260484Sobrien 23360484Sobrien* Added --no-undefined option to disallow undefined symbols when creating a 23460484Sobrien shared library. 23560484Sobrien 23660484Sobrien* The linker now issues a warning, not an error, for an undefined symbol when 23760484Sobrien using -Bsymbolic; use the new --no-undefined option to get the old 23860484Sobrien behaviour. 23960484Sobrien 24060484Sobrien* Added --demangle and --no-demangle options. 24160484Sobrien 24238889SjdpChanges in version 2.9: 24338889Sjdp 24438889Sjdp* Added SQUAD to the linker script language. 24538889Sjdp 24638889Sjdp* New option --no-warn-mismatch. 24738889Sjdp 24838889Sjdp* The MEMORY command now parses the attributes to determine where sections that 24960484Sobrien are not placed in a specific memory region are placed. 25038889Sjdp 25133965SjdpChanges in version 2.8: 25233965Sjdp 25333965Sjdp* Linker scripts may now contain shell wildcard characters for file and section 25433965Sjdp names. 25533965Sjdp 25633965Sjdp* The linker now supports symbol versions in ELF. 25733965Sjdp 25833965Sjdp* The NOCROSSREFS command was added to the linker script language. 25933965Sjdp 26033965Sjdp* The LOADADDR expression was added to the linker script language. 26133965Sjdp 26233965Sjdp* MAX and MIN functions were added to the linker script language. 26333965Sjdp 26433965Sjdp* The OVERLAY construct was added to the linker script language. 26533965Sjdp 26633965Sjdp* New option --warn-section-align to warn when the address of an output section 26733965Sjdp changes due to alignment of an input section. 26833965Sjdp 26933965Sjdp* New options --filter/-F and --auxiliary/-f. 27033965Sjdp 27133965SjdpChanges in version 2.7: 27233965Sjdp 27333965Sjdp* New option --cref to print out a cross reference table. 27433965Sjdp 27533965Sjdp* New option --wrap SYMBOL. 27633965Sjdp 27733965Sjdp* New option --no-whole-archive, to turn off the effect of --whole-archive. 27833965Sjdp 27933965Sjdp* Input sections assigned to the output section /DISCARD/ in the linker script 28033965Sjdp are not included in the output file. 28133965Sjdp 28233965Sjdp* The SunOS and ELF linkers now merge stabs debugging information which uses 28333965Sjdp the N_BINCL and N_EINCL stab types. This reduces the amount of debugging 28433965Sjdp information generated. 28533965Sjdp 28633965SjdpChanges in version 2.6: 28733965Sjdp 28833965Sjdp* When an ELF section name is representable as a C identifier (this is not true 28933965Sjdpof most ELF section names), the linker will automatically define symbols 29033965Sjdp__start_SECNAME and __stop_SECNAME, where SECNAME is the section name, at the 29133965Sjdpbeginning and the end of the section. This is used by glibc. 29233965Sjdp 29333965Sjdp* When an ELF section named .gnu.warning is encountered in an input file, the 29433965Sjdpcontents of the section are displayed as an error message, and the section is 29533965Sjdpnot copied into the output file. This is used by glibc. 29633965Sjdp 29733965Sjdp* When an ELF section named .gnu.warning.SYMBOL is encountered in an input 29833965Sjdpfile, and the symbol SYMBOL is referenced by some object file, the contents of 29933965Sjdpthe section are displayed as an error message. The section is not copied into 300130561Sobrienthe output file, unless doing a relocatable or shared link. This is used by 30133965Sjdpglibc. 30233965Sjdp 30333965Sjdp* New options -split-by-reloc and -split-by-file. 30433965Sjdp 30533965Sjdp* The linker now supports linking PIC compiled code on SPARC SunOS. It can 30633965Sjdpalso create SPARC SunOS shared libraries, and, like the native SunOS linker, 30733965Sjdpwill do so whenever there is an undefined symbol in the link and neither the -e 30833965Sjdpnor the -r option was used. 30933965Sjdp 31033965Sjdp* The -rpath option may be used on SunOS to set the list of directories to be 31133965Sjdpsearched at run time. This overrides the default of building the list from the 31233965Sjdp-L options. 31333965Sjdp 31433965Sjdp* The COFF linker now combines debugging information for structs, unions, and 31533965Sjdpenums, so that even if the same type is defined in multiple input files it will 31633965Sjdponly be defined once in the output file. The --traditional-format switch will 31733965Sjdpprevent this optimization. 31833965Sjdp 31933965SjdpChanges in version 2.5: 32033965Sjdp 32133965Sjdp* The linker now supports linking against SunOS shared libraries. It still can 32233965Sjdpnot link SunOS PIC (Position Independent Code) files, so it can not be used to 323130561Sobriengenerate shared libraries. 32433965Sjdp 32533965Sjdp* The linker now supports linking against ELF shared libraries for the i386 32633965Sjdp(UnixWare) and SPARC (Solaris). It can also link ELF PIC files, and can be 32733965Sjdpused to generate shared libraries. Shared library generation is not well 32833965Sjdptested; please report any problems encountered. The linker is now enabled for 32933965SjdpSolaris again. 33033965Sjdp 33133965Sjdp* Eric Youngdale has contributed Linux support code, including linking against 33233965SjdpLinux a.out shared libraries. The linker produces Linux QMAGIC binaries. 33333965Sjdp 33433965Sjdp* The ELF backend has been converted to the new linker code. To use the new 33533965SjdpELF linker, each particular target requires a relocation function. So far, 33633965Sjdpthis function has been written for i386 (UnixWare), SPARC (Solaris) MIPS (Irix 33733965Sjdp5), and HPPA ELF targets. 33833965Sjdp 33933965Sjdp* The -( (--start-group) and -) (--end-group) options have been added to 34033965Sjdpsupport searching a group of archives as though they were a single archive. 34133965SjdpThis can also be used in a linker script, as GROUP ( files ). 34233965Sjdp 34333965Sjdp* When a file is named on the command line, and the linker does not recognize 34433965Sjdpit as an object file, the linker will now treat the file as a linker script 34533965Sjdpfile. A linker script named in this way augments, but does not replace, the 34633965Sjdpdefault linker script. 34733965Sjdp 34833965Sjdp* The -warn-once option was added. It causes the linker to only warn once per 34933965Sjdpundefined symbol, rather than once per reference. 35033965Sjdp 35133965Sjdp* The COFF backend has been converted to the new linker code. As with ELF, to 35233965Sjdpuse the new linker, each particular target requires a relocation function. So 35333965Sjdpfar, this function has been written for the i386, m68k, a29k and SH targets. 35433965Sjdp 35533965Sjdp* The -V flag was made a synonym for -v, for SVR4 compatibility. The old -V 35633965Sjdpbehaviour is available via --verbose. 35733965Sjdp 35833965SjdpChanges in version 2.4: 35933965Sjdp 36033965Sjdp* New linker code, by Steve Chamberlain and Ian Taylor. For a.out and ecoff 36133965Sjdp formats (so far), this should result in considerable savings in time 36233965Sjdp and memory used while linking; slightly poorer performance than 36333965Sjdp before for formats not converted yet. 36433965Sjdp 36533965Sjdp* Command-line parsing is no longer done with flex. This means 36633965Sjdp oddball characters in filenames won't get treated as argument 36733965Sjdp separators. 36833965Sjdp 36933965Sjdp* HP-PA ELF support, by Jeff Law. (No SOM support yet.) 37033965Sjdp 37133965Sjdp* Mach i386 support, by David Mackenzie. 37233965Sjdp 37333965Sjdp* Irix 4 shared libraries are now supported (Irix 5 uses ELF, and ELF shared 37433965Sjdp libraries are not yet supported). 37533965Sjdp 37633965Sjdp* COFF shared libraries (as on SCO) should work as well. 37733965Sjdp 37833965Sjdp* The linker is disabled for Solaris. (Actually, it was in 2.3 also, I just 37933965Sjdp forgot to note it.) Some of their C library routines don't work when 38033965Sjdp statically linked, and the GNU linker doesn't support dynamic linking yet. 38133965Sjdp 38233965SjdpChanges in version 2.3: 38333965Sjdp 38433965Sjdp* Weak symbols are now supported. 38533965Sjdp 38633965Sjdp* ELF support has been added. The linker has been bootstrapped on 38733965Sjdp UnixWare and Solaris. 38833965Sjdp 38933965Sjdp* Alpha OSF/1 support has been added (non dynamic linking only). 39033965Sjdp 39133965SjdpChanges in version 2.2: 39233965Sjdp 39333965Sjdp* The `bfd' library has been updated to reduce a.out-format string 39433965Sjdp table size. The effect of this is that files linked from many input 39533965Sjdp files with duplicate symbols (`-g' debugging records, or identical 39633965Sjdp static symbols) should be much smaller. 39733965Sjdp 39833965SjdpChanges in version 2.1: 39933965Sjdp 40033965Sjdp* The ld -ySYMBOL flag (to trace references to SYMBOL) is now implemented. 40133965Sjdp 40233965Sjdp* There is now support for writing ECOFF files, so ld and the 40333965Sjdp other utilities should work on Risc/Ultrix and Irix. 40433965Sjdp 40533965Sjdp 40633965SjdpLocal variables: 40733965Sjdpfill-column: 79 40833965SjdpEnd: 409