From 1a6e9782e2a7239f2534347a4ef5b35542dd4e41 Mon Sep 17 00:00:00 2001 From: Bernhard Walle Date: Thu, 9 Oct 2014 10:46:07 +0200 Subject: cc/gcc: Fix dynamic linker path for hard float libc When compiling glibc 2.16 and gcc 4.7.4 with CT_ARCH_FLOAT="hard", I end up in a dynamic linker called /lib/ld-linux-armhf.so.3, but gcc compiles the binaries with an ELF interpreter /lib/ld-linux.so.3. That doesn't work. This patch (which is included in recent gcc version and also is included in Linaro 4.7 versions) fixes the problem. I just stripped the ChangeLog diff from the original commit. Signed-off-by: Bernhard Walle diff --git a/patches/gcc/4.7.4/100-hardfloat-ld.patch b/patches/gcc/4.7.4/100-hardfloat-ld.patch new file mode 100644 index 0000000..0e97b6f --- /dev/null +++ b/patches/gcc/4.7.4/100-hardfloat-ld.patch @@ -0,0 +1,44 @@ +From 9dd1a0668e5ab10a5943fdd1aee2e1616d7fc7ed Mon Sep 17 00:00:00 2001 +From: michaelh +Date: Thu, 26 Apr 2012 04:33:08 +0000 +Subject: [PATCH] 2012-04-26 Michael Hope + Richard Earnshaw + + * config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define. + (GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define. + (GLIBC_DYNAMIC_LINKER_DEFAULT): Define. + (GLIBC_DYNAMIC_LINKER): Redefine to use the hard float path. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186859 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/config/arm/linux-eabi.h | 12 +++++++++++- + 2 files changed, 19 insertions(+), 1 deletion(-) + +diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h +index 80bd825..2ace6f0 100644 +--- a/gcc/config/arm/linux-eabi.h ++++ b/gcc/config/arm/linux-eabi.h +@@ -62,7 +62,17 @@ + /* Use ld-linux.so.3 so that it will be possible to run "classic" + GNU/Linux binaries on an EABI system. */ + #undef GLIBC_DYNAMIC_LINKER +-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3" ++#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3" ++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3" ++#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_HARD ++#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_HARD_FLOAT ++#else ++#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT ++#endif ++#define GLIBC_DYNAMIC_LINKER \ ++ "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \ ++ %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \ ++ %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}" + + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ +-- +2.1.0 + -- cgit v0.10.2-6-g49f6