Changelog:
GAS
Changes in 2.32:
* Add -mvexwig=[0|1] option to x86 assembler to control encoding of
VEX.W-ignored (WIG) VEX instructions.
* Add -mx86-used-note=[yes|no] option to generate (or not) x86 GNU property
notes. Add a --enable-x86-used-note configure time option to set the
default behavior. Set the default if the configure option is not used
to "no".
* Add support for the MIPS Loongson EXTensions R2 (EXT2) instructions.
* Add support for the MIPS Loongson EXTensions (EXT) instructions.
* Add support for the MIPS Loongson Content Address Memory (CAM) ASE.
* Add support for the C-SKY processor series.
* Add support for the MIPS Loongson MultiMedia extensions Instructions (MMI)
ASE.
LD
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`
BINUTILS
Changes in 2.32:
* The addr2line, c++filt, nm and objdump tools now have a limit on the
maximum amount of recursion that is allowed whilst demangling strings.
The value for this limit is defined by the DEMANGLE_RECRUSE_LIMIT
constant declared in the include/demangle.h header file. At the time
of writing this constant has the value of 2048.
The --no-recurse-limit option can be used to remove the limit, restoring
the behaviour of earlier versions of these tools. This may be needed in
order to dmangle truly complicated names, but it also leaves the tools
vulnerable to stack exhaustion from maliciously constructed mangled names.
* Objdump's --disassemble option can now take a parameter, specifying the
starting symbol for disassembly. Disassembly will continue from this
symbol up to the next symbol or the end of the function.
* The MIPS port now supports the Loongson 2K1000 processor which implements
the MIPS64r2 ISA, the Loongson-mmi ASE, Loongson-cam ASE, Loongson-ext ASE,
Loongson-ext2 ASE and MSA ASE instructions. Add -march=gs264e option for
Loongson 2K1000 processor.
* The MIPS port now supports the Loongson 3A2000/3A3000 processor which
implements the MIPS64r2 ISA, the Loongson-mmi ASE, Loongson-cam ASE,
Loongson-ext ASE and Loongson-ext2 ASE instructions. Add -march=gs464e
option for Loongson 3A2000/3A3000 processor.
* The MIPS port now supports the Loongson 3A1000 processor, aka Loongson3a,
which implements the MIPS64r2 ISA, the Loongson-mmi ASE, Loongson-cam ASE
and Loongson-ext ASE instructions. Add -march=gs464 option for Loongson
3A1000 processor, The -march=loongson3a is an alias of -march=gs464 for
compatibility.
Changelog:
2.31.1
This release also contains a fix for PR gold/23409 where the gold
linker could end up creating duplicate copies of some symbols.
2.31
This release contains numerous bug fixes, and also the
following new features:
* Direct linking with DLLs for Cygwin and Mingw targets is now faster.
* The linker now defaults to enabling -z separate-code for Linux
targets, although a configure time option can change this.
This option can increase disk and memory size of executables, but
it does help to improve security.
* The disassembler supports Netronome Flow Processor (NFP) firmware
files.
* The AArch64 disassembler supports showing disassembly notes which
are emitted when inconsistencies are found with the instruction that
may result in the instruction being invalid. It also emits warnings
when a combination of an instruction and a named register could be
invalid.
* The AR archive manager now supports an "O" modifier to display
member offsets inside an archive.
* The ADR and ADRL pseudo-instructions supported by the ARM assembler
now only set the bottom bit of the address of thumb function symbols
if the -mthumb-interwork command line option is active.
* The MIPS assembler supports the Global INValidate (GINV) and
Cyclic Redudancy Check (CRC) architecture extensions.
* Support has been added for the Freescale S12Z architecture.
* The assembler has a new --generate-missing-build-notes=[yes|no]
option to create (or not) GNU Build Attribute notes if none are
present in the input sources.
* The -mold-gcc command-line option has been removed for x86 targets.
* The x86 assembler now supports a -O[2|s] command-line options to
enable alternate shorter instruction encodings.
* The gold linker has a new --debug=plugin option for easier debugging
of plugin-related problems.
* The gold linker now supports the -z keep_text_section_prefix option.
* The gold linker now has support for .note.gnu.property sections
(from Linux ABI extensions).
* Add gold linker now has support for Intel's Indirect Branch Tracking
(IBT) and Shadow Stack instructions.
Changelog:
In the assembler:
* Add support for location views in DWARF debug line information.
In the BFD linker:
* 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.
In the GOLD linker:
* Add support for .MIPS.options sections (MIPS only).
* Add support for compound relocations (MIPS only).
* Add --emit-stub-syms, --no-tls-optimize, --tls-get-addr-optimize options
(PowerPC only).
* Add -z text-unlikely-segment option.
* Add plugin support for adding new input files
(LDPT_REGISTER_NEW_INPUT_HOOK).
In the utilities:
* Add --debug-dump=links option to readelf and --dwarf=links option to
objdump
which displays the contents of any .gnu_debuglink or .gnu_debugaltlink
sections.
* Add a --debug-dump=follow-links option to readelf and a
--dwarf=follow-links
option to objdump which causes indirect links into separate debug info
files
to be followed when dumping other DWARF sections.
Changelog:
GAS:
Changes in 2.28:
* Add support for the RISC-V architecture.
* Add support for the ARM Cortex-M23 and Cortex-M33 processors.
LD:
Changes in 2.28:
* 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
Secure Gateway veneers that must exist in the output import library specified
by --out-implib=<outfile> and the address they must have. As such,
--in-implib is only supported in combination with --cmse-implib.
* Extended the --out-implib=<file> option, previously restricted to x86 PE
targets, to any ELF based target. This allows the generation of an import
library for an ELF executable, which can then be used by another application
to link against the executable.
BINUTILS:
Changes in 2.28:
* Add support for locating separate debug info files using the build-id
method, where the separate file has a name based upon the build-id of
the original file.
* This version of binutils fixes a problem with PowerPC VLE 16A and 16D
relocations which were functionally swapped, for example,
R_PPC_VLE_HA16A performed like R_PPC_VLE_HA16D while R_PPC_VLE_HA16D
performed like R_PPC_VLE_HA16A. This could have been fixed by
renumbering relocations, which would keep object files created by an
older version of gas compatible with a newer ld. However, that would
require an ABI update, affecting other assemblers and linkers that
create and process the relocations correctly. It is recommended that
all VLE object files be recompiled, but ld can modify the relocations
if --vle-reloc-fixup is passed to ld. If the new ld command line
option is not used, ld will ld warn on finding relocations inconsistent
with the instructions being relocated.
* The nm program has a new command line option (--with-version-strings)
which will display a symbol's version information, if any, after the
symbol's name.
* The ARC port of objdump now accepts a -M option to specify the extra
instruction class(es) that should be disassembled.
* The --remove-section option for objcopy and strip now accepts section
patterns starting with an exclamation point to indicate a non-matching
section. A non-matching section is removed from the set of sections
matched by an earlier --remove-section pattern.
* The --only-section option for objcopy now accepts section patterns
starting with an exclamation point to indicate a non-matching section.
A non-matching section is removed from the set of sections matched by
an earlier --only-section pattern.
* New --remove-relocations=SECTIONPATTERN option for objcopy and strip.
This option can be used to remove sections containing relocations.
The SECTIONPATTERN is the section to which the relocations apply, not
the relocation section itself.
Changelog:
Changes in 2.26:
* Add option to objcopy to insert new symbols into a file:
--add-symbol <name>=[<section>:]<value>[,<flags>]
* Add support for the ARC EM/HS, and ARC600/700 architectures.
* Extend objcopy --compress-debug-sections option to support
--compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi] for ELF
targets.
* Add --update-section option to objcopy.
* Add --output-separator option to strings.