1-*- text -*- 2 3Changes in 2.39: 4 5* The ELF linker will now generate a warning message if the stack is made 6 executable. By default this warning is not issued if the user has 7 specifically requested an executable stack via the "-z execstack" 8 command line option, but the warning can be forced via the new 9 "--warn-execstack" option. Alternatively all warnings about creating 10 an executable stack can be suppressed via the "--no-warn-execstack" 11 option. 12 13 In addition the ELF linker will also warn if it creates a memory resident 14 segment with all three of the Read, Write and eXecute permissions set, or 15 if it creates a thread local data segment with the eXecute permission set. 16 These warnings can be disabled via --no-warn-rwx-segments option and 17 re-enabled via the --warn-rwx-segments option. 18 19 New configure options can also control these new features: 20 21 --enable-warn-execstack=no 22 will disable the warnings about creating an executable stack. 23 24 --enable-warn-execstack=yes 25 will make --warn-execstack enabled by default. 26 27 --enable-warn-rwx-segments=no 28 will make --no-warn-rwx-segments enabled by default. 29 30 --enable-defaul-execstack=no 31 will stop the creation of an executable stack simply because an input file 32 is missing a .note.GNU-stack section, even on architectures where this 33 ehaviour is the default. 34 35* TYPE=<type> is now supported in an output section description to set the 36 section type value. 37 38* Remove (rudimentary) support for the x86-64 sub-architectures Intel L1OM and 39 Intel K1OM. 40 41* The ELF linker now supports a new --package-metadata option that allows 42 embedding a JSON payload in accordance to the Package Metadata specification. 43 If support for libjansson is enabled at build time, the linker will use it to 44 validate the input. This can be enabled with --enable-jansson. 45 For more details, see: https://systemd.io/ELF_PACKAGE_METADATA/ 46 47Changes in 2.38: 48 49* Add -z pack-relative-relocs/-z no pack-relative-relocs to x86 ELF 50 linker to pack relative relocations in the DT_RELR section. 51 52* Add support for the LoongArch architecture. 53 54* Add -z indirect-extern-access/-z noindirect-extern-access to x86 ELF 55 linker to control canonical function pointers and copy relocation. 56 57* Add --max-cache-size=SIZE to set the the maximum cache size to SIZE 58 bytes. 59 60Changes in 2.37: 61 62* arm-symbianelf support removed. 63 64* Add -z report-relative-reloc to x86 ELF linker to report dynamic 65 relative relocations. 66 67* Add -z start-stop-gc to disable special treatment of __start_*/__stop_* 68 references when --gc-sections. 69 70* Add -Bno-symbolic to cancel -Bsymbolic and -Bsymbolic-functions. 71 72Changes in 2.36: 73 74* Add libdep plugin, for linking dependencies of static libraries that 75 were recorded by ar in the __.LIBDEP archive member. 76 77* Add --error-handling-script=<NAME> command line option to allow a helper 78 script to be invoked when an undefined symbol or a missing library is 79 encountered. This option can be suppressed via the configure time 80 switch: --enable-error-handling-script=no. 81 82* Add -z lam-u48 to x86-64 ELF linker to generate LAM_U48 property. 83 84* Add -z lam-u57 to x86-64 ELF linker to enerate LAM_U57 property. 85 86* Add -z lam-u48-report=[none|warning|error] to report missing LAM_U48 87 property. 88 89* Add -z lam-u57-report=[none|warning|error] to report missing LAM_U57 90 property. 91 92* Add -z lam-report=[none|warning|error] to report missing LAM_U48 and 93 LAM_U57 properties. 94 95* Add -z x86-64-{baseline|v[234]} to the x86 ELF linker to mark 96 x86-64-{baseline|v[234]} ISA level as needed. 97 98* Add -z unique-symbol to avoid duplicated local symbol names. 99 100* The creation of PE format DLLs now defaults to using a more secure set of DLL 101 characteristics. 102 103* The linker now deduplicates the types in .ctf sections. The new 104 command-line option --ctf-share-types describes how to do this: 105 its default value, share-unconflicted, produces the most compact 106 output. 107 108* The linker now omits the "variable section" from .ctf sections by 109 default, saving space. This is almost certainly what you want 110 unless you are working on a project that has its own analogue 111 of symbol tables that are not reflected in the ELF symtabs. 112 113* Add support for the SHF_GNU_RETAIN ELF section flag. 114 This flag specifies that the section should not be garbage collected by the 115 linker. 116 117Changes in 2.35: 118 119* X86 NaCl target support is removed. 120 121* Add ELF linker command-line options, --export-dynamic-symbol and 122 --export-dynamic-symbol-list, to make symbols dynamic. 123 124* Add a configure option, --enable-textrel-check=[no|yes|warning|error], 125 to decide what ELF linker should do by default with DT_TEXTREL in an 126 executable or shared library. Default to yes for Linux/x86 targets. 127 128* The -Map=<filename> command line option has been extended so that if 129 <filename> is a directory then <filename>/<output-filename>.map will be 130 created. 131 132* Add a command-line option for ELF linker, --warn-textrel, to warn that 133 DT_TEXTREL is set in a position-independent executable or shared object. 134 135* Add command-line options --enable-non-contiguous-regions and 136 --enable-non-contiguous-regions-warnings. 137 138* Add command-line option --imagic for the pdp11-aout target to output format 139 IMAGIC (0411) for separate instruction and data spaces, and change the 140 default format option for pdp11-aout to be --omagic. 141 142* Relative pathnames in INPUT() and GROUP() directives in linker scripts are 143 searched relative to the directory of the linker script before other search 144 paths. 145 146* Add ELF linker command-line option `-z start-stop-visibility=...' to control 147 the visibility of synthetic `__start_SECNAME` and `__stop_SECNAME` symbols. 148 149* Add command-line option --dependency-file to write a Make-style dependency 150 file listing the input files consulted by the linker, like the files written 151 by the compiler's -M -MP options. 152 153Changes in 2.34: 154 155* The ld check for "PHDR segment not covered by LOAD segment" is more 156 effective, catching cases that were wrongly allowed by previous versions of 157 ld. If you see this error it is likely you are linking with a bad linker 158 script or the binary you are building is not intended to be loaded by a 159 dynamic loader. In the latter case --no-dynamic-linker is appropriate. 160 161* cr16c support removed. 162 163* Add support for z80-elf. 164 165* Add support for relocation of each byte or word of multibyte value to Z80 166 targets. 167 168* Add support for Zilog eZ80 (both ADL and Z80 mode) and Zilog Z180 CPUs. 169 170Changes in 2.33: 171 172* Add command-line option --no-print-map-discarded. 173 174* The Cortex-A53 Erratum 843419 workaround now supports a choice of which 175 workaround to use. The option --fix-cortex-a53-843419 now takes an 176 optional argument --fix-cortex-a53-843419[=full|adr|adrp] which can be 177 used to force a particular workaround to be used. See --help for AArch64 178 for more details. 179 180* Add target handlers for AArch64 for ELF GNU program properties. 181 182* Add support for GNU_PROPERTY_AARCH64_FEATURE_1_BTI in ELF GNU program 183 properties in the AArch64 ELF linker. 184 185* Add support for GNU_PROPERTY_AARCH64_FEATURE_1_PAC in ELF GNU program 186 properties in the AArch64 ELF linker. 187 188* Add -z force-bti for AArch64 to enable GNU_PROPERTY_AARCH64_FEATURE_1_BTI 189 on output while warning about missing GNU_PROPERTY_AARCH64_FEATURE_1_BTI 190 on inputs and use PLTs protected with BTI. 191 192* Add -z pac-plt for AArch64 to pick PAC enabled PLTs. 193 194Changes in 2.32: 195 196* Report property change in linker map file when merging GNU properties. 197 198* Add support for the C-SKY processor series. 199 200* -t now doesn't report members within archives, unless -t is given twice. 201 A single -t is now more useful when generating a list of files that should be 202 packaged for a linker bug report. For example: 203 gcc hello.c -save-temps -Wl,-t | xargs realpath | sort | uniq > files 204 tar cJf test.tar.xz `cat files` 205 206Changes in 2.31: 207 208* Speed up direct linking with DLLs for Cygwin and Mingw targets. 209 210* Add a configure option --enable-separate-code to decide whether 211 -z separate-code should be enabled in ELF linker by default. Default 212 to yes for Linux/x86 targets. Note that -z separate-code can increase 213 disk and memory size. 214 215Changes in 2.30: 216 217* Add -z separate-code to generate separate code PT_LOAD segment. 218 219* Add "-z undefs" command-line option as the inverse of the "-z defs" option. 220 221* Add -z globalaudit command-line option to force audit libraries to be run 222 for every dynamic object loaded by an executable - provided that the loader 223 supports this functionality. 224 225* Tighten linker script grammar around file name specifiers to prevent the use 226 of SORT_BY_ALIGNMENT and SORT_BY_INIT_PRIORITY on filenames. These would 227 previously be accepted but had no effect. 228 229* The EXCLUDE_FILE directive can now be placed within any SORT_* directive 230 within input section lists. 231 232Changes in 2.29: 233 234* Support for -z shstk in the x86 ELF linker to generate 235 GNU_PROPERTY_X86_FEATURE_1_SHSTK in ELF GNU program properties. 236 237* Add support for GNU_PROPERTY_X86_FEATURE_1_SHSTK in ELF GNU program 238 properties in the x86 ELF linker. 239 240* Add support for GNU_PROPERTY_X86_FEATURE_1_IBT in ELF GNU program 241 properties in the x86 ELF linker. 242 243* Support for -z ibtplt in the x86 ELF linker to generate IBT-enabled 244 PLT. 245 246* Support for -z ibt in the x86 ELF linker to generate IBT-enabled 247 PLT as well as GNU_PROPERTY_X86_FEATURE_1_IBT in ELF GNU program 248 properties. 249 250* Add support for ELF SHF_GNU_MBIND and PT_GNU_MBIND_XXX. 251 252* Add support for ELF GNU program properties. 253 254* Add support for the Texas Instruments PRU processor. 255 256* When configuring for arc*-*-linux* targets the default linker emulation will 257 change if --with-cpu=nps400 is used at configure time. 258 259* Improve assignment of LMAs to orphan sections in some edge cases where a 260 mixture of both AT>LMA_REGION and AT(LMA) are used. 261 262* Orphan sections placed after an empty section that has an AT(LMA) will now 263 take an load memory address starting from LMA. 264 265* Section groups can now be resolved (the group deleted and the group members 266 placed like normal sections) at partial link time either using the new linker 267 option --force-group-allocation or by placing FORCE_GROUP_ALLOCATION into the 268 linker script. 269 270Changes in 2.28: 271 272* The EXCLUDE_FILE linker script construct can now be applied outside of the 273 section list in order for the exclusions to apply over all input sections in 274 the list. 275 276* Add support for the RISC-V architecture. 277 278* The command-line option --no-eh-frame-hdr can now be used in ELF based 279 linkers to disable the automatic generation of .eh_frame_hdr sections. 280 281* Add --in-implib=<infile> to the ARM linker to enable specifying a set of 282 Secure Gateway veneers that must exist in the output import library specified 283 by --out-implib=<outfile> and the address they must have. As such, 284 --in-implib is only supported in combination with --cmse-implib. 285 286* Extended the --out-implib=<file> option, previously restricted to x86 PE 287 targets, to any ELF based target. This allows the generation of an import 288 library for an ELF executable, which can then be used by another application 289 to link against the executable. 290 291Changes in 2.27: 292 293* Add a configure option --enable-relro to decide whether -z relro should 294 be enabled in ELF linker by default. Default to yes for all Linux 295 targets except FRV, HPPA, IA64 and MIPS. Note that -z relro can increase 296 disk and memory size. 297 298* Support for -z noreloc-overflow in the x86-64 ELF linker to disable 299 relocation overflow check. 300 301* Add -z common/-z nocommon options for ELF targets to control whether to 302 convert common symbols to the STT_COMMON type during a relocatable link. 303 304* Support for -z nodynamic-undefined-weak in the x86 ELF linker, which 305 avoids dynamic relocations against undefined weak symbols in executable. 306 307* The NOCROSSREFSTO command was added to the linker script language. 308 309* Add --no-apply-dynamic-relocs to the AArch64 linker to do not apply link-time 310 values for dynamic relocations. 311 312Changes in 2.26: 313 314* Add --fix-stm32l4xx-629360 to the ARM linker to enable a link-time 315 workaround for a bug in the bus matrix / memory controller for some of 316 the STM32 Cortex-M4 based products (STM32L4xx) 317 318* Add a configure option --enable-compressed-debug-sections={all,ld} to 319 decide whether DWARF debug sections should be compressed by default. 320 321* Add support for the ARC EM/HS, and ARC600/700 architectures. 322 323* Experimental support for linker garbage collection (--gc-sections) 324 has been enabled for COFF and PE based targets. 325 326* New command-line option for ELF targets to compress DWARF debug 327 sections, --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi]. 328 329* New command-line option, --orphan-handling=[place|warn|error|discard], to 330 adjust how orphan sections are handled. The default is 'place' which gives 331 the current behaviour, 'warn' and 'error' issue a warning or error 332 respectively when orphan sections are found, and 'discard' will discard all 333 orphan sections. 334 335* Add support for LLVM plugin. 336 337* Add --print-memory-usage option to report memory blocks usage. 338 339* Add --require-defined option, it's like --undefined except the new symbol 340 must be defined by the end of the link. 341 342Changes in 2.25: 343 344* PE binaries now once again contain real timestamps by default. To disable 345 the inclusion of a timestamp in a PE binary, use the --no-insert-timestamp 346 command-line option. 347 348* Replace support for openrisc and or32 with support for or1k. 349 350* Add support for the --build-id command-line option to COFF based targets. 351 352* x86/x86_64 pe-coff now supports the --build-id option. 353 354* Add support for the Andes NDS32. 355 356Changes in 2.24: 357 358* Add LOG2CEIL() builtin function to the linker script language 359 360* Add support for the Texas Instruments MSP430X processor. 361 362* Add support for Altera Nios II. 363 364* Add support for the V850E3V5 architecture. 365 366* Add support for the Imagination Technologies Meta processor. 367 368* --enable-new-dtags no longer generates old dtags in addition to new dtags. 369 370* Remove linker support for MIPS ECOFF targets. 371 372* Add ALIGN_WITH_INPUT to the linker script language to force the alignment of 373 an output section to use the maximum alignment of all its input sections. 374 375Changes in 2.23: 376 377* Enable compressed debug section feature for x86/x86_64 pe-coff. 378 379* Add support for the 64-bit ARM architecture: AArch64. 380 381* Added SORT_NONE to the linker script language to disable section sorting. 382 383* Add a linker-provided symbol when producing ELF output, '__ehdr_start' 384 to point to the ELF file header (and nearby program headers) in the 385 program's memory image. 386 387* Add support for S12X processor. 388 389* Add support for the VLE extension to the PowerPC architecture. 390 391* Add support for the Freescale XGATE architecture. 392 393* Add option -f FILE on AIX (for response file). 394 395* Add support for the Renesas RL78 architecture. 396 397* Add support for the Adapteva EPIPHANY architecture. 398 399Changes in 2.22: 400 401* --copy-dt-needed-entries is no longer enabled by default. Instead 402 --no-copy-dt-needed-entries is the default. 403 404* INPUT_SECTION_FLAGS has been added to the linker script language 405 to allow selection of input sections by section header section flags. 406 407* Add support for the Tilera TILEPro and TILE-Gx architectures. 408 409* Added SORT_BY_INIT_PRIORITY to the linker script language to permit 410 sorting sections by numerical value of the GCC init_priority attribute 411 encoded in the section name. 412 413Changes in 2.21: 414 415* Linker script expression evaluation is somewhat more sane. This may 416 break scripts that depend on quirks of the old expression evaluation. 417 418* Turn off underscoring for x86_64 PE+-COFF targets. For old behavior the 419 option --enable-leading-mingw64-underscores can be used on configure of 420 bfd. 421 422* Add support for the TMS320C6000 (TI C6X) processor family. 423 424* --add-needed renamed to --copy-dt-needed-entries in order to avoid confusion 425 with --as-needed option. 426 427* Extend .def file syntax by '== <ID>' for imports and exports. This allows 428 to alias the import/export table name written in PE image. 429 430* Add --exclude-all-symbols option to PE based linkers. This prevents all 431 symbols from automatically being exported. 432 433* Add support for the Renesas RX processor. 434 435* Add support for alpha-vms target. 436 437Changes in 2.20: 438 439* GNU/Linux targets now support the STB_GNU_UNIQUE symbol binding. This is a 440 GNU extension to the standard set of ELF symbol bindings. The binding will 441 be passed on to the dynamic linker which will make sure that in the entire 442 process there is just one symbol with the given name and type in use. 443 444* PE targets now support a GNU extension to allow the alignment of common 445 common symbols to be specified. This support uses custom options in 446 the .drectve section, which will be disregarded by the native tools. 447 448* PE targets now add primitive support for ELF version scripts; symbols 449 are not versioned, but the local and global symbol visibility directives 450 are respected when filtering symbols in auto-export mode. 451 452* New option --no-export-dynamic to undo the effect of the -E and 453 --export-dynamic options. 454 455* ELF: --warn-alternate-em option to warn if an object has alternate 456 ELF machine code. 457 458* New script function REGION_ALIAS to add alias names to memory regions. 459 460* PE targets no longer make use of the long section names PE extension to 461 the COFF format when generating executable images, by default. The old 462 (slightly non-conformant) behaviour can still be invoked by using the 463 new '--enable-long-section-names' command-line option. It is also enabled 464 automatically in the presence of un-stripped debug information, as GDB 465 needs to be able to find the debug info sections by their full names. 466 467* For GNU/Linux systems the linker will now avoid processing any relocations 468 made against symbols of the STT_GNU_IFUNC type and instead emit them into 469 the resulting binary for processing by the loader. 470 471* --as-needed now links in a dynamic library if it satisfies undefined 472 symbols in regular objects, or in other dynamic libraries. In the 473 latter case the library is not linked if it is found in a DT_NEEDED 474 entry of one of the libraries already linked. 475 476* Add a new command-line option, -Ttext-segment ADDR, for ELF targets 477 to set the address of the first byte of the text segment. 478 479* Add support for Sunplus score architecture. 480 481* Add new option --use-nul-prefixed-import-tables to ld for PE targets to 482 allow fallback to old import table generation with null element prefix. 483 484* Windows PE systems now support a new --exclude-modules-for-implib option, 485 allowing users to partition object files and archive members between a DLL 486 and its associated import library as they are generated during linking. 487 488* Add support for Lattice Mico32 (lm32) architecture. 489 490* Add CR16 ELF --embedded-relocs (used to embedded relocations into binaries 491 for Embedded-PIC code) option. 492 493* Add to the PE/PE+ targets the support of two different kinds of 494 pseudo-relocations. They can be selected by the switches 495 --enable-runtime-pseudo-reloc-v1 and --enable-runtime-pseudo-reloc-v2. 496 For the switch --enable-runtime-pseudo-reloc it uses for 32-bit 497 runtime pseudo relocation version one, for 64-bit the version two. 498 499Changes in 2.19: 500 501* Linker scripts support a new INSERT command that makes it easier to 502 augment the default script. 503 504* Linker script input section filespecs may now specify a file within an 505 archive by writing "archive:file". 506 507* The --sort-common switch now has an optional argument which specifies the 508 direction of sorting. 509 510* The M68K linker now supports multiple GOT generation schemes controlled via 511 the --got=<type> command-line option. 512 513* The ARM EABI linker will now generate stubs for function calls to symbols 514 that are too far away. The placement of the stubs is controlled by a new 515 linker command-line option: --stub-group-size=N. 516 517Changes in 2.18: 518 519* Linker sources now released under version 3 of the GNU General Public 520 License. 521 522* ELF: New --build-id option to generate a unique per-binary identifier 523 embedded in a note section. 524 525* Added support for National Semicondutor CompactRISC (ie CR16) target. 526 527* -l:foo now searches the library path for a filename called foo, 528 without converting it to libfoo.a or libfoo.so. 529 530* Add a new command-line option '--default-script=FILE' or '-dT FILE' 531 which specifies a replacement for the built in, default linker 532 script. 533 534* ELF: Add -Bsymbolic-functions, --dynamic-list-cpp-new, which puts C++ 535 operator new and delete on the dynamic list, and --dynamic-list-data, 536 builtin list for --dynamic-list, which puts global data symbols on the 537 dynamic list. 538 539* Add support for x86_64 PE+ target. 540 541* Add support for Score target. 542 543* ELF: Add --dynamic-list option to specify a list of global symbols 544 whose references shouldn't be bound to the definition within the 545 shared library, or a list of symbols which should be added to the 546 symbol table in the executable. 547 548* The default output section LMA has changed for allocatable sections from 549 being equal to VMA, to keeping the difference between LMA and VMA the same as 550 the previous output section in the same region. This is a more useful 551 default when using overlays and other cases where you specify an LMA 552 differing from the VMA for some sections. 553 554* New switch: --print-gc-sections to list any sections removed by garabge 555 collection. 556 557* ARM: Added --vfp11-denorm-fix option to work around an erratum in current 558 VFP11 coprocessors. 559 560Changes in 2.17: 561 562* Support for the Infineon XC16X has been added by KPIT Cummins Infosystems. 563 564* Modify the Linux linker search order to better match ld.so search order. 565 Look for DT_NEEDED libraries in paths specified by ld.so.conf before 566 searching the default directories, rather than vice versa. 567 Use $prefix/etc/ld.so.conf if it exists, otherwise /etc/ld.so.conf. 568 569* PE-COFF: Forward exports from DLL's can now be specified in .def files 570 passed directly to ld. 571 572* Support for the Z80 processor family has been added. 573 574* Add support for the "@<file>" syntax to the command line, so that extra 575 switches can be read from <file>. 576 577Changes in 2.16: 578 579* Support for the R_ARM_V4BX relocation as defined in the ARM AAELF 580 specification has been added via the --fix-v4bx command-line option. 581 582* New linker script construct AS_NEEDED(), which sets the --as-needed flag 583 for input files listed inside of it. 584 585* A new command-line option, --sysroot, can be used to override the 586 default sysroot location. It only applies to toolchains that were 587 configured using --with-sysroot. 588 589* New linker script functions: ORIGIN() and LENGTH() which return information 590 about a specified memory region. 591 592* Port to MAXQ processor contributed by HCL Tech. 593 594* Added SEGMENT_START to the linker script language to permit the user to 595 override the base address for a segment from the command-line. 596 597* ELF: --warn-shared-textrel option to warn if adding a DT_TEXTREL to a shared 598 object. 599 600* Added SORT_BY_NAME and SORT_BY_ALIGNMENT to the linker script 601 language to permit sorting sections by section name or section 602 maximum alignment. 603 604* Added a new linker command-line switch, --sort-section name|alignment, 605 to sort sections by section name or maximum alignment. 606 607* ELF: --add-needed/--no-add-needed options to control if a DT_NEEDED tag 608 should be added when a shared library comes from DT_NEEDED tags. 609 610* Support for the crx-elf target added. 611 612* Support for the sh-symbianelf target added. 613 614* A new linker command-line switch has been added which allows the hash table 615 size to be set to a suitable prime value near to its argument. This switch 616 is --hash-size=<NUMBER>. Also if the switch --reduce-memory-overheads is 617 used, and --hash-size has not been used, then the default value will be set 618 to 1021. 619 620* Linker map files are now generated with an O(N) algorithm for finding symbols 621 that are defined in each section. This uses about 40% more memory for 622 symbols than the old O(N^2) algorithm. You can use the new 623 --reduce-memory-overheads option to select the old algorithm; this option 624 might also be used in the future to select similar tradeoffs. 625 626Changes in 2.15: 627 628* ELF: --as-needed/--no-as-needed options to control if a DT_NEEDED tag should 629 be added only when a shared library is referenced. 630 631* PE: --large-address-aware option to indicate executables support virtual 632 addresses greater than 2 gigabytes. 633 634* DWARF 2 support for i386pe added. 635 636* The linker script operator DEFINED() will now yield 1 only for a symbol that 637 is defined before the statement where DEFINED is used. 638 639* The MIPS --embedded-relocs (used to embed relocations into binaries for 640 Embedded-PIC code) is deprecated and will be removed in a future release. 641 642* cr16c support added by NSC. 643 644* m32r Linux (ELF) support added by Renesas. 645 646* Improved linker's handling of unresolved symbols. The switch 647 --unresolved-symbols=<method> has been added to tell the linker when it 648 should report them and the switch --warn-unresolved-symbols has been added to 649 make reports be issued as warning messages rather than errors. 650 651Changes in 2.14: 652 653* Added support for Xtensa architecture. 654 655* Added --with-sysroot configure switch to specify a target system root, for 656 linking against a target filesystem image. 657 658* Added --accept-unknown-linker-format to restore old linker behaviour (pre 659 2.14) of silently accepting and linking in any files in an unknown binary 660 file format. 661 662* Added --no-omagic to undo the effects of the -N option. 663 664* Support for Texas Instruments TMS320C4x and TMS320C3x series of 665 DSP's contributed by Michael Hayes and Svein E. Seldal. 666 667* Added --with-lib-path configure switch to specify default value for 668 LIB_PATH. 669 670* ARM port to QNX operating system added by Graeme Peterson. 671 672* IP2K support added by Denis Chertykov. 673 674Changes in 2.13: 675 676* Support for the Fujitsu FRV architecture added by Red Hat. Models for FR400 677 and FR500 included. 678 679Changes in version 2.13: 680 681* DEC VAX ELF support, by Matt Thomas. 682 683Changes in version 2.12: 684 685* Support for Don Knuth's MMIX, by Hans-Peter Nilsson. 686 687* Support for the OpenRISC 32-bit embedded processor by OpenCores. 688 689* Support for -z nocopyreloc in the x86 ELF linker, which disables 690 production of copy relocs. Warning: using this option may result in 691 non-sharable applications. 692 693* Support for -z combreloc in the ELF linker, which puts dynamic 694 relocations against the same symbol together, so that dynamic linker 695 can use an one-entry symbol lookup cache. 696 697* Support for ELF SHF_MERGE section merging, by Jakub Jelinek. 698 699Changes in version 2.11: 700 701* Support for AMD x86-64 architecture, by Jan Hubicka, SuSE Labs. 702 703* Support added for eliminating duplicate DWARF2 debug information by 704 having the compiler generate the information in sections called 705 .gnu.linkonce.wi.XXXX where XXXX is a checksum for the contents. The 706 linker then merges these sections together into the normal .debug_info 707 section. 708 709* The native ELF linker now searches the directories in DT_RUNPATH or 710 DT_RPATH of a shared library for shared libraries needed by it. 711 712* TI C54x support, by Timothy Wall. 713 714* Added command-line switch --section-start to set the start address of any 715 specified section. 716 717* Added ability to emit full relocation information in linked executables, 718 enabled by --emit-relocs. Some post-linkage optimization tools need 719 this information in order to be able to correctly identify and perform 720 symbol relative addressing in the event of changes in section contents 721 (instructions being added or deleted, extending data sections, etc.) 722 723* Support for i860, by Jason Eckhardt (preliminary, alpha quality). 724 725* Support for CRIS (Axis Communications ETRAX series). 726 727* Support for PDP-11 and 2.11BSD a.out format, by Lars Brinkhoff. 728 729Changes in version 2.10: 730 731* Added AT> to the linker script language to allow load-time allocation of 732 sections into regions. 733 734* Added garbage collection of unused sections, enabled by --gc-sections. 735 It does require a bit of backend support; currently implemented are 736 arm-elf, avr-elf, d10v-elf, fr30-elf, i386-elf, m32r-elf, m68k-elf, 737 mcore-elf, mips-elf, mn10300-elf, ppc-elf, sh-elf, sparc-elf, and v850-elf. 738 Others will ignore the option. 739 740* Added SORT to the linker script language to permit sorting sections by file 741 name or section name. 742 743* Added EXTERN to the linker script language as an equivalent to the -u 744 command-line option. 745 746* Added ASSERT to the linker script language. 747 748* Added EXCLUDE_FILE to the linker script language for further control over 749 wildcard file names. 750 751* Added -O option to optimize linker output (as of this writing, this only 752 affects ELF shared library generation). 753 754* The -e option now accepts a number as well as a symbol name. 755 756* Added --no-undefined option to disallow undefined symbols when creating a 757 shared library. 758 759* The linker now issues a warning, not an error, for an undefined symbol when 760 using -Bsymbolic; use the new --no-undefined option to get the old 761 behaviour. 762 763* Added --demangle and --no-demangle options. 764 765Changes in version 2.9: 766 767* Added SQUAD to the linker script language. 768 769* New option --no-warn-mismatch. 770 771* The MEMORY command now parses the attributes to determine where sections that 772 are not placed in a specific memory region are placed. 773 774Changes in version 2.8: 775 776* Linker scripts may now contain shell wildcard characters for file and section 777 names. 778 779* The linker now supports symbol versions in ELF. 780 781* The NOCROSSREFS command was added to the linker script language. 782 783* The LOADADDR expression was added to the linker script language. 784 785* MAX and MIN functions were added to the linker script language. 786 787* The OVERLAY construct was added to the linker script language. 788 789* New option --warn-section-align to warn when the address of an output section 790 changes due to alignment of an input section. 791 792* New options --filter/-F and --auxiliary/-f. 793 794Changes in version 2.7: 795 796* New option --cref to print out a cross reference table. 797 798* New option --wrap SYMBOL. 799 800* New option --no-whole-archive, to turn off the effect of --whole-archive. 801 802* Input sections assigned to the output section /DISCARD/ in the linker script 803 are not included in the output file. 804 805* The SunOS and ELF linkers now merge stabs debugging information which uses 806 the N_BINCL and N_EINCL stab types. This reduces the amount of debugging 807 information generated. 808 809Changes in version 2.6: 810 811* When an ELF section name is representable as a C identifier (this is not true 812of most ELF section names), the linker will automatically define symbols 813__start_SECNAME and __stop_SECNAME, where SECNAME is the section name, at the 814beginning and the end of the section. This is used by glibc. 815 816 Addendum: Current versions of the linker (at least for version 2.18 onwards 817and possibly much earlier as well) place two restrictions on this feature: The 818symbols are only implemented for orphaned sections, not for explicitly placed 819sections and they are PROVIDEd rather than being defined. 820 821* When an ELF section named .gnu.warning is encountered in an input file, the 822contents of the section are displayed as an error message, and the section is 823not copied into the output file. This is used by glibc. 824 825* When an ELF section named .gnu.warning.SYMBOL is encountered in an input 826file, and the symbol SYMBOL is referenced by some object file, the contents of 827the section are displayed as an error message. The section is not copied into 828the output file, unless doing a relocatable or shared link. This is used by 829glibc. 830 831* New options -split-by-reloc and -split-by-file. 832 833* The linker now supports linking PIC compiled code on SPARC SunOS. It can 834also create SPARC SunOS shared libraries, and, like the native SunOS linker, 835will do so whenever there is an undefined symbol in the link and neither the -e 836nor the -r option was used. 837 838* The -rpath option may be used on SunOS to set the list of directories to be 839searched at run time. This overrides the default of building the list from the 840-L options. 841 842* The COFF linker now combines debugging information for structs, unions, and 843enums, so that even if the same type is defined in multiple input files it will 844only be defined once in the output file. The --traditional-format switch will 845prevent this optimization. 846 847Changes in version 2.5: 848 849* The linker now supports linking against SunOS shared libraries. It still can 850not link SunOS PIC (Position Independent Code) files, so it can not be used to 851generate shared libraries. 852 853* The linker now supports linking against ELF shared libraries for the i386 854(UnixWare) and SPARC (Solaris). It can also link ELF PIC files, and can be 855used to generate shared libraries. Shared library generation is not well 856tested; please report any problems encountered. The linker is now enabled for 857Solaris again. 858 859* Eric Youngdale has contributed Linux support code, including linking against 860Linux a.out shared libraries. The linker produces Linux QMAGIC binaries. 861 862* The ELF backend has been converted to the new linker code. To use the new 863ELF linker, each particular target requires a relocation function. So far, 864this function has been written for i386 (UnixWare), SPARC (Solaris) MIPS (Irix 8655), and HPPA ELF targets. 866 867* The -( (--start-group) and -) (--end-group) options have been added to 868support searching a group of archives as though they were a single archive. 869This can also be used in a linker script, as GROUP ( files ). 870 871* When a file is named on the command line, and the linker does not recognize 872it as an object file, the linker will now treat the file as a linker script 873file. A linker script named in this way augments, but does not replace, the 874default linker script. 875 876* The -warn-once option was added. It causes the linker to only warn once per 877undefined symbol, rather than once per reference. 878 879* The COFF backend has been converted to the new linker code. As with ELF, to 880use the new linker, each particular target requires a relocation function. So 881far, this function has been written for the i386, m68k, a29k and SH targets. 882 883* The -V flag was made a synonym for -v, for SVR4 compatibility. The old -V 884behaviour is available via --verbose. 885 886Changes in version 2.4: 887 888* New linker code, by Steve Chamberlain and Ian Taylor. For a.out and ecoff 889 formats (so far), this should result in considerable savings in time 890 and memory used while linking; slightly poorer performance than 891 before for formats not converted yet. 892 893* Command-line parsing is no longer done with flex. This means 894 oddball characters in filenames won't get treated as argument 895 separators. 896 897* HP-PA ELF support, by Jeff Law. (No SOM support yet.) 898 899* Mach i386 support, by David Mackenzie. 900 901* Irix 4 shared libraries are now supported (Irix 5 uses ELF, and ELF shared 902 libraries are not yet supported). 903 904* COFF shared libraries (as on SCO) should work as well. 905 906* The linker is disabled for Solaris. (Actually, it was in 2.3 also, I just 907 forgot to note it.) Some of their C library routines don't work when 908 statically linked, and the GNU linker doesn't support dynamic linking yet. 909 910Changes in version 2.3: 911 912* Weak symbols are now supported. 913 914* ELF support has been added. The linker has been bootstrapped on 915 UnixWare and Solaris. 916 917* Alpha OSF/1 support has been added (non dynamic linking only). 918 919Changes in version 2.2: 920 921* The `bfd' library has been updated to reduce a.out-format string 922 table size. The effect of this is that files linked from many input 923 files with duplicate symbols (`-g' debugging records, or identical 924 static symbols) should be much smaller. 925 926Changes in version 2.1: 927 928* The ld -ySYMBOL flag (to trace references to SYMBOL) is now implemented. 929 930* There is now support for writing ECOFF files, so ld and the 931 other utilities should work on Risc/Ultrix and Irix. 932 933 934Copyright (C) 2012-2022 Free Software Foundation, Inc. 935 936Copying and distribution of this file, with or without modification, 937are permitted in any medium without royalty provided the copyright 938notice and this notice are preserved. 939 940Local variables: 941fill-column: 79 942End: 943