gcc: use the -sf suffix for musl ldso on powerpc
authorFelix Fietkau <nbd@openwrt.org>
Sun, 12 Jul 2015 18:54:30 +0000 (18:54 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 12 Jul 2015 18:54:30 +0000 (18:54 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 46313

toolchain/gcc/patches/4.8-linaro/203-musl_powerpc.patch
toolchain/gcc/patches/4.9-linaro/203-musl_powerpc.patch
toolchain/musl/patches/010-Add-PowerPC-soft-float-support.patch

index 7a70148fabb49d83bfae232481cad49ee83102e5..61e94be6c3b6f7f9e4ee304c53181ece422f6e85 100644 (file)
@@ -17,7 +17,7 @@
  #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 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_LINKER32 "/lib/ld-musl-powerpc%{msoft-float:-sf}.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 MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
  #if DEFAULT_LIBC == LIBC_UCLIBC
 -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
@@ -72,7 +72,7 @@
  
  #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
  #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
  
  #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"
++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc%{msoft-float:-sf}.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 "}}"
  #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 "}}"
index 4340c5fd2f45846eed6ce270bfc34a96686121e4..033f586f4c23abee8606af8fb1d4ad798aea0461 100644 (file)
@@ -17,7 +17,7 @@
  #endif
  #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
  #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
  #endif
  #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_LINKER32 "/lib/ld-musl-powerpc%{msoft-float:-sf}.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 MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
  #if DEFAULT_LIBC == LIBC_UCLIBC
 -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
@@ -72,7 +72,7 @@
  
  #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
  #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
  
  #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"
++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc%{msoft-float:-sf}.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 "}}"
  #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 "}}"
index 7dfb7ed0196abcce9d835bd0fb1ef0f0e6a1d21a..4ed0ade3fa24be24465e03e7d1d4fffd287a1fae 100644 (file)
@@ -7,8 +7,7 @@ instruction set for floating point operations (SPE).
 Executing regular PowerPC floating point instructions results in
 "Illegal instruction" errors.
 
 Executing regular PowerPC floating point instructions results in
 "Illegal instruction" errors.
 
-Until support for SPE FPU is added, make it possible to run these
-devices in soft-float mode.
+Make it possible to run these devices in soft-float mode.
 
 Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 ---
 
 Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 ---
@@ -18,6 +17,20 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  create mode 100644 src/setjmp/powerpc-sf/setjmp.s
  create mode 100644 src/setjmp/powerpc-sf/setjmp.sub
 
  create mode 100644 src/setjmp/powerpc-sf/setjmp.s
  create mode 100644 src/setjmp/powerpc-sf/setjmp.sub
 
+--- a/arch/powerpc/reloc.h
++++ b/arch/powerpc/reloc.h
+@@ -1,4 +1,10 @@
+-#define LDSO_ARCH "powerpc"
++#ifdef _SOFT_FLOAT
++#define FP_SUFFIX "-sf"
++#else
++#define FP_SUFFIX ""
++#endif
++
++#define LDSO_ARCH "powerpc" FP_SUFFIX
+ #define TPOFF_K (-0x7000)
 --- a/configure
 +++ b/configure
 @@ -498,6 +498,10 @@ trycppif "_MIPSEL || __MIPSEL || __MIPSE
 --- a/configure
 +++ b/configure
 @@ -498,6 +498,10 @@ trycppif "_MIPSEL || __MIPSEL || __MIPSE