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