-*- text -*- Changes in 2.41: * The MIPS port now supports the Sony Interactive Entertainment Allegrex processor, used with the PlayStation Portable, which implements the MIPS II ISA along with a single-precision FPU and a few implementation-specific integer instructions. * Objdump's --private option can now be used on PE format files to display the fields in the file header and section headers. * New versioned release of libsframe: libsframe.so.1. This release introduces versioned symbols with version node name LIBSFRAME_1.0. This release also updates the ABI in an incompatible way: this includes removal of sframe_get_funcdesc_with_addr API, change in the behavior of sframe_fre_get_ra_offset and sframe_fre_get_fp_offset APIs. * SFrame Version 2 is now the default (and only) format version supported by gas, ld, readelf and objdump. * Add command-line option, --strip-section-headers, to objcopy and strip to remove ELF section header from ELF file. * The RISC-V port now supports the following new standard extensions: - Zicond (conditional zero instructions) - Zfa (additional floating-point instructions) - Zvbb, Zvbc, Zvkg, Zvkned, Zvknh[ab], Zvksed, Zvksh, Zvkn, Zvknc, Zvkng, Zvks, Zvksc, Zvkg, Zvkt (vector crypto instructions) * The RISC-V port now supports the following vendor-defined extensions: - XVentanaCondOps * The LoongArch port now supports the following extensions: - LSX (Loongson SIMD eXtension; 128-bit vectors) - LASX (Loongson Advanced SIMD eXtension; 256-bit vectors) - LVZ (Loongson Virtualization extension) - LBT (Loongson Binary Translation extension) * The LoongArch disassembly output received the following tweaks: - Colored output is now supported. - Some pseudo-instructions are now shown in place of the canonical forms, where semantics are equivalent. A disassembler option '-M no-aliases' is added to disable the new behavior. - Signed immediates are no longer printed with their hex representation. - Unrecognized instruction words are now shown with '.word'. Changes in 2.40: * Objdump has a new command line option --show-all-symbols which will make it display all symbols that match a given address when disassembling. (Normally only the first symbol that matches an address is shown). * Add --enable-colored-disassembly configure time option to enable colored disassembly output by default, if the output device is a terminal. Note, this configure option is disabled by default. * DCO signed contributions are now accepted. * objcopy --decompress-debug-sections now supports zstd compressed debug sections. The new option --compress-debug-sections=zstd compresses debug sections with zstd. * addr2line and objdump --dwarf now support zstd compressed debug sections. * The dlltool program now accepts --deterministic-libraries and --non-deterministic-libraries as command line options to control whether or not it generates deterministic output libraries. If neither of these options are used the default is whatever was set when the binutils were configured. * readelf and objdump now have a newly added option --sframe which dumps the SFrame section. Changes in 2.39: * Add --no-weak/-W option to nm to make it ignore weak symbols. * Add an option to objdump and readelf to prevent attempts to access debuginfod servers when following links. * objcopy --weaken, --weaken-symbol, and --weaken-symbols now make ELF STB_GNU_UNIQUE symbols weak. * objdump now supports syntax highlighting of disassembler output for some architectures. Use the --disassembler-color=MODE command line flag, with mode being either off, color, or extended-color. Changes in 2.38: * elfedit: Add --output-abiversion option to update ABIVERSION. * Add support for the LoongArch instruction set. * Tools which display symbols or strings (readelf, strings, nm, objdump) have a new command line option which controls how unicode characters are handled. By default they are treated as normal for the tool. Using --unicode=locale will display them according to the current locale. Using --unicode=hex will display them as hex byte values, whilst --unicode=escape will display them as escape sequences. In addition using --unicode=highlight will display them as unicode escape sequences highlighted in red (if supported by the output device). * readelf -r dumps RELR relative relocations now. * Support for efi-app-aarch64, efi-rtdrv-aarch64 and efi-bsdrv-aarch64 has been added to objcopy in order to enable UEFI development using binutils. * ar: Add --thin for creating thin archives. -T is a deprecated alias without diagnostics. In many ar implementations -T has a different meaning, as specified by X/Open System Interface. Changes in 2.37: * 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. * Binutils now requires a C99 compiler and library to build. * 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 --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. * objcopy --weaken, --weaken-symbol and --weaken-symbols 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. Changes in 2.36: * Update elfedit and readelf with LAM_U48 and LAM_U57 support. * Nm has a new command line option: --ifunc-chars=CHARS. This specifies a string of one or two characters. The first character is used as the type character when displaying global ifunc symbols. The second character, if present is used when displaying local ifunc symbols. In addition a new configure time option --enable-f-for-ifunc-symbols has been created, which if used will change nm's default characters for ifunc symbols from i (both local and global) to F (global) and f (local). * 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=