-
Language:
English
-
Language:
English
Red Hat Training
A Red Hat training course is available for Red Hat Developer Toolset
Appendix A. Changes in Version 8.0
The sections below document features and compatibility changes introduced in Red Hat Developer Toolset 8.0.
A.1. Changes in GCC
Red Hat Developer Toolset 8.0 is distributed with GCC 8.2.1, which provides numerous enhancements over the version included in the previous release of Red Hat Developer Toolset.
Changes Since Red Hat Developer Toolset 7.1
The following features have been added since the release of GCC included in Red Hat Developer Toolset 7.1:
- The source code coverage analysis tool GCOV has been extended with various improvements.
-
New code generation options to increase program security such as
-fstack-clash-protection
have been added. Notably, the new-fcf-protection=
option adds code instrumentation for checking target addresses of control-flow instructions. The possible values arefull
,branch
,return
,none
. - Various new warnings to detect potentially buggy code with security implications have been added.
- Front-end warnings have been improved to detect more bugs, and various warnings have been added.
- Diagnostic messages have been improved.
-
The GCC sanitizers have been extended to detect more invalid cases. For instance, Address Sanitizer has gained two new options:
-fsanitize=pointer-compare
and-fsanitize=pointer-subtract
, which warn about wrong code involving operations with pointers.
Language Features and Standards
- Passing an empty class as an argument now takes up no space on the Intel64 and AMD 64 architectures, as required by the platform ABI. Passing or returning a class with only deleted copy and move constructors now uses the same calling convention as a class with a non-trivial copy or move constructor.
-
The value returned by the C++11
alignof
operator has been corrected to match the C_Alignof
operator and return minimum alignment, rather than the previously returned preferred alignment. To find the preferred alignment, use the GNU extension__alignof__
operator. -
The default standard used when compiling code in the C language has changed to C17 with GNU extensions. This has the same effect as using the
--std=gnu17
option. - The experimental capability for compiling C++ code using the C++17 standard has been improved, but it remains experimental and unstable. Compiling C++17 code is not forward or backward compatible with other versions of GCC, and is not supported.
- Initial experimental capability for compiling C++ code using the future C++2A standard has been added.
Optimization Improvements
Improvements in optimization include these areas:
- Interprocedural optimization
- Profile-driven optimization
- Link-time optimization
- Optimization for loop nesting
Architecture support
- Support for the Intel Cannonlake architecture has been added.
-
Tuning for the AMD Zen microarchitecture
znver1
was improved. - Support for the Qualcomm Saphira CPU has been added.
-
Handling of the
-march=native
option on the ARM and 64-bit ARM architectures has been fixed.
Removed and Deprecated Features
- Support for the Intel Cilk Plus extensions was removed.
- Intel Memory Protection Extensions (MPX) are now deprecated.
A.2. Changes in GDB
Red Hat Developer Toolset 8 is distributed with GDB 8.2, which provides a number of enhancements over the version included in the previous release of Red Hat Developer Toolset.
Changes Since Red Hat Developer Toolset 7.1
The following features have been added since the release of GDB included in Red Hat Developer Toolset 7.1:
-
The
--readnever
option has been added to speed up startup in situations where symbolic debugging is not used. With this option, GDB does not read symbolic debug information from symbol files at startup. - GDB can now use the GNU MPFR library for correct evaluation of floating-point expressions when the architectures of debugging host and target systems are different. The library must be present in version 3.1 or higher.
- GDB has been extended to access the guarded-storage-control registers and software based guarded-storage broadcast control registers on IBM z14 machines.
-
A new
-a
option has been added to thegcore
command to dump all memory mappings. Breakpoints on C++ functions are now set in all scopes by default. This means that the inputs are interpreted as potentially missing leading name space or class. To treat the inputs literally, use the new
-q
flag.As an example, running the
break func()
command will set a breakpoint onA::B::func()
andB::func()
. To match explicitly only the latter, runbreak -q B::func
.-
The
ptype
command now accepts a/o
flag to print the offsets and sizes of data structure fields in a format similar thepahole
tool output. - Breakpoints on functions with C++ ABI tags can now be specified without explicitly listing the tag.
-
GDB no longer considers
int
the type of variables and return type of functions, when debugging information is not available. As a consequence, you need to specify the types explicitly to call and print these.
New Commands
-
Set the current working directory for the debugging target with the new
set cwd
command. To display it,show cwd
. -
To start the debugging target and stop at the first instruction, use the new
starti
command.
Completion Improvements
- Completion has been extended to understand context of the intended operation and provide more relevant results.
- It is no longer necessary to use quotes for correct completion of function parameters in most situations.
- Completion of identifiers under C++ anonymous namespaces has been improved.
- Completion of label names has been added.
gdbserver
Improvements
-
New
set environment
andunset environment
commands have been added. With these commands, users can modify environment variables on the remote system before the debugging target is started. The remote system must be Unix-based. -
gdbserver
can now substitute variables and expand glob patterns in the debugging target command line options. This functionality is based on starting the target using a shell, which is the default behavior. -
gdbserver
has been extended to set the working directory of the debugging target process with theset cwd
command.
A.3. Changes in binutils
Red Hat Developer Toolset 8 is distributed with binutils 2.30, which provides a number of enhancements over the version included in the previous release of Red Hat Developer Toolset.
Changes Since Red Hat Developer Toolset 7.1
The following features have been added since the release of binutils included in Red Hat Developer Toolset 7.1:
Assembler
-
A
--generate-missing-build-notes [on|off]
option has been added to control creation of GNU Build Attribute notes if none are present in the input sources. - Location views in DWARF debug line information are now supported.
- Support for the WebAssembly file format, and conversion of WebAssembly to the wasm32 ELF file format have been added.
- Support for building code for the Texas Instruments PRU processor has been added.
- Support for the ARMv8-R architecture and Cortex-R52 processor has been added.
Linker
-
The
-z separate-code
and-z undefs
options to generate a separate code PT_LOAD segment have been added. This improves security, but also increases the size of resulting executables. Note that by default,-z separate-code
is enabled. -
A
-z globalaudit
option has been addeed to force audit libraries to be run for every dynamic object loaded by an executable. In situations where the loader does not support this functionality, this has no effect. - Support for GNU Property notes which provide hints to the dynamic loader about the binary file has been added.
Other binary tools
-
The
--debug-dump=links
option has been added to thereadelf
tool to display the contents of any.gnu_debuglink
or.gnu_debugaltlink
sections present in the binary file. The same functionality has been added to theobjdump
tool with the new--dwarf=links
option. -
The
readelf
tool has been extended with the--debug-dump=follow-links
option to follow indirect links into separate debug info files when dumping other DWARF sections. The same functionality has been added to theobjdump
tool with the new--dwarf=follow-links
option. -
The new
--inlines
option extends the existing--line-numbers
option of theobjdump
tool to display nesting information for inlined functions. -
The
--merge-notes
option has been added to theobjcopy
tool to reduce the size of notes in a binary file by merging and deleting redundant notes. - Support for locating separate debug info files using the build-id method has been added, where the separate file has a name based upon the build-id of the original file.
Changes Since Red Hat Enterprise Linux 7
The following features have been added since the release of binutils included in Red Hat Enterprise Linux 7, in addition to the changes listed above:
Assembler
- Support for the RISC-V architecture has been added.
- Support for the ARM Cortex-M23 and Cortex-M33 processors has been added.
Linker
-
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. -
The
--in-implib=<infile>
option has been added to the ARM linker to enable specifying a set of Secure Gateway veneers that must exist in the output import library specified by the--out-implib=<outfile>
option, and the address they must have. Note that--in-implib
is only usable in combination with the--cmse-implib
option. -
The
--out-implib=<file>
option instructs the linker to generate an import library for an ELF executable, which can be used by another application to link against the executable. Previously, it was restricted to x86 PE targets. This option has been extended to work for any ELF based targets.
Other binary tools
-
The
nm
tool gained a new option--with-version-strings
to display a symbol’s version information after the symbol’s name, if present. -
The version of the
objdump
tool for ARC now accepts a-M
option to specify multiple additional instruction classes to disassemble. -
The
--remove-section
option of theobjcopy
andstrip
tools now accepts section patterns starting with an exclamation point (!
) to indicate a non-matching section. Such non-matching section is removed from the set of sections matched by an earlier pattern indicated with the--remove-section
option. -
The
--only-section
option for theobjcopy
tool now accepts section patterns starting with an exclamation point (!) to indicate a non-matching section. Such non-matching section is removed from the set of sections matched by an earlier pattern indicated with the--only-section
option. -
A new
--remove-relocations=SECTIONPATTERN
option for theobjcopy
andstrip
tools. 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.
A.4. Changes in elfutils
Red Hat Developer Toolset 8 is distributed with elfutils 0.174, which provides a number of enhancements over the version included in the previous release of Red Hat Developer Toolset.
Changes Since Red Hat Developer Toolset 7.1
The following features have been added since the release of elfutils included in Red Hat Developer Toolset 7.1:
Support for DWARF5 and split dwarf, including GNU DebugFission has been added:
-
The
eu-readelf
tools now accepts an--debug-dump=info+
option to show split unit DIEs/files. -
The
eu-readelf
tools now accepts an--dwarf-skeleton=file
option to associate an object file with the respective.dwo
file. -
The libdw library has been extended with the functions
dwarf_die_addr_die()
,dwarf_get_units()
,dwarf_getabbrevattr_data()
, anddwarf_cu_info()
.
-
The
-
When the debug alt file is not explicitly set with a call to
dwarf_set_alt()
in the libdw library, the library now will try to resolve it on first use. -
Previously, the
eu-readelf
tool could show a variable with a negative value as if it had a large unsigned value, or show a large unsigned value as a negative value. This has been corrected andeu-readelf
now looks up the size and signedness of constant value types to display them correctly. -
A new function
dwarf_next_lines()
for reading.debug_line
data lacking CU has been added to the libdw library. This function can be used as alternative to thedwarf_getsrclines()
anddwarf_getsrcfiles()
functions. -
Previously, files with more than 65280 sections could cause errors in the the libelf and libdw libraries and all tools using them. This bug has been fixed. As a result, extended
shnum
andshstrndx
values in ELF file headers are handled correctly.
A.5. Changes in OProfile
Red Hat Developer Toolset 8 is distributed with OProfile 1.3.0, which provides a number of enhancements over the version included in the previous release of Red Hat Developer Toolset.
Changes Since Red Hat Developer Toolset 7.1
The following features have been added since the release of OProfile included in Red Hat Developer Toolset 7.1:
- Support for processors based on the Intel Goldmont Plus microarchitecture has been added.
- OProfile recognition code has been fixed to properly recognize some models of IBM POWER9 processors
- OProfile now works with Linux kernel version 4.14.
A.6. Changes in strace
Red Hat Developer Toolset 8 is distributed with strace 4.24, which provides a number of enhancements over the version included in the previous release of Red Hat Developer Toolset.
Changes Since Red Hat Developer Toolset 7.1
The following features have been added since the release of strace included in Red Hat Developer Toolset 7.1:
- Several improvements to tracing of programs with a different personality (architecture) have been added.
-
Optional symbol demangling with the libiberty or libdw libraries has been added. To use this feature, add the
-k
option. To determine if this functionality is available, see output of thestrace -V
command. -
Handling of multiple
signal=
specifications in an injection expression has changed and multiple specification now results in error. -
A new
-e trace=%pure
option for tracing system calls with no arguments that never fail has been added. -
Data are now always displayed for
write
system calls, regardless of success of these calls. -
Delay injection has been added with the
-e inject=SET:delay_enter=
and-e inject=SET:delay_exit=
options. -
Injection of system calls with no side effects has been added as an alternative to injection of an invalid system calls. To do so, use the new
-e inject=SET:system call=
option. -
The range of values allowed in the
-e inject=…:retval=
option expression has been extended.
Decoding improvements and updates
Decoding of the following items has been added, improved or updated:
-
netlink
protocols, messages and attributes -
arch_prctl
,bpf
,getsockopt
,io_pgetevent
,kern_features
,keyctl
,prctl
,ptrace
,rseq
,setsockopt
,socket
,statx
and other system calls - Constants of various types
-
Path tracing for
execveat
,inotify_add_watch
,inotify_init
,select
,symlink
,symlinkat
system calls andmmap
system calls with indirect arguments -
System calls specific to the ARM architectures
__ARM_NR_*
- Lists of signal codes
Additionally, commands for the ioctl
system call have been updated to match Linux kernel version 4.17.
A.7. Changes in SystemTap
Red Hat Developer Toolset 8 is distributed with SystemTap 3.3, which provides a number of enhancements over the version included in the previous release of Red Hat Developer Toolset.
Changes Since Red Hat Developer Toolset 7.1
The following features have been added since the release of SystemTap included in Red Hat Developer Toolset 7.1:
-
The
--sysroot
option has been optimized for cross-compiled environments. -
A new
--example
option allows you to search the example scripts distributed with SystemTap without providing the whole path of the file. - Usage of SystemTap on systems with real time kernel or machines with a high number of CPUs has been improved.
- Handling of code used for Spectre and Meltdown attack mitigation has been improved.
A.8. Changes in Valgrind
Red Hat Developer Toolset 8 is distributed with Valgrind 3.14.0 (pre-release), which provides a number of enhancements over the version included in the previous release of Red Hat Developer Toolset.
Changes Since Red Hat Developer Toolset 7.1
The following features have been added since the release of Valgrind included in Red Hat Developer Toolset 7.1:
-
A new
--keep-debuginfo
option has been added to enable retention of debug info for unloaded code. As a result, saved stack traces can include file and line information for code that is no longer present in memory. - Suppressions based on source file name and line number have been added.
-
The Helgrind tool has been extended with an option
--delta-stacktrace
to specify computation of full history stack traces. Notably, using this option together with--history-level=full
can improve Helgrind performance by up to 25%. -
False positive rate in the Memcheck tool for optimised code on the Intel and AMD 64-bit arcitectures and the ARM 64-bit architecture has been reduced. Note that you can use the
--expensive-definedness-checks
to control handling of definedness checks and improve the rate at the expense of performance. - Previously, the valgrind-devel package contained additional static libraries for building Valgrind tools. Because these tools are not supported, the package now only contains the header files needed for creating Valgrind-aware programs and libraries.
For more information about the new options and their known limitations, see the Valgrind(1)
manual page.