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

Reply via email to