To confirm: Yes, I've signed the FSF copyright assignment document, and yes we've discussed the changes relative to my own (which were mostly just cleanups and sanity anyway). I'm Gregor Richards and I approve this message.

With valediction,
 - Gregor Richards


On 04/20/2015 02:49 PM, Szabolcs Nagy wrote:
This patch set adds musl libc[0] support to GCC.

The patches were originally developed by Gregor Richards[1][2],
who I believe have already done the FSF copyright assignment and agrees
with the changes I made (please verify).  I only did minor cleanups
to make the patches better suited for upstream.

Issues I don't have patches for:

* On powerpc it seems the only configure option to choose the default
long-double abi is --with-long-double-128, but that's the default with
sufficiently new glibc. (musl gets 64bit long-double because the glibc
version check fails, this is ok, because there is no ibm128 support in
musl, but it would be better if --with-long-double-64 could be set
explicitly or even ieee128 abi if gcc supports that).

* libcilkrts uses pthread_yield on linux instead of sched_yield by
default, but musl does not have the non-standard pthread_yield symbol.

Tests:

I only tested the C and C++ languages.  GCJ needs further patching,
I haven't tested gfortran nor Ada.  libsanitizer has to be disabled
for musl.  I built cross compilers for various targets musl supports
and ran x86_64-linux-musl cross compiler (musl target glibc host)
and native musl make check.  There were several errors, some of the
causes:

* libcilkrts.so has undefined ref to pthread_yield
* ifunc is not supported by musl
* ifunc is used in x86 libatomic.so for __atomic_store_16
* gcc stdatomic.h has some incompatible typedefs with musl stdint.h
* musl does not support unwind across libc calls or signal handlers
* splitstacks does not work (undef refs to __morestack* in libgcc)
* musl does not yet have __memcpy_chk etc.
* -fshort-wchar is not supported
* i've seen x86 specific avx failures
* atexit during exit fails with musl (some c++ destructor tests)

This fixes BZ 58446 and 55807 which requested musl support.

[0] http://www.musl-libc.org/
[1] https://github.com/GregorR/musl-gcc-patches
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58446

--
Changes:
  fixincludes/mkfixinc.sh                     |    3 +-
  gcc/config.gcc                              |    9 ++-
  gcc/config/aarch64/aarch64-linux.h          |    8 ++
  gcc/config/arm/linux-eabi.h                 |   17 +++++
  gcc/config/i386/linux.h                     |    1 +
  gcc/config/i386/linux64.h                   |    4 +
  gcc/config/i386/pmm_malloc.h                |    9 ++-
  gcc/config/linux.h                          |  105 +++++++++++++++++++++++----
  gcc/config/linux.opt                        |    4 +
  gcc/config/microblaze/linux.h               |   16 +++-
  gcc/config/mips/linux.h                     |    7 ++
  gcc/config/rs6000/linux64.h                 |   12 ++-
  gcc/config/rs6000/secureplt.h               |    1 +
  gcc/config/rs6000/sysv4.h                   |   16 +++-
  gcc/config/sh/linux.h                       |    7 ++
  gcc/configure                               |    7 ++
  gcc/configure.ac                            |    7 ++
  libgcc/unwind-dw2-fde-dip.c                 |    6 ++
  libgfortran/acinclude.m4                    |    2 +-
  libgfortran/configure                       |    2 +-
  libitm/config/arm/hwcap.cc                  |    2 +-
  libitm/config/linux/x86/tls.h               |    8 +-
  libstdc++-v3/config/os/generic/os_defines.h |    5 ++
  libstdc++-v3/configure.host                 |    3 +
  24 files changed, 227 insertions(+), 34 deletions(-)


Reply via email to