Show Table of Contents
A.3. Changes in binutils
Red Hat Developer Toolset 4.0 is distributed with binutils 2.25, which provides a number of bug fixes and feature enhancements over the version included in Red Hat Enterprise Linux and the previous version of Red Hat Developer Toolset. Below is a comprehensive list of new features in this release.
A.3.1. Changes Since Red Hat Enterprise Linux 6.7
The following features have been added since the release of binutils in Red Hat Enterprise Linux 6.7:
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.
A.3.1.1. GNU Linker
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 4.0, the
gold linker is not enabled by default. Users can explicitly switch between ld and gold by using the alternatives mechanism.
A.3.1.1.1. New Features
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 6.7:
- 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.
A.3.1.1.2. Compatibility Changes
The following compatibility changes have been made since the release of binutils included in Red Hat Enterprise Linux 6.7:
- 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.
A.3.1.2. GNU Assembler
A.3.1.2.1. New Features
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 6.7:
- 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.
A.3.1.3. Other Binary Tools
A.3.1.3.1. New Features
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 6.7:
- Support for
dwz -moptimized debug information has been added. - The devtoolset-2-binutils-devel package now provides the
demangle.hheader file.
A.3.2. Changes Since Red Hat Enterprise Linux 7.2
The following bugs have been fixed and features added since the release of binutils in Red Hat Enterprise Linux 7.2:
- The detection of uncompressed
.debug_strsections has been fixed. - The decoding of abbreviations using the
DW_FORM_ref_addrattribute has been fixed. - The objcopy utility now supports wildcards for section names in command line options.
- The BFD linker script language now supports the
ALIGN_WITH_INPUTdirective for output sections. The directive directs the linker to compute the maximum alignment of the associated input sections and use that alignment for the output section. - The AVX-512 (512-bit Advanced Vector Extensions) are now supported.
A.3.3. Changes Since Red Hat Developer Toolset 3.1
The following features have been added since the release of binutils in Red Hat Developer Toolset 3.1:
A.3.3.1. GNU Linker
- Binaries in the COFF/PE format now once again contain real timestamps by default. This was done so that the binaries will be compatible with tools from other vendors. However, including timestamps in binaries means that two identical builds made at different times will not compare as identical. The timestamps can be disabled using a command-line option,
--no-insert-timestamp. - Binaries in the COFF/PE format can now have a build-id added to them using the
--build-idcommand line option. This behaves in the same way as the--build-idoption does for binaries in the ELF format. - Support has been added for the AVR Tiny microcontrollers and the Andes NDS32 architecture.
- Support for the Openrisc and OR32 architectures has been replaced with support for the OR1K architecture.
A.3.3.2. GNU Assembler
- The ARM assembler now accepts output from the CodeComposer Studio tool. This is enabled using a new command line option,
-mccs. - Support has been added for the AVR Tiny microcontrollers and the Andes NDS32 architecture.
- Support for the Openrisc and OR32 architectures has been replaced with support for the OR1K architecture.
A.3.3.3. Other Binary Tools
- The default behaviour of the
stringsprogram has changed. Instead of displaying strings only found in data sections of a program, it will now search all of the program, including the code sections. The old behaviour can be restored using a new command-line option,--data.The change was made as a security enhancement because scanning the entire program for strings does not require any analysis of the program itself. The analysis code might contain bugs, which could be triggered by specially crafted bogus programs, thus exposing the system itself to attack. - The
stringsutility also has a new command-line option,--include-all-whitespace. This stopsstringsfrom splitting its output when it encounters a carriage return or the line feed character. - The
objcopyutility has a new command-line option,--dump-section. This allows individually named sections to be extracted from a program and copied into another file.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.