* musl and gcc-4.8 (sabotage)
@ 2013-03-28 20:38 Daniel Cegiełka
2013-03-28 23:32 ` John Spencer
0 siblings, 1 reply; 16+ messages in thread
From: Daniel Cegiełka @ 2013-03-28 20:38 UTC (permalink / raw)
To: musl
[-- Attachment #1: Type: text/plain, Size: 2951 bytes --]
Hi,
Is anyone able to compile gcc-4.8 with musl? I try to prepare patch
based on the work of Gregor Richards... but without success. I wonder
if the error isn't in gcc.
patch gcc-4.8-musl.diff and several fixes from sabotage distro:
libibertyfix libiberty
# Prevent libffi from being installed
sed -i -e 's/\(install.*:\) install-.*recursive/\1/'
"${S}"/libffi/Makefile.in
sed -i -e 's/\(install-data-am:\).*/\1/'
"${S}"/libffi/include/Makefile.in
configure:
CHOST="x86_64-pc-linux-musl"
PREFIX="/usr"
BINPATH="${PREFIX}/lib/gcc/$version/bin"
LIBPATH="${PREFIX}/lib/gcc/$version/lib"
DATAPATH="${PREFIX}/share/gcc/$version/"
STDCXX_INCDIR="${PREFIX}/include/c++/$version"
GCC_LANG="c,c++"
./configure \
--host="${CHOST}" \
--build="${CHOST}" \
--target="${CHOST}" \
--prefix="${PREFIX}" \
--exec-prefix="${PREFIX}" \
--bindir="${BINPATH}" \
--libdir="${LIBPATH}" \
--with-slib=/lib \
--includedir=/usr/lib/gcc/$version/include \
--with-gxx-include-dir="${STDCXX_INCDIR}" \
--datadir="${DATAPATH}" \
--mandir="${DATAPATH}"/man \
--infodir="${DATAPATH}"/info \
--with-python-dir=/usr/share/gcc/$version/python \
--with-newlib \
--with-headers=no \
--disable-altivec \
--disable-fixed-point \
--without-ppl \
--without-cloog \
--enable-lto \
--disable-nls \
--with-system-zlib \
--enable-obsolete \
--disable-werror \
--enable-secureplt \
--disable-multilib \
--with-multilib-list=m64 \
--disable-libmudflap \
--disable-libssp \
--enable-esp \
--enable-libgomp \
--enable-checking=release \
--disable-libgcj \
--enable-languages="${GCC_LANG}" \
--enable-shared \
--enable-threads=posix \
--enable-tls \
--enable-__cxa_atexit \
--enable-clocale=generic
error:
make[3]: Entering directory
`/var/tmp/ports/gcc/work/gcc-4.8-20130321/x86_64-pc-linux-musl/libstdc++-v3/include'
echo timestamp > stamp-pb
make[3]: *** No rule to make target
`/var/tmp/ports/gcc/work/gcc-4.8-20130321/libstdc++-v3/config//ctype_base.h',
needed by `stamp-host'. Stop.
This header file is located in (ls)
/var/tmp/ports/gcc/work/gcc-4.8-20130321/libstdc++-v3/config/os/generic/
ctype_base.h ctype_configure_char.cc ctype_inline.h
error_constants.h os_defines.h
and a little strange that gcc does not see it. Any thoughts?
Daniel
[-- Attachment #2: gcc-4.8-musl.diff --]
[-- Type: application/octet-stream, Size: 14583 bytes --]
diff -urN gcc-4.8-20130203.orig/gcc/config/linux.h gcc-4.8-20130203/gcc/config/linux.h
--- gcc-4.8-20130203.orig/gcc/config/linux.h Sun Feb 10 21:27:40 2013
+++ gcc-4.8-20130203/gcc/config/linux.h Sun Feb 10 21:45:07 2013
@@ -32,10 +32,12 @@
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
#else
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
#endif
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
@@ -53,18 +55,21 @@
uClibc or Bionic is the default C library and whether
-muclibc or -mglibc or -mbionic has been passed to change the default. */
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
#if DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
#elif DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
#elif DEFAULT_LIBC == LIBC_BIONIC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
#else
#error "Unsupported DEFAULT_LIBC"
#endif /* DEFAULT_LIBC */
@@ -81,19 +86,23 @@
#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
#define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
#define GNU_USER_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
- BIONIC_DYNAMIC_LINKER)
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define GNU_USER_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
- BIONIC_DYNAMIC_LINKER32)
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
- BIONIC_DYNAMIC_LINKER64)
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define GNU_USER_DYNAMIC_LINKERX32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
- BIONIC_DYNAMIC_LINKERX32)
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
/* Determine whether the entire c99 runtime
is present in the runtime library. */
diff -r 193f80e01b02 -r 45cd88d4fb7b gcc/config/linux.opt
--- a/gcc/config/linux.opt Wed Nov 21 21:17:38 2012 -0500
+++ b/gcc/config/linux.opt Wed Nov 21 21:19:19 2012 -0500
@@ -30,3 +30,7 @@
muclibc
Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
Use uClibc C library
+
+mmusl
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
+Use musl C library
diff -urN gcc-4.8-20130203.orig/gcc/ginclude/stddef.h gcc-4.8-20130203/gcc/ginclude/stddef.h
--- gcc-4.8-20130203.orig/gcc/ginclude/stddef.h Sun Feb 10 22:04:42 2013
+++ gcc-4.8-20130203/gcc/ginclude/stddef.h Sun Feb 10 22:10:59 2013
@@ -181,6 +181,7 @@
#ifndef _GCC_SIZE_T
#ifndef _SIZET_
#ifndef __size_t
+#ifndef __DEFINED_size_t /* musl */
#define __size_t__ /* BeOS */
#define __SIZE_T__ /* Cray Unicos/Mk */
#define _SIZE_T
@@ -197,6 +198,7 @@
#define ___int_size_t_h
#define _GCC_SIZE_T
#define _SIZET_
+#define __DEFINED_size_t /* musl */
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|| defined(__FreeBSD_kernel__)
/* __size_t is a typedef on FreeBSD 5, must not trash it. */
@@ -231,6 +233,7 @@
#endif /* _SIZE_T */
#endif /* __SIZE_T__ */
#endif /* __size_t__ */
+#endif /* musl */
#undef __need_size_t
#endif /* _STDDEF_H or __need_size_t. */
diff -r 45cd88d4fb7b -r 0afd9d82498d libgomp/config/posix/time.c
--- a/libgomp/config/posix/time.c Wed Nov 21 21:19:19 2012 -0500
+++ b/libgomp/config/posix/time.c Wed Nov 21 21:20:22 2012 -0500
@@ -28,6 +28,8 @@
The following implementation uses the most simple POSIX routines.
If present, POSIX 4 clocks should be used instead. */
+#define _POSIX_C_SOURCE 199309L /* for clocks */
+
#include "libgomp.h"
#include <unistd.h>
#if TIME_WITH_SYS_TIME
diff -r 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux.h
--- a/gcc/config/i386/linux.h Wed Nov 21 21:20:22 2012 -0500
+++ b/gcc/config/i386/linux.h Wed Nov 21 21:21:21 2012 -0500
@@ -22,3 +22,4 @@
#define GNU_USER_LINK_EMULATION "elf_i386"
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
diff -r 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux64.h
--- a/gcc/config/i386/linux64.h Wed Nov 21 21:20:22 2012 -0500
+++ b/gcc/config/i386/linux64.h Wed Nov 21 21:21:21 2012 -0500
@@ -31,3 +31,7 @@
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
diff -r 0afd9d82498d -r 53f3e21a7d14 libitm/config/linux/x86/tls.h
--- a/libitm/config/linux/x86/tls.h Wed Nov 21 21:20:22 2012 -0500
+++ b/libitm/config/linux/x86/tls.h Wed Nov 21 21:21:21 2012 -0500
@@ -25,16 +25,19 @@
#ifndef LIBITM_X86_TLS_H
#define LIBITM_X86_TLS_H 1
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
/* Use slots in the TCB head rather than __thread lookups.
GLIBC has reserved words 10 through 13 for TM. */
#define HAVE_ARCH_GTM_THREAD 1
#define HAVE_ARCH_GTM_THREAD_DISP 1
#endif
+#endif
#include "config/generic/tls.h"
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
namespace GTM HIDDEN {
#ifdef __x86_64__
@@ -101,5 +104,6 @@
} // namespace GTM
#endif /* >= GLIBC 2.10 */
+#endif
#endif // LIBITM_X86_TLS_H
diff -r 53f3e21a7d14 -r 0a4e297edad6 gcc/config/arm/linux-eabi.h
--- a/gcc/config/arm/linux-eabi.h Wed Nov 21 21:21:21 2012 -0500
+++ b/gcc/config/arm/linux-eabi.h Wed Nov 21 21:21:54 2012 -0500
@@ -64,6 +64,10 @@
#undef GLIBC_DYNAMIC_LINKER
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
+/* musl has no "classic" (i.e. broken) mode */
+#undef MUSL_DYNAMIC_LINKER
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-arm.so.1"
+
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
use the GNU/Linux version, not the generic BPABI version. */
#undef LINK_SPEC
diff -r 53f3e21a7d14 -r 0a4e297edad6 libitm/config/arm/hwcap.cc
--- a/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:21 2012 -0500
+++ b/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:54 2012 -0500
@@ -40,7 +40,11 @@
#ifdef __linux__
#include <unistd.h>
+#ifdef __GLIBC__
#include <sys/fcntl.h>
+#else
+#include <fcntl.h>
+#endif
#include <elf.h>
static void __attribute__((constructor))
diff -r 0a4e297edad6 -r 78025c74c5c1 gcc/config/mips/linux.h
--- a/gcc/config/mips/linux.h Wed Nov 21 21:21:54 2012 -0500
+++ b/gcc/config/mips/linux.h Wed Nov 21 21:23:49 2012 -0500
@@ -19,3 +19,5 @@
<http://www.gnu.org/licenses/>. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips.so.1"
diff -urN gcc-4.8-20130203.orig/gcc/config.gcc gcc-4.8-20130203/gcc/config.gcc
--- gcc-4.8-20130203.orig/gcc/config.gcc Sun Feb 10 20:59:36 2013
+++ gcc-4.8-20130203/gcc/config.gcc Sun Feb 10 21:17:44 2013
@@ -546,7 +546,7 @@
esac
# Common C libraries.
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
# Common parts for widely ported systems.
case ${target} in
@@ -648,6 +648,9 @@
;;
*-*-*uclibc*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
+ ;;
+ *-*-*musl*)
+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
;;
*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
diff -urN gcc-4.8-20130203.orig/libstdc++-v3/configure.host gcc-4.8-20130203/libstdc++-v3/configure.host
--- gcc-4.8-20130203.orig/libstdc++-v3/configure.host Sun Feb 10 21:00:14 2013
+++ gcc-4.8-20130203/libstdc++-v3/configure.host Sun Feb 10 21:14:41 2013
@@ -264,6 +264,13 @@
os_include_dir="os/bsd/freebsd"
;;
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+ # check for musl by target
+ case "${host_os} in
+ *-musl*)
+ os_include_dir="os/generic"
+ ;;
+ *)
+
if [ "$uclibc" = "yes" ]; then
os_include_dir="os/uclibc"
elif [ "$bionic" = "yes" ]; then
@@ -272,6 +279,10 @@
os_include_dir="os/gnu-linux"
fi
;;
+
+ esac
+ ;;
+
hpux*)
os_include_dir="os/hpux"
;;
diff -r 78025c74c5c1 gcc/config/rs6000/linux64.h
--- a/gcc/config/rs6000/linux64.h Wed Nov 21 21:23:49 2012 -0500
+++ b/gcc/config/rs6000/linux64.h Wed Nov 21 21:45:58 2012 -0500
@@ -362,17 +362,21 @@
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
#elif DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER32 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
diff -r 78025c74c5c1 gcc/config/rs6000/secureplt.h
--- a/gcc/config/rs6000/secureplt.h Wed Nov 21 21:23:49 2012 -0500
+++ b/gcc/config/rs6000/secureplt.h Wed Nov 21 21:45:58 2012 -0500
@@ -18,3 +18,4 @@
<http://www.gnu.org/licenses/>. */
#define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
diff -urN gcc-4.8-20130203.orig/gcc/config/rs6000/sysv4.h gcc-4.8-20130203/gcc/config/rs6000/sysv4.h
--- gcc-4.8-20130203.orig/gcc/config/rs6000/sysv4.h Mon Feb 11 07:48:22 2013
+++ gcc-4.8-20130203/gcc/config/rs6000/sysv4.h Mon Feb 11 08:15:53 2013
@@ -551,6 +551,9 @@
#ifndef CC1_SECURE_PLT_DEFAULT_SPEC
#define CC1_SECURE_PLT_DEFAULT_SPEC ""
#endif
+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
+#endif
/* Pass -G xxx to the compiler and set correct endian mode. */
#define CC1_SPEC "%{G*} %(cc1_cpu) \
@@ -611,7 +614,8 @@
%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-i960-old: --oformat elf32-powerpcle} \
- }}}}"
+ }}}} \
+%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
/* Any specific OS flags. */
#define LINK_OS_SPEC "\
@@ -789,15 +793,18 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
@@ -923,6 +930,7 @@
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \
{ "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
+ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff -urN gcc-4.8-20130203.orig/gcc/config.gcc gcc-4.8-20130203/gcc/config.gcc
--- gcc-4.8-20130203.orig/gcc/config.gcc Mon Feb 11 07:48:22 2013
+++ gcc-4.8-20130203/gcc/config.gcc Mon Feb 11 08:01:07 2013
@@ -2088,6 +2088,10 @@
powerpc*-*-linux*paired*)
tm_file="${tm_file} rs6000/750cl.h" ;;
esac
+ case ${target} in
+ *-linux*-musl*)
+ enable_secureplt=yes ;;
+ esac
if test x${enable_secureplt} = xyes; then
tm_file="rs6000/secureplt.h ${tm_file}"
fi
[-- Attachment #3: build.log.xz --]
[-- Type: application/octet-stream, Size: 39032 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-28 20:38 musl and gcc-4.8 (sabotage) Daniel Cegiełka
@ 2013-03-28 23:32 ` John Spencer
2013-03-28 23:46 ` Daniel Cegiełka
0 siblings, 1 reply; 16+ messages in thread
From: John Spencer @ 2013-03-28 23:32 UTC (permalink / raw)
To: musl
On 03/28/2013 09:38 PM, Daniel Cegiełka wrote:
> Hi,
> Is anyone able to compile gcc-4.8 with musl? I try to prepare patch
> based on the work of Gregor Richards... but without success. I wonder
> if the error isn't in gcc.
>
>
> make[3]: Entering directory
> `/var/tmp/ports/gcc/work/gcc-4.8-20130321/x86_64-pc-linux-musl/libstdc++-v3/include'
> echo timestamp> stamp-pb
> make[3]: *** No rule to make target
> `/var/tmp/ports/gcc/work/gcc-4.8-20130321/libstdc++-v3/config//ctype_base.h',
> needed by `stamp-host'. Stop.
as you can see, the string os/generic is missing after config/
this section in your patch should make it pick that:
+ # check for musl by target
+ case "${host_os} in
+ *-musl*)
+ os_include_dir="os/generic"
+ ;;
+ *)
+
i'd try adding some debug code into that configure script and see what
the actual values are and why that path is not taken.
>
> This header file is located in (ls)
> /var/tmp/ports/gcc/work/gcc-4.8-20130321/libstdc++-v3/config/os/generic/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-28 23:32 ` John Spencer
@ 2013-03-28 23:46 ` Daniel Cegiełka
2013-03-28 23:58 ` Daniel Cegiełka
0 siblings, 1 reply; 16+ messages in thread
From: Daniel Cegiełka @ 2013-03-28 23:46 UTC (permalink / raw)
To: musl
[-- Attachment #1: Type: text/plain, Size: 1927 bytes --]
>
> as you can see, the string os/generic is missing after config/
>
> this section in your patch should make it pick that:
>
> + # check for musl by target
> + case "${host_os} in
> + *-musl*)
> + os_include_dir="os/generic"
> + ;;
> + *)
> +
>
>
> i'd try adding some debug code into that configure script and see what the
> actual values are and why that path is not taken.
I forced os-generic (works with musl). But now I have a new error
(libsanitizer):
In file included from
../../.././libsanitizer/sanitizer_common/sanitizer_common.h:17:0,
from
../../.././libsanitizer/sanitizer_common/sanitizer_linux.cc:14:
../../.././libsanitizer/sanitizer_common/sanitizer_linux.cc: In
function 'void __sanitizer::GetThreadStackTopAndBottom(bool,
__sanitizer::uptr*, __sanitizer::uptr*)':
../../.././libsanitizer/sanitizer_common/sanitizer_linux.cc:201:52:
error: 'pthread_getattr_np' was not declared in this scope
CHECK_EQ(pthread_getattr_np(pthread_self(), &attr), 0);
^
../../.././libsanitizer/sanitizer_common/sanitizer_internal_defs.h:174:33:
note: in definition of macro 'CHECK_IMPL'
__sanitizer::u64 v1 = (u64)(c1); \
^
../../.././libsanitizer/sanitizer_common/sanitizer_linux.cc:201:3:
note: in expansion of macro 'CHECK_EQ'
CHECK_EQ(pthread_getattr_np(pthread_self(), &attr), 0);
^
make[4]: *** [sanitizer_linux.lo] Error 1
make[4]: *** Waiting for unfinished jobs....
libtool: compile:
/var/tmp/ports/gcc/work/gcc-4.8.0-RC-20130316/host-x86_64-pc-linux-musl/gcc/xgcc
-shared-libgcc -B/var/tmp/ports/gcc/work/gcc-4.8.0-RC-20130316/host-x86_64-p$
mv -f .deps/sanitizer_libc.Tpo .deps/sanitizer_libc.Plo
make[4]: Leaving directory
`/var/tmp/ports/gcc/work/gcc-4.8.0-RC-20130316/x86_64-pc-linux-musl/libsanitizer/sanitizer_common'
make[3]: *** [all-recursive] Error 1
Daniel
[-- Attachment #2: gcc-4.8-musl.diff --]
[-- Type: application/octet-stream, Size: 14495 bytes --]
diff -urN gcc-4.8-20130203.orig/gcc/config/linux.h gcc-4.8-20130203/gcc/config/linux.h
--- gcc-4.8-20130203.orig/gcc/config/linux.h Sun Feb 10 21:27:40 2013
+++ gcc-4.8-20130203/gcc/config/linux.h Sun Feb 10 21:45:07 2013
@@ -32,10 +32,12 @@
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
#else
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
#endif
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
@@ -53,18 +55,21 @@
uClibc or Bionic is the default C library and whether
-muclibc or -mglibc or -mbionic has been passed to change the default. */
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
#if DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
#elif DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
#elif DEFAULT_LIBC == LIBC_BIONIC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
#else
#error "Unsupported DEFAULT_LIBC"
#endif /* DEFAULT_LIBC */
@@ -81,19 +86,23 @@
#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
#define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
#define GNU_USER_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
- BIONIC_DYNAMIC_LINKER)
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define GNU_USER_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
- BIONIC_DYNAMIC_LINKER32)
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
- BIONIC_DYNAMIC_LINKER64)
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define GNU_USER_DYNAMIC_LINKERX32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
- BIONIC_DYNAMIC_LINKERX32)
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
/* Determine whether the entire c99 runtime
is present in the runtime library. */
diff -r 193f80e01b02 -r 45cd88d4fb7b gcc/config/linux.opt
--- a/gcc/config/linux.opt Wed Nov 21 21:17:38 2012 -0500
+++ b/gcc/config/linux.opt Wed Nov 21 21:19:19 2012 -0500
@@ -30,3 +30,7 @@
muclibc
Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
Use uClibc C library
+
+mmusl
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
+Use musl C library
diff -urN gcc-4.8-20130203.orig/gcc/ginclude/stddef.h gcc-4.8-20130203/gcc/ginclude/stddef.h
--- gcc-4.8-20130203.orig/gcc/ginclude/stddef.h Sun Feb 10 22:04:42 2013
+++ gcc-4.8-20130203/gcc/ginclude/stddef.h Sun Feb 10 22:10:59 2013
@@ -181,6 +181,7 @@
#ifndef _GCC_SIZE_T
#ifndef _SIZET_
#ifndef __size_t
+#ifndef __DEFINED_size_t /* musl */
#define __size_t__ /* BeOS */
#define __SIZE_T__ /* Cray Unicos/Mk */
#define _SIZE_T
@@ -197,6 +198,7 @@
#define ___int_size_t_h
#define _GCC_SIZE_T
#define _SIZET_
+#define __DEFINED_size_t /* musl */
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|| defined(__FreeBSD_kernel__)
/* __size_t is a typedef on FreeBSD 5, must not trash it. */
@@ -231,6 +233,7 @@
#endif /* _SIZE_T */
#endif /* __SIZE_T__ */
#endif /* __size_t__ */
+#endif /* musl */
#undef __need_size_t
#endif /* _STDDEF_H or __need_size_t. */
diff -r 45cd88d4fb7b -r 0afd9d82498d libgomp/config/posix/time.c
--- a/libgomp/config/posix/time.c Wed Nov 21 21:19:19 2012 -0500
+++ b/libgomp/config/posix/time.c Wed Nov 21 21:20:22 2012 -0500
@@ -28,6 +28,8 @@
The following implementation uses the most simple POSIX routines.
If present, POSIX 4 clocks should be used instead. */
+#define _POSIX_C_SOURCE 199309L /* for clocks */
+
#include "libgomp.h"
#include <unistd.h>
#if TIME_WITH_SYS_TIME
diff -r 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux.h
--- a/gcc/config/i386/linux.h Wed Nov 21 21:20:22 2012 -0500
+++ b/gcc/config/i386/linux.h Wed Nov 21 21:21:21 2012 -0500
@@ -22,3 +22,4 @@
#define GNU_USER_LINK_EMULATION "elf_i386"
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
diff -r 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux64.h
--- a/gcc/config/i386/linux64.h Wed Nov 21 21:20:22 2012 -0500
+++ b/gcc/config/i386/linux64.h Wed Nov 21 21:21:21 2012 -0500
@@ -31,3 +31,7 @@
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
diff -r 0afd9d82498d -r 53f3e21a7d14 libitm/config/linux/x86/tls.h
--- a/libitm/config/linux/x86/tls.h Wed Nov 21 21:20:22 2012 -0500
+++ b/libitm/config/linux/x86/tls.h Wed Nov 21 21:21:21 2012 -0500
@@ -25,16 +25,19 @@
#ifndef LIBITM_X86_TLS_H
#define LIBITM_X86_TLS_H 1
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
/* Use slots in the TCB head rather than __thread lookups.
GLIBC has reserved words 10 through 13 for TM. */
#define HAVE_ARCH_GTM_THREAD 1
#define HAVE_ARCH_GTM_THREAD_DISP 1
#endif
+#endif
#include "config/generic/tls.h"
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
namespace GTM HIDDEN {
#ifdef __x86_64__
@@ -101,5 +104,6 @@
} // namespace GTM
#endif /* >= GLIBC 2.10 */
+#endif
#endif // LIBITM_X86_TLS_H
diff -r 53f3e21a7d14 -r 0a4e297edad6 gcc/config/arm/linux-eabi.h
--- a/gcc/config/arm/linux-eabi.h Wed Nov 21 21:21:21 2012 -0500
+++ b/gcc/config/arm/linux-eabi.h Wed Nov 21 21:21:54 2012 -0500
@@ -64,6 +64,10 @@
#undef GLIBC_DYNAMIC_LINKER
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
+/* musl has no "classic" (i.e. broken) mode */
+#undef MUSL_DYNAMIC_LINKER
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-arm.so.1"
+
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
use the GNU/Linux version, not the generic BPABI version. */
#undef LINK_SPEC
diff -r 53f3e21a7d14 -r 0a4e297edad6 libitm/config/arm/hwcap.cc
--- a/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:21 2012 -0500
+++ b/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:54 2012 -0500
@@ -40,7 +40,11 @@
#ifdef __linux__
#include <unistd.h>
+#ifdef __GLIBC__
#include <sys/fcntl.h>
+#else
+#include <fcntl.h>
+#endif
#include <elf.h>
static void __attribute__((constructor))
diff -r 0a4e297edad6 -r 78025c74c5c1 gcc/config/mips/linux.h
--- a/gcc/config/mips/linux.h Wed Nov 21 21:21:54 2012 -0500
+++ b/gcc/config/mips/linux.h Wed Nov 21 21:23:49 2012 -0500
@@ -19,3 +19,5 @@
<http://www.gnu.org/licenses/>. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips.so.1"
diff -urN gcc-4.8-20130203.orig/gcc/config.gcc gcc-4.8-20130203/gcc/config.gcc
--- gcc-4.8-20130203.orig/gcc/config.gcc Sun Feb 10 20:59:36 2013
+++ gcc-4.8-20130203/gcc/config.gcc Sun Feb 10 21:17:44 2013
@@ -546,7 +546,7 @@
esac
# Common C libraries.
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
# Common parts for widely ported systems.
case ${target} in
@@ -648,6 +648,9 @@
;;
*-*-*uclibc*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
+ ;;
+ *-*-*musl*)
+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
;;
*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
diff -r 78025c74c5c1 gcc/config/rs6000/linux64.h
--- a/gcc/config/rs6000/linux64.h Wed Nov 21 21:23:49 2012 -0500
+++ b/gcc/config/rs6000/linux64.h Wed Nov 21 21:45:58 2012 -0500
@@ -362,17 +362,21 @@
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
#elif DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER32 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
diff -r 78025c74c5c1 gcc/config/rs6000/secureplt.h
--- a/gcc/config/rs6000/secureplt.h Wed Nov 21 21:23:49 2012 -0500
+++ b/gcc/config/rs6000/secureplt.h Wed Nov 21 21:45:58 2012 -0500
@@ -18,3 +18,4 @@
<http://www.gnu.org/licenses/>. */
#define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
diff -urN gcc-4.8-20130203.orig/gcc/config/rs6000/sysv4.h gcc-4.8-20130203/gcc/config/rs6000/sysv4.h
--- gcc-4.8-20130203.orig/gcc/config/rs6000/sysv4.h Mon Feb 11 07:48:22 2013
+++ gcc-4.8-20130203/gcc/config/rs6000/sysv4.h Mon Feb 11 08:15:53 2013
@@ -551,6 +551,9 @@
#ifndef CC1_SECURE_PLT_DEFAULT_SPEC
#define CC1_SECURE_PLT_DEFAULT_SPEC ""
#endif
+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
+#endif
/* Pass -G xxx to the compiler and set correct endian mode. */
#define CC1_SPEC "%{G*} %(cc1_cpu) \
@@ -611,7 +614,8 @@
%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-i960-old: --oformat elf32-powerpcle} \
- }}}}"
+ }}}} \
+%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
/* Any specific OS flags. */
#define LINK_OS_SPEC "\
@@ -789,15 +793,18 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
@@ -923,6 +930,7 @@
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \
{ "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
+ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff -urN gcc-4.8-20130203.orig/gcc/config.gcc gcc-4.8-20130203/gcc/config.gcc
--- gcc-4.8-20130203.orig/gcc/config.gcc Mon Feb 11 07:48:22 2013
+++ gcc-4.8-20130203/gcc/config.gcc Mon Feb 11 08:01:07 2013
@@ -2088,6 +2088,10 @@
powerpc*-*-linux*paired*)
tm_file="${tm_file} rs6000/750cl.h" ;;
esac
+ case ${target} in
+ *-linux*-musl*)
+ enable_secureplt=yes ;;
+ esac
if test x${enable_secureplt} = xyes; then
tm_file="rs6000/secureplt.h ${tm_file}"
fi
diff -urN gcc-4.8.0-RC-20130316.orig/libstdc++-v3/configure.host gcc-4.8.0-RC-20130316/libstdc++-v3/configure.host
--- gcc-4.8.0-RC-20130316.orig/libstdc++-v3/configure.host Thu Mar 28 22:19:02 2013
+++ gcc-4.8.0-RC-20130316/libstdc++-v3/configure.host Thu Mar 28 22:21:40 2013
@@ -264,13 +264,7 @@
os_include_dir="os/bsd/freebsd"
;;
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
- if [ "$uclibc" = "yes" ]; then
- os_include_dir="os/uclibc"
- elif [ "$bionic" = "yes" ]; then
- os_include_dir="os/bionic"
- else
- os_include_dir="os/gnu-linux"
- fi
+ os_include_dir="os/generic"
;;
hpux*)
os_include_dir="os/hpux"
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-28 23:46 ` Daniel Cegiełka
@ 2013-03-28 23:58 ` Daniel Cegiełka
2013-03-29 0:07 ` Rich Felker
2013-03-29 0:35 ` John Spencer
0 siblings, 2 replies; 16+ messages in thread
From: Daniel Cegiełka @ 2013-03-28 23:58 UTC (permalink / raw)
To: musl
game over. libsanitizer requires pthread_getattr_np() but this
function isn't implemented in musl.
http://cristi.indefero.net/p/uClibc-cristi/source/tree/nptl/libpthread/nptl/pthread_getattr_np.c
Daniel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-28 23:58 ` Daniel Cegiełka
@ 2013-03-29 0:07 ` Rich Felker
2013-03-29 9:42 ` Szabolcs Nagy
2013-03-29 0:35 ` John Spencer
1 sibling, 1 reply; 16+ messages in thread
From: Rich Felker @ 2013-03-29 0:07 UTC (permalink / raw)
To: musl
On Fri, Mar 29, 2013 at 12:58:43AM +0100, Daniel Cegiełka wrote:
> game over. libsanitizer requires pthread_getattr_np() but this
> function isn't implemented in musl.
There's almost certainly a way to disable libsanitizer, no? It seems
like gcc folks keep inventing new low-quality alternatives to
valgrind...
Rich
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-28 23:58 ` Daniel Cegiełka
2013-03-29 0:07 ` Rich Felker
@ 2013-03-29 0:35 ` John Spencer
2013-03-29 1:39 ` Daniel Cegiełka
1 sibling, 1 reply; 16+ messages in thread
From: John Spencer @ 2013-03-29 0:35 UTC (permalink / raw)
To: musl
On 03/29/2013 12:58 AM, Daniel Cegiełka wrote:
> game over. libsanitizer requires pthread_getattr_np() but this
> function isn't implemented in musl.
>
>
blame the gcc developers for using non-portable code without offering a
portable fallback.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 0:35 ` John Spencer
@ 2013-03-29 1:39 ` Daniel Cegiełka
2013-03-29 1:56 ` Rich Felker
2013-03-29 2:10 ` John Spencer
0 siblings, 2 replies; 16+ messages in thread
From: Daniel Cegiełka @ 2013-03-29 1:39 UTC (permalink / raw)
To: musl
[-- Attachment #1: Type: text/plain, Size: 63 bytes --]
new patch. It's a bit ugly, but works :)
best regards,
Daniel
[-- Attachment #2: gcc-4.8-musl.diff --]
[-- Type: application/octet-stream, Size: 15475 bytes --]
diff -urN gcc-4.8-20130203.orig/gcc/config/linux.h gcc-4.8-20130203/gcc/config/linux.h
--- gcc-4.8-20130203.orig/gcc/config/linux.h Sun Feb 10 21:27:40 2013
+++ gcc-4.8-20130203/gcc/config/linux.h Sun Feb 10 21:45:07 2013
@@ -32,10 +32,12 @@
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
#else
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
#endif
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
@@ -53,18 +55,21 @@
uClibc or Bionic is the default C library and whether
-muclibc or -mglibc or -mbionic has been passed to change the default. */
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
#if DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
#elif DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
#elif DEFAULT_LIBC == LIBC_BIONIC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
#else
#error "Unsupported DEFAULT_LIBC"
#endif /* DEFAULT_LIBC */
@@ -81,19 +86,23 @@
#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
#define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
#define GNU_USER_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
- BIONIC_DYNAMIC_LINKER)
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define GNU_USER_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
- BIONIC_DYNAMIC_LINKER32)
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
- BIONIC_DYNAMIC_LINKER64)
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define GNU_USER_DYNAMIC_LINKERX32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
- BIONIC_DYNAMIC_LINKERX32)
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
/* Determine whether the entire c99 runtime
is present in the runtime library. */
diff -r 193f80e01b02 -r 45cd88d4fb7b gcc/config/linux.opt
--- a/gcc/config/linux.opt Wed Nov 21 21:17:38 2012 -0500
+++ b/gcc/config/linux.opt Wed Nov 21 21:19:19 2012 -0500
@@ -30,3 +30,7 @@
muclibc
Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
Use uClibc C library
+
+mmusl
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
+Use musl C library
diff -urN gcc-4.8-20130203.orig/gcc/ginclude/stddef.h gcc-4.8-20130203/gcc/ginclude/stddef.h
--- gcc-4.8-20130203.orig/gcc/ginclude/stddef.h Sun Feb 10 22:04:42 2013
+++ gcc-4.8-20130203/gcc/ginclude/stddef.h Sun Feb 10 22:10:59 2013
@@ -181,6 +181,7 @@
#ifndef _GCC_SIZE_T
#ifndef _SIZET_
#ifndef __size_t
+#ifndef __DEFINED_size_t /* musl */
#define __size_t__ /* BeOS */
#define __SIZE_T__ /* Cray Unicos/Mk */
#define _SIZE_T
@@ -197,6 +198,7 @@
#define ___int_size_t_h
#define _GCC_SIZE_T
#define _SIZET_
+#define __DEFINED_size_t /* musl */
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|| defined(__FreeBSD_kernel__)
/* __size_t is a typedef on FreeBSD 5, must not trash it. */
@@ -231,6 +233,7 @@
#endif /* _SIZE_T */
#endif /* __SIZE_T__ */
#endif /* __size_t__ */
+#endif /* musl */
#undef __need_size_t
#endif /* _STDDEF_H or __need_size_t. */
diff -r 45cd88d4fb7b -r 0afd9d82498d libgomp/config/posix/time.c
--- a/libgomp/config/posix/time.c Wed Nov 21 21:19:19 2012 -0500
+++ b/libgomp/config/posix/time.c Wed Nov 21 21:20:22 2012 -0500
@@ -28,6 +28,8 @@
The following implementation uses the most simple POSIX routines.
If present, POSIX 4 clocks should be used instead. */
+#define _POSIX_C_SOURCE 199309L /* for clocks */
+
#include "libgomp.h"
#include <unistd.h>
#if TIME_WITH_SYS_TIME
diff -r 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux.h
--- a/gcc/config/i386/linux.h Wed Nov 21 21:20:22 2012 -0500
+++ b/gcc/config/i386/linux.h Wed Nov 21 21:21:21 2012 -0500
@@ -22,3 +22,4 @@
#define GNU_USER_LINK_EMULATION "elf_i386"
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
diff -r 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux64.h
--- a/gcc/config/i386/linux64.h Wed Nov 21 21:20:22 2012 -0500
+++ b/gcc/config/i386/linux64.h Wed Nov 21 21:21:21 2012 -0500
@@ -31,3 +31,7 @@
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
diff -r 0afd9d82498d -r 53f3e21a7d14 libitm/config/linux/x86/tls.h
--- a/libitm/config/linux/x86/tls.h Wed Nov 21 21:20:22 2012 -0500
+++ b/libitm/config/linux/x86/tls.h Wed Nov 21 21:21:21 2012 -0500
@@ -25,16 +25,19 @@
#ifndef LIBITM_X86_TLS_H
#define LIBITM_X86_TLS_H 1
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
/* Use slots in the TCB head rather than __thread lookups.
GLIBC has reserved words 10 through 13 for TM. */
#define HAVE_ARCH_GTM_THREAD 1
#define HAVE_ARCH_GTM_THREAD_DISP 1
#endif
+#endif
#include "config/generic/tls.h"
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
namespace GTM HIDDEN {
#ifdef __x86_64__
@@ -101,5 +104,6 @@
} // namespace GTM
#endif /* >= GLIBC 2.10 */
+#endif
#endif // LIBITM_X86_TLS_H
diff -r 53f3e21a7d14 -r 0a4e297edad6 gcc/config/arm/linux-eabi.h
--- a/gcc/config/arm/linux-eabi.h Wed Nov 21 21:21:21 2012 -0500
+++ b/gcc/config/arm/linux-eabi.h Wed Nov 21 21:21:54 2012 -0500
@@ -64,6 +64,10 @@
#undef GLIBC_DYNAMIC_LINKER
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
+/* musl has no "classic" (i.e. broken) mode */
+#undef MUSL_DYNAMIC_LINKER
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-arm.so.1"
+
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
use the GNU/Linux version, not the generic BPABI version. */
#undef LINK_SPEC
diff -r 53f3e21a7d14 -r 0a4e297edad6 libitm/config/arm/hwcap.cc
--- a/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:21 2012 -0500
+++ b/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:54 2012 -0500
@@ -40,7 +40,11 @@
#ifdef __linux__
#include <unistd.h>
+#ifdef __GLIBC__
#include <sys/fcntl.h>
+#else
+#include <fcntl.h>
+#endif
#include <elf.h>
static void __attribute__((constructor))
diff -r 0a4e297edad6 -r 78025c74c5c1 gcc/config/mips/linux.h
--- a/gcc/config/mips/linux.h Wed Nov 21 21:21:54 2012 -0500
+++ b/gcc/config/mips/linux.h Wed Nov 21 21:23:49 2012 -0500
@@ -19,3 +19,5 @@
<http://www.gnu.org/licenses/>. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips.so.1"
diff -urN gcc-4.8-20130203.orig/gcc/config.gcc gcc-4.8-20130203/gcc/config.gcc
--- gcc-4.8-20130203.orig/gcc/config.gcc Sun Feb 10 20:59:36 2013
+++ gcc-4.8-20130203/gcc/config.gcc Sun Feb 10 21:17:44 2013
@@ -546,7 +546,7 @@
esac
# Common C libraries.
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
# Common parts for widely ported systems.
case ${target} in
@@ -648,6 +648,9 @@
;;
*-*-*uclibc*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
+ ;;
+ *-*-*musl*)
+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
;;
*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
diff -r 78025c74c5c1 gcc/config/rs6000/linux64.h
--- a/gcc/config/rs6000/linux64.h Wed Nov 21 21:23:49 2012 -0500
+++ b/gcc/config/rs6000/linux64.h Wed Nov 21 21:45:58 2012 -0500
@@ -362,17 +362,21 @@
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
#elif DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER32 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
diff -r 78025c74c5c1 gcc/config/rs6000/secureplt.h
--- a/gcc/config/rs6000/secureplt.h Wed Nov 21 21:23:49 2012 -0500
+++ b/gcc/config/rs6000/secureplt.h Wed Nov 21 21:45:58 2012 -0500
@@ -18,3 +18,4 @@
<http://www.gnu.org/licenses/>. */
#define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
diff -urN gcc-4.8-20130203.orig/gcc/config/rs6000/sysv4.h gcc-4.8-20130203/gcc/config/rs6000/sysv4.h
--- gcc-4.8-20130203.orig/gcc/config/rs6000/sysv4.h Mon Feb 11 07:48:22 2013
+++ gcc-4.8-20130203/gcc/config/rs6000/sysv4.h Mon Feb 11 08:15:53 2013
@@ -551,6 +551,9 @@
#ifndef CC1_SECURE_PLT_DEFAULT_SPEC
#define CC1_SECURE_PLT_DEFAULT_SPEC ""
#endif
+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
+#endif
/* Pass -G xxx to the compiler and set correct endian mode. */
#define CC1_SPEC "%{G*} %(cc1_cpu) \
@@ -611,7 +614,8 @@
%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-i960-old: --oformat elf32-powerpcle} \
- }}}}"
+ }}}} \
+%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
/* Any specific OS flags. */
#define LINK_OS_SPEC "\
@@ -789,15 +793,18 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
@@ -923,6 +930,7 @@
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \
{ "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
+ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff -urN gcc-4.8-20130203.orig/gcc/config.gcc gcc-4.8-20130203/gcc/config.gcc
--- gcc-4.8-20130203.orig/gcc/config.gcc Mon Feb 11 07:48:22 2013
+++ gcc-4.8-20130203/gcc/config.gcc Mon Feb 11 08:01:07 2013
@@ -2088,6 +2088,10 @@
powerpc*-*-linux*paired*)
tm_file="${tm_file} rs6000/750cl.h" ;;
esac
+ case ${target} in
+ *-linux*-musl*)
+ enable_secureplt=yes ;;
+ esac
if test x${enable_secureplt} = xyes; then
tm_file="rs6000/secureplt.h ${tm_file}"
fi
diff -urN gcc-4.8.0-RC-20130316.orig/libstdc++-v3/configure.host gcc-4.8.0-RC-20130316/libstdc++-v3/configure.host
--- gcc-4.8.0-RC-20130316.orig/libstdc++-v3/configure.host Thu Mar 28 22:19:02 2013
+++ gcc-4.8.0-RC-20130316/libstdc++-v3/configure.host Thu Mar 28 22:21:40 2013
@@ -264,13 +264,7 @@
os_include_dir="os/bsd/freebsd"
;;
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
- if [ "$uclibc" = "yes" ]; then
- os_include_dir="os/uclibc"
- elif [ "$bionic" = "yes" ]; then
- os_include_dir="os/bionic"
- else
- os_include_dir="os/gnu-linux"
- fi
+ os_include_dir="os/generic"
;;
hpux*)
os_include_dir="os/hpux"
diff -urN gcc-4.8.0-RC-20130316.orig/configure gcc-4.8.0-RC-20130316/configure
--- gcc-4.8.0-RC-20130316.orig/configure Fri Mar 29 00:18:56 2013
+++ gcc-4.8.0-RC-20130316/configure Fri Mar 29 00:20:04 2013
@@ -3197,23 +3197,7 @@
fi
# Disable libsanitizer on unsupported systems.
-if test -d ${srcdir}/libsanitizer; then
- if test x$enable_libsanitizer = x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsanitizer support" >&5
-$as_echo_n "checking for libsanitizer support... " >&6; }
- if (srcdir=${srcdir}/libsanitizer; \
- . ${srcdir}/configure.tgt; \
- test -n "$UNSUPPORTED")
- then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- noconfigdirs="$noconfigdirs target-libsanitizer"
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- fi
- fi
-fi
+noconfigdirs="$noconfigdirs target-libsanitizer"
# Disable libquadmath for some systems.
case "${target}" in
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 1:39 ` Daniel Cegiełka
@ 2013-03-29 1:56 ` Rich Felker
2013-03-29 11:07 ` Daniel Cegiełka
2013-03-29 2:10 ` John Spencer
1 sibling, 1 reply; 16+ messages in thread
From: Rich Felker @ 2013-03-29 1:56 UTC (permalink / raw)
To: musl
On Fri, Mar 29, 2013 at 02:39:03AM +0100, Daniel Cegiełka wrote:
> diff -urN gcc-4.8-20130203.orig/gcc/config/linux.h gcc-4.8-20130203/gcc/config/linux.h
> --- gcc-4.8-20130203.orig/gcc/config/linux.h Sun Feb 10 21:27:40 2013
> +++ gcc-4.8-20130203/gcc/config/linux.h Sun Feb 10 21:45:07 2013
> @@ -32,10 +32,12 @@
> #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
> #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
> #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
> +#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
> #else
> #define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
> #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
> #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
> +#define OPTION_MUSL (linux_libc == LIBC_MUSL)
> #endif
>
> #define GNU_USER_TARGET_OS_CPP_BUILTINS() \
> @@ -53,18 +55,21 @@
> uClibc or Bionic is the default C library and whether
> -muclibc or -mglibc or -mbionic has been passed to change the default. */
>
> -#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
> - "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
> +#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
> + "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
>
> #if DEFAULT_LIBC == LIBC_GLIBC
> -#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
> - CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
> +#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
> + CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
> #elif DEFAULT_LIBC == LIBC_UCLIBC
> -#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
> - CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
> +#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
> + CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
> #elif DEFAULT_LIBC == LIBC_BIONIC
> -#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
> - CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
> +#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
> + CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
> +#elif DEFAULT_LIBC == LIBC_MUSL
> +#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
> + CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
> #else
> #error "Unsupported DEFAULT_LIBC"
> #endif /* DEFAULT_LIBC */
> @@ -81,19 +86,23 @@
> #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
> #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
> #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
> +#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
This is almost certainly wrong.
> diff -r 45cd88d4fb7b -r 0afd9d82498d libgomp/config/posix/time.c
> --- a/libgomp/config/posix/time.c Wed Nov 21 21:19:19 2012 -0500
> +++ b/libgomp/config/posix/time.c Wed Nov 21 21:20:22 2012 -0500
> @@ -28,6 +28,8 @@
> The following implementation uses the most simple POSIX routines.
> If present, POSIX 4 clocks should be used instead. */
>
> +#define _POSIX_C_SOURCE 199309L /* for clocks */
> +
> #include "libgomp.h"
> #include <unistd.h>
> #if TIME_WITH_SYS_TIME
> diff -r 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux.h
> --- a/gcc/config/i386/linux.h Wed Nov 21 21:20:22 2012 -0500
> +++ b/gcc/config/i386/linux.h Wed Nov 21 21:21:21 2012 -0500
> @@ -22,3 +22,4 @@
>
> #define GNU_USER_LINK_EMULATION "elf_i386"
> #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
> +#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
This too.
> diff -r 53f3e21a7d14 -r 0a4e297edad6 libitm/config/arm/hwcap.cc
> --- a/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:21 2012 -0500
> +++ b/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:54 2012 -0500
> @@ -40,7 +40,11 @@
>
> #ifdef __linux__
> #include <unistd.h>
> +#ifdef __GLIBC__
> #include <sys/fcntl.h>
> +#else
> +#include <fcntl.h>
> +#endif
> #include <elf.h>
This should just unconditionally be <fcntl.h>. <sys/fcntl.h> is wrong.
> # Disable libsanitizer on unsupported systems.
> -if test -d ${srcdir}/libsanitizer; then
> - if test x$enable_libsanitizer = x; then
> - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsanitizer support" >&5
> -$as_echo_n "checking for libsanitizer support... " >&6; }
> - if (srcdir=${srcdir}/libsanitizer; \
> - . ${srcdir}/configure.tgt; \
> - test -n "$UNSUPPORTED")
> - then
> - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
> -$as_echo "no" >&6; }
> - noconfigdirs="$noconfigdirs target-libsanitizer"
> - else
> - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
> -$as_echo "yes" >&6; }
> - fi
> - fi
> -fi
> +noconfigdirs="$noconfigdirs target-libsanitizer"
That works... :-)
Rich
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 1:39 ` Daniel Cegiełka
2013-03-29 1:56 ` Rich Felker
@ 2013-03-29 2:10 ` John Spencer
1 sibling, 0 replies; 16+ messages in thread
From: John Spencer @ 2013-03-29 2:10 UTC (permalink / raw)
To: musl
On 03/29/2013 02:39 AM, Daniel Cegiełka wrote:
> # Disable libsanitizer on unsupported systems.
> -if test -d ${srcdir}/libsanitizer; then
> - if test x$enable_libsanitizer = x; then
> - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsanitizer support">&5
> -$as_echo_n "checking for libsanitizer support... ">&6; }
> - if (srcdir=${srcdir}/libsanitizer; \
> - . ${srcdir}/configure.tgt; \
> - test -n "$UNSUPPORTED")
> - then
> - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no">&5
> -$as_echo "no">&6; }
> - noconfigdirs="$noconfigdirs target-libsanitizer"
> - else
> - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes">&5
> -$as_echo "yes">&6; }
> - fi
> - fi
> -fi
> +noconfigdirs="$noconfigdirs target-libsanitizer"
this looks as if --disable-libsanitizer would have done the job as well.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 0:07 ` Rich Felker
@ 2013-03-29 9:42 ` Szabolcs Nagy
0 siblings, 0 replies; 16+ messages in thread
From: Szabolcs Nagy @ 2013-03-29 9:42 UTC (permalink / raw)
To: musl
* Rich Felker <dalias@aerifal.cx> [2013-03-28 20:07:58 -0400]:
> On Fri, Mar 29, 2013 at 12:58:43AM +0100, Daniel Cegie??ka wrote:
> > game over. libsanitizer requires pthread_getattr_np() but this
> > function isn't implemented in musl.
>
> There's almost certainly a way to disable libsanitizer, no? It seems
> like gcc folks keep inventing new low-quality alternatives to
> valgrind...
asan+tsan are useful tools, but now looking into the code
it has unreliable c++ code and invalid assumptions about
the c runtime internals
but i still think it may worth trying to port it to musl
maybe musl can provide some hooks for similar tools
(weak symbol callbacks at the right places)
asan hooks into thread creation, so they should be able
to get the bottom of the stack and they can assume a
guard page at the end which can be found by vmfill or
parsing /proc smaps which they already do
tsan tries to get the tls as well with
void *get_tls_static_info_ptr = dlsym(RTLD_NEXT, "_dl_get_tls_static_info");
and then copy this onto a function pointer with
__attribute__((regparm(3), stdcall)) on i386
the rest should be portable
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 1:56 ` Rich Felker
@ 2013-03-29 11:07 ` Daniel Cegiełka
2013-03-29 11:25 ` Szabolcs Nagy
0 siblings, 1 reply; 16+ messages in thread
From: Daniel Cegiełka @ 2013-03-29 11:07 UTC (permalink / raw)
To: musl
2013/3/29 Rich Felker <dalias@aerifal.cx>:
> On Fri, Mar 29, 2013 at 02:39:03AM +0100, Daniel Cegiełka wrote:
>> diff -urN gcc-4.8-20130203.orig/gcc/config/linux.h gcc-4.8-20130203/gcc/config/linux.h
>> --- gcc-4.8-20130203.orig/gcc/config/linux.h Sun Feb 10 21:27:40 2013
>> +++ gcc-4.8-20130203/gcc/config/linux.h Sun Feb 10 21:45:07 2013
>> @@ -32,10 +32,12 @@
>> #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
>> #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
>> #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
>> +#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
>> #else
>> #define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
>> #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
>> #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
>> +#define OPTION_MUSL (linux_libc == LIBC_MUSL)
>> #endif
>>
>> #define GNU_USER_TARGET_OS_CPP_BUILTINS() \
>> @@ -53,18 +55,21 @@
>> uClibc or Bionic is the default C library and whether
>> -muclibc or -mglibc or -mbionic has been passed to change the default. */
>>
>> -#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
>> - "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
>> +#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
>> + "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
>>
>> #if DEFAULT_LIBC == LIBC_GLIBC
>> -#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
>> - CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
>> +#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
>> + CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
>> #elif DEFAULT_LIBC == LIBC_UCLIBC
>> -#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
>> - CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
>> +#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
>> + CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
>> #elif DEFAULT_LIBC == LIBC_BIONIC
>> -#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
>> - CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
>> +#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
>> + CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
>> +#elif DEFAULT_LIBC == LIBC_MUSL
>> +#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
>> + CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
>> #else
>> #error "Unsupported DEFAULT_LIBC"
>> #endif /* DEFAULT_LIBC */
>> @@ -81,19 +86,23 @@
>> #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
>> #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
>> #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
>> +#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
>
> This is almost certainly wrong.
What solution do you suggest? Below is the code, which was used for gcc-4.8:
https://bitbucket.org/GregorR/musl-cross/src/74d6e78976bda668af0046f4514cbce1f363c6cd/patches/gcc-4.7.2-musl.diff?at=default
Daniel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 11:07 ` Daniel Cegiełka
@ 2013-03-29 11:25 ` Szabolcs Nagy
2013-03-29 14:13 ` Daniel Cegiełka
0 siblings, 1 reply; 16+ messages in thread
From: Szabolcs Nagy @ 2013-03-29 11:25 UTC (permalink / raw)
To: musl
* Daniel Cegie?ka <daniel.cegielka@gmail.com> [2013-03-29 12:07:33 +0100]:
> 2013/3/29 Rich Felker <dalias@aerifal.cx>:
> > On Fri, Mar 29, 2013 at 02:39:03AM +0100, Daniel Cegie??ka wrote:
> >> @@ -81,19 +86,23 @@
> >> #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
> >> #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
> >> #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
> >> +#define MUSL_DYNAMIC_LINKER "/lib/ld-musl.so.1"
> >
> > This is almost certainly wrong.
>
> What solution do you suggest? Below is the code, which was used for gcc-4.8:
there is no ARCH, see the musl Makefile:
LDSO_PATHNAME = $(syslibdir)/ld-musl-$(ARCH).so.1
> https://bitbucket.org/GregorR/musl-cross/src/74d6e78976bda668af0046f4514cbce1f363c6cd/patches/gcc-4.7.2-musl.diff?at=default
here the ARCH is there
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 11:25 ` Szabolcs Nagy
@ 2013-03-29 14:13 ` Daniel Cegiełka
2013-03-29 15:19 ` Szabolcs Nagy
0 siblings, 1 reply; 16+ messages in thread
From: Daniel Cegiełka @ 2013-03-29 14:13 UTC (permalink / raw)
To: musl
[-- Attachment #1: Type: text/plain, Size: 21 bytes --]
best regards,
Daniel
[-- Attachment #2: gcc-4.8-musl.diff --]
[-- Type: application/octet-stream, Size: 14506 bytes --]
diff -urN gcc-4.8-20130321.orig/gcc/config/arm/linux-eabi.h gcc-4.8-20130321/gcc/config/arm/linux-eabi.h
--- gcc-4.8-20130321.orig/gcc/config/arm/linux-eabi.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/arm/linux-eabi.h Fri Mar 29 11:47:34 2013
@@ -77,6 +77,10 @@
%{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
%{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
+/* musl has no "classic" (i.e. broken) mode */
+#undef MUSL_DYNAMIC_LINKER
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-arm.so.1"
+
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
use the GNU/Linux version, not the generic BPABI version. */
#undef LINK_SPEC
diff -urN gcc-4.8-20130321.orig/gcc/config/i386/linux.h gcc-4.8-20130321/gcc/config/i386/linux.h
--- gcc-4.8-20130321.orig/gcc/config/i386/linux.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/i386/linux.h Fri Mar 29 11:55:01 2013
@@ -21,3 +21,4 @@
#define GNU_USER_LINK_EMULATION "elf_i386"
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
diff -urN gcc-4.8-20130321.orig/gcc/config/i386/linux64.h gcc-4.8-20130321/gcc/config/i386/linux64.h
--- gcc-4.8-20130321.orig/gcc/config/i386/linux64.h Fri Mar 29 11:45:28 2013
+++ gcc-4.8-20130321/gcc/config/i386/linux64.h Fri Mar 29 11:47:35 2013
@@ -30,3 +30,7 @@
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
diff -urN gcc-4.8-20130321.orig/gcc/config/linux.h gcc-4.8-20130321/gcc/config/linux.h
--- gcc-4.8-20130321.orig/gcc/config/linux.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/linux.h Fri Mar 29 11:54:13 2013
@@ -32,10 +32,12 @@
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
#else
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
#endif
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
@@ -53,18 +55,21 @@
uClibc or Bionic is the default C library and whether
-muclibc or -mglibc or -mbionic has been passed to change the default. */
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
#if DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
#elif DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
#elif DEFAULT_LIBC == LIBC_BIONIC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
#else
#error "Unsupported DEFAULT_LIBC"
#endif /* DEFAULT_LIBC */
@@ -84,16 +89,16 @@
#define GNU_USER_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
- BIONIC_DYNAMIC_LINKER)
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define GNU_USER_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
- BIONIC_DYNAMIC_LINKER32)
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
- BIONIC_DYNAMIC_LINKER64)
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define GNU_USER_DYNAMIC_LINKERX32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
- BIONIC_DYNAMIC_LINKERX32)
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
/* Determine whether the entire c99 runtime
is present in the runtime library. */
diff -urN gcc-4.8-20130321.orig/gcc/config/linux.opt gcc-4.8-20130321/gcc/config/linux.opt
--- gcc-4.8-20130321.orig/gcc/config/linux.opt Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/linux.opt Fri Mar 29 11:47:34 2013
@@ -30,3 +30,7 @@
muclibc
Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
Use uClibc C library
+
+mmusl
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
+Use musl C library
diff -urN gcc-4.8-20130321.orig/gcc/config/mips/linux.h gcc-4.8-20130321/gcc/config/mips/linux.h
--- gcc-4.8-20130321.orig/gcc/config/mips/linux.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/mips/linux.h Fri Mar 29 11:47:34 2013
@@ -18,3 +18,5 @@
<http://www.gnu.org/licenses/>. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips.so.1"
diff -urN gcc-4.8-20130321.orig/gcc/config/rs6000/linux64.h gcc-4.8-20130321/gcc/config/rs6000/linux64.h
--- gcc-4.8-20130321.orig/gcc/config/rs6000/linux64.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/rs6000/linux64.h Fri Mar 29 11:47:34 2013
@@ -364,17 +364,21 @@
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
#elif DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER32 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
diff -urN gcc-4.8-20130321.orig/gcc/config/rs6000/secureplt.h gcc-4.8-20130321/gcc/config/rs6000/secureplt.h
--- gcc-4.8-20130321.orig/gcc/config/rs6000/secureplt.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/rs6000/secureplt.h Fri Mar 29 11:47:34 2013
@@ -18,3 +18,4 @@
<http://www.gnu.org/licenses/>. */
#define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
diff -urN gcc-4.8-20130321.orig/gcc/config/rs6000/sysv4.h gcc-4.8-20130321/gcc/config/rs6000/sysv4.h
--- gcc-4.8-20130321.orig/gcc/config/rs6000/sysv4.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/rs6000/sysv4.h Fri Mar 29 11:47:34 2013
@@ -551,6 +551,9 @@
#ifndef CC1_SECURE_PLT_DEFAULT_SPEC
#define CC1_SECURE_PLT_DEFAULT_SPEC ""
#endif
+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
+#endif
/* Pass -G xxx to the compiler and set correct endian mode. */
#define CC1_SPEC "%{G*} %(cc1_cpu) \
@@ -611,7 +614,8 @@
%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-i960-old: --oformat elf32-powerpcle} \
- }}}}"
+ }}}} \
+%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
/* Any specific OS flags. */
#define LINK_OS_SPEC "\
@@ -789,15 +793,18 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
@@ -923,6 +930,7 @@
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \
{ "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
+ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff -urN gcc-4.8-20130321.orig/gcc/config.gcc gcc-4.8-20130321/gcc/config.gcc
--- gcc-4.8-20130321.orig/gcc/config.gcc Wed Mar 13 09:47:41 2013
+++ gcc-4.8-20130321/gcc/config.gcc Fri Mar 29 11:47:34 2013
@@ -549,7 +549,7 @@
esac
# Common C libraries.
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
# Common parts for widely ported systems.
case ${target} in
@@ -652,6 +652,9 @@
*-*-*uclibc*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
;;
+ *-*-*musl*)
+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
+ ;;
*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
;;
@@ -2108,6 +2111,10 @@
tm_file="${tm_file} rs6000/linuxspe.h rs6000/e500.h" ;;
powerpc*-*-linux*paired*)
tm_file="${tm_file} rs6000/750cl.h" ;;
+ esac
+ case ${target} in
+ *-linux*-musl*)
+ enable_secureplt=yes ;;
esac
if test x${enable_secureplt} = xyes; then
tm_file="rs6000/secureplt.h ${tm_file}"
diff -urN gcc-4.8-20130321.orig/gcc/ginclude/stddef.h gcc-4.8-20130321/gcc/ginclude/stddef.h
--- gcc-4.8-20130321.orig/gcc/ginclude/stddef.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/ginclude/stddef.h Fri Mar 29 11:47:34 2013
@@ -181,6 +181,7 @@
#ifndef _GCC_SIZE_T
#ifndef _SIZET_
#ifndef __size_t
+#ifndef __DEFINED_size_t /* musl */
#define __size_t__ /* BeOS */
#define __SIZE_T__ /* Cray Unicos/Mk */
#define _SIZE_T
@@ -197,6 +198,7 @@
#define ___int_size_t_h
#define _GCC_SIZE_T
#define _SIZET_
+#define __DEFINED_size_t /* musl */
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|| defined(__FreeBSD_kernel__)
/* __size_t is a typedef on FreeBSD 5, must not trash it. */
@@ -231,6 +233,7 @@
#endif /* _SIZE_T */
#endif /* __SIZE_T__ */
#endif /* __size_t__ */
+#endif /* musl */
#undef __need_size_t
#endif /* _STDDEF_H or __need_size_t. */
diff -urN gcc-4.8-20130321.orig/libgomp/config/posix/time.c gcc-4.8-20130321/libgomp/config/posix/time.c
--- gcc-4.8-20130321.orig/libgomp/config/posix/time.c Mon Jan 14 18:18:49 2013
+++ gcc-4.8-20130321/libgomp/config/posix/time.c Fri Mar 29 11:47:34 2013
@@ -28,6 +28,8 @@
The following implementation uses the most simple POSIX routines.
If present, POSIX 4 clocks should be used instead. */
+#define _POSIX_C_SOURCE 199309L /* for clocks */
+
#include "libgomp.h"
#include <unistd.h>
#if TIME_WITH_SYS_TIME
diff -urN gcc-4.8-20130321.orig/libitm/config/arm/hwcap.cc gcc-4.8-20130321/libitm/config/arm/hwcap.cc
--- gcc-4.8-20130321.orig/libitm/config/arm/hwcap.cc Sun Feb 3 17:46:11 2013
+++ gcc-4.8-20130321/libitm/config/arm/hwcap.cc Fri Mar 29 11:56:22 2013
@@ -40,7 +40,7 @@
#ifdef __linux__
#include <unistd.h>
-#include <sys/fcntl.h>
+#include <fcntl.h>
#include <elf.h>
static void __attribute__((constructor))
diff -urN gcc-4.8-20130321.orig/libitm/config/linux/x86/tls.h gcc-4.8-20130321/libitm/config/linux/x86/tls.h
--- gcc-4.8-20130321.orig/libitm/config/linux/x86/tls.h Sun Feb 3 17:46:11 2013
+++ gcc-4.8-20130321/libitm/config/linux/x86/tls.h Fri Mar 29 11:47:34 2013
@@ -25,16 +25,19 @@
#ifndef LIBITM_X86_TLS_H
#define LIBITM_X86_TLS_H 1
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
/* Use slots in the TCB head rather than __thread lookups.
GLIBC has reserved words 10 through 13 for TM. */
#define HAVE_ARCH_GTM_THREAD 1
#define HAVE_ARCH_GTM_THREAD_DISP 1
#endif
+#endif
#include "config/generic/tls.h"
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
namespace GTM HIDDEN {
#ifdef __x86_64__
@@ -101,5 +104,6 @@
} // namespace GTM
#endif /* >= GLIBC 2.10 */
+#endif
#endif // LIBITM_X86_TLS_H
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/configure.host gcc-4.8-20130321/libstdc++-v3/configure.host
--- gcc-4.8-20130321.orig/libstdc++-v3/configure.host Mon Oct 15 21:12:23 2012
+++ gcc-4.8-20130321/libstdc++-v3/configure.host Fri Mar 29 11:47:34 2013
@@ -264,13 +264,7 @@
os_include_dir="os/bsd/freebsd"
;;
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
- if [ "$uclibc" = "yes" ]; then
- os_include_dir="os/uclibc"
- elif [ "$bionic" = "yes" ]; then
- os_include_dir="os/bionic"
- else
- os_include_dir="os/gnu-linux"
- fi
+ os_include_dir="os/generic"
;;
hpux*)
os_include_dir="os/hpux"
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 14:13 ` Daniel Cegiełka
@ 2013-03-29 15:19 ` Szabolcs Nagy
2013-03-29 15:38 ` Daniel Cegiełka
2013-03-30 9:51 ` Daniel Cegiełka
0 siblings, 2 replies; 16+ messages in thread
From: Szabolcs Nagy @ 2013-03-29 15:19 UTC (permalink / raw)
To: musl
for some reason the diff got attached as octet stream
i'd cc gregor since it was his work originally and he
is not subscribed to the ml
this part seems to change the behaviour for other
libcs, is that necessary?
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/configure.host gcc-4.8-20130321/libstdc++-v3/configure.host
--- gcc-4.8-20130321.orig/libstdc++-v3/configure.host Mon Oct 15 21:12:23 2012
+++ gcc-4.8-20130321/libstdc++-v3/configure.host Fri Mar 29 11:47:34 2013
@@ -264,13 +264,7 @@
os_include_dir="os/bsd/freebsd"
;;
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
- if [ "$uclibc" = "yes" ]; then
- os_include_dir="os/uclibc"
- elif [ "$bionic" = "yes" ]; then
- os_include_dir="os/bionic"
- else
- os_include_dir="os/gnu-linux"
- fi
+ os_include_dir="os/generic"
;;
hpux*)
os_include_dir="os/hpux"
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 15:19 ` Szabolcs Nagy
@ 2013-03-29 15:38 ` Daniel Cegiełka
2013-03-30 9:51 ` Daniel Cegiełka
1 sibling, 0 replies; 16+ messages in thread
From: Daniel Cegiełka @ 2013-03-29 15:38 UTC (permalink / raw)
To: musl
2013/3/29 Szabolcs Nagy <nsz@port70.net>:
> for some reason the diff got attached as octet stream
>
> i'd cc gregor since it was his work originally and he
> is not subscribed to the ml
>
> this part seems to change the behaviour for other
> libcs, is that necessary?
No, it's not necessary. See link:
http://openwall.com/lists/musl/2013/03/28/5
It can be quickly corrected.
Daniel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: musl and gcc-4.8 (sabotage)
2013-03-29 15:19 ` Szabolcs Nagy
2013-03-29 15:38 ` Daniel Cegiełka
@ 2013-03-30 9:51 ` Daniel Cegiełka
1 sibling, 0 replies; 16+ messages in thread
From: Daniel Cegiełka @ 2013-03-30 9:51 UTC (permalink / raw)
To: musl
[-- Attachment #1.1: Type: text/plain, Size: 3118 bytes --]
2013/3/29 Szabolcs Nagy <nsz@port70.net>
> for some reason the diff got attached as octet stream
>
> i'd cc gregor since it was his work originally and he
> is not subscribed to the ml
>
> this part seems to change the behaviour for other
> libcs, is that necessary?
>
>
glibc, bionic and uclib have special definitions to be able to detect which
libc is used (__GLIBC__, __UCLIBC__). musl doesn't support such solutions,
so we can use host_os (gcc-4.8-musl.diff):
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/configure.host
gcc-4.8-20130321/libstdc++-v3/configure.host
--- gcc-4.8-20130321.orig/libstdc++-v3/configure.host Sat Mar 30
00:29:39 2013
+++ gcc-4.8-20130321/libstdc++-v3/configure.host Sat Mar 30 00:31:28 2013
@@ -268,6 +268,8 @@
os_include_dir="os/uclibc"
elif [ "$bionic" = "yes" ]; then
os_include_dir="os/bionic"
+ elif [ "$host_os" = "linux-musl" ]; then
+ os_include_dir="os/generic"
else
os_include_dir="os/gnu-linux"
fi
or detect glibc in gcc way (gcc-4.8-musl2.diff):
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/acinclude.m4
gcc-4.8-20130321/libstdc++-v3/acinclude.m4
--- gcc-4.8-20130321.orig/libstdc++-v3/acinclude.m4 Fri Mar 29 22:23:14
2013
+++ gcc-4.8-20130321/libstdc++-v3/acinclude.m4 Fri Mar 29 22:30:53 2013
@@ -99,6 +99,13 @@
# Check for C library flavor since GNU/Linux platforms use different
# configuration directories depending on the C library in use.
+ AC_EGREP_CPP([_using_glibc], [
+ #include <features.h>
+ #if __GLIBC__
+ _using_glibc
+ #endif
+ ], glibc=yes, glibc=no)
+
AC_EGREP_CPP([_using_uclibc], [
#include <stdio.h>
#if __UCLIBC__
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/configure
gcc-4.8-20130321/libstdc++-v3/configure
--- gcc-4.8-20130321.orig/libstdc++-v3/configure Fri Mar 29 22:23:14 2013
+++ gcc-4.8-20130321/libstdc++-v3/configure Fri Mar 29 22:29:23 2013
@@ -5243,6 +5243,24 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+ #include <features.h>
+ #if __GLIBC__
+ _using_glibc
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "_using_glibc" >/dev/null 2>&1; then :
+ glibc=yes
+else
+ glibc=no
+fi
+rm -f conftest*
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
#include <stdio.h>
#if __UCLIBC__
_using_uclibc
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/configure.host
gcc-4.8-20130321/libstdc++-v3/configure.host
--- gcc-4.8-20130321.orig/libstdc++-v3/configure.host Fri Mar 29
22:23:14 2013
+++ gcc-4.8-20130321/libstdc++-v3/configure.host Fri Mar 29 22:36:15 2013
@@ -264,12 +264,14 @@
os_include_dir="os/bsd/freebsd"
;;
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
- if [ "$uclibc" = "yes" ]; then
+ if [ "$glibc" = "yes" ]; then
+ os_include_dir="os/gnu-linux"
+ elif [ "$uclibc" = "yes" ]; then
os_include_dir="os/uclibc"
elif [ "$bionic" = "yes" ]; then
os_include_dir="os/bionic"
else
- os_include_dir="os/gnu-linux"
+ os_include_dir="os/generic"
fi
;;
hpux*)
Daniel
[-- Attachment #1.2: Type: text/html, Size: 4151 bytes --]
[-- Attachment #2: gcc-4.8-musl.diff --]
[-- Type: application/octet-stream, Size: 14375 bytes --]
[-- Attachment #3: gcc-4.8-musl2.diff --]
[-- Type: application/octet-stream, Size: 15902 bytes --]
diff -urN gcc-4.8-20130321.orig/gcc/config/arm/linux-eabi.h gcc-4.8-20130321/gcc/config/arm/linux-eabi.h
--- gcc-4.8-20130321.orig/gcc/config/arm/linux-eabi.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/arm/linux-eabi.h Fri Mar 29 11:47:34 2013
@@ -77,6 +77,10 @@
%{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
%{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
+/* musl has no "classic" (i.e. broken) mode */
+#undef MUSL_DYNAMIC_LINKER
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-arm.so.1"
+
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
use the GNU/Linux version, not the generic BPABI version. */
#undef LINK_SPEC
diff -urN gcc-4.8-20130321.orig/gcc/config/i386/linux.h gcc-4.8-20130321/gcc/config/i386/linux.h
--- gcc-4.8-20130321.orig/gcc/config/i386/linux.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/i386/linux.h Fri Mar 29 11:55:01 2013
@@ -21,3 +21,4 @@
#define GNU_USER_LINK_EMULATION "elf_i386"
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
diff -urN gcc-4.8-20130321.orig/gcc/config/i386/linux64.h gcc-4.8-20130321/gcc/config/i386/linux64.h
--- gcc-4.8-20130321.orig/gcc/config/i386/linux64.h Fri Mar 29 11:45:28 2013
+++ gcc-4.8-20130321/gcc/config/i386/linux64.h Fri Mar 29 11:47:35 2013
@@ -30,3 +30,7 @@
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
diff -urN gcc-4.8-20130321.orig/gcc/config/linux.h gcc-4.8-20130321/gcc/config/linux.h
--- gcc-4.8-20130321.orig/gcc/config/linux.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/linux.h Fri Mar 29 11:54:13 2013
@@ -32,10 +32,12 @@
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
#else
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
#endif
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
@@ -53,18 +55,21 @@
uClibc or Bionic is the default C library and whether
-muclibc or -mglibc or -mbionic has been passed to change the default. */
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
#if DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
#elif DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
#elif DEFAULT_LIBC == LIBC_BIONIC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
#else
#error "Unsupported DEFAULT_LIBC"
#endif /* DEFAULT_LIBC */
@@ -84,16 +89,16 @@
#define GNU_USER_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
- BIONIC_DYNAMIC_LINKER)
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define GNU_USER_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
- BIONIC_DYNAMIC_LINKER32)
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
- BIONIC_DYNAMIC_LINKER64)
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define GNU_USER_DYNAMIC_LINKERX32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
- BIONIC_DYNAMIC_LINKERX32)
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
/* Determine whether the entire c99 runtime
is present in the runtime library. */
diff -urN gcc-4.8-20130321.orig/gcc/config/linux.opt gcc-4.8-20130321/gcc/config/linux.opt
--- gcc-4.8-20130321.orig/gcc/config/linux.opt Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/linux.opt Fri Mar 29 11:47:34 2013
@@ -30,3 +30,7 @@
muclibc
Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
Use uClibc C library
+
+mmusl
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
+Use musl C library
diff -urN gcc-4.8-20130321.orig/gcc/config/mips/linux.h gcc-4.8-20130321/gcc/config/mips/linux.h
--- gcc-4.8-20130321.orig/gcc/config/mips/linux.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/mips/linux.h Fri Mar 29 11:47:34 2013
@@ -18,3 +18,5 @@
<http://www.gnu.org/licenses/>. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips.so.1"
diff -urN gcc-4.8-20130321.orig/gcc/config/rs6000/linux64.h gcc-4.8-20130321/gcc/config/rs6000/linux64.h
--- gcc-4.8-20130321.orig/gcc/config/rs6000/linux64.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/rs6000/linux64.h Fri Mar 29 11:47:34 2013
@@ -364,17 +364,21 @@
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
#elif DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER32 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
diff -urN gcc-4.8-20130321.orig/gcc/config/rs6000/secureplt.h gcc-4.8-20130321/gcc/config/rs6000/secureplt.h
--- gcc-4.8-20130321.orig/gcc/config/rs6000/secureplt.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/rs6000/secureplt.h Fri Mar 29 11:47:34 2013
@@ -18,3 +18,4 @@
<http://www.gnu.org/licenses/>. */
#define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
diff -urN gcc-4.8-20130321.orig/gcc/config/rs6000/sysv4.h gcc-4.8-20130321/gcc/config/rs6000/sysv4.h
--- gcc-4.8-20130321.orig/gcc/config/rs6000/sysv4.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/config/rs6000/sysv4.h Fri Mar 29 11:47:34 2013
@@ -551,6 +551,9 @@
#ifndef CC1_SECURE_PLT_DEFAULT_SPEC
#define CC1_SECURE_PLT_DEFAULT_SPEC ""
#endif
+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
+#endif
/* Pass -G xxx to the compiler and set correct endian mode. */
#define CC1_SPEC "%{G*} %(cc1_cpu) \
@@ -611,7 +614,8 @@
%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
%{mcall-i960-old: --oformat elf32-powerpcle} \
- }}}}"
+ }}}} \
+%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
/* Any specific OS flags. */
#define LINK_OS_SPEC "\
@@ -789,15 +793,18 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
#if DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
@@ -923,6 +930,7 @@
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \
{ "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
+ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff -urN gcc-4.8-20130321.orig/gcc/config.gcc gcc-4.8-20130321/gcc/config.gcc
--- gcc-4.8-20130321.orig/gcc/config.gcc Wed Mar 13 09:47:41 2013
+++ gcc-4.8-20130321/gcc/config.gcc Fri Mar 29 11:47:34 2013
@@ -549,7 +549,7 @@
esac
# Common C libraries.
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
# Common parts for widely ported systems.
case ${target} in
@@ -652,6 +652,9 @@
*-*-*uclibc*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
;;
+ *-*-*musl*)
+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
+ ;;
*)
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
;;
@@ -2108,6 +2111,10 @@
tm_file="${tm_file} rs6000/linuxspe.h rs6000/e500.h" ;;
powerpc*-*-linux*paired*)
tm_file="${tm_file} rs6000/750cl.h" ;;
+ esac
+ case ${target} in
+ *-linux*-musl*)
+ enable_secureplt=yes ;;
esac
if test x${enable_secureplt} = xyes; then
tm_file="rs6000/secureplt.h ${tm_file}"
diff -urN gcc-4.8-20130321.orig/gcc/ginclude/stddef.h gcc-4.8-20130321/gcc/ginclude/stddef.h
--- gcc-4.8-20130321.orig/gcc/ginclude/stddef.h Thu Jan 10 20:38:27 2013
+++ gcc-4.8-20130321/gcc/ginclude/stddef.h Fri Mar 29 11:47:34 2013
@@ -181,6 +181,7 @@
#ifndef _GCC_SIZE_T
#ifndef _SIZET_
#ifndef __size_t
+#ifndef __DEFINED_size_t /* musl */
#define __size_t__ /* BeOS */
#define __SIZE_T__ /* Cray Unicos/Mk */
#define _SIZE_T
@@ -197,6 +198,7 @@
#define ___int_size_t_h
#define _GCC_SIZE_T
#define _SIZET_
+#define __DEFINED_size_t /* musl */
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|| defined(__FreeBSD_kernel__)
/* __size_t is a typedef on FreeBSD 5, must not trash it. */
@@ -231,6 +233,7 @@
#endif /* _SIZE_T */
#endif /* __SIZE_T__ */
#endif /* __size_t__ */
+#endif /* musl */
#undef __need_size_t
#endif /* _STDDEF_H or __need_size_t. */
diff -urN gcc-4.8-20130321.orig/libgomp/config/posix/time.c gcc-4.8-20130321/libgomp/config/posix/time.c
--- gcc-4.8-20130321.orig/libgomp/config/posix/time.c Mon Jan 14 18:18:49 2013
+++ gcc-4.8-20130321/libgomp/config/posix/time.c Fri Mar 29 11:47:34 2013
@@ -28,6 +28,8 @@
The following implementation uses the most simple POSIX routines.
If present, POSIX 4 clocks should be used instead. */
+#define _POSIX_C_SOURCE 199309L /* for clocks */
+
#include "libgomp.h"
#include <unistd.h>
#if TIME_WITH_SYS_TIME
diff -urN gcc-4.8-20130321.orig/libitm/config/arm/hwcap.cc gcc-4.8-20130321/libitm/config/arm/hwcap.cc
--- gcc-4.8-20130321.orig/libitm/config/arm/hwcap.cc Sun Feb 3 17:46:11 2013
+++ gcc-4.8-20130321/libitm/config/arm/hwcap.cc Fri Mar 29 11:56:22 2013
@@ -40,7 +40,7 @@
#ifdef __linux__
#include <unistd.h>
-#include <sys/fcntl.h>
+#include <fcntl.h>
#include <elf.h>
static void __attribute__((constructor))
diff -urN gcc-4.8-20130321.orig/libitm/config/linux/x86/tls.h gcc-4.8-20130321/libitm/config/linux/x86/tls.h
--- gcc-4.8-20130321.orig/libitm/config/linux/x86/tls.h Sun Feb 3 17:46:11 2013
+++ gcc-4.8-20130321/libitm/config/linux/x86/tls.h Fri Mar 29 11:47:34 2013
@@ -25,16 +25,19 @@
#ifndef LIBITM_X86_TLS_H
#define LIBITM_X86_TLS_H 1
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
/* Use slots in the TCB head rather than __thread lookups.
GLIBC has reserved words 10 through 13 for TM. */
#define HAVE_ARCH_GTM_THREAD 1
#define HAVE_ARCH_GTM_THREAD_DISP 1
#endif
+#endif
#include "config/generic/tls.h"
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+#if defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 10)
namespace GTM HIDDEN {
#ifdef __x86_64__
@@ -101,5 +104,6 @@
} // namespace GTM
#endif /* >= GLIBC 2.10 */
+#endif
#endif // LIBITM_X86_TLS_H
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/acinclude.m4 gcc-4.8-20130321/libstdc++-v3/acinclude.m4
--- gcc-4.8-20130321.orig/libstdc++-v3/acinclude.m4 Fri Mar 29 22:23:14 2013
+++ gcc-4.8-20130321/libstdc++-v3/acinclude.m4 Fri Mar 29 22:30:53 2013
@@ -99,6 +99,13 @@
# Check for C library flavor since GNU/Linux platforms use different
# configuration directories depending on the C library in use.
+ AC_EGREP_CPP([_using_glibc], [
+ #include <features.h>
+ #if __GLIBC__
+ _using_glibc
+ #endif
+ ], glibc=yes, glibc=no)
+
AC_EGREP_CPP([_using_uclibc], [
#include <stdio.h>
#if __UCLIBC__
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/configure gcc-4.8-20130321/libstdc++-v3/configure
--- gcc-4.8-20130321.orig/libstdc++-v3/configure Fri Mar 29 22:23:14 2013
+++ gcc-4.8-20130321/libstdc++-v3/configure Fri Mar 29 22:29:23 2013
@@ -5243,6 +5243,24 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+ #include <features.h>
+ #if __GLIBC__
+ _using_glibc
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "_using_glibc" >/dev/null 2>&1; then :
+ glibc=yes
+else
+ glibc=no
+fi
+rm -f conftest*
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
#include <stdio.h>
#if __UCLIBC__
_using_uclibc
diff -urN gcc-4.8-20130321.orig/libstdc++-v3/configure.host gcc-4.8-20130321/libstdc++-v3/configure.host
--- gcc-4.8-20130321.orig/libstdc++-v3/configure.host Fri Mar 29 22:23:14 2013
+++ gcc-4.8-20130321/libstdc++-v3/configure.host Fri Mar 29 22:36:15 2013
@@ -264,12 +264,14 @@
os_include_dir="os/bsd/freebsd"
;;
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
- if [ "$uclibc" = "yes" ]; then
+ if [ "$glibc" = "yes" ]; then
+ os_include_dir="os/gnu-linux"
+ elif [ "$uclibc" = "yes" ]; then
os_include_dir="os/uclibc"
elif [ "$bionic" = "yes" ]; then
os_include_dir="os/bionic"
else
- os_include_dir="os/gnu-linux"
+ os_include_dir="os/generic"
fi
;;
hpux*)
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2013-03-30 9:51 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-28 20:38 musl and gcc-4.8 (sabotage) Daniel Cegiełka
2013-03-28 23:32 ` John Spencer
2013-03-28 23:46 ` Daniel Cegiełka
2013-03-28 23:58 ` Daniel Cegiełka
2013-03-29 0:07 ` Rich Felker
2013-03-29 9:42 ` Szabolcs Nagy
2013-03-29 0:35 ` John Spencer
2013-03-29 1:39 ` Daniel Cegiełka
2013-03-29 1:56 ` Rich Felker
2013-03-29 11:07 ` Daniel Cegiełka
2013-03-29 11:25 ` Szabolcs Nagy
2013-03-29 14:13 ` Daniel Cegiełka
2013-03-29 15:19 ` Szabolcs Nagy
2013-03-29 15:38 ` Daniel Cegiełka
2013-03-30 9:51 ` Daniel Cegiełka
2013-03-29 2:10 ` John Spencer
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).