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