Appendix A. Changes in Version 9.0
The sections below document features and compatibility changes introduced in Red Hat Developer Toolset 9.0.
A.1. Changes in GCC
Red Hat Developer Toolset 9.0 is distributed with GCC 9.3.1.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
General Improvements
- All command-line options that accept byte-size arguments now accept 64-bit integers and standard SI and IEC suffixes.
-
A new option is added:
-flive-patching=[inline-only-static|inline-clone]
. It provides safe compilation for live patching. GCC diagnostics are improved:
-
The left margin now shows line numbers. To configure this feature, use the
-fno-diagnostics-show-line-numbers
option. -
Regions of the source code can now be labeled to show relevant information, for example types within an expression. To disable labels, use the
-fno-diagnostics-show-labels
option.
-
The left margin now shows line numbers. To configure this feature, use the
-
The alignment-related options
-falign-functions
,-falign-labels
,-falign-loops
, and-falign-jumps
are now supported for a secondary alignment, for example-falign-loops=n:m:n2:m2
. -
A new pair of profiling options is added:
-fprofile-filter-files
and-fprofile-exclude-files
. These options help to filter which source files are instrumented. The following built-in functions are added:
-
The
__builtin_expect_with_probability
function provides the branch prediction probability hints to the optimizer. -
The
__builtin_has_attribute
function determines whether a function, type, or variable is declared with an attribute. -
The
__builtin_speculation_safe_value
function helps mitigate against unsafe speculative execution.
-
The
-
The new
copy
function attribute is added. Use it with functions, variables, or types. Numerous code generation improvements are added including inter-procedural, profile-driven, and link-time optimization improvements, for example:
- Switch expansion is improved by using a different strategy for a subset of switch cases. Strategies include a jump table, a bit test, and a decision tree.
- The GCOV command-line utility is improved. For example, the intermediate format of the GCOV tool is now a new JSON format.
Language Features
Notable changes related to languages include:
C family
- C and C++ compilers now partially support version 5.0 of the OpenMP specification.
-
A new extension
__builtin_convervector
is added for vector conversions. -
A new warning
-Waddress-of-packed-member
is added. It is enabled by default and warns about an unaligned pointer value from the address of a packed member of a struct or union. - Some existing warnings are enhanced.
C
-
Experimental support for
-std=c2x
is added. -
A new warning
-Wabsolute-value
is added. It warns for calls to standard functions that compute the absolute value of an argument when a more appropriate standard function is available.
C++
New warnings are added:
-
The
-Wredundant-move
option is implied by-Wextra
and warns about redundant calls tostd::move
. -
The
-Wpessimizing-move
option is implied by-Wall
and warns when a call tostd::move
prevents copy elision. -
The
-Winit-list-lifetime
option is on by default. It warns when usingstd::initializer_list
may result in a dangling pointer.
-
The
-
The C++ front end now has experimental support for some C++2a draft features with the
-std=c++2a
or-std=gnu++2a
flags. - Error-reporting diagnostics are improved.
Architecture and Processor Support
Changes to architecture and processor support include:
The 64-bit ARM architecture
The following processors are now supported (the GCC identifiers are provided in parentheses):
- ARM Cortex-A76 (cortex-a76)
- ARM Cortex-A55/Cortex-A76 DynamIQ big.LITTLE (cortex-a76.cortex-a55)
- ARM Neoverse N1 (neoverse-n1)
- ARM Neoverse E1 processor (-mcpu=neoverse-e1)
AMD64 and Intel 64
- Intel MPX (Memory Protection Extensions) are no longer supported.
- New ISA extension support for Intel PTWRITE is added.
- Intel CPU named Cascade Lake with AVX512 extensions are now supported.
IBM Z
- The ARCH(13) architecture is now supported.
-
Built-in features for the new vector instructions are added. Use the
-mzvector
option to enable them. - Support for ESA architecture machines G5 and G6 is deprecated.
A.2. Changes in GDB
Red Hat Developer Toolset 9.0 is distributed with GDB 8.3.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
General Improvements
-
GDB and GDBserver now allow accessing additional registers on the IBM POWER systems (
PPR
,DSCR
,TAR
,EBB/PMU
, andHTM
registers). -
GDB and GDBserver now support the IPv6 connections. Pass the IPv6 addresses using the
[ADDRESS]:PORT
notation or the regularADDRESS:PORT
method. - GDB in batch mode now exits with status 1 if the last command to be executed fails.
- Terminal styling is now available for the CLI and the TUI. For a list of styling commands, see Output Styling section of the GDB User Manual. The GNU Source Highlight program can also be used for source code styling.
New Commands
frame apply [all | COUNT | -COUNT | level LEVEL…] [FLAG]… COMMAND
- Apply to some frames only.
-
Use the
FLAG
arguments to choose the required output and to set a method to handle errors that you may get when applyingCOMMAND
to a frame.
The
taas COMMAND
syntax is a shorter version ofthread apply all -s COMMAND
.- Apply to all the threads including threads with errors and empty output.
The
faas COMMAND
syntax is a shorter version offrame apply all -s COMMAND
.- Apply to all the frames including frames with errors and empty output.
The
tfaas COMMAND
syntax is a shorter version ofthread apply all -s frame apply all -s COMMAND.
- Apply to all the frames of all the threads including frames and threads with errors and empty output.
Changed Commands
Changes to the
frame
,select-frame
, andinfo frame
CLI commands:- These commands now accept the frame specification. It can be a frame level or one of the keywords level, address, function, or view followed by a parameter.
- A keyword is required to select a frame by address or to view a frame outside of the current backtrace.
- Selecting a frame by level is unchanged.
-
The MI comment
-stack-select-frame
is unchanged.
target remote FILENAME
andtarget extended-remote FILENAME
-
If
FILENAME
is a Unix domain socket, GDB attempts to connect to this socket and will not openFILENAME
as a character device.
-
If
info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]
info functions [-q] [-t TYPEREGEXP] [NAMEREGEXP]
info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]
info variables [-q] [-t TYPEREGEXP] [NAMEREGEXP]
The preceding four commands now have a new
[-t TYPEREGEXP]
flag. It returns matching entities to types matchingTYPEREGEXP
. The[-q]
flag disables printing headers or information messages.info functions
info types
info variables
rbreak
The preceding four commands now determine entities' syntax based on the language chosen in the
set language
option. Theset language auto
option automatically chooses the language of the shown entities.thread apply [all | COUNT | -COUNT] [FLAG]… COMMAND
-
New
[FLAG]
arguments are added. Use the[FLAG]
arguments to choose the required output and to set a method to handle errors that you can get when applyingCOMMAND
to a frame.
-
New
Python API
-
A new
progspace
property is added for thegdb.Inferior
type. It is the program space associated with that inferior. -
A new
objfiles
method is added to thegdb.Progspace
type. It returns the list ofobjfiles
associated with that program space. -
A new constructor is added to the
gdb.Value
type. It is used to construct agdb.Value
from a Python buffer object and agdb.Type
. -
The following new domains are added to reflect changes to the GDB core:
gdb.SYMBOL_LOC_COMMON_BLOCK
,gdb.SYMBOL_MODULE_DOMAIN
, andgdb.SYMBOL_COMMON_BLOCK_DOMAIN
.
A.3. Changes in binutils
Red Hat Developer Toolset 9.0 is distributed with binutils 2.32.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
The Assembler
-
A new command-line option is added:
--generate-missing-build-notes=yes
. It creates GNU Build Attribute notes if the input sources do not contain such notes. Specific to the AMD64 and Intel 64 architecture:
-
The assembler now has a
-mvexwig=[0|1]
option to control encoding of VEX.W-ignored (WIG) VEX instructions. -
A new
-mx86-used-note=[yes|no]
option allows to choose if GNU property notes are generated. These notes are based on the input assembler. -
The new
-O[2|s]
command line options enable alternate, shorter instruction encoding.
-
The assembler now has a
The BFD Linker
The default behavior of the linker is now to create separate code and data segments. This makes binaries bigger, but safer, because the loader can turn off write permission to the code segment.
-
Use a command-line option
-z noseparate-code
to disable this behavior. The linker will create one segment as before.
-
Use a command-line option
-
A linker map file, created with the
-Map
command-line option, now includes details of property changes that happen when merging GNU property notes. The
--trace
option does not report members within an archive anymore. This makes the option more useful when generating a list of files that should be packaged for a linker bug report.- To report members within an archive give the option twice.
The GOLD Linker
- Warning messages for relocations that refer to discarded sections are improved.
-
The new
--debug=plugin
option allows for easier debugging of plug-in-related problems. -
The new
-z keep_text_section_prefix
option provides compatibility with the BFD linker. - Support for the 64-bit ARM architecture is improved.
-
The
.note.gnu.property
sections from Linux ABI extensions are now supported. - Intel Indirect Branch Tracking (IBT) and Shadow Stack (AMD64 and Intel 64 only) are now supported.
Other Binary Utilities
-
The
addr2line
,c++filt
,nm
, andobjdump
tools now have a limit on the maximum amount of recursion that is allowed while demangling strings. The value for this limit is defined by the DEMANGLE_RECURSE_LIMIT constant. This constant has the value of 2048 in binutils shipped as part of Red Hat Developer Toolset 9.0. -
The
--no-recurse-limit
option can be used to remove the limit mentioned above. It restores the behavior of earlier versions of these tools. This option allows demangling of very complicated names, but it also leaves the tools vulnerable to stack exhaustion from maliciously constructed mangled names. -
The
ar
archive manager now supports anO
modifier to display member offsets inside an archive. -
Objdump
: the--disassemble
option now takes 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 disassembler for the 64-bit ARM processors can now show notes that are created when a system finds inconsistencies with instructions that may result in invalid instructions. These notes can be turned on with the
-M notes
option toobjdump
. The disassembler also creates warnings when a combination of an instruction and a named register is invalid.
A.4. Changes in strace
Red Hat Developer Toolset 9.0 is distributed with strace 5.1.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
License
- The test suite is now provided under the terms of the GNU General Public License version 2 or later.
- The rest of strace is now provided under the terms of the GNU Lesser General Public License version 2.1 or later.
Changes in Behavior
-
If strace is interrupted by a signal that it handles (currently one of
SIGHUP
,SIGINT
,SIGQUIT
,SIGPIPE
, orSIGTERM
), strace terminates itself with this signal. -
The
-D
option now implies-I4
: by default strace ignoresSIGHUP
,SIGINT
,SIGQUIT
,SIGPIPE
,SIGTERM
,SIGTTIN
,SIGTTOU
, andSIGTSTP
when the-D
option is used. - A diagnostic message is no longer printed if an attempt to restart a process has failed with ESRCH. This feature addresses BZ#1662936.
- The ASCII dump no longer tries to read the whole buffer at once. As a result, it can fail with a diagnostic message after dumping only a part. The amount of preceding zeros printed for offset is now chosen in a way to accommodate all the digits of all the offsets being printed.
Improvements
- Stack trace printing on receiving signals is implemented.
-
Named constant printing styles support configured by
-X
option is enhanced. -
Decoding of the following system calls has been added:
clock_gettime64
,clock_settime64
,clock_adjtime64
,clock_getres_time64
,clock_nanosleep_time64
,timer_gettime64
,timer_settime64
,timerfd_gettime64
,timerfd_settime64
,utimensat_time64
,pselect6_time64
,ppoll_time64
,io_pgetevents_time64
,recvmmsg_time64
,mq_timedsend_time64
,mq_timedreceive_time64
,semtimedop_time64
,rt_sigtimedwait_time64
,futex_time64
,sched_rr_get_interval_time64
,pidfd_send_signal
,io_uring_setup
,io_uring_enter
, andio_uring_register
. -
Decoding of the
bpf
system call is enhanced. -
Decoding of the following ioctl commands is implemented:
BLKGETZONESZ
,BLKGETNRZONES
,KVM_CHECK_EXTENSION
,NBD_*
, andRND*
. -
Decoding of the
AF_PACKET
protocols in thes
socket system call is implemented. -
Decoding of the
SOL_XDP
socket option names is implemented. -
Decoding of the
getsockopt
SO_ERROR
andSO_TIMESTAMP*_NEW
options is enhanced. -
Decoding of the
IFLA_*
,NETCONFA_*
, andSMC_DIAG_*
netlink
attributes is enhanced. -
Decoding of the
pkey_mprotect
,pkey_alloc
, andpkey_free
system calls is now available on IBM Z architecture. - Decoding of the direct IPC system calls is now available on IBM POWER and IBM Z architecture.
-
Decoding of the
kexec_file_load
andrseq
system calls is now available on the 64-bit ARM architecture.
A.5. Changes in SystemTap
Red Hat Developer Toolset 9.0 is distributed with SystemTap 4.1.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
- The eBPF runtime backend can handle more features of the scripting language such as string variables and rich formatted printing.
- Performance of the translator is significantly improved.
- The DWARF4 debuginfo constructs can now extract more types of data in optimized C code.
A.6. Changes in Valgrind
Red Hat Developer Toolset 9.0 is distributed with Valgrind 3.15.0.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
- AMD64: the RDRAND and F16C instruction set extensions are now supported.
-
Cachegrind: the
cg_annotate
tool has a new option--show-percs
. It prints percentages next to all event counts. -
Callgrind:
callgrind_annotate
has a new option--show-percs
. It prints percentages next to all event counts. -
Massif: the default value for
--read-inline-info
is now yes. -
Memcheck: the
--xtree-leak=yes
option now activates the--show-leak-kinds=all
option. A new option is added:
--show-error-list=no|yes
.- It lists detected errors and used suppressions after the run is ended.
-
In the previous version of Valgrind this information was only shown in
-v verbose
mode. -
The short option
-s
is equivalent to--show-error-list=yes
.
The DHAT tool is non-experimental now. It is improved and has received a GUI. Changes and new features include:
-
To use DHAT, run a new command
--tool=dhat
. The old command--tool=exp-dhat
is not supported. -
The
--show-top-n
and--sort-by
options are removed. When the program ends, DHAT prints only minimal data and writes all profiling data to a file. A new viewer is added:
dh_view.html
.- It is a JavaScript program that should be run in a browser.
-
It is shipped as
/usr/libexec/valgrind/dh_view.html
. - To see profile results with the viewer, follow the instructions from a message that is printed after a run finishes.
-
DHAT manual is shipped as
/usr/share/doc/valgrind/html/dh-manual.html
.
A.7. Changes in OProfile
Red Hat Developer Toolset 9.0 is distributed with OProfile 1.3.0.
The following features have been modified since the previous release of Red Hat Developer Toolset:
- OProfile now correctly maps samples from binaries generated by the GCC compiler back to the source code. It applies to the GCC compiler shipped as part of Red Hat Developer Toolset 9.0.
- OProfile ocount now correctly terminates any child processes created as a result of errors in performance monitoring hardware setup. OProfile ocount no longer creates orphan processes when an error occurs during performance monitoring hardware setup.
A.8. Changes in Dyninst
Red Hat Developer Toolset 9.0 is distributed with Dyninst 10.1.0.
The following feature has been improved since the previous release of Red Hat Developer Toolset:
- Start-up time has been improved by using parallel code analysis.
Dyninst 10.1.0 is only available for AMD64 and Intel 64 and does not run on IBM POWER and the 64-bit ARM architecture.