In this month's news we have:
* GCC now supports a noplt function attribute. This specifies that the annotated function should not be called via the PLT mechanism.
* GCC now supports a target (<option>) function attribute to enable target specific options on individual functions. The ARM port now uses this mechanism to allow programmers to individually specify whether a function should use ARM or THUMB instructions. For example:
int foo __attribute__((target("thumb")));
Any functions inlined into the attributed function will inherit that function's attributes.
* GCC now supports attributes on enums values, although only one such attribute is currently available:
The deprecated attribute results in a warning if the enumerator value is used anywhere in the source file. This is useful when identifying enumerators that are expected to be removed in a future version of a program.
* GCC now supports a new warning option: -Wlto-type-mismatch
During the link-time optimization the compiler will issue warnings about type mismatches between duplicate global declarations found in different compilation units. This option is enabled by default when LTO optimization is being performed.
* The ARM port of GCC now recognises the ARMv8,1 architecture extensions including the Large System Extension instructions, Privileged Access Never, Limited Ordering Regions and Advanced SIMD instructions.
* In GDB support for process record-replay and reverse debugging on AArch64 targets has been added.
* Also in GDB support for Sun's version of the "stabs" debug file format has been removed.
* The linker has a new command line option: -print-memory-usage
This makes the linker print out the used size and total size of each memory region specified by the link script and used by the executable, which can be helpful to programmers trying to squeeze every last byte out of a particularly small region. The output has a fixed format which is human readable and machine parsable. For example:
Memory region Used Size Region Size %age Used
ROM: 256 KB 1 MB 25.00%
RAM: 32 B 2 GB 0.00%
* The assembler and linker now support the compact exception handler sections as used by MIPS toolchains. The new gas pseudo ops:
.cfi_fde_data [<opcode1> ,...]
Are provided to help specify the contents of this new type of section.
* The assembler has a new option to enable section name substitution: --sectname-subst
If enabled then section names may include the %S sequence which will be substituted for the name of the current section. For example:
This will create four sections: .text, .text.exception, .init and .init.exception. In the future other substitution sequences in addition to %S may be provided.
* Support for the ARMv8.1 architecture has been added to the AArch64 and ARM ports. This includes support for the Adv.SIMD, LOR and PAN architecture extensions.