Red Hat Developer Toolset 2.0 is distributed with binutils 2.23.52, which provides a number of bug fixes and feature enhancements over the Red Hat Enterprise Linux system version and the version included in Red Hat Developer Toolset 1.1. Below is a comprehensive list of new features in this release.
The GNU assembler (
as), GNU linker (ld), and other binary tools that are part of binutils are now released under the GNU General Public License, version 3.
Another ELF linker,
gold, is now available in addition to ld, the existing GNU linker. gold is intended to be a drop-in replacement for ld, so ld's documentation is intended to be the reference documentation. gold supports most of ld's features, except notable ones such as MRI-compatible linker scripts, cross-reference reports (--cref), and various other minor options. It also provides significantly improved link time with very large C++ applications.
In Red Hat Developer Toolset 2.0, the
gold linker is not enabled by default. Users can explicitly switch between ld and gold by using the alternatives mechanism.
Changes Since Red Hat Enterprise Linux 6.4
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 6.4:
- A new
INPUT_SECTION_FLAGSkeyword has been added to the linker script language. This keyword can be used to select input sections by section header flags. - A new
SORT_BY_INIT_PRIORITYkeyword has been added to the linker script language. This keyword can be used to sort sections by numerical value of the GCCinit_priorityattribute encoded in the section name. - A new
SORT_NONEkeyword has been added to the linker script language. This keyword can be used to disable section sorting. - A new linker-provided symbol,
__ehdr_start, has been added. When producing ELF output, this symbol points to the ELF file header (and nearby program headers) in the program's memory image.
Changes Since Red Hat Enterprise Linux 5.9
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 5.9:
- GNU/Linux targets now support the
STB_GNU_UNIQUEsymbol binding, a GNU extension to the standard set of ELF symbol bindings. The binding is passed on to the dynamic linker, which ensures that in the entire process there is only one symbol with the given name and type in use.Note
The implementation of this feature depends on capabilities only found in newer versions of theglibclibrary. Consequently, this feature is currently available in Red Hat Developer Toolset for Red Hat Enterprise Linux 6. - A new command line option
--no-export-dynamichas been added. This option can be used to undo the effect of the-Eand--export-dynamicoptions. - A new command line option
--warn-alternate-emhas been added. This option can be used to display a warning if an ELF format object file uses an alternate machine code. - A new linker script function
REGION_ALIAShas been added. This function can be used to create alias names of memory regions. - A new command line option
-Ttext-segmenthas been added for ELF-based targets. This option can be used to set the address of the first byte of the text segment.address - A new linker script command
INSERThas been added. This command can be used to augment the default script. - In a linker script input section, it is now possible to specify a file within an archive by using the
syntax.archive:file - The
--sort-commoncommand line option now acceptsascendinganddescendingas optional arguments. This can be used to specify which sorting order to use. - A new command line option
--build-idhas been added for ELF-based targets. This option can be used to generate a unique per-binary identifier embedded in a note section. - A new command line option
--default-script=(orfile_name-dT) has been added. This option can be used to specify a replacement for the built-in linker script.file_name - A new command line option
-Bsymbolic-functionshas been added. When creating a shared library, this option will cause references to global function symbols to be bound to the definitions with the shared library, if such exist. - The new command line options
--dynamic-list-cpp-newand--dynamic-list-datahave been added, which can be used to modify the dynamic list.
Changes Since Red Hat Enterprise Linux 6.4
The following compatibility changes have been made since the release of binutils included in Red Hat Enterprise Linux 6.4:
- The
--copy-dt-needed-entriescommand line option is no longer enabled by default. Instead,--no-copy-dt-needed-entriesis now the default option. - Evaluation of linker script expressions has been significantly improved. Note that this can negatively affect scripts that rely on undocumented behavior of the old expression evaluation.
Changes Since Red Hat Enterprise Linux 5.9
The following compatibility changes have been made since the release of binutils included in Red Hat Enterprise Linux 5.9:
- The
--add-neededcommand line option has been renamed to--copy-dt-needed-entriesin order to avoid confusion with the--as-neededoption. - For GNU/Linux systems, the linker no longer processes any relocations made against symbols of the
STT_GNU_IFUNCtype. Instead, it emits them into the resulting binary for processing by the loader.Note
The implementation of this feature depends on capabilities only found in newer versions of theglibclibrary. Consequently, this feature is currently available in Red Hat Developer Toolset for Red Hat Enterprise Linux 6. - The
--as-neededcommand line option has been adapted to link in a dynamic library in the following two cases:- if the dynamic library satisfies undefined symbols in regular objects, and
- if the dynamic library satisfies undefined symbols in other dynamic libraries unless the library is already found in a
DT_NEEDEDentry of one of the libraries that are already linked.
- The
-l:command line option now searches the library path for a file name calledfile_namefile_namewithout adding the.aor.sofile extension.
Changes Since Red Hat Enterprise Linux 6.4
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 6.4:
- The GNU Assembler no longer requires double ampersands in macros.
- A new
--compress-debug-sectionscommand line option has been added to enable compression of DWARF debug information sections in the relocatable output file. Compressed debug sections are currently supported by thereadelf,objdump, andgoldtools, but not byld. - Support for
.bundle_align_mode,.bundle_lock, and.bundle_unlockdirectives for x86 targets has been added.. - On x86 architectures, the GNU Assembler now allows
rep bsf,rep bsr, andrep retsyntax.
Changes Since Red Hat Enterprise Linux 5.9
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 5.9:
- GNU/Linux targets now support
gnu_unique_objectas a value of the.typepseudo operation. This value can be used to mark a symbol as globally unique in the entire process. - Support for the new discriminator column in the DWARF line table with a discriminator operand for the
.locdirective has been added. - The
.typepseudo operation now accepts a type ofSTT_GNU_IFUNC. This can be used to indicate that if the symbol is the target of a relocation, its value should not be used. Instead, the function should be invoked and its result used as the value. - A new pseudo operation
.cfi_val_encoded_addrhas been added. This pseudo operation can be used to record constant addresses in unwind tables without runtime relocation. - A new command line option
-msse-check=[none|error|warning]has been added for x86 targets. - The
-acommand line option now acceptsgas a valid sub-option. This combination can be used to enable assembly listings with additional information about the assembly, including the list of supplied command line options or the assembler version. - A new command line option
-msse2avxhas been added for x86 targets. This option can be used to encode SSE instructions with VEX prefix. - x86 targets now support the Intel XSAVE, EPT, MOVBE, AES, PCLMUL, and AVX/FMA instructions.
- New command line options
-march=,cpu[,+extension…]-mtune=,cpu-mmnemonic=[att|intel],-msyntax=[att|intel],-mindex-reg,-mnaked-reg, and-mold-gcchave been added for x86 targets. - New pseudo operations
.string16,.string32, and.string64have been added. These pseudo operations be used to generate wide character strings. - The i386 port now supports the SSE5 instruction set.
- A new pseudo operation
.relochas been added. This pseudo operation serves as a low-level interface for creating relocations.
Changes Since Red Hat Developer Toolset 1.1
The following features have been added since the release of binutils included in Red Hat Developer Toolset 1.1:
- A manual page for the
dwputility has been added. - The binary tools now provide support for the AMD Family 15h processors, models 02h and 10-1fh.
Changes Since Red Hat Enterprise Linux 6.4
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 6.4:
- Support for
dwz -moptimized debug information has been added. - The devtoolset-2-binutils-devel package now provides the
demangle.hheader file.
Changes Since Red Hat Enterprise Linux 5.9
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 5.9:
- “Thin” archives are now supported. Instead of containing object files, such archives contain just pathnames pointing to those files.
- The i386 port now supports the SSE5 instruction set.
Changes Since Red Hat Enterprise Linux 5.9
The following compatibility changes have been made since the release of binutils included in Red Hat Enterprise Linux 5.9:
- The
--as-neededcommand line option has been adapted to link in a dynamic library in the following two cases:- if the dynamic library satisfies undefined symbols in regular objects, and
- if the dynamic library satisfies undefined symbols in other dynamic libraries unless the library is already found in a
DT_NEEDEDentry of one of the libraries that are already linked.