This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.

March 2017 GNU Toolchain Update

From: Nick Clifton <nickc at redhat dot com>

To: gcc at gcc dot gnu dot org

Date: Wed, 15 Mar 2017 14:29:34 +0000

Subject: March 2017 GNU Toolchain Update

Authentication-results: sourceware.org; auth=none

Authentication-results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com

Authentication-results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=nickc at redhat dot com

Dkim-filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 42AC681233

Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 42AC681233

Hi Guys, There is a lot to tell you about this time. First up is glibc: The GNU C Library version 2.25 is now available. In this version you will find: * Provisional support for ISO/IEC TR 24731-1:2010 which provides replacement versions of many of the memory allocation functions that include bounds checking. * Provisional support for ISO/IEC TR 24731-2:2010 which provides replacement versions of many of the memory allocation functions that use dynamically allocated memory to ensure that buffer overflow do not occur. * Provisional support for *some* of the new features that are defined in ISO/IEC TS 18661-4:2015, which is an implementation of the ISO/IEC/IEEE 60559:2011 floating point standard. * Full support for ISO/IEC TS 18661-1:2014 standard which implements support for binary floating-point arithmetic conforming to ISO/IEC/IEEE 60559:2011. This does not cover decimal floating-point arithmetic, nor does it cover many of the optional features of IEC 60559. * Glibc can now be built with the stack smashing protector enabled. This means that distributions can build glibc with --enable-stack-protector=strong defined and expect it to work. * The function explicit_bzero, from OpenBSD, has been added to glibc. It is intended to be used instead of memset() to erase sensitive data after use; the compiler will not optimize out calls to explicit_bzero even if they are "unnecessary" (in the sense that no _correct_ program can observe the effects of the memory clear). * On ColdFire, MicroBlaze, Nios II and SH3, the float_t type is now defined to float instead of double. This does not affect the ABI of any libraries that are part of the GNU C Library, but may affect the ABI of other libraries that use this type in their interfaces. * On x86_64, when compiling with -mfpmath=387 or -mfpmath=sse+387, the float_t and double_t types are now defined to long double instead of float and double. These options are not the default, and this does not affect the ABI of any libraries that are part of the GNU C Library, but it may affect the ABI of other libraries that use this type in their interfaces, if they are compiled or used with those options. * The getentropy and getrandom functions, and the <sys/random.h> header file have been added. * The buffer size for byte-oriented stdio streams is now limited to 8192 bytes by default. Previously, on Linux, the default buffer size on most file systems was 4096 bytes (and thus remains unchanged), except on network file systems, where the buffer size was unpredictable and could be as large as several megabytes. * GDB pretty printers have been added for mutex and condition variable structures in POSIX Threads. When installed and loaded in gdb these pretty printers show various pthread variables in human-readable form when read using the 'print' or 'display' commands in gdb. * A tunables feature has been added to allow tweaking of the runtime for an application program. This feature can be enabled with the '--enable-tunables' configure flag when glibc is built. The GNU C Library manual has details on usage and README.tunables file has instructions on adding new tunables to the library. Meanwhile in the mainline development sources of glibc you can also find these new features: * Unicode 9.0.0 Support: Character encoding, character type info, and transliteration tables are all updated to Unicode 9.0.0. * The rpcgen, librpcsvc and related headers will only be built and installed when glibc is configured with --enable-obsolete-rpc. This allows alternative RPC implementations, like TIRPC, to be used by default. Applications needing features missing from TIRPC should consider the rpcsvc-proto project developed by Thorsten Kukuk (SUSE). GDB 7.12.1 has been released. This is a point release over 7.12 and so it only contains bug-fixes rather then new features, but if you have been using 7.12 then it is worth upgrading to 7.12.1. Version 5 of the DWARF debug standard has now been officially released. This has improvements in many areas, such as: better data compression, separation of debugging data from executable files, improved description of macros and source files, faster searching for symbols, improved debugging of optimized code, as well as numerous improvements in functionality and performance. If you want to read the new standard it is here: http://dwarfstd.org/doc/DWARF5.pdf Meanwhile in the development sources: * GDB can now access to the PKU register on x86_64 GNU/Linux. The register is added by the Memory Protection Keys for Userspace feature which will be available in future Intel CPUs. * Python scripts can now start, stop and access a running btrace recording. * GDB now supports recording and replaying rdrand and rdseed Intel 64 instructions. Newlib 2.5.0 has been released. The main change in this release is that: * The ctype and string functions are now locale aware and will behave correctly according to the current locale. In addition the current development sources has another new feature: * The locking routines can be retargetted at link time, allowing applications the ability to override the lock functions. GCC version 6.3 has been released. This is a bug-fix release, and does not contain any new features. GCC 7.0 is still undergoing regression fixing and is tentatively scheduled for an April release. Meanwhile in the development sources a new feature has been added: * It is now possible add the column number into source locations in DWARF debug information, alongside the regular file name and line numbers. This feature has to be explicitly enabled however by using the new command line option: -gcolumn-info. Binutils 2.28 has now been released. Most of the new features in this version have already been reported, but there is one significant addition: * This version of binutils fixes a problem with PowerPC VLE 16A and 16D relocations which were functionally swapped, for example, R_PPC_VLE_HA16A performed like R_PPC_VLE_HA16D while R_PPC_VLE_HA16D performed like R_PPC_VLE_HA16A. This could have been fixed by renumbering relocations, which would keep object files created by an older version of gas compatible with a newer ld. However, that would require an ABI update, affecting other assemblers and linkers that create and process the relocations correctly. It is recommended that all VLE object files be recompiled, but ld can modify the relocations if --vle-reloc-fixup is passed to ld. If the new ld command line option is not used, ld will ld warn on finding relocations inconsistent with the instructions being relocated. Plus in the development sources we have: * Add --merge-notes options to objcopy to reduce the size of notes in a binary file by merging and deleting redundant notes. * PowerPC gas now checks that the correct register class is used in instructions. For instance, "addi %f4,%cr3,%r31" warns three times that the registers are invalid. That is it for now. Due to various work constraints I am going to have to acknowledge that I can no longer produce this blog as a monthly update, so I am switching to a quarterly schedule instead. This will mean fewer, but longer blogs, but hopefully it will still be interesting reading. Cheers Nick