Ce contenu n'est pas disponible dans la langue sélectionnée.
Appendix A. Changes in Version 11.0
The following sections document features and compatibility changes introduced with Red Hat Developer Toolset 11.0. The list is not full and will be updated.
A.1. Changes in GCC Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with GCC 11.2.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
General Improvements
- GCC now defaults to the DWARF Version 5 debugging format.
- Column numbers shown in diagnostics represent real column numbers by default and respect multicolumn characters.
- The straight-line code vectorizer considers the whole function when vectorizing.
- A series of conditional expressions that compare the same variable can be transformed into a switch statement if each of them contains a comparison expression.
Interprocedural optimization improvements:
-
A new IPA-modref pass, controlled by the
-fipa-modrefoption, tracks side effects of function calls and improves the precision of points-to analysis. -
The identical code folding pass, controlled by the
-fipa-icfoption, was significantly improved to increase the number of unified functions and reduce compile-time memory use.
-
A new IPA-modref pass, controlled by the
Link-time optimization improvements:
- Memory allocation during linking was improved to reduce peak memory use.
-
Using a new
GCC_EXTRA_DIAGNOSTIC_OUTPUTenvironment variable in IDEs, you can request machine-readable “fix-it hints” without adjusting build flags. -
The static analyzer, run by the
-fanalyzeroption, is improved significantly with numerous bug fixes and enhancements provided. To mitigate CVE-2021-42574, a new warning was added to GCC with the release of the RHSA-2021:4669 advisory. This new
-Wbidirectional=[none|unpaired|any]warning warns about possibly dangerous bidirectional (BiDi) Unicode characters and has three levels:-
-Wbidirectional=unpaired(default) warns about improperly terminated BiDi contexts. -
-Wbidirectional=noneturns the warning off. -
-Wbidirectional=anywarns about any use of BiDi characters.
-
Language-specific Improvements
C family
- C and C++ compilers support non-rectangular loop nests in OpenMP constructs and the allocator routines of the OpenMP 5.0 specification.
Attributes:
-
The new
no_stack_protectorattribute marks functions that should not be instrumented with stack protection (-fstack-protector). -
The improved
mallocattribute can be used to identify allocator and deallocator API pairs.
-
The new
New warnings:
-
-Wsizeof-array-div, enabled by the-Walloption, warns about divisions of twosizeofoperators when the first one is applied to an array and the divisor does not equal the size of the array element. -
-Wstringop-overread, enabled by default, warns about calls to string functions that try to read past the end of the arrays passed to them as arguments.
-
Enhanced warnings:
-
-Wfree-nonheap-objectdetects more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function. -
-Wmaybe-uninitializeddiagnoses the passing of pointers and references to uninitialized memory to functions that takeconst-qualified arguments. -
-Wuninitializeddetects reads from uninitialized dynamically allocated memory.
-
C
Several new features from the upcoming C2X revision of the ISO C standard are supported with the
-std=c2xand-std=gnu2xoptions. For example:-
The
standard attribute is supported. -
The
__has_c_attributepreprocessor operator is supported. - Labels may appear before declarations and at the end of a compound statement.
-
The
C++
-
The default mode is changed to
-std=gnu++17. -
The C++ library
libstdc++has improved C++17 support now. Several new C++20 features are implemented. Note that C++20 support is experimental.
For more information about the features, see C++20 Language Features.
- The C++ front end has experimental support for some of the upcoming C++23 draft features.
New warnings:
-
-Wctad-maybe-unsupported, disabled by default, warns about performing class template argument deduction on a type with no deduction guides. -
-Wrange-loop-construct, enabled by-Wall, warns when a range-based for loop is creating unnecessary and resource inefficient copies. -
-Wmismatched-new-delete, enabled by-Wall, warns about calls to operator delete with pointers returned from mismatched forms of operator new or from other mismatched allocation functions. -
-Wvexing-parse, enabled by default, warns about the most vexing parse rule: the cases when a declaration looks like a variable definition, but the C++ language requires it to be interpreted as a function declaration.
-
Architecture-specific Improvements
The 64-bit ARM architecture
-
The Armv8-R architecture is supported through the
-march=armv8-roption. - GCC can autovectorize operations performing addition, subtraction, multiplication, and the accumulate and subtract variants on complex numbers.
AMD and Intel 64-bit architectures
- The following Intel CPUs are supported: Sapphire Rapids, Alder Lake, and Rocket Lake.
-
New ISA extension support for Intel AVX-VNNI is added. The
-mavxvnnicompiler switch controls the AVX-VNNI intrinsics. -
AMD CPUs based on the znver3 core are supported with the new
-march=znver3option. -
Three microarchitecture levels defined in the x86-64 psABI supplement are supported with the new
-march=x86-64-v2,-march=x86-64-v3, and-march=x86-64-v4options.
A.2. Changes in binutils Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with binutils 2.36.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
The assembler
- On Intel architectures, the AMX, AVX VNNI, HRESET, Key Locker, TDX, and UINTR instructions are supported.
- When setting the link order attribute of ELF sections, you can use a numeric section index instead of a symbol name.
- The following ARM cores are supported: Cortex-A78, Cortex-A78AE, Cortex-A78C, Cortex-X1, Cortex-R82, Neoverse V1, and Neoverse N2.
- On 64-bit ARM architectures, the Armv8-R and Armv8.7-A ISA extensions are supported.
-
A
.nopdirective has been added that generates a single no-operation instruction that will work on any target. -
The
SHF_GNU_RETAINflag is supported. It specifies that the section should not be garbage collected by the linker. This flag can be applied to sections using theRflag in the.sectiondirective.
The linker
-
A new
libdepplugin has been added. It records linking dependencies in static libraries and uses them when a final link is performed. -
A new
--error-handling-script=<NAME>command-line option has been added. It runs a helper script when an undefined symbol or a missing library is encountered. -
The linker now deduplicates the types in the
.ctfsections. You can specify how the linker does this by using the new--ctf-share-typescommand-line option. The default value of this option, which isshare-unconflicted, produces the most compact output. -
The linker omits the variable section from the
.ctfsections by default, saving space. This behavior can be unsuitable for projects that have their own analog of symbol tables, which are not reflected in ELF symbol tables. -
The
SHF_GNU_RETAIN ELFsection flag is supported. This flag specifies that the section should not be garbage collected by the linker.
Other binary utilities
-
nm: a new command-line option--ifunc-chars=CHARShas been added that specifies a string of one or two characters. The first character is used as the type character when displaying globalifuncsymbols. The second character, if present, is used when displaying localifuncsymbols. -
ar: the previously unusedlmodifier can be used for specifying dependencies of a static library. The arguments of thisloption (or its longer form--record-libdeps) are stored verbatim in the__.LIBDEPmember of the archive, which the linker may read at link time. -
readelf: using the--lto-symscommand-line option you can display the contents of the LTO symbol table sections. -
readelfaccepts the-Ccommand-line option that enables demangling of symbol names. In addition, the--demangle=<style>,--no-demangle,--recurse-limit, and--no-recurse-limitoptions are have been added. To mitigate CVE-2021-42574, a new command-line option was added to binutils with the release of the RHSA-2021:4730 advisory.
Tools which display names or strings (readelf, strings, nm, and objdump) now have a new
--unicode(-U) command-line option, which controls how Unicode characters are handled. The following values can be set for the option:-
--unicode=defaulttreats BiDi characters as normal for the tool. This is the default behaviour when the--unicodeoption is not used. -
--unicode=localedisplays BiDi characters according to the current locale. -
--unicode=hexdisplays BiDi characters as hex byte values. -
--unicode=escapedisplays BiDi characters as Unicode escape sequences. -
--unicode=highlightdisplays BiDi characters as Unicode escape sequences highlighted in red if it’s supported by the output device.
-
A.3. Changes in elfutils Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with elfutils 0.185.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
-
The
eu-elflintandeu-readelftools now recognize and show theSHF_GNU_RETAINandSHT_X86_64_UNWINDflags on ELF sections. -
The
DEBUGINFOD_SONAMEmacro has been added todebuginfod.h. This macro can be used with thedlopenfunction to load thelibdebuginfod.solibrary dynamically from an application. -
A new function
debuginfod_set_verbose_fdhas been added to thedebuginfod-clientlibrary. This function enhances thedebuginfod_find_*queries functionality by redirecting the verbose output to a separate file. -
Setting the
DEBUGINFOD_VERBOSEenvironment variable now shows more information about which servers thedebuginfodclient connects to and the HTTP responses of those servers. -
The
debuginfodserver provides a new thread-busy metric and more detailed error metrics to make it easier to inspect processes that run on thedebuginfodserver. -
The
libdwlibrary transparently handles theDW_FORM_indirectlocation value so that thedwarf_whatformfunction returns the actual FORM of an attribute. -
To reduce network traffic, the
debuginfod-clientlibrary stores negative results in a cache, and client objects can reuse an existing connection.
A.4. Changes in dwz Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with dwz 0.14.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
- The DWARF Version 5 debugging format is supported.
-
The DWARF supplementary object files can be produced using the
.debug_supsection. - A new experimental optimization has been added that exploits the One Definition Rule of C++.
-
The
DW_OP_GNU_variable_valueexpression opcode is supported. - Numerous bugs have been fixed and performance improvements have been added.
A.5. Changes in GDB Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with GDB 10.2.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
New features
- Multithreaded symbol loading is enabled by default on architectures that support this feature. This change provides better performance for programs with many symbols.
- Text User Interface (TUI) windows can be arranged horizontally.
- GDB supports debugging multiple target connections simultaneously but this support is experimental and limited. For example, you can connect each inferior to a different remote server that runs on a different machine, or you can use one inferior to debug a local native process or a core dump or some other process.
New and improved commands
-
A new
tui new-layout name window weight [window weight…]command creates a new text user interface (TUI) layout, you can also specify a layout name and displayed windows. -
The improved
alias [-a] [--] alias = command [default-args]command can specify default arguments when creating a new alias. -
The
set exec-file-mismatchandshow exec-file-mismatchcommands set and show a newexec-file-mismatchoption. When GDB attaches to a running process, this option controls how GDB reacts when it detects a mismatch between the current executable file loaded by GDB and the executable file used to start the process.
Python API
-
The
gdb.register_window_typefunction implements new TUI windows in Python. -
You can now query dynamic types. Instances of the
gdb.Typeclass can have a new boolean attributedynamicand thegdb.Type.sizeofattribute can have valueNonefor dynamic types. IfType.fields()returns a field of a dynamic type, the value of itsbitposattribute can beNone. -
A new
gdb.COMMAND_TUIconstant registers Python commands as members of the TUI help class of commands. -
A new
gdb.PendingFrame.architecture()method retrieves the architecture of the pending frame. -
A new
gdb.Architecture.registersmethod returns agdb.RegisterDescriptorIteratorobject, an iterator that returnsgdb.RegisterDescriptorobjects. Such objects do not provide the value of a register but help understand which registers are available for an architecture. -
A new
gdb.Architecture.register_groupsmethod returns agdb.RegisterGroupIteratorobject, an iterator that returnsgdb.RegisterGroupobjects. Such objects help understand which register groups are available for an architecture.
A.6. Changes in ltrace Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with ltrace 0.7.91.
The following feature has been modified since the previous release of Red Hat Developer Toolset:
-
If a path is specified in the
$XDG_CONFIG_DIRSpatch file but does not exist, no diagnostic is given.
A.7. Changes in strace Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with strace 5.13.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
Changes in Behavior
Modified
%processclass contains system calls associated with process lifecycle (creation, execution, and termination):-
New calls:
kill,tkill,tgkill,pidfd_send_signal, andrt_sigqueueinfo -
Removed calls:
arch_prctlandunshare
-
New calls:
Improvements
-
A new
-n(--syscall-number) option prints system call numbers. -
A new
--secontext[=full]option displays SELinux contexts. -
Poke injection is implemented and two new options are added:
--inject=SET:poke_enter=and--inject=SET:poke_exit=. - On IBM POWER architecture, System Call Vectored (SCV) ABI support is added.
-
libdw-based stack tracing is enabled for non-native personalities. - Netlink data is printed in a more structured way.
-
Decoding of the following system calls is implemented:
close_range,epoll_pwait2,faccessat2,landlock_add_rule,landlock_create_ruleset,landlock_restrict_self,mount_setattr, andprocess_madvise. -
Decoding of the following system calls is enhanced:
io_uring_setup,membarrier,perf_event_open, andpidfd_open. -
Decoding of the
GPIO_*andTEE_*ioctlcommands is implemented. -
Decoding of the following
ioctlcommands is implemented:FS_IOC_FS[GS]ETXATTR,FS_IOC_[GS]ETFLAGS,FS_IOC32_[GS]ETFLAGS,LOOP_CONFIGURE,SIOCADDMULTI,SIOCDELMULTI,SIOCGIFENCAP,SIOCOUTQNSD,SIOCSIFENCAP,SIOCSIFHWBROADCAST,UBI_IOCRPEB and UBI_IOCSPEB,V4L2_BUF_TYPE_META_CAPTURE,V4L2_BUF_TYPE_META_OUTPUT, andVIDIOC_QUERY_EXT_CTRL. -
Decoding of the
NT_PRSTATUSandNT_FPREGSETregsets of thePTRACE_GETREGSETandPTRACE_SETREGSETptracerequests is implemented. -
Decoding of the
regsargument of the followingptracerequests is implemented:PTRACE_GETREGS,PTRACE_GETREGS64,PTRACE_SETREGS,PTRACE_SETREGS64,PTRACE_GETFPREGS, andPTRACE_SETFPREGS. -
Decoding of the
struct msginfoargument of theIPC_INFOandMSG_INFOmsgctlsystem calls commands is implemented. -
Decoding of the
struct msqid_dsargument of theMSG_STATandMSG_STAT_ANYmsgctlsystem calls commands is implemented. -
Decoding of the
struct seminfoargument of theIPC_INFOandSEM_INFOsemctlsystem calls commands is implemented. -
Decoding of the
struct semid_dsargument of theIPC_SET,IPC_STAT,SEM_STAT, andSEM_STAT_ANYsemctl system calls commands is implemented. -
Decoding of the
struct shminfoargument of theIPC_INFOshmctlsystem calls command is implemented. -
Decoding of the
struct shm_infoargument of theSHM_INFOshmctlsystem calls command is implemented. -
Decoding of the
struct shmid_dsargument of theSHM_STATandSHM_STAT_ANYshmctlsystem calls commands is implemented. -
Decoding of the
IFLA_BRPORT_*netlink attributes is updated to match the Linux 5.12 kernel. -
Lists of the following constants are updated:
*_MAGIC,ALG_*,AUDIT_*,BPF_*,BTRFS_*,CAP_*,CLOSE_RANGE_*,DEVCONF_*,ETH_*,FAN_*,IFLA_*,INET_DIAG_*,IORING_*,IPV6_*,IP_*,KEXEC_*,KEYCTL_*,KEY_*,KVM_*,LOOP_*,MDBA_*,MEMBARRIER_CMD_*,MPOL_*,MS_*,MTD_*,NDA_*,NFT_MSG_*,NLMSGERR_*,NT_*,PR_*,PTP_PEROUT_*,PTRACE_*,RESOLVE_*,RTAX_*,RTA_*,RTC_*,RTM_*,RTNH_*,RTPROT_*,SCTP_*,SEGV_*,SO_*,STATX_*,ST_*,SYS_*,TCA_*,TRAP_*,UFFDIO_*,UFFD_*, andV4L2_*. -
Lists of
ioctlcommands are updated to match such lists from the Linux 5.13 kernel update. With the release of the RHEA-2022:4635 advisory, strace can now display mismatches between the actual SELinux contexts and the definitions extracted from the SELinux context database.
An existing
--secontextoption of strace has been extended with themismatchparameter. This parameter enables to print the expected context along with the actual one upon mismatch only. The output is separated by double exclamation marks (!!), first the actual context, then the expected one. In the examples below, thefull,mismatchparameters print the expected full context along with the actual one because the user part of the contexts mismatches. However, when using a solitarymismatch, it only checks the type part of the context. The expected context is not printed because the type part of the contexts matches.Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux context mismatches often cause access control issues associated with SELinux. The mismatches printed in the system call traces can significantly expedite the checks of SELinux context correctness. The system call traces can also explain specific kernel behavior with respect to access control checks.
Bug Fixes
-
Decoding of the
SIOCGIFINDEX,SIOCBRADDIF, andSIOCBRDELIFioctlcommands is fixed. -
The
clock_gettime64,clock_settime64,clock_adjtime64, andlock_getres_time64system calls are added to the%clocktrace class. -
The
statxsystem call is added to the%fstattrace class. -
Previously, strace used insufficient buffer sizes for network interface name printing. This led to assertions on attempts of printing interface names that require quoting, for example, names longer than 4 characters in
-xxmode. With the release of the RHEA-2022:4635 advisory, this bug has been fixed.
A.8. Changes in SystemTap Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with SystemTap 4.5.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
-
32-bit floating-point variables are automatically widened to double variables and, as a result, can be accessed directly as
$contextvariables. -
enumvalues can be accessed as$contextvariables. -
The BPF uconversions tapset has been extended and includes more tapset functions to access values in user space, for example
user_long_error(). - Concurrency control has been significantly improved to provide stable operation on large servers.
For further information about notable changes, see the upstream SystemTap 4.5 release notes.
A.9. Changes in Valgrind Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with Valgrind 3.17.0.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
- Valgrind can read the DWARF Version 5 debugging format.
-
Valgrind supports debugging queries to the
debuginfodserver. - The ARMv8.2 processor instructions are partially supported.
- The Power ISA v.3.1 instructions on POWER10 processors are partially supported.
- The IBM z14 processor instructions are supported.
-
Most IBM z15 instructions are supported. The Valgrind tool suite supports the miscellaneous-instruction-extensions facility 3 and the vector-enhancements facility 2 for the IBM z15 processor. As a result, Valgrind runs programs compiled with GCC
-march=z15correctly and provides improved performance and debugging experience. -
The
--track-fds=yes optionrespects-q(--quiet) and ignores the standard file descriptorsstdin,stdout, andstderrby default. To track the standard file descriptors, use the--track-fds=alloption. -
The DHAT tool has two new modes of operation:
--mode=copyand--mode=ad-hoc.
A.10. Changes in Dyninst Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with Dyninst 11.0.0.
The following features have been added since the previous release of Red Hat Developer Toolset 11.0:
-
Support for the
debuginfodserver and for fetching separatedebuginfofiles. - Improved detection of indirect calls to procedure linkage table (PLT) stubs.
- Improved C++ name demangling.
- Fixed memory leaks during code emitting.
A.11. Changes in Annobin Copier lienLien copié sur presse-papiers!
Red Hat Developer Toolset 11.0 is distributed with Annobin 9.82.
The following features have been added or modified since the previous release of Red Hat Developer Toolset:
GCC plugin
- ARM and RISCV targets are supported.
- The LTO compiler is supported.
Annocheck
- In verbose mode, the reason for skipping specific tests is reported.
- Some messages are highlighted with color.
- Some GO tests have been added.
- On 64-bit ARM architectures, tests for BTI and PAC security features have been added.
- To mitigate CVE-2021-42574, a new test is added to detect the presence of multibyte characters in symbol names. This change has been implemented in Annobin with the release of the RHSA-2021:4729 advisory.