Chapter 3. Compiler and Tools

gcc supports hotpatching on System z binaries

The gcc hotpatch attribute implements support for online patching of multithreaded code on System z binaries. With this update, it is possible to select specific functions for hotpatching using a function attribute and to enable hotpatching for all functions using the -mhotpatch= command-line option.
As enabled hotpatching has negative impact on software size and performance, it is recommended to use hotpatching for specific functions and not to enable hotpatch support in general.

Changed curl support for TLS versions

This update introduces the new options --tlsv1.0, --tlsv1.1, and --tlsv1.2 of curl to specify minor versions of the TLS protocol to be negotiated by NSS. The corresponding CURL_SSLVERSION_TLSv1_0, CURL_SSLVERSION_TLSv1_1, and CURL_SSLVERSION_TLSv1_2 constants have been introduced in the libcurl API for this purpose. The semantics of the already existing --tlsv1 option of curl, and the CURL_SSLVERSION_TLSv1 constant of libcurl API, have been modified to negotiate the highest TLS 1.x protocol supported by both client and server.

Python ConfigParser handles options without values gracefully

Python ConfigParser was designed to require a value for each option but certain configuration files, such as my.cnf, contain options without values. Consequently, ConfigParser failed to read such config files. This feature has been backported to Python 2.6.6, and ConfigParser is now able to read configuration files that contain options with no values.

tcpdump supports -J, -j, and --time-stamp-precision options

As kernel, glibc, and libpcap now provide APIs to obtain nanosecond resolutions timestamps, tcpdump has been updated to leverage this functionality. Users can now query which timestamp sources are available (-J), set a specific timestamp source (-j), and request timestamps with a specified resolution (--time-stamp-precision).

Improved utilities for copying data between SCSI devices

More efficient utilities for copying data between storage devices that benefit from the SCSI protocol have been introduced to the sg3_utils package. To enable this functionality, the sg_xcopy and sg_copy_results programs have been backported to the sg3_utils packages.

ethtool supports defining custom RSS hash keys

Improvements have been added to ethtool so that custom hash keys for RSS can now be defined. This improvement helps to utilize receiving queues according to traffic received, and allows for performance and security enhancements by selecting suitable keys for the expected traffic.

Setdirection support has been added to tcpdump

The tcpdump package now includes setdirection support; this allows the ability to specify, as an argument to the -P flag, that only received packets (-P in), only sent packets (-P out), or both (-P inout) should be captured.

sysctl can now read from a group of system directories

This update introduces the new --system option to the sysctl utility. This option enables sysctl to process configuration files from a group of system directories.

mcelog packages upgraded to upstream version 109

The mcelog packages have been upgraded to upstream version 109, which provide a number of bug fixes and enhancements over the previous version. Notably, mcelog now supports Intel Core i7 CPU architectures.

biosdevname upgraded to upstream version 0.6.2

The biosdevname package has been upgraded to upstream version 0.6.2 and, among other features, provides the dev_port attribute for the new Mellanox driver and allows to ignore naming of FCoE devices.

Improvements in the PCRE library

To allow the grep utility to recover from PCRE matching failures if the binary file is not a valid UTF-8 sequence, the following features have been backported to the PCRE library:
  • The pcre_exec() function now checks for out-of-range starting offset values and reports PCRE_ERROR_BADOFFSET errors instead of reporting PCRE_ERROR_NOMATCH errors or looping infinitely.
  • If the pcre_exec() function is called to perform a UTF-8 match on an invalid UTF-8 subject string and the ovector array argument is large enough, the offset of the first subject string in the invalid UTF-8 byte, as well as the detailed reason code, are returned in the ovector array element. In addition, the pcretest utility can now be used to display these details. Note that with this update, the pcre_compile() function reports first invalid UTF-8 byte instead of the last byte. Also note that the signature of the pcre_valid_utf8() function, which is not intended for public use, has been changed. Finally, note that the pcretest utility now appends human-readable error messages to error codes.

Support for Intel AVX-512 in glibc Dynamic Loader

The glibc dynamic loader now supports Intel AVX-512 extensions. This update allows the dynamic loader to save and restore AVX-512 registers as required, thus preventing AVX-512-enabled applications from failing because of audit modules that also use AVX-512.

Valgrind recognizes Intel MPX instructions

Valgrind did not recognize Intel Memory Protection Extensions (MPX) instructions or instructions using the MPX bnd prefix. Consequently, Valgrind terminated programs that used MPX instructions with a SIGKILL signal. Valgrind now recognizes the new MPX instructions and bnd prefixes. All new MPX instructions are currently implemented as no operation instructions, and the bnd prefix is ignored. As a result, programs using MPX instructions or bnd prefixes run under Valgrind as if the MPX was not enabled on the CPU and are no longer terminated.

free supports human-readable output

The new -h option has been added to the free utility. The purpose of this option is to show all output fields automatically scaled to the shortest three-digit representation including the unit, making the output conveniently human-readable.

w supports the -i option

The w utility now includes the -i option to display IP addresses instead of host names in the FROM column.

vim rebase to version 7.4

The vim packages have been updated to upstream version 7.4, which provide various bug fixes and enhancements over the previous version. Notable changes are:
  • The Vim text editor now supports persistent reverting of changes that can by enabled by setting the undofile option. By default, when unloading a buffer, Vim destroys the tree of changes created for that buffer. However, when enabling persistent reverting of changes, Vim automatically saves the history of changes and restores it after reopening the buffer again.
  • This update introduces a new regular expressions engine. The previous engine used the backtracking algorithm; the pattern was matched against the text in one way and when this attempt failed, the pattern was matched in another way. This engine worked correctly for simple patterns, however, it took significantly longer to match a complex pattern in a longer text. The new engine uses the state machine logic; it tries all possible alternatives at the current character and stores the possible states of the pattern. Although, this process is little bit slower for simple patterns, matching complex patterns against longer texts is faster. Most notably, syntax highlighting for JavaScript and XML files with long lines was improved by this change.