This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
June 2015 GNU Toolchain Update
- From: Nick Clifton <nickc at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Date: Mon, 22 Jun 2015 10:16:57 +0100
- Subject: June 2015 GNU Toolchain Update
- Authentication-results: sourceware.org; auth=none
Hi Guys,
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:
enum E {
oldval __attribute__((deprecated)),
newval
};
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_personality_id <id>
.cfi_fde_data [<opcode1> ,...]
.cfi_inline_lsda [<align>]
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:
.macro gen_exceptions
.section %S.exception
[...]
.previous
.endm
.text
[...]
gen_exceptions
[...]
.section .init
[...]
gen_exceptions
[...]
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.
Cheers
Nick