Hi Guys, There are lots of things to report in this month's update...
* The G++ ABI has been increased to version 10. This adds mangling of attributes that affect type identity, such as ia32 calling convention attributes (e.g. stdcall). ABI conflicts can be detected with -Wabi. This option can also be used with an explicit version number to warn about compatibility with a particular version level, e.g. -Wabi=2 to warn about changes relative to ABI version 2. * GCC has a new configure time option: --enable-default-ssp This turns on -fstack-protector-strong by default. * Several new warning options have been added to GCC: -Wtemplates Warns when a primary template declaration is encountered. -Wmultiple-inheritance Warns when a class is defined with multiple direct base classes. -Wvirtual-inheritance Warns when a class is defined with a virtual direct base classes. -Wnamespaces Warns when a namespace definition is opened. These warnings are provided to support coding rules that disallow certain features of C++. The warning are automatically disabled when parsing system header files. -Wunused-const-variable Warns whenever a constant static variable is unused aside from its declaration. This warning is enabled by -Wunused-variable for C, but not for C++. In C++ this is normally not an error since const variables take the place of #define's in C++. -Wsubobject-linkage Warns if a class type has a base or a field whose type uses the anonymous namespace or depends on a type with no linkage. If a type A depends on a type B with no or internal linkage, defining it in multiple translation units would be an ODR violation because the meaning of B is different in each translation unit. If A only appears in a single translation unit, the best way to silence the warning is to give it internal linkage by putting it in an anonymous namespace as well. The compiler doesn't give this warning for types defined in the main .C file, as those are unlikely to have multiple definitions. * Some new target specific options have been added as well: For AArch64 targets the command line option -mtls-size=<size> can be used to specify bit size of immediate TLS offsets. Valid values are 12, 24, 32, 48. Also for AArch64, the option -mpc-relative-literal-loads enables PC relative literal loads. If this option is used, literal pools are assumed to have a range of up to 1MiB and an appropriate instruction sequence is used. For MIPS targets the option -mcompact-branches=<when> can be used to control the form of generated branches. A value of 'never' ensures that compact branch instructions will never be generated. 'Always' means that a compact branch instruction will be generated if available. Otherwise a delay slot form of the branch will be used instead. A value of 'optimal' (which is the default) will cause a delay slot branch to be used if one is available in the current ISA and the delay slot is successfully filled. If the delay slot is not filled, a compact branch will be chosen if one is available. For S/390 systems the option -mhtm can be used to enable the builtins that support the transactional execution facility. This option is enabled by default when -march=zEC12 is used. Also for the S/390 the -mvx option enables the generation of code using the vector extension instructions. This option involves a change to the ABI that affects vector types. It is enabled by default when -march=z13 is used. A second option: -mzvector can be used to enable 'vector' as a new language type, and to enable builtin functions associated with the z13 vector instructions. This option is disabled by default. The Intel x86_64 Skylake architecture is now supported as a parameter to the -march= and -mtune command line options. The values 'skylake' or 'skylake-avx512' can be used. The Xtensa target has a new option -mauto-litpools which will intersperse literal pools in the text section, possibly with multiple pools per function. This option allows the compilation of very big functions, which may not be possible when the -mtext-section-literals is used on its own. * The linker has enhanced its handling of orphan sections. (Orphan sections are section in the input files whose placement is not specified by the linker script being used). The new option: --orphan-handling=[place|warn|error|discard] tells the linker what to do. The default is 'place' which gives the current behaviour, 'warn' and 'error' issue a warning or error message respectively, and 'discard' will silently discard any and all orphan sections. * The new PowerPC64 specific linker command line option --no-save-restore-funcs tells the linker not to provide the out-of-line register save and restore functions used by -Os compiled code. The default is to provide any such referenced function for a normal final link, but not do so for a relocatable link. * The GAS assembler now supports symbol and label names that are enclosed in double quotes ("). This allows them to contain characters that are not part of valid symbol names in high level languages. * The STRINGS program has a new command line option --output-separator=<str> to provide a character or sequence of characters to be used as separators between the strings that are emitted. * GDB 7.10 has been released. GDB 7.10 brings new targets, features and improvements, including: + Improved support for accessing shared libraries directly from the target system when debugging remotely. + Various Guile and Python scripting improvements, including (but not limited to): ** Support for auto-loading Python/Guile scripts contained in a special section named `.debug_gdb_scripts'. ** Support for writing a frame unwinder in Python. + Support for record-replay and reverse debugging on Aarch64 Linux. + GDB now has support for fork events on extended-remote Linux targets (Linux kernels 2.5.60 and later). + Support for DTrace USDT (Userland Static Defined Tracing) probes on x86_64 GNU/Linux targets. + Vector ABI support on S/390 GNU/Linux targets. + GDB now reads the GDBHISTSIZE environment variable rather than HISTSIZE to determine the size of GDB's command history. + Support for setting the parity when connecting to the target using a serial interface. + It is now possible to limit the number of candidates to be considered during completion. + Support for Sun's version of the "stabs" debug file format has been removed. + Support for the following targets and native configurations has been removed: ** HP/PA running HP-UX (hppa*-*-hpux*) ** Itanium running HP-UX (ia64-*-hpux*) Support for the "-xdb" command-line switch (HP-UX XDB compatibility mode) has also been removed. Cheers Nick PS. The monthly gcc/g++ DG tests show little change this time around: GCC/DG unexpected failures -------------------------- Aug'15 Sep'15 arm-eabi 4 4 bfin-elf 11 12 frv-elf 541 24 h8300-elf 71 71 iq2000-elf 684 687 m32r-elf - 9 mcore-elf 519 517 mipsisa32-elf 25 24 mipsisa64-elf 26 25 mn10300-elf 468 12 msp430-elf 100 559 powerpc-eabispe 15 15 rl78-elf 99 99 rx-elf 42 41 sh-elf 6 6 v850e-elf 31 31 x86_64-pc-linux-gnu 2 2 G++/DG unexpected failures -------------------------- Aug'15 Sep'15 arm-eabi 35 35 bfin-elf 23 23 frv-elf - 124 h8300-elf 294 297 iq2000-elf 3296 3336 m32r-elf - 102 mcore-elf 2221 2222 mipsisa32-elf 926 923 mipsisa64-elf 926 926 mn10300-elf - 74 msp430-elf 1050 2449 powerpc-eabispe 135 150 rl78-elf - 884 rx-elf 50 50 sh-elf 35 35 v850e-elf - 94 x86_64-pc-linux-gnu 17 17