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.
  • New command-line options:

    • -fallocation-dce removes unnecessary pairs of the new and delete 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 the make tool.
  • 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 and loop directives, order(concurrent) and use_device_addr clauses support, if clauses on simd constructs or partial support for the declare 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.
  • New warnings:

    • -Wstring-compare, enabled by the -Wextra option, warns about equality and inequality expressions between zero and the result of a call to strcmp or strncmp 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 the strlen 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.
  • 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 polymorphic typeid in constant expressions
    • P0912R5: Coroutines. The -fcoroutines option enables the support for coroutines

      To 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.

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 and shift_right
    • The std::span class template
    • Three-way comparisons in <compare> and throughout the library
    • Constexpr support in <algorithm> and other places
    • <stop_token> and std::jthread
    • std::atomic_ref and std::atomic<floating point>
    • Integer comparison functions (for example, cmp_equal, cmp_less, and other functions)
    • std::ssize and std::to_array
    • std::construct_at, std::destroy, and constexpr std::allocator
    • Mathematical constants in <numbers>
  • 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 with std=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. If filename is a directory, the linker will create the filename/output-filename.map file.
  • The --warn-textrel command-line option has been added to warn about DT_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() and GROUP() 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 the PHDR segment not covered by LOAD segment error is more effective now. The check now catches cases that earlier versions of ld 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 with debuginfod, readelf and objdump can automatically query debuginfod servers for separate debugging files when such files otherwise cannot be found. To build binutils with debuginfod, pass the --with-debuginfod configure option. This requires libdebuginfod, the debuginfod 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 into libdw.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 and libdw 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 as V and common symbols as C.

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, and make 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 and abc def ghi can now be entirely separate commands.

  • | [command] | shell_command (another name of this command is pipe)

    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 and set 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 to info variables and info 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, the print 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 the finish 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, and stepi.

  • 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 type gdb.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, and rt_sigqueueinfo have been added.
    • arch_prctl and unshare 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 by execve.
    • 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.
  • 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 --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, and pidfd_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, and syslog.
  • 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, and WDIOC_*.
  • 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, and UNIX_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_*, and XDP_*.
  • 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 and getdents64 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 from readelf -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 elfutils debuginfod 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, through gdb connected to the Valgrind gdbserver, or through program client requests. To get a list of dynamically changeable options, run the valgrind --help-dyn-options command.
  • For the Cachegrind (cg_annotate) and Callgrind (callgrind_annotate) tools the --auto and --show-percs options now default to yes.
  • 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 into B && A, where B could be undefined and A 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.