More toolchain goodness this month, with several new features making their way into the sources:
* GCC can now produced compressed DWARF debug information, if it is supported by the rest of the toolchain:
The type parameter is optional, and is used to specify the sort of compression to be used. Accepted values are:
* none (don't compress debug sections)
* zlib (use zlib compression in ELF gABI format)
* zlib-gnu (use zlib compression in traditional GNU format)
* GCC has a new option to improve the optimization of ELF DSOs:
Without this option the compiler has to assume that global symbols might be replaced by the dynamic linker and so it cannot perform any inter-procedural propagation, inlining and other optimizations on them. While this feature is useful, for example, to rewrite memory allocation functions by a debugging implementation, it is expensive in the terms of code quality.
With the new option enabled the compiler assumes that if interposition happens for functions the overwritting function will have precisely the same semantics (and side effects). Similarly if interposition happens for variables, the constructor of the variable will be the same.
* GCC has a couple of new options to disable warning messages.
This disables warning about conversions between pointers that have incompatible types. The option affects warnings that are not disabled by the -Wno-pointer-sign option (which only stops warnings about signed vs unsigned pointers).
Stops warnings about implicit incompatible integer to pointer and pointer to integer conversions.
There is also a new option to enable a new warning:
which warns when the sizeof operator is applied to a parameter that is declared as an array in a function definition.
* The GOLD linker now has support for the AArch64 and MIPS architectures.
* The NEWLIB C library can now be configured with a very small footprint I/O library (--enable-newlib-nano-formatted-io). Whilst a lot smaller in size than the default I/O support, it does have a few restrictions:
+ Long doubles are not supported.
+ Floating point support has to be explicitly requested by the program linking to either or both of: _printf_float and/or _scanf_float.
+ Wide character I/O functions are not affected by this configure option.
* The STRINGS program supports a new command line option:
which makes it include \n and \r characters in the strings that it displays.
* The LD linker for COFF and PE based targets now supports a command line option:
which makes it insert a real timestamp into the image, rather than the default value of zero. This means that two identical binaries built at different times will compare differently, but it also means that the binaries will work with proprietary tools which cannot cope with zero timestamps.
* The BINUTILS now have support for the AVR Tiny microcontrollers.
* GCOV-TOOL is a new tool for manipulating profiling data. With it you can:
+ Merge two sets of profiling data.
+ Scale or normalize the data.
+ Remove a subset of the data.
This tool is part of the GCC sources.