Hi Guys,
It has been a long time since my last post, so there is lots to tell
you about. First of all there have been major releases of most of
the tools:
GCC 6.2 is here. This is mostly a bug-fix release over gcc 6.1 of
course, but it does also include a few enhancements for the SPARC
target:
Support for --with-cpu-32 and --with-cpu-64 configure
options has been added on bi-architecture platforms.
Support for the SPARC M7 (Niagara 7) processor has
been added.
Support for the VIS 4.0 instruction set has been added.
Binutils 2.27 has now been released. In addition to enhancements
mentioned in previous postings, this release also includes:
A configure option --enable-relro={yes|no} to decide
whether -z relro should be the default behaviour for
the linker in ELF based targets. If this configure
option is not specified then relro will be enabled
automatically for all Linux based targets except FRV,
HPPA, IA64 and MIPS.
Linux/x86 targets now default to enabling the compression
of debug sections. This change can be reverted by using
the --enable-compressed-debug-sections=no configure option.
The assembler now supports a --no-pad-sections command
line option to prevent it from padding the end of each
section up to its alignment boundary. This can be useful
on systems with very tight memory constraints.
The ARC port of gas now accepts a --with-cpu=TYPE
configure option to specify the default cpu type.
GDB 7.12 is out. This release includes:
GDB and GDBserver are now built with a C++ compiler by default.
The configure option --disable-build-with-cxx can be used to
build with a C compiler instead, although this option will soon
be deprecated.
GDB now supports a negative repeat count in the 'x' command to
examine memory *backwards* from the given address.
GDB now supports a new mechanism that allows front-ends to provide
fully featured GDB console views, as a better alternative to
building such views on top of the "-interpreter-exec console"
command. Front-ends can now start GDB in the traditional
command-line mode running in an embedded terminal emulator
widget, and create a separate MI interpreter running on a
specified i/o device. In this way, GDB handles line editing,
history, tab completion, etc. in the console all by itself, and
the GUI uses the separate MI interpreter for its own control and
synchronization, invisible to the command line.
In addition the development versions of these tools continue to add
new features and abilities. For example:
G++ has a new command line option -fconstexpr-loop-limit=<n> which
sets the maximum number of iterations for a loop in C++14
constexpr functions. A limit is needed to detect infinite loops
during constant expression evaluation.
G++ now also supports -fstrong-eval-order which forces the
evaluation of member access, array subscripting, and shift
expressions in left-to-right order, and assignments in
right-to-left order, as adopted for C++17. This option is enabled
by default when -std=c++1z is used.
The compiler now supports a new command line option:
-fdiagnostics-parseable-fixits
This option tells the compiler to extend the diagnostic messages
that it displays by adding an extra line. This line is intended
to be a machine parseable hint for consumption by an IDE. The
hint starts with the text "fix-it:" and the rest gives information
about the source code location involved. For example:
fix-it:"test.c":{45:3-45:21}:"function_foo"
The compiler now supports a new optimization: -fcode-hoisting
This tries to move the evaluation of expressions executed on all
paths to as early as possible in the function. This is especially
useful as a code size optimization, but it often helps for code
speed as well.
GCC now has support for the _Float<N> and _Float<N>x types as
defined by the ISO/IEC TS 18661-3:2015 standard. The actual set
of types supported depends upon the target architecture however.
So for example the _Float128 type is supported on all systems
where __float128 is supported or where long double has the IEEE
binary128 format. The _Float64x type is supported on all systems
where __float128 is supported. The _Float32 type is supported on
all systems supporting IEEE binary32. The _Float64 and Float32x
types are supported on all systems supporting IEEE binary64.
Currently there are no target architectures that would support
the _Float16 or _Float128x types.
The ARM port of the toolchain now supports the ARMv8.2-A
architecture extensions. In addition revisions older than ARMv4t
are now deprecated.
The PowerPC port of the compiler now supports the use of built-in
functions that allow direct access to the Hardware Transactional
Memory (HTM) instructions that were added in version 2.07 of the
PowerPC ISA.
The linker has extended the --out-implib=<file> option, previously
restricted to x86 PE targets, to any ELF based target. This
allows the generation of an import library for an ELF executable,
which can then be used by another application to link against the
executable.
This feature is now used by the ARM port of the linker to create
import libraries suitable for use in the generation of Secure
Gateways, as per the ARMv8-M Security Extensions.
The objdump program now supports the use of the -M option with ARC
targets to specify the instruction class(es) that should be
disassembled.
The objcopy and strip programs now accept section patterns
starting with an exclamation point to indicate any section not
matching the pattern. In addition a new option
--remove-relocations=<section_pattern> can be used to remove
sections containing relocations.
GDB has added support for thread names on MS-Windows. In addition
it can now catch and handle the special exception that programs
running on MS-Windows use to assign names to threads in the
debugger.
In Newlib the entire set of locale-specific functions from
POSIX-1.2008 has now been implemented with one exception:
strfmon_l. This means that any character handling function (eg
isalnum, toascii, etc) and any string handling function (eg
strtoll) now has a locale based equivalent (isalnum_l, toascii_l,
strtoll_l, etc).
Cheers
Nick