Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

Chapter 25. Compiler and Tools

GDB registers unaligned watchpoint hits on the 64-bit ARM architecture

Previously, the GDB debugger provided only limited support for unaligned hardware watchpoints used by the watch, rwatch, and awatch GDB commands on the 64-bit ARM architecture. As a consequence, GDB running on such systems failed to register some watchpoint hits and subsequently did not stop the debugged program.
GDB has been extended to handle this situation. As a result, it can correctly handle any hardware watchpoints on the 64-bit ARM architecture, including unaligned ones. (BZ#1347993)

Retpoline support in GCC on IBM Z architecture

This update adds support for retpoline generation in the GNU Compiler Collection (GCC) on IBM Z architecture. Retpolines are a technique used by the kernel to reduce the overhead of mitigating Spectre Variant 2 attacks described in CVE-2017-5715. (BZ#1552021)

binutils linker no longer terminates unexpectedly when encountering relocations against absolute address

Previously, the linker from the binutils package could not properly handle relocations against an absolute address. As a consequence, encountering such relocations caused a segmentation fault of the linker.
The linker has been extended to handle relocations against absolute addresses and the problem no longer occurs. (BZ#1557346)

The helper to store credentials in a GNOME keyring is now available in the git-gnome-keyring subpackage

Previously, installing git automatically installed GNOME components as a dependency, because the helper to store credentials in a GNOME keyring was part of the git package. With this update, the helper has been moved into the separate git-gnome-keyring subpackage. As a result, the size of a git installation is reduced.
To install the subpackage:
# yum install git-gnome-keyring
(BZ#1284081)

git instaweb now works without any additional configuration and it is available in a separate subpackage

Previously, the git instaweb command required a web server and did not work in the default installation. With this update, git instaweb has been moved into the separate git-instaweb subpackage, which depends on the Apache web server, and is configured to use the web server automatically. As a result, git instaweb now works without any further configuration when git-instaweb is installed. To install the subpackage:
# yum install git-instaweb
(BZ#1213059)

The man utility no longer prints gimme gimme gimme after midnight

Prior to this update, there was an Easter egg in the man utility that printed gimme gimme gimme in the standard error output at 00:30 local time. As a consequence, under certain circumstances the unexpected output misled automated tools. With this update, the Easter egg has been removed, and the described problem no longer occurs. (BZ#1515352)

sysctl now allows tuned to reset kernel parameters

Prior to this update, a bug in sysctl did not allow kernel parameters to be set to default values. As a consequence, the tuned utility could not set default kernel parameters using sysctl. With this update, sysctl accepts default values to reset kernel parameters. As a result, tuned works as expected and kernel parameters can be reset to default values. (BZ#1507356)

ncat now correctly sets environment variables in UDP mode

Previously, the ncat utility did not set environment variables for User Datagram Protocol (UDP) connections properly. As a consequence, user's scripts failed in UDP mode. This update sets some internal values, and environment variables now are set properly. (BZ#1573411)

ncat no longer uses the default HTTP port for all proxy types

Previously, the default port of an HTTP proxy was used even if another type of proxy, such as socks4 or socks5, was specified. As a consequence, the ncat utility unsuccessfully tried to connect to a proxy type through the non-default port. This update corrects the code so that an HTTP proxy port is not used by default. As a result, ncat now sets the proper default port according to the proxy type. (BZ#1546246)

Decoding and conversion of JPEG 2000 images now work correctly

Previously, decoding and conversion of JPEG 2000 images did not work correctly due to a bug in the openjpeg library. With this update, the underlying source code has been fixed, and decoding and conversion of JPEG 2000 images now works as expected. (BZ#1553235)

strip no longer malforms binary files built with tools that use a later BFD library version

Previously, the strip tool created an invalid binary file if the file was originally produced by tools that use a later version of the BFD library than strip. As a consequence running the resulting binary file failed and generated an error message about an unresolvable relocation. BFD has been modified to report situations where it cannot recognize its future features instead of damaging the code that contains these features. As a result, strip now generates an error message and aborts in this situation. (BZ#1553842)

Fixes of bugs in process-shared robust mutex

Previously, bugs in the implementation of POSIX thread robust mutexes could cause such mutexes to fail to be recoverable. Consequently, users of the interface could see a process terminate but not return EOWNERDEAD to another process that was trying to recover the mutex. This update fixes the threading library and all known and fixable bugs in robust mutexes. (BZ#1401665)

GDBserver not working properly when attaching to a process in another container

In some circumstances, the GDB debugger could not attach to a GDBserver running in a container, making container debugging problematic, if not impossible. The bug that returned socketpair not available on this host has been fixed and both GDB and GDBserver are now able to debug into containers. (BZ#1578378)

operf now handles kernel event samples for exiting processes without crashing

Previously, Red Hat Enterprise Linux kernel 4.14 changed the PID value returned in perf event samples for exiting processes to -1. As a result, the use of -1 by the kernel perf event subsystem conflicted with internal use of -1 as a flag by operf. The flag was used to indicate that initialization work was required to retrieve process information. However, any attempt to retrieve that information caused operf to crash.
This update adjusts the oprofile code to use a different value to flag the process information and as a result, it no longer conflicts with the -1 that is used for exiting processes. (BZ#1561103)

SystemTap provides complete kernel backtraces

Because of changes in the kernel related to address space layout randomization (ASLR), kernel backtraces collected by the SystemTap tool were incomplete. SystemTap has been extended to handle this situation. As a result, SystemTap provides complete kernel backtraces. (BZ#1567356)

fallocate() flags are again available according to documentation

Previously, the fcntl.h header file from the glibc package did not include flags for the fallocate() function. As a consequence, programs using fallocate() according to the man page did not compile. The missing flags have been added by indirect inclusion of the <linux/falloc.h> file and compilation of such programs is again possible. (BZ#1476120)

nscd netgroups cache properly handles expiration

Previously, when the nscd service was used to cache LDAP requests for netgroups, some entries in the cache might not expire correctly. As a consequence, the nscd cache did not reflect the service database correctly e.g. LDAP. The cache expiry code has been fixed, and changes in netgroups propagate to the cache correctly again. (BZ#1505647)

llvm-private no longer crashes when used together with more recent libstdc++ library versions

Previously, executable files in the llvm-private package providing drivers for graphics rendering were linked statically against the libstdc++ library. As a consequence, running a program using GLX, the Mesa llvmpipe renderer, and a different libstdc++ version caused an unexpected termination with message about invalid pointer. llvm-private has been changed and no longer statically links against libstdc++. As a result, programs using this driver no longer terminate unexpectedly in this situation. (BZ#1417663)