Appendix A. Changes in Version 10.0
The sections below document features and compatibility changes introduced Red Hat Developer Toolset 10.0.
A.1. Changes in GCC
Red Hat Developer Toolset 10.0 is distributed with GCC 10.2.1.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
General improvements
New built-in functions:
-
The
__has_builtin
built-in preprocessor operator can now be used to query support for built-in GCC functions. -
The
__builtin_roundeven
function has been added for the corresponding function from ISO/IEC TS 18661.
-
The
New command-line options:
-
-fallocation-dce
removes unnecessary pairs of thenew
anddelete
operators. -
-fprofile-partial-training
informs the compiler that it should optimize only the size of code paths that are covered by the training run. -
-fprofile-reproducible
controls the level of reproducibility of profiles gathered by-fprofile-generate
. Using this option you can rebuild a program with the same outcome. It is useful for distribution packages, for example. -
Experimental: the new
-fanalyzer
option enables a new static analysis pass and associated warnings. This pass examines paths in the code to detect various common errors, for example, double-free bugs. Note that this option is available only for code written in C.
-
Interprocedural optimization improvements:
- The interprocedural scalar replacement of aggregates (IPA-SRA) pass was re-implemented to work at link time. It can now also remove computing and returning unused return values.
-
The
-finline-functions
option is now enabled at the optimization level-O2
. This option now reduces code size better. Inliner heuristics now work faster to avoid negative impact on-flto
-O2
compile times. - Inliner heuristics and function cloning can now use value-range information to predict the effectiveness of individual transformations.
- During link-time optimization the C++ One Definition Rule is now used to increase precision of type-based alias analysis.
Link-time optimization improvements:
-
The parallel phase of the Link Time Optimization (LTO) can now automatically detect a running
jobserver
of themake
tool.
-
The parallel phase of the Link Time Optimization (LTO) can now automatically detect a running
Profile-driven optimization improvements:
- Profile maintenance during compilation and hot or cold code partitioning have been improved.
-
When GCC prints a warning, the option that controls the warning is now displayed as a hyperlink which you can click and see the documentation for the particular warning. To control this behavior, use the
-fdiagnostics-urls
option.
Language-specific improvements
-
Several newly implemented OpenMP 5.0 features have been added. For example, the
conditional lastprivate
clause,scan
andloop
directives,order(concurrent)
anduse_device_addr
clauses support,if
clauses onsimd
constructs or partial support for thedeclare variant
directive.
Notable changes related to languages include:
C family
New attributes:
-
The
access
function and type attribute has been added. It describes how a function accesses objects passed to it by a pointer or reference and associates such arguments with integer arguments that denote the objects' sizes. You can also use this attribute to enable the detection of invalid accesses by user-defined functions, such as those diagnosed by the-Wstringop-overflow
option.
-
The
New warnings:
-
-Wstring-compare
, enabled by the-Wextra
option, warns about equality and inequality expressions between zero and the result of a call tostrcmp
orstrncmp
when such expressions evaluate to a constant because the length of one argument is greater than the size of the array pointed to by the other argument. -
-Wzero-length-bounds
, enabled by the-Warray-bounds
option, warns about accesses to elements of zero-length arrays that might overlap with other members of the same object.
-
Enhancements to existing warnings:
-
-Warray-bounds
now detects more out-of-bounds accesses to member arrays and elements of zero-length arrays. -
-Wformat-overflow
now fully uses string length information calculated by thestrlen
optimization pass. -
-Wrestrict
detects overlapping accesses to dynamically allocated objects. -
-Wreturn-local-addr
diagnoses more instances of return statements returning addresses of automatic variables. -
-Wstringop-overflow
detects more out-of-bounds stores to member arrays including zero-length arrays, dynamically allocated objects, and variable length arrays. It now also detects more instances of reads of unterminated character arrays by the built-in string functions. In addition, the warning now detects out-of-bounds accesses by calls to user-defined functions declared with the new attribute access. -
-Warith-conversion
re-enables warnings from-Wconversion
,-Wfloat-conversion
, and-Wsign-conversion
. These warnings are now disabled by default for expressions where the result of an arithmetic operation will not fit into the target type because of promotion, but where the operands of the expressions fit into the target type.
-
C
Several new features from the upcoming C2X revision of the ISO C standard are now supported. To enable them, use
-std=c2x
and-std=gnu2x
. Some of these features are also supported as extensions when you compile with earlier C versions. Some features were previously supported as extensions and now have been added to the C standard. They are enabled by default in C2X mode and not diagnosed with-std=c2x
-Wpedantic
.-
The
[[]]
attribute syntax is now supported. - In C2X mode, empty parentheses in a function definition give that function a type with a prototype for subsequent calls. Other old-style function definitions are diagnosed by default in C2X mode.
-
The
-
GCC now defaults to
-fno-common
. As a result, global variable accesses are more efficient on various targets. However, in the C language, global variables with multiple tentative definitions now cause linker errors. With the-fcommon
option such definitions are silently merged during linking.
C++
The following C++20 features have been implemented:
- Concepts, including the P0734R0, P0857R0, P1084R2, P1141R2, P0848R3, P1616R1, and P1452R2 proposals
-
P1668R1: Permitting unevaluated inline-assembly in
constexpr
functions -
P1161R3: Deprecate
a[b,c]
- P0848R3: Conditionally trivial special member functions
- P1091R3: Structured binding extensions
-
P1143R2: Adding the
constinit
keyword -
P1152R4: Deprecating
volatile
- P0388R4: Permit conversions to arrays of unknown bound
-
P0784R7: More
constexpr
containers (constexpr new
) -
P1301R4:
[[nodiscard("with reason")]]
- P1814R0: Class template argument deduction for alias templates
- P1816R0: Class template argument deduction for aggregates
- P0960R3: Parenthesized initialization of aggregates
-
P1331R2: Permitting trivial default initialization in
constexpr
contexts -
P1327R1: Allowing
dynamic_cast
and polymorphictypeid
in constant expressions P0912R5: Coroutines. The
-fcoroutines
option enables the support for coroutinesTo learn more about the above-mentioned proposals, see C++ Standards Support in GCC.
- Several C++ defect reports have been resolved. You can find the overall defect report status on the C++ Defect Report Support in GCC page.
New warnings:
-
G++ can now detect modifying constant objects in the
constexpr
evaluation, which is undefined behavior. -
Memory consumption of the compiler, when performing the
constexpr
evaluation, has been reduced. -
The
noexcept
specifier is now properly treated as a complete-class context. -
You can now use the
deprecated
attribute on namespaces.
-
G++ can now detect modifying constant objects in the
Runtime library libstdc++
The following experimental C++2a support features have been improved:
-
Library concepts in
<concepts>
and<iterator>
-
Constrained algorithms in
<ranges>
,<algorithm>
, and<memory>
-
New algorithms
shift_left
andshift_right
-
The
std::span
class template -
Three-way comparisons in
<compare>
and throughout the library -
Constexpr
support in<algorithm>
and other places -
<stop_token>
andstd::jthread
-
std::atomic_ref
andstd::atomic<floating point>
-
Integer comparison functions (for example,
cmp_equal
,cmp_less
, and other functions) -
std::ssize
andstd::to_array
-
std::construct_at
,std::destroy
, andconstexpr
std::allocator
-
Mathematical constants in
<numbers>
-
Library concepts in
-
The random number generator
std::random_device
now supports RDSEED.
Fortran
-
The compiler now rejects mismatches between actual and dummy argument lists in a single file and prints an error. To turn these errors into warnings, use the new
-fallow-argument-mismatch
option. This option is implied withstd=legacy
. The-Wargument-mismatch
option has been removed. -
The binary, octal, and hexadecimal (BOZ) literal constants have been improved and now conform better to the Fortran 2008 and 2018 standards. In these Fortran standards, BOZ literal constants do not have types or kinds. With this enhancement, documented and undocumented extensions to the Fortran standards now emit errors during compilation. You can enable some of these extensions with the
-fallow-invalid-boz
option, which turns errors into warnings and the code is compiled as with the earlier GFortran.
Target-specific improvements
Changes to architecture and processor support include:
AMD64 and Intel 64
-
GCC now supports the Cooper Lake Intel CPU. To enable it, use the
-march=cooperlake
option, which enables the AVX512BF16 ISA extensions. -
GCC now supports the Tiger Lake Intel CPU. To enable it, use the
-march=tigerlake
option, which enables the MOVDIRI MOVDIR64B AVX512VP2INTERSECT ISA extensions.
A.2. Changes in binutils
Red Hat Developer Toolset 10.0 is distributed with binutils 2.35.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
The assembler
-
The
.symver
directive has been extended to update the visibility of the original symbol and assign one original symbol to different versioned symbols. - The Intel SERIALIZE and TSXLDTRK instructions are now supported.
-
The
-mlfence-after-load=
,-mlfence-before-indirect-branch=
, and-mlfence-before-ret=
options have been added to the x86 assembler to help mitigate CVE-2020-0551. -
The
--gdwarf-5
option has been added to the assembler to generate DWARF 5 debug output if such output is generated. Also, it is now possible to generate version 5.debug_line
sections. -
The
-malign-branch-boundary=NUM
,-malign-branch=TYPE[+TYPE…]
,-malign-branch-prefix-size=NUM
, and-mbranches-within-32B-boundaries
options have been added to the x86 assembler to align branches within a fixed boundary with segment prefixes or the NOP instructions. -
The
--gdwarf-cie-version
command-line flag has been added. This flag controls which version of DWARF CIE (Common Information Entries) the assembler creates.
The linker
-
The command-line options
--export-dynamic-symbol
and--export-dynamic-symbol-list
have been added to make symbols dynamic. -
The
-Map=filename
command-line option has been extended. Iffilename
is a directory, the linker will create thefilename/output-filename.map
file. -
The
--warn-textrel
command-line option has been added to warn aboutDT_TEXTREL
being set in a position-independent executable or shared object. -
The command-line options
--enable-non-contiguous-regions
and--enable-non-contiguous-regions-warnings
have been added. -
Relative path names in
INPUT()
andGROUP()
directives in linker scripts are now searched in relation to the directory of the linker script before other search paths. -
The
-z start-stop-visibility=…
command-line option has been added to control the visibility of synthetic__start_SECNAME
and__stop_SECNAME
symbols. -
The
--dependency-file
command-line option has been added to write a Make-style dependency file listing the input files consulted by the linker, like the files written by the compiler-M
and-MP
options. -
The
ld
check for thePHDR segment not covered by LOAD segment
error is more effective now. The check now catches cases that earlier versions ofld
incorrectly allowed. If you see this error, it is likely you are linking with a bad linker script or the binary you are building is not intended to be loaded by a dynamic loader. In the latter case, the--no-dynamic-linker
option is appropriate. -
The
--no-print-map-discarded
command-line option has been added.
Other binary utilities
-
The readelf tool now displays symbol names differently when wide mode is not enabled. If the name is too long, it will be shortened and the last five characters replaced with "[…]". You can restore the old behaviour with the
-T
or--silent-truncation
option. -
The readelf tool now has the
-L
or--lint
or--enable-checks
option, which enables warning messages about possible problems with the file(s) being examined. For example, with this option enabled, readelf will check for zero-sized sections, which are allowed by the ELF standard but might be potentially dangerous if the user was expecting them to actually contain something. -
Binutils now supports
debuginfod
, an HTTP server for distributing ELF/DWARF debugging information as well as source code. When built withdebuginfod
, readelf and objdump can automatically querydebuginfod
servers for separate debugging files when such files otherwise cannot be found. To build binutils withdebuginfod
, pass the--with-debuginfod
configure option. This requireslibdebuginfod
, thedebuginfod
client library.debuginfod
is distributed with elfutils, starting with version 0.178. For more information, see https://sourceware.org/elfutils. -
The
--output
option has been added to the ar program. This option can be used to specify the output directory when extracting members from an archive. -
The
--keep-section
option has been added to objcopy and strip. This option keeps the specified section from being removed. -
The
--source-comment[=<txt>]
option has been added to objdump. It provides a prefix to source code lines displayed in a disassembly. -
The
--set-section-alignment <section-name>=<align>
option has been added to objcopy to allow the changing of section alignments. -
The
--verilog-data-width
option has been added to objcopy for Verilog targets to control the width of data elements in the Verilog hexadecimal format. The separate debug information file options of readelf (
--debug-dump=links
and--debug-dump=follow
) and objdump (--dwarf=links
and--dwarf=follow-links
) will now display or follow (or both) multiple links if a file has more than one such link. This usually happens when the GCC-gsplit-dwarf
option is used.In addition, the
--dwarf=follow-links
option for objdump now also affects its other display options. For example, when combined with the--syms
option, it will cause the symbol tables in any linked debug information files to also be displayed. When combined with the--disassemble
option, the--dwarf= follow-links
option will ensure that any symbol tables in the linked files are read and used when disassembling code in the main file.- Dumping types encoded in the Compact Type Format are now supported in objdump and readelf.
A.3. Changes in elfutils
Red Hat Developer Toolset 10.0 is distributed with elfutils 0.180.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
-
The new
eu-elfclassify
tool has been added to analyze ELF objects. -
The new
debuginfod
server with a client tool and library has been added.debuginfod
indexes and automatically fetches ELF, DWARF, and source from files and RPM archives through HTTP. -
libebl
is now directly compiled intolibdw.so
. -
eu-readelf
now has multiple new flags for notes, section numbering, and symbol tables. -
libdw
has improved multithreading support. -
libdw
now supports additional GNU DWARF extensions. -
Better support for debug info for code built with GCC LTO (link time optimization). The
eu-readelf
andlibdw
utilities can now read and handle.gnu.debuglto_
sections, and correctly resolve file names for functions that are defined across compile units (CUs). -
The
eu-nm
utility now explicitly identifies weak objects asV
and common symbols asC
.
A.4. Changes in GDB
Red Hat Developer Toolset 10.0 is distributed with GDB 9.2.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
New features
-
The
debuginfod
server is now supported. This is an HTTP server for distributing ELF and DWARF debugging information and source code.
New convenience variables and functions
$_gdb_major
$_gdb_minor
With these new convenience variables for testing the running version of GDB, you can run newer commands and syntaxes without breaking legacy scripts.
$_gdb_setting
$_gdb_setting_str
$_gdb_maint_setting
$_gdb_maint_setting_str
With these new convenience functions for accessing GDB settings, you can change the logic of user-defined commands depending on current GDB settings.
$_cimag
$_creal
With these new convenience functions, you can get the imaginary and real parts of an imaginary number.
$_shell_exitcode
$_shell_exitsignal
With these new convenience variables, you can access the exit code or exit status of shell commands executed by the GDB
shell
,pipe
, andmake
commands.
New and improved commands
-
New command options infrastructure has been provided to better support completion, for example,
CMD -[TAB]
will now show a completion of available command options for CMD. -
Command names can now use the
.
character.
New commands
define-prefix
With this command, you can define your own prefix commands, for example,
abc def
andabc def ghi
can now be entirely separate commands.| [command] | shell_command
(another name of this command ispipe
)This command executes a given GDB command, sending its output to the given shell_command.
with setting [value] [-- command]
This command temporarily sets the given setting to value (if specified) and runs the optional command, resetting setting when complete.
Changed commands
help
apropos
The commands now use new title styling.
printf
eval
The commands can now print C-style and Ada-style string convenience variables without the need for a running process, for example, when debugging core dumps.
info sources [-dirname | -basename] [--] [regexp]
New filtering options have been added. Using them, users can limit results to file, directory, or base names matching a given regular expressions.
focus
winheight
+
,-
,>
, and<
These TUI commands are now case-sensitive.
backtrace
The command now supports new options which can override global display preferences (
set backtrace
andset print
settings). New options include:-entry-values
,frame-arguments
,-raw-frame-arguments
,-frame-info
,-past-main
,-past-entry
,-full
,-no-filters
, and-hide
.frame apply
tfaas
faas
The commands now support the new
-past-main
and-past-entry
command options.info types
The command now support the new
-q
option to disable printing of some header information similar toinfo variables
andinfo functions
.info variables
info functions
whereis
The commands now support the new
-n
option to exclude non-debugging symbols from the output.
Settings
set may-call-functions
show may-call-functions
The default value is
on
. These new commands control whether GDB will attempt to call functions in the program during command execution, for example, theprint expression
command.set print finish
show print finish
If these commands are set to
on
, GDB will print the value returned by the current function when thefinish
command is used.set print max-depth
show print max-depth
These new commands limit the display of deeply nested structures to the set number of levels. The default limit of nesting levels is 20.
set print raw-values
show print raw-values
These new commands globally override the use of pretty-printers when printing a value. The default value is
off
.set style title foreground
set style title background
set style title intensity
set style highlight foreground
set style highlight background
set style highlight intensity
With these new commands, you can customize the display styling of the title and highlight styles.
maint set worker-threads
maint show worker-threads
Experimental: if these commands are set to
unlimited
, GDB will use multi-threaded symbol loading for better performance.set style tui-border foreground
set style tui-border background
set style tui-border intensity
set style tui-active-border foreground
set style tui-active-border background
set style tui-active-border intensity
These new commands set the display styling of various TUI borders.
set print frame-info
show print frame-info
These new commands control what frame information is printed by commands that print a frame, for example,
backtrace
,frame
, andstepi
.set tui compact-source
show tui compact-source
These new commands enable a new
compact
display style for the TUI source window.set debug remote-packet-max-chars
show debug remote-packet-max-chars
These new commands control the number of characters to output in a remote packet when using
set debug remote
. The default value is 512 bytes.show style
This new command now styles the output of all subcommands using their own styling.
set print frame-arguments
A new value
presence
has been added. It will display only the presence of arguments with…
instead of printing the actual argument names and values.set print-raw-frame-arguments
show print-raw-frame-arguments
These two commands replace deprecated
set/show print raw frame-arguments
commands.
Language-specific improvements
Fortran
-
GDB can now set breakpoints on a nested function or subroutine using the
::
operator. info modules [-q] [regexp]
This new command returns a list of modules that match regexp. If regexp is not provided, the command returns a list of all modules.
info module functions [-q] [-m module_regexp] [-t type_regexp] [regexp]
info module variables [-q] [-m module_regexp] [-t type_regexp] [regexp]
These new commands return a list of functions or variables within all modules, grouped by module. Results may be limited by module regular expressions, function or variable type signature regular expressions, or name regular expressions.
Python API
gdb.Value.format_string
This new method returns a string representation of the Value object.
gdb.Type
objfile
This new property returns the
objfile
in which the type was defined.gdb.lookup_static_symbol
gdb.lookup_static_symbols
These new functions support the lookup of symbols with static linkage. The first function returns the first matching symbol. The second one returns all matching symbols.
gdb.Objfile.lookup_global_symbol
gdb.Objfile.lookup_static_symbol
These new functions support lookup of symbols in an
Objfile
: global symbols and symbols with static linkage respectively.gdb.Block
This function now supports Python dictionary syntax, for example:
symbol = some_block[variable]
, where symbol is of typegdb.Symbol
.
Machine Interface (MI) improvements
A new default MI version 3 has been introduced (
-i=mi3
).- The output of multi-location breakpoint locations has been corrected.
-
The new
-fix-multi-location-breakpoint-output
command has been added to correct syntax errors in older MI versions.
All new commands are MI implementations of CLI equivalents:
-
-complete LINE
-
-catch-throw
-
-catch-rethrow
-
-catch-catch
-
-symbol-info-functions
-
-symbol-info-types
-
-symbol-info-variables
-
-symbol-info-modules
-
-symbol-info-module-functions
-
-symbol-info-module-variables
-
A.5. Changes in strace
Red Hat Developer Toolset 10.0 is distributed with strace 5.7.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
Changes in behavior
The
%process
class now contains system calls associated with the process life cycle (creation, execution, termination):-
kill
,tkill
,tgkill
,pidfd_send_signal
, andrt_sigqueueinfo
have been added. -
arch_prctl
andunshare
have been removed.
-
-
Messages about unknown tracees are now subject to the strace quietness setting
-q
(--quiet
). -
A new warning has been added. It occurs when the
-A
(--output-append-mode
) option is used without-o
(--output
) or the-S
(--summary-sort-by
) option without-c
/-C
(--summary-only
/--summary
).
Improvements
Every short option now has a long option alias. This change brings the following improvements:
-
The ability to use human-readable settings for the
-I
(--interruptible
) option. -
The ability to silence specific messages using the
-e quiet
(--quiet
) qualifier (which is an alias for the-q
option), including messages that could not be silenced previously, for example path resolution messages and messages about process being superseded byexecve
. -
The ability to specify selected flexible data (FD) decoding features using the
-e decode-fds
(--decode-fds
) qualifier, which is an alias for the-y
option. -
The ability to set precision for the absolute timestamp, relative timestamp, and system call time output. Use the
--absolute-timestamps
,--relative-timestamps
, and--syscall-times
options, respectively.
-
The ability to use human-readable settings for the
System call return status filtering has been implemented with the
-e status=set
option and its aliases:-
The
-z
(--successful-only
) option limits system call printing to successful system calls only. -
The
-Z
(--failed-only
) option limits system call printing to failed system calls only.
-
The
-
The
--pidns-translation
option for PID (process ID) namespace translation has been added. This improvement addresses the Fedora bug BZ#1035433. -
Seccomp-BPF can now be used to stop tracees only for filtered system calls. Use the
--seccomp-bpf
option to enable this feature. -
Two new extensions to the
-D
(--daemonize
) option have been implemented. They move strace into a separate process group (-DD
or--daemonize=pgroup
) and session (-DDD
or--daemonize=session
). -
Interval specification in the
when=
subexpression of the system call tampering expressions has been implemented. -
It is now possible to select the set of displayed columns in the call summary output using the
-U
(--summary-columns
) option. - It is now possible to sort on any summary column.
- System call count statistics have been enhanced: overhead is now applied per call.
- It is now possible to show information about minimum and maximum call duration in the call summary output.
- The system call delay injection and overhead values can now be supplied with a time measure unit suffix and provided in the IEEE 754 floating-point format. Please refer to the “Time specification format description” section of the strace manual page (available via the “scl enable devtoolset-10 — man strace” command) for details.
-
Printing of PIDs associated with process file descriptors (pidfds) in
-yy
(--decode-fds=pidfd
) mode has been implemented. -
Performance of the
libdw-based
stack traces printing has been improved by implementing a symbol-to-address cache. -
The
-e trace=%clock
option has been added for tracing system calls reading of modifying system clocks. -
The
-e trace=%creds
option has been added for tracing system calls related to process credentials. -
Decoding of the following system calls has been implemented:
clone3
,fsconfig
,fsmount
,fsopen
,fspick
,open_tree
,openat2
,move_mount
,pidfd_getfd
, andpidfd_open
. -
Decoding of the following system calls has been enhanced:
arch_prctl
,bpf
,clone
,inotify_init
,io_cancel
,io_submit
,io_uring_register
,io_uring_setup
,keyctl
,mbind
,perf_event_open
,prctl
,s390_sthyi
,sched_getattr
,sched_setattr
,set_mempolicy
,syscall
, andsyslog
. -
Decoding of the following
ioctl
commands has been implemented:PTP_CLOCK_GETCAPS2
,PTP_EXTTS_REQUEST2
,PTP_PEROUT_REQUEST2
,PTP_ENABLE_PPS2
,PTP_SYS_OFFSET2
,RTC_VL_READ
, andWDIOC_*
. -
The
HIDIOCGRAWUNIQ()
ioctl
command number printing has been implemented. -
Decoding of the
NETLINK_ROUTE
netlink protocol has been enhanced. -
Decoding of the following netlink attributes has been implemented:
IFLA_*
,TCA_ACT_FLAGS
,TCA_STATS_PKT64
, andUNIX_DIAG_UID
. -
Lists of the following constants have been updated:
AT_*
,AUDIT_*
,BPF_*
,BTRFS_*
,CAN_*
,CLONE_*
,ETH_*
,FAN_*
,GRND_*
,IFLA_*
,IORING_*
,IPPROTO_*
,KEXEC_*
,KEY_*
,KEYCTL_*
,KVM_*
,LWTUNNEL_*
,MADV_*
,*_MAGIC
,MAP_*
,MPOL_*
,MREMAP_*
,MSG_*
,P_*
,PERF_*
,PPC_PTRACE_*
,PR_*
,PTP_*
,RTM_F_*
,SCHED_*
,SCTP_*
,SECCOMP_*
,SO_*
,STATX_*
,TCP_*
,TIPC_*
,UFFDIO_*
,V4L2_*
, andXDP_*
. -
The strace manual page and the strace
--help
command output have been enhanced.
Bug fixes
-
The
statx
system call has been added to the%fstat
trace class. -
Decoding of
getdents
andgetdents64
system calls has been fixed in cases when they return many directory entries. -
The pathtrace matching of the
openat2
system call has been fixed. -
Various minor fixes in
VIDIOC_*
ioctl
output formatting have been made. -
Stack trace printing has been fixed for early system calls when strace is configured to use
libdw
back end for stack tracing. This improvement addresses the Fedora bug BZ#1788636 -
Decoding of the
NDA_LLADDR
netlink neighbor table attribute has been fixed. -
Decoding of the
BPF_PROG_LOAD
BPF system call command has been fixed. -
The
evdev
ioctl
bitset decoding has been fixed.
A.6. Changes in SystemTap
Red Hat Developer Toolset 10.0 is distributed with SystemTap 4.3.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
-
Userspace probes can be targeted by the hexadecimal
buildid
fromreadelf -n
. This alternative to a path name enables matching binaries to be probed under any name, and thus allows a single script to target a range of different versions. This feature works well in conjunction with the elfutilsdebuginfod
server. -
Script functions can use probe
$context
variables to access variables in the probed location, which allows the SystemTap scripts to use common logic to work with a variety of probes.
For further information about notable changes, see the upstream SystemTap 4.3 release notes before updating SystemTap.
A.7. Changes in Valgrind
Red Hat Developer Toolset 10.0 is distributed with Valgrind 3.16.1.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
-
It is now possible to dynamically change the value of many command-line options while your program is running under Valgrind: through
vgdb
, throughgdb
connected to the Valgrindgdbserver
, or through program client requests. To get a list of dynamically changeable options, run thevalgrind --help-dyn-options
command. -
For the Cachegrind (
cg_annotate
) and Callgrind (callgrind_annotate
) tools the--auto
and--show-percs
options now default toyes
. -
The Memcheck tool produces fewer false positive errors on optimized code. In particular, Memcheck now better handles the case when the compiler transformed an
A && B
check intoB && A
, whereB
could be undefined andA
was false. Memcheck also better handles integer equality checks and non-equality checks on partially defined values. -
The experimental Stack and Global Array Checking tool (
exp-sgcheck
) has been removed. An alternative for detecting stack and global array overruns is using the AddressSanitizer (ASAN) facility of GCC, which requires you to rebuild your code with the-fsanitize=address
option.