Hi Guys, This is an experimental posting of an extended version of my gcc blog. Every month I post an update covering changes in gcc, the binutils, newlib, and gdb here:
http://nickclifton.livejournal.com/ It was suggested that readers of this mailing list might be interested in the information too, so I am posting this trial run. If you hate it, please let me know and I will stop. If you like then please also let me know and I will continue. If you find mistakes or omissions, then I will not be surprised, but I will be very glad to hear them. The blog itself came about because every month I perform a merge between the public FSF sources and Red Hat's internal, development sources. During the course of this merge I often find out about changes and updates that I had not even realised had happened. I also try to keep track of how well different targets are building and performing in order to get an overall feel for the state of the sources. Cheers Nick ----------------------------------------------------------------------- There are several things to report this month: * The GCC version 5 branch has been created. No releases have been made from this branch yet, but when one happens it will be GCC 5.1. Meanwhile the mainline development sources have been switched to calling themselves GCC version 6. * Support has been added for configuring targets that use the Nuxi CloudABI. More details of this ABI can be found here: https://github.com/NuxiNL/cloudlibc * The linker and assembler now support an option to control how DWARF debug sections are compressed: --compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi] Selecting NONE disables compression. This is the default behaviour if this option is not used. Selecting ZLIB or ZLIB-GNU compresses the sections and then renames them to start with a .z. This is the old method of indicating that a debug section has been compressed. Selecting ZLIB-GABI compresses the sections, but rather than renaming them they instead have the new SHF_COMPRESSED bit set in their ELF section header. The other binutils tools have been updated to recognise and handle this SHF_COMPRESSED bit. More information on the new bit can be found here: https://groups.google.com/forum/#!msg/generic-abi/dBOS1H47Q64/PaJvELtaJrsJ In another, related change, the binutils will no longer compress a debug section if doing so would actually make it bigger. Also the zlib compression/decompression library sources have now been brought in to the binutils git repository and are now a standard part of a binutils release. * The linker has a new command line option: --warn-orphan This option tells the linker to generate a warning message whenever it has to guess at the placement of a section in the output file. This happens when the linker script in use does not specify where the section should go. * The compiler has a new option: -fsanitize-sections=sec1,sec2,... This tells the address sanitizer to add protection to global variables defined in the named section(s). By default any globals in sections with user defined names are not sanitized as the compiler does not know what is going to happen to them. In particular variables in such sections sometimes end up being merged into an array of values, where the presence of address sanitization markers would break the array. * The AVR port of the compiler has a new command line option: -nodevicelib This tells the compiler not to link against AVR-LibC's device specific library libdev.a. * The RX port of GCC has a new command line option to disable the use of RX string instructions (SMOVF, SUNTIL, etc). This matters because it is unsafe to use these instructions if the program might access the I/O portion of the address space. * The RL78 port of GCC now has support the multiply and divide instructions provided by the G14 cpu, and the divide hardware peripheral provided by the G13 core. * GDB now honours the content of the file /proc/PID/coredump_filter (PID is the process ID) on GNU/Linux systems. This file can be used to specify the types of memory mappings that will be included in a corefile. For more information, please refer to the manual page of "core(5)". GDB also has a new command: "set use-coredump-filter on|off". It allows to set whether GDB will read the content of the /proc/PID/coredump_filter file when generating a corefile. * GDB's "info os cpus" command on GNU/Linux can now display information on the cpus/cores on the system. * GDB has two new commands: "set serial parity odd|even|none" and "show serial parity". These allows to set or show parity for the remote serial I/O. Cheers Nick ================================================================ GCC Merge: Toolchains that do not build GCC successfully: None. Toolchains that do not build LIBGCC successfully: mep-elf: ICE: in pre_and_rev_post_order_compute, at cfganal.c Toolchains that do not build NEWLIB successfully: fr30-elf: ICE: unrecognizable insn: (set (reg:DI) (subreg:DI (reg:DF) 0)) m32c-elf: ICE: in expand_call, at calls.c Toolchains that do not build the target LIBIBERTY successfully: None. Toolchains that do not build LIBSTDC++-V3 successfully: cr16-elf: ICE: in gen_rtx_SUBREG in emit-rtl.c Toolchains that fail to build GDB: Not supported: arc-elf cr16-elf epiphany-elf ia64-elf mcore-elf mmix-mmixware nds32le-elf nios2-elf pdp11-aout tilepro-gnu-linux visium-elf No sim: mips64vr-elf Toolchains that DO build all their target libraries and gdb: aarch64-elf arm-eabi avr-elf bfin-elf c6x-elf cris-elf frv-elf h8300-elf i386-elf iq2000-elf lm32-elf m32r-elf mipsisa32-elf mipsisa64-elf mn10300-elf moxie-elf msp430-elf rl78-elf powerpc-eabispe powerpc-elf rx-elf sh-elf sh64-elf spu-elf tx39-elf v850e-elf visium-elf xstormy16-elf ---------------------------------------------------------------- [SIM based] GCC DG Testsuite Results The chart below is sorted on the number of unexpected failures, rather than alphabetically, in order to provide a small guide to toolchain quality. [The better/worse number shows how the results have changed compared to last month]. arm-eabi ... failures: 0 sh-elf ... failures: 1 x86_64 native ... failures: 1 mn10300-elf ... failures: 4 frv-elf ... failures: 5 msp430-elf ... failures: 8 v850e-elf ... failures: 8 rx-elf ... failures: 9 [Worse by 1] m32r-elf ... failures: 10 powerpc-eabispe ... failures: 12 powerpc-elf ... failures: 13 rl78-elf ... failures: 17 [Worse by 1] bfin-elf ... failures: 19 h8300-elf ... failures: 22 [Worse by 2] mipsisa32-elf ... failures: 22 [Worse by 2] mipsisa64-elf ... failures: 24 [Worse by 2] iq2000-elf ... failures: 43 [Better by 2] aarch64-elf ... failures: 68 [Better by 1] mcore-elf ... failures: 94 ---------------------------------------------------------------- x86_64 native bootstrap: BEFORE: Fail: ld-new: mpfr/src/.libs/libmpfr.a(agm.o)(.text+0x4000000620): reloc against `mpfr_mul': error 2 gcc/lto/Make-lang.in:74: recipe for target 'lto1' failed AFTER: Success. ---------------------------------------------------------------- x86_64 GCC testsuite BEFORE AFTER ------ ------ # of expected passes 110193 110473 # of unexpected failures 161 160 # of unexpected successes 18 18 # of expected failures 277 278 # of unresolved testcases 7 7 # of unsupported tests 1671 1674 Tests that used to PASS but now FAIL: None. x86_64 G++ testsuite BEFORE AFTER ------ ----- # of expected passes 84875 85278 # of unexpected failures 54 54 # of unexpected successes 12 12 # of expected failures 272 272 # of unresolved testcases 19 15 # of unsupported tests 3569 3623 Tests that used to PASS but now FAIL: None. x86_64 GDB testsuite BEFORE AFTER ------ ----- # of expected passes 22429 22414 # of unexpected failures 131 130 # of expected failures 31 30 # of known failures 53 54 # of unresolved testcases 5 5 # of untested testcases 120 120 # of unsupported tests 100 100 Tests that used to PASS but now FAIL: None. ================================================================ BINUTILS Merge All ports build successfully before and after the merge. Ports which have FEWER failures after the merge: None. Ports that have the SAME number of failures before and after the merge: aarch64-elf alpha-netbsd arc-elf arm-eabi avr-elf bfin-elf c6x-elf cr16-elf cris-elf crx-elf dlx-elf epiphany-elf fido-elf fr30-elf frv-elf frv-uclinux ft32-elf hppa-linux-gnu i386-darwin i386-elf i386-netware i386-pc-go32 i686-pc-cygwin i686-pc-linux-gnu ia64-elf iq2000-elf lm32-elf lm32-rtems4.0 m32c-elf m32r-elf m68hc12-elf mcore-elf mcore-pe microblaze-elf mingw32-pe mips64vr-elf mipsisa32-elf mipsisa64-elf mmix-mmixware mn10300-elf moxie-elf msp430-elf mt-elf nds32le-elf nios2-elf or1k-elf pdp11-aout powerpc-eabispe powerpc-elf powerpc64-linux-gnu ppc-linux rx-elf s390-linux s390x-ibm-tpf sh-elf sh-pe sh64-elf spu-elf tic6x-elf tilegx-gnu-linux tilepro-gnu-linux tx39-elf v850e-elf vax-netbsdelf visium-elf x86_64-pc-cygwin x86_64-pc-linux-gnu x86_64-pc-mingw64 xstormy16-elf xtensa-elf z8k-coff Ports which have MORE failures after the merge: mep-elf BIN REGRESSION: objdump compress debug sections BIN REGRESSION: objdump compress debug sections 3 h8300-elf BIN REGRESSION: objdump compress debug sections 3 rl78-elf LD REGRESSION: --gc-sections with multiple debug sections am33_2.0-linux LD REGRESSION: --gc-sections with multiple debug sections