]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - ld/NEWS
Add markers for 2.39 branch
[thirdparty/binutils-gdb.git] / ld / NEWS
diff --git a/ld/NEWS b/ld/NEWS
index 2bb429ff21671764a1043ad6d8c99d2ae3f82ae2..40f7059b8975698a96ab2c1a4b820db4ecfc83a1 100644 (file)
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,8 +1,281 @@
 -*- text -*-
 
+Changes in 2.39:
+
+* The ELF linker will now generate a warning message if the stack is made
+  executable.  By default this warning is not issued if the user has
+  specifically requested an executable stack via the "-z execstack"
+  command line option, but the warning can be forced via the new
+  "--warn-execstack" option.  Alternatively all warnings about creating
+  an executable stack can be suppressed via the "--no-warn-execstack"
+  option.
+
+  In addition the ELF linker will also warn if it creates a memory resident
+  segment with all three of the Read, Write and eXecute permissions set, or
+  if it creates a thread local data segment with the eXecute permission set.
+  These warnings can be disabled via --no-warn-rwx-segments option and
+  re-enabled via the --warn-rwx-segments option.
+
+  New configure options can also control these new features:
+  
+  --enable-warn-execstack=no
+     will disable the warnings about creating an executable stack.
+     
+  --enable-warn-execstack=yes
+     will make --warn-execstack enabled by default.
+     
+  --enable-warn-rwx-segments=no
+     will make --no-warn-rwx-segments enabled by default.
+     
+  --enable-defaul-execstack=no
+     will stop the creation of an executable stack simply because an input file
+     is missing a .note.GNU-stack section, even on architectures where this
+     ehaviour is the default.
+
+* TYPE=<type> is now supported in an output section description to set the
+  section type value.
+
+* Remove (rudimentary) support for the x86-64 sub-architectures Intel L1OM and
+  Intel K1OM.
+
+* The ELF linker now supports a new --package-metadata option that allows
+  embedding a JSON payload in accordance to the Package Metadata specification.
+  If support for libjansson is enabled at build time, the linker will use it to
+  validate the input. This can be enabled with --enable-jansson.
+  For more details, see: https://systemd.io/ELF_PACKAGE_METADATA/
+
+Changes in 2.38:
+
+* Add -z pack-relative-relocs/-z no pack-relative-relocs to x86 ELF
+  linker to pack relative relocations in the DT_RELR section.
+
+* Add support for the LoongArch architecture.
+
+* Add -z indirect-extern-access/-z noindirect-extern-access to x86 ELF
+  linker to control canonical function pointers and copy relocation.
+
+* Add --max-cache-size=SIZE to set the the maximum cache size to SIZE
+  bytes.
+
+Changes in 2.37:
+
+* arm-symbianelf support removed.
+
+* Add -z report-relative-reloc to x86 ELF linker to report dynamic
+  relative relocations.
+
+* Add -z start-stop-gc to disable special treatment of __start_*/__stop_*
+  references when --gc-sections.
+
+* Add -Bno-symbolic to cancel -Bsymbolic and -Bsymbolic-functions.
+
+Changes in 2.36:
+
+* Add libdep plugin, for linking dependencies of static libraries that
+  were recorded by ar in the __.LIBDEP archive member.
+
+* Add --error-handling-script=<NAME> command line option to allow a helper
+  script to be invoked when an undefined symbol or a missing library is
+  encountered.  This option can be suppressed via the configure time
+  switch: --enable-error-handling-script=no.
+
+* Add -z lam-u48 to x86-64 ELF linker to generate LAM_U48 property.
+
+* Add -z lam-u57 to x86-64 ELF linker to enerate LAM_U57 property.
+
+* Add -z lam-u48-report=[none|warning|error] to report missing LAM_U48
+  property.
+
+* Add -z lam-u57-report=[none|warning|error] to report missing LAM_U57
+  property.
+
+* Add -z lam-report=[none|warning|error] to report missing LAM_U48 and
+  LAM_U57 properties.
+
+* Add -z x86-64-{baseline|v[234]} to the x86 ELF linker to mark
+  x86-64-{baseline|v[234]} ISA level as needed.
+
+* Add -z unique-symbol to avoid duplicated local symbol names.
+
+* The creation of PE format DLLs now defaults to using a more secure set of DLL
+  characteristics.
+
+* The linker now deduplicates the types in .ctf sections.  The new
+  command-line option --ctf-share-types describes how to do this:
+  its default value, share-unconflicted, produces the most compact
+  output.
+
+* The linker now omits the "variable section" from .ctf sections by
+  default, saving space.  This is almost certainly what you want
+  unless you are working on a project that has its own analogue
+  of symbol tables that are not reflected in the ELF symtabs.
+
+* Add support for the SHF_GNU_RETAIN ELF section flag.
+  This flag specifies that the section should not be garbage collected by the
+  linker.
+
+Changes in 2.35:
+
+* X86 NaCl target support is removed.
+
+* Add ELF linker command-line options, --export-dynamic-symbol and
+  --export-dynamic-symbol-list, to make symbols dynamic.
+
+* Add a configure option, --enable-textrel-check=[no|yes|warning|error],
+  to decide what ELF linker should do by default with DT_TEXTREL in an
+  executable or shared library.  Default to yes for Linux/x86 targets.
+
+* The -Map=<filename> command line option has been extended so that if
+  <filename> is a directory then <filename>/<output-filename>.map will be
+  created.
+
+* Add a command-line option for ELF linker, --warn-textrel, to warn that
+  DT_TEXTREL is set in a position-independent executable or shared object.
+
+* Add command-line options --enable-non-contiguous-regions and
+  --enable-non-contiguous-regions-warnings.
+
+* Add command-line option --imagic for the pdp11-aout target to output format
+  IMAGIC (0411) for separate instruction and data spaces, and change the
+  default format option for pdp11-aout to be --omagic.
+
+* Relative pathnames in INPUT() and GROUP() directives in linker scripts are
+  searched relative to the directory of the linker script before other search
+  paths.
+
+* Add ELF linker command-line option `-z start-stop-visibility=...' to control
+  the visibility of synthetic `__start_SECNAME` and `__stop_SECNAME` symbols.
+
+* Add command-line option --dependency-file to write a Make-style dependency
+  file listing the input files consulted by the linker, like the files written
+  by the compiler's -M -MP options.
+
+Changes in 2.34:
+
+* The ld check for "PHDR segment not covered by LOAD segment" is more
+  effective, catching cases that were wrongly allowed by previous versions of
+  ld.  If you see this error it is likely you are linking with a bad linker
+  script or the binary you are building is not intended to be loaded by a
+  dynamic loader.  In the latter case --no-dynamic-linker is appropriate.
+
+* cr16c support removed.
+
+* Add support for z80-elf.
+
+* Add support for relocation of each byte or word of multibyte value to Z80
+  targets.
+
+* Add support for Zilog eZ80 (both ADL and Z80 mode) and Zilog Z180 CPUs.
+
+Changes in 2.33:
+
+* Add command-line option --no-print-map-discarded.
+
+* The Cortex-A53 Erratum 843419 workaround now supports a choice of which
+  workaround to use.  The option --fix-cortex-a53-843419 now takes an
+  optional argument --fix-cortex-a53-843419[=full|adr|adrp] which can be
+  used to force a particular workaround to be used.  See --help for AArch64
+  for more details.
+
+* Add target handlers for AArch64 for ELF GNU program properties.
+
+* Add support for GNU_PROPERTY_AARCH64_FEATURE_1_BTI in ELF GNU program
+  properties in the AArch64 ELF linker.
+
+* Add support for GNU_PROPERTY_AARCH64_FEATURE_1_PAC in ELF GNU program
+  properties in the AArch64 ELF linker.
+
+* Add -z force-bti for AArch64 to enable GNU_PROPERTY_AARCH64_FEATURE_1_BTI
+  on output while warning about missing GNU_PROPERTY_AARCH64_FEATURE_1_BTI
+  on inputs and use PLTs protected with BTI.
+
+* Add -z pac-plt for AArch64 to pick PAC enabled PLTs.
+
+Changes in 2.32:
+
+* Report property change in linker map file when merging GNU properties.
+
+* Add support for the C-SKY processor series.
+
+* -t now doesn't report members within archives, unless -t is given twice.
+  A single -t is now more useful when generating a list of files that should be
+  packaged for a linker bug report.  For example:
+    gcc hello.c -save-temps -Wl,-t | xargs realpath | sort | uniq > files
+    tar cJf test.tar.xz `cat files`
+
+Changes in 2.31:
+
+* Speed up direct linking with DLLs for Cygwin and Mingw targets.
+
+* Add a configure option --enable-separate-code to decide whether
+  -z separate-code should be enabled in ELF linker by default.  Default
+  to yes for Linux/x86 targets.  Note that -z separate-code can increase
+  disk and memory size.
+
+Changes in 2.30:
+
+* Add -z separate-code to generate separate code PT_LOAD segment.
+
+* Add "-z undefs" command-line option as the inverse of the "-z defs" option.
+
+* Add -z globalaudit command-line option to force audit libraries to be run
+  for every dynamic object loaded by an executable - provided that the loader
+  supports this functionality.
+
+* Tighten linker script grammar around file name specifiers to prevent the use
+  of SORT_BY_ALIGNMENT and SORT_BY_INIT_PRIORITY on filenames.  These would
+  previously be accepted but had no effect.
+
+* The EXCLUDE_FILE directive can now be placed within any SORT_* directive
+  within input section lists.
+
+Changes in 2.29:
+
+* Support for -z shstk in the x86 ELF linker to generate
+  GNU_PROPERTY_X86_FEATURE_1_SHSTK in ELF GNU program properties.
+
+* Add support for GNU_PROPERTY_X86_FEATURE_1_SHSTK in ELF GNU program
+  properties in the x86 ELF linker.
+
+* Add support for GNU_PROPERTY_X86_FEATURE_1_IBT in ELF GNU program
+  properties in the x86 ELF linker.
+
+* Support for -z ibtplt in the x86 ELF linker to generate IBT-enabled
+  PLT.
+
+* Support for -z ibt in the x86 ELF linker to generate IBT-enabled
+  PLT as well as GNU_PROPERTY_X86_FEATURE_1_IBT in ELF GNU program
+  properties.
+
+* Add support for ELF SHF_GNU_MBIND and PT_GNU_MBIND_XXX.
+
+* Add support for ELF GNU program properties.
+
+* Add support for the Texas Instruments PRU processor.
+
+* When configuring for arc*-*-linux* targets the default linker emulation will
+  change if --with-cpu=nps400 is used at configure time.
+
+* Improve assignment of LMAs to orphan sections in some edge cases where a
+  mixture of both AT>LMA_REGION and AT(LMA) are used.
+
+* Orphan sections placed after an empty section that has an AT(LMA) will now
+  take an load memory address starting from LMA.
+
+* Section groups can now be resolved (the group deleted and the group members
+  placed like normal sections) at partial link time either using the new linker
+  option --force-group-allocation or by placing FORCE_GROUP_ALLOCATION into the
+  linker script.
+
 Changes in 2.28:
 
-* The command line option --no-eh-frame-hdr can now be used in ELF based
+* The EXCLUDE_FILE linker script construct can now be applied outside of the
+  section list in order for the exclusions to apply over all input sections in
+  the list.
+
+* Add support for the RISC-V architecture.
+
+* The command-line option --no-eh-frame-hdr can now be used in ELF based
   linkers to disable the automatic generation of .eh_frame_hdr sections.
 
 * Add --in-implib=<infile> to the ARM linker to enable specifying a set of
@@ -19,7 +292,8 @@ Changes in 2.27:
 
 * Add a configure option --enable-relro to decide whether -z relro should
   be enabled in ELF linker by default.  Default to yes for all Linux
-  targets except FRV, HPPA, IA64 and MIPS.
+  targets except FRV, HPPA, IA64 and MIPS.  Note that -z relro can increase
+  disk and memory size.
 
 * Support for -z noreloc-overflow in the x86-64 ELF linker to disable
   relocation overflow check.
@@ -49,10 +323,10 @@ Changes in 2.26:
 * Experimental support for linker garbage collection (--gc-sections)
   has been enabled for COFF and PE based targets.
 
-* New command line option for ELF targets to compress DWARF debug
+* New command-line option for ELF targets to compress DWARF debug
   sections, --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi].
 
-* New command line option, --orphan-handling=[place|warn|error|discard], to
+* New command-line option, --orphan-handling=[place|warn|error|discard], to
   adjust how orphan sections are handled.  The default is 'place' which gives
   the current behaviour, 'warn' and 'error' issue a warning or error
   respectively when orphan sections are found, and 'discard' will discard all
@@ -69,11 +343,11 @@ Changes in 2.25:
 
 * PE binaries now once again contain real timestamps by default.  To disable
   the inclusion of a timestamp in a PE binary, use the --no-insert-timestamp
-  command line option.
+  command-line option.
 
 * Replace support for openrisc and or32 with support for or1k.
 
-* Add support for the --build-id command line option to COFF based targets.
+* Add support for the --build-id command-line option to COFF based targets.
 
 * x86/x86_64 pe-coff now supports the --build-id option.
 
@@ -199,7 +473,7 @@ Changes in 2.20:
   latter case the library is not linked if it is found in a DT_NEEDED
   entry of one of the libraries already linked.
 
-* Add a new command line option, -Ttext-segment ADDR, for ELF targets
+* Add a new command-line option, -Ttext-segment ADDR, for ELF targets
   to set the address of the first byte of the text segment.
 
 * Add support for Sunplus score architecture.
@@ -234,11 +508,11 @@ Changes in 2.19:
   direction of sorting.
 
 * The M68K linker now supports multiple GOT generation schemes controlled via
-  the --got=<type> command line option.
+  the --got=<type> command-line option.
 
 * The ARM EABI linker will now generate stubs for function calls to symbols
   that are too far away.  The placement of the stubs is controlled by a new
-  linker command line option: --stub-group-size=N.
+  linker command-line option: --stub-group-size=N.
 
 Changes in 2.18:
 
@@ -253,7 +527,7 @@ Changes in 2.18:
 * -l:foo now searches the library path for a filename called foo,
   without converting it to libfoo.a or libfoo.so.
 
-* Add a new command line option '--default-script=FILE' or '-dT FILE'
+* Add a new command-line option '--default-script=FILE' or '-dT FILE'
   which specifies a replacement for the built in, default linker
   script.
 
@@ -327,7 +601,7 @@ Changes in 2.16:
   language to permit sorting sections by section name or section
   maximum alignment.
 
-* Added a new linker command line switch, --sort-section name|alignment,
+* Added a new linker command-line switch, --sort-section name|alignment,
   to sort sections by section name or maximum alignment.
 
 * ELF: --add-needed/--no-add-needed options to control if a DT_NEEDED tag
@@ -337,7 +611,7 @@ Changes in 2.16:
 
 * Support for the sh-symbianelf target added.
 
-* A new linker command line switch has been added which allows the hash table
+* A new linker command-line switch has been added which allows the hash table
   size to be set to a suitable prime value near to its argument.  This switch
   is --hash-size=<NUMBER>.  Also if the switch --reduce-memory-overheads is
   used, and --hash-size has not been used, then the default value will be set
@@ -437,7 +711,7 @@ Changes in version 2.11:
 
 * TI C54x support, by Timothy Wall.
 
-* Added command line switch --section-start to set the start address of any
+* Added command-line switch --section-start to set the start address of any
   specified section.
 
 * Added ability to emit full relocation information in linked executables,
@@ -657,7 +931,7 @@ Changes in version 2.1:
   other utilities should work on Risc/Ultrix and Irix.
 
 \f
-Copyright (C) 2012-2016 Free Software Foundation, Inc.
+Copyright (C) 2012-2022 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright