This update for binutils fixes the following issues:
Update to binutils 2.37:
- The GNU Binutils sources now requires a C99 compiler and library to
build.
- Support for the arm-symbianelf format has been removed.
- Support for Realm Management Extension (RME) for AArch64 has been
added.
- A new linker option '-z report-relative-reloc' for x86 ELF targets
has been added to report dynamic relative relocations.
- A new linker option '-z start-stop-gc' has been added to disable
special treatment of start*/stop* references when
--gc-sections.
- A new linker options '-Bno-symbolic' has been added which will
cancel the '-Bsymbolic' and '-Bsymbolic-functions' options.
- The readelf tool has a new command line option which can be used to
specify how the numeric values of symbols are reported.
--sym-base=0|8|10|16 tells readelf to display the values in base 8,
base 10 or base 16. A sym base of 0 represents the default action
of displaying values under 10000 in base 10 and values above that in
base 16.
- A new format has been added to the nm program. Specifying
'--format=just-symbols' (or just using -j) will tell the program to
only display symbol names and nothing else.
- A new command line option '--keep-section-symbols' has been added to
objcopy and strip. This stops the removal of unused section symbols
when the file is copied. Removing these symbols saves space, but
sometimes they are needed by other tools.
- The '--weaken', '--weaken-symbol' and '--weaken-symbols' options
supported by objcopy now make undefined symbols weak on targets that
support weak symbols.
- Readelf and objdump can now display and use the contents of .debug_sup
sections.
Readelf and objdump will now follow links to separate debug info
files by default. This behaviour can be stopped via the use of the
new '-wN' or '--debug-dump=no-follow-links' options for readelf and
the '-WN' or '--dwarf=no-follow-links' options for objdump. Also
the old behaviour can be restored by the use of the
'--enable-follow-debug-links=no' configure time option.
The semantics of the =follow-links option have also been slightly
changed. When enabled, the option allows for the loading of symbol
tables and string tables from the separate files which can be used
to enhance the information displayed when dumping other sections,
but it does not automatically imply that information from the
separate files should be displayed.
If other debug section display options are also enabled (eg
'--debug-dump=info') then the contents of matching sections in both
the main file and the separate debuginfo file will be displayed.
This is because in most cases the debug section will only be present
in one of the files.
If however non-debug section display options are enabled (eg
'--sections') then the contents of matching parts of the separate
debuginfo file will not be displayed. This is because in most
cases the user probably only wanted to load the symbol information
from the separate debuginfo file. In order to change this behaviour
a new command line option --process-links can be used. This will
allow di0pslay options to applied to both the main file and any
separate debuginfo files.
- Nm has a new command line option: '--quiet'. This suppresses 'no
symbols' diagnostic.
Update to binutils 2.36:
New features in the Assembler:
General:
New features in other binary tools:
* The ar tool's previously unused l modifier is now used for
specifying dependencies of a static library. The arguments of
this option (or --record-libdeps long form option) will be
stored verbatim in the __.LIBDEP member of the archive, which
the linker may read at link time.
* Readelf can now display the contents of LTO symbol table
sections when asked to do so via the --lto-syms command line
option.
* Readelf now accepts the -C command line option to enable the
demangling of symbol names. In addition the --demangle=<style>,
--no-demangle, --recurse-limit and --no-recurse-limit options
are also now availale.
Update to binutils 2.35.1:
- This is a point release over the previous 2.35 version, containing bug
fixes, and as an exception to the usual rule, one new feature. The
new feature is the support for a new directive in the assembler:
'.nop'. This directive creates a single no-op instruction in whatever
encoding is correct for the target architecture. Unlike the .space or
.fill this is a real instruction, and it does affect the generation of
DWARF line number tables, should they be enabled.
Update to binutils 2.35:
- The assembler can now produce DWARF-5 format line number tables.
- Readelf now has a 'lint' mode to enable extra checks of the files it is processing.
- Readelf will now display '[...]' when it has to truncate a symbol name.
The old behaviour - of displaying as many characters as possible, up to
the 80 column limit - can be restored by the use of the --silent-truncation
option.
- The linker can now produce a dependency file listing the inputs that it
has processed, much like the -M -MP option supported by the compiler.
Update to binutils 2.34:
- The disassembler (objdump --disassemble) now has an option to
generate ascii art thats show the arcs between that start and end
points of control flow instructions.
- The binutils tools now have support for debuginfod. Debuginfod is a
HTTP service for distributing ELF/DWARF debugging information as
well as source code. The tools can now connect to debuginfod
servers in order to download debug information about the files that
they are processing.
- The assembler and linker now support the generation of ELF format
files for the Z80 architecture.
Update to binutils 2.33.1:
- Adds support for the Arm Scalable Vector Extension version 2
(SVE2) instructions, the Arm Transactional Memory Extension (TME)
instructions and the Armv8.1-M Mainline and M-profile Vector
Extension (MVE) instructions.
- Adds support for the Arm Cortex-A76AE, Cortex-A77 and Cortex-M35P
processors and the AArch64 Cortex-A34, Cortex-A65, Cortex-A65AE,
Cortex-A76AE, and Cortex-A77 processors.
- Adds a .float16 directive for both Arm and AArch64 to allow
encoding of 16-bit floating point literals.
- For MIPS, Add -m[no-]fix-loongson3-llsc option to fix (or not)
Loongson3 LLSC Errata. Add a --enable-mips-fix-loongson3-llsc=[yes|no]
configure time option to set the default behavior. Set the default
if the configure option is not used to 'no'.
- 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 support for GNUPROPERTYAARCH64FEATURE1BTI and
GNUPROPERTYAARCH64FEATURE1PAC in ELF GNU program properties
in the AArch64 ELF linker.
- Add -z force-bti for AArch64 to enable GNUPROPERTYAARCH64FEATURE1BTI
on output while warning about missing GNUPROPERTYAARCH64FEATURE1BTI
on inputs and use PLTs protected with BTI.
- Add -z pac-plt for AArch64 to pick PAC enabled PLTs.
- Add --source-comment[=<txt>] option to objdump which if present,
provides a prefix to source code lines displayed in a disassembly.
- Add --set-section-alignment <section-name>=<power-of-2-align>
option to objcopy to allow the changing of section alignments.
- Add --verilog-data-width option to objcopy for verilog targets to
control width of data elements in verilog hex format.
- The separate debug info file options of readelf (--debug-dump=links
and --debug-dump=follow) and objdump (--dwarf=links and
--dwarf=follow-links) will now display and/or follow multiple
links if more than one are present in a file. (This usually
happens when gcc's -gsplit-dwarf option is used).
In addition objdump's --dwarf=follow-links now also affects its
other display options, so that for example, when combined with
--syms it will cause the symbol tables in any linked debug info
files to also be displayed. In addition when combined with
--disassemble the --dwarf= follow-links option will ensure that
any symbol tables in the linked files are read and used when
disassembling code in the main file.
- Add support for dumping types encoded in the Compact Type Format
to objdump and readelf.
The following security fixes are addressed by the update:
- CVE-2021-20197: Fixed a race condition which allows users to own arbitrary files (bsc#1181452).
- CVE-2021-20284: Fixed a heap-based buffer overflow in bfdelfslurpsecondaryrelocsection in elf.c (bsc#1183511).
- CVE-2021-3487: Fixed a denial of service via excessive debug section size causing excessive memory consumption in bfd's dwarf2.c read_section() (bsc#1184620).
- CVE-2020-35448: Fixed a heap-based buffer over-read in bfdgetlsigned_32() in libbfd.c (bsc#1184794).
- CVE-2020-16590: Fixed a double free vulnerability in processsymboltable() (bsc#1179898).
- CVE-2020-16591: Fixed an invalid read in processsymboltable() (bsc#1179899).
- CVE-2020-16592: Fixed an use-after-free in bfdhashlookup() (bsc#1179900).
- CVE-2020-16593: Fixed a null pointer dereference in scanunitfor_symbols() (bsc#1179901).
- CVE-2020-16598: Fixed a null pointer dereference in debuggetreal_type() (bsc#1179902).
- CVE-2020-16599: Fixed a null pointer dereference in bfdelfgetsymbolversionstring() (bsc#1179903)
- CVE-2020-35493: Fixed heap-based buffer overflow in bfdpefparsefunctionstubs function in bfd/pef.c via crafted PEF file (bsc#1180451).
- CVE-2020-35496: Fixed multiple null pointer dereferences in bfd module due to not checking return value of bfd_malloc (bsc#1180454).
- CVE-2020-35507: Fixed a null pointer dereference in bfdpefparsefunctionstubs() (bsc#1180461).
- CVE-2019-17451: Fixed an integer overflow leading to a SEGV in bfddwarf2findnearest_line() in dwarf2.c (bsc#1153768).
- CVE-2019-17450: Fixed a potential denial of service in findabstractinstance() in dwarf2.c (bsc#1153770).
- CVE-2019-9077: Fixed a heap-based buffer overflow in processmipsspecific() in readelf.c via a malformed MIPS option section (bsc#1126826).
- CVE-2019-9075: Fixed a heap-based buffer overflow in bfdarchive64bitslurparmap() in archive64.c (bsc#1126829).
- CVE-2019-9074: Fixed a out-of-bounds read leading to a SEGV in bfd_getl32() in libbfd.c (bsc#1126831).
- CVE-2019-12972: Fixed a heap-based buffer over-read in bfddoprnt() in bfd.c (bsc#1140126).
- CVE-2019-14444: Fixed an integer overflow apply_relocations() in readelf.c (bsc#1143609).
- CVE-2019-14250: Fixed an integer overflow in simpleobjectelf_match() in simple-object-elf.c (bsc#1142649).