Chapter 26. Compiler and Tools

Package selection now works in system-config-kickstart

A bug in the system-config-kickstart graphical Kickstart file creation utility caused the package selection to be unavailable because the tool could not download package information from repositories. This bug is now fixed, and you can now configure package selection in system-config-kickstart again. (BZ#1272068)

NVMe devices no longer show up as Unknown in parted and Anaconda

Previously, any Non-Volatile Memory Express (NVMe) devices were not being recognized by the Anaconda installer and the parted storage configuration tool during the installation, and were instead being labeled as Model: Unknown (unknown). This update backports an upstream patch that enables recognition of these devices, and they are now being correctly identified as NVMe Device (nvme) during installation. (BZ#1316239)

DBD::MySQL now sends and receives smaller integers correctly on big-endian platforms

Previously, the DBD::MySQL Perl driver incorrectly handled integers smaller than 64 bits on big endian platforms. Consequently, tests for prepared statements failed for certain variable sizes on the IBM z Systems architecture. This bug has been fixed, and the described problem no longer occurs. (BZ#1311646)

The version Perl module now supports tainted input and tainted version objects

Previously, the version module of Perl was unable to correctly parse tainted input. Consequently, when building a version object from a tainted variable, the version->new() method reported the Invalid version format (non-numeric data) error. This update adds support for parsing tainted input and for printing tainted version objects and strings. (BZ#1378885)

The HTTP::Daemon Perl module now supports IPv6

Previously, the HTTP::Daemon Perl module did not support IPv6 addresses. Consequently, when running an HTTP::Daemon::SSL server on an IPv6 address, the server terminated unexpectedly on an attempt to print the IPv6 address with an Arg length for inet_ntoa error message. With this update, the HTTP::Daemon module has been ported from the IO::Socket::INET to the IO::Socket::IP module. As a result, HTTP::Daemon handles IPv6 addresses as expected. (BZ#1413065)

GDB shows inline function names in breakpoint listing

Previously, the GDB debugger showed caller function names instead of inlined callee function names when listing breakpoints. As a consequence, GDB users were not able to identify breakpoints placed on inline functions from the function name. GDB has been extended to store names of inline callee functions when breakpoints are placed. As a result, GDB now correctly displays names of inline functions when listing breakpoints. (BZ#1228556)

Relocation failures at module load time due to wrong GCC alignment fixed

Previously, GCC generated code containing .toc sections with 2^0 alignment. As a consequence, relocation failures could occur at module load time. GCC has been changed to generate .toc sections aligned to 2^3. This fix eliminates most cases of occurrence of this bug. (BZ#1487434)

The istream::sentry object from the gcc C++ standard library no longer throws exceptions

Previously, the istream::sentry object from the gcc C++ standard library did not properly handle exceptions that happen while skipping whitespace. As a consequence, an unexpected exception could occur in the object's code. The constructor for the sentry class has been fixed to catch the exceptions and update the error state of the istream object appropriately. (BZ#1469384)

Multiple fixes in gdb on IBM Power

Previously, various features of the gdb debugger have been broken on the IBM Power architecture:
  • Record and replay functionality was not available and resulted in error messages or not restoring the previous register values.
  • Printing short vector return values resulted in wrong values displayed.
  • Single stepping over atomic sequences failed to actually step over them - the program counter did not change.
This update fixes these features. (BZ#1480498, BZ#1480496, BZ#1480497)

GDB no longer crashes when dumping core from a process that terminates

Previously, the GDB debugger did not consider that a process can be terminated while GDB is dumping it into a core file. As a consequence, when a dumped program terminated after receiving an unexpected SIGKILL signal, the gcore utility terminated unexpectedly as well. With this update, GDB has been extended to handle this situation. As a result, GDB and the gcore command no longer terminate unexpectedly and create invalid core files. (BZ#1493675)

GDB can again dump memory protected by the VM_DONTDUMP flag

Previous changes to the GNU Debugger GDB made the behavior of the gcore command more similar to the behavior of the Linux kernel when dumping process memory to increase data security. Consequently, users of GDB could not dump memory protected by the VM_DONTDUMP flag. The new set dump-excluded-mappings setting has been added to GDB to enable dumping of memory with this flag. As a result, users can dump the whole process memory with GDB again. (BZ#1518243)

Programs using the CLONE_PTRACE flag on threads now run under strace

Previously, programs which set the CLONE_PTRACE flag on new threads caused undefined behavior of the strace tool, because it uses the ptrace() function for its operation. As a consequence, such programs could be neither traced nor executed properly. The strace tool has been modified to ignore threads with an unexpected CLONE_PTRACE flag. As a result, programs which use CLONE_PTRACE execute properly under strace. (BZ#1466535)

exiv2 rebased to version 0.26

The exiv2 packages have been upgraded to upstream version 0.26, which provides a number of bug fixes and enhancements over the previous version. Notably, exiv2 now contains:
  • CMake support for Visual Studio
  • Recursive File Dump
  • ICC Profile Support
  • The exiv2 command for metadata piping
  • Lens File for user lens definitions
  • User defined lens types
  • WebP Support
For the complete changelog, see http://www.exiv2.org/changelog.html#v0.26. (BZ#1420227)

gssproxy fixed to properly update ccaches

Previously, the gssproxy package did not correctly handle the key version number (kvno) incrementation in Kerberos credential caches (ccaches). As a consequence, stale ccaches were not properly overwritten. This update fixes these problems in gssproxy ccache caching. As a result, ccaches are now properly updated, and the caching prevents excessive requests for updates. (BZ#1488629)

gcc on the little-endian variant of IBM Power Systems architecture no longer creates unused stack frames

Previously, using the -pg -mprofile=kernel options of the gcc compiler on the little-endian variant of IBM Power Systems architecture could result in unused stack frames being generated for leaf functions. The gcc compiler has been fixed and the unused stack frames no longer occur in this situation. (BZ#1468546)

Several bugs fixed in gssproxy

This update fixes several bugs in the gssproxy package. The bug fixes include preventing potential memory leaks and concurrency problems. (BZ#1462974)

The BFD library regains the ability to convert binary addresses to source code positions

A previous enhancement to the BFD library from the binutils package caused a bug in parsing the DWARF debug information. As a consequence, BFD and all tools using it, such as gprof and perf, were unable to convert binary file addresses to positions in source code. With this update, BFD has been modified to prevent the described problem. As a result, BFD can now convert addresses in binary files into positions in source code as expected.
Note that tools that use the BFD library must be relinked in order to take advantage of this fix. (BZ#1465318)

Applications using vector registers for passing arguments work again

Previously, the dynamic loader in the GNU C library ( glibc ) contained an optimization which avoided saving and restoring vector registers for 64-bit Intel and AMD architectures. Consequently, applications compiled for these architectures and using unsupported vector registers for passing function arguments, not adhering to the published x86-64 psABI specification, could fail and produce unexpected results. This update changes the dynamic loader to use the XSAVE and XSAVEC context switch CPU instructions, preserving more CPU state, including all vector registers. As a result, applications using vector registers for argument passing, in ways which are not supported by the x86-64 psABI specification, work again. (BZ#1504969)

curl now properly resets the HTTP authentication state

Prior to this update, the authentication state was not reset properly when an HTTP transfer finished or when the 'curl_easy_reset()' function was called. Consequently, the curl tool did not send the request body to the following URL. With this update, the authentication state is reset properly when an HTTP transfer is done or when curl_easy_reset() is called, and the described problem no longer occurs. (BZ#1511523)

The strip utility works again

Previously, the BFD library missed a NULL pointer check on the IBM z Systems architecture. As a consequence, running the strip utility caused a segmentation fault. This bug has been fixed, and strip now works as expected. (BZ#1488889)

Importing python modules generated by f2py now works properly

Previously, when dynamic linking loader was configured to load symbols globally, a segmentation fault occurred when importing any python module generated by the f2py utility. This update renames the PyArray_API symbol to _npy_f2py_ARRAY_API, which prevents potential conflicts with the same symbol in the multiarray module. As a result, importing modules generated by f2py no longer leads to a segmentation fault. (BZ#1167156)

mailx is not encoding multi-byte subjects properly

Previously, the mailx mail user agent did not split non-ASCII message headers on multi-byte character boundaries when encoding into the Multipurpose Internet Mail Extension (MIME) standard. As a consequence, the headers were incorrectly decoded. This update modifies the MIME encoding function so that it splits headers into encoded words on multi-byte character boundaries. As a result, mailx now sends messages with headers that can be properly decoded. (BZ#1474130)

The --all-logs option now works as expected in sosreport

Previously, the --all-logs option was ignored by the apache, nscd, and logs plug-ins of the sosreport utility. This bug has been fixed, and the mentioned plug-ins now correctly handle --all-logs. Note that when using --all-logs, it is impossible to limit the size of the log with the --log-size option, which is an expected behavior. (BZ#1183243)

Python scripts can now correctly connect to HTTPS servers through a proxy, while explicitly setting the port

The Python standard library provided in Red Hat Enterprise Linux was previously updated to enable certificate verification by default. However, a bug prevented Python scripts using the standard library from connecting to HTTPS servers using a proxy when explicitly setting the port to connect to. The same bug also prevented users from using the bootstrap script for registration with Red Hat Satellite 6 through a proxy. This bug is now fixed, and scripts can now connect to HTTPS servers and register using Red Hat Satellite as expected. (BZ#1483438)