summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2012-04-30 15:55:34 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-05-24 08:51:35 +0100
commite108db7acc6382a51fa80f9346beacfa6e844b46 (patch)
treef2a0e1425283d7c54cbb4e8b75287e513ac19b3e /meta/recipes-devtools
parent49694d650c61547d881a782af2a0f24dc39a042f (diff)
downloadpoky-e108db7acc6382a51fa80f9346beacfa6e844b46.tar.gz
gcc-4.7: Add knowledge about arm hf dynamic loader
(From OE-Core rev: a0d9e602a778feab2201a0643fb7d555b71017b9) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.7.inc1
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.7/arm-hard-float-loader.patch48
2 files changed, 49 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.7.inc b/meta/recipes-devtools/gcc/gcc-4.7.inc
index efd166c561..0321776ad1 100644
--- a/meta/recipes-devtools/gcc/gcc-4.7.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.7.inc
@@ -65,6 +65,7 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH};proto=http \
65 file://libgcc-sjlj-check.patch \ 65 file://libgcc-sjlj-check.patch \
66 file://cpp-honor-sysroot.patch \ 66 file://cpp-honor-sysroot.patch \
67 file://mips64-default-n64.patch \ 67 file://mips64-default-n64.patch \
68 file://arm-hard-float-loader.patch \
68 " 69 "
69 70
70S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${BRANCH}" 71S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${BRANCH}"
diff --git a/meta/recipes-devtools/gcc/gcc-4.7/arm-hard-float-loader.patch b/meta/recipes-devtools/gcc/gcc-4.7/arm-hard-float-loader.patch
new file mode 100644
index 0000000000..dfa0d191f3
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.7/arm-hard-float-loader.patch
@@ -0,0 +1,48 @@
1This patch is still being discussed by probably is almost
2final version. We add the OE notion of multilib on top
3
4Upstream-Status: Backport [ adapted ]
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7
8Index: gcc-4_7-branch/gcc/config/arm/linux-eabi.h
9===================================================================
10--- gcc-4_7-branch.orig/gcc/config/arm/linux-eabi.h 2012-04-30 15:28:31.891863845 -0700
11+++ gcc-4_7-branch/gcc/config/arm/linux-eabi.h 2012-04-30 15:37:11.531888994 -0700
12@@ -32,7 +32,8 @@
13 while (false)
14
15 /* We default to a soft-float ABI so that binaries can run on all
16- target hardware. */
17+ target hardware. If you override this to use the hard-float ABI then
18+ change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */
19 #undef TARGET_DEFAULT_FLOAT_ABI
20 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
21
22@@ -59,10 +60,23 @@
23 #undef SUBTARGET_EXTRA_LINK_SPEC
24 #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
25
26-/* Use ld-linux.so.3 so that it will be possible to run "classic"
27- GNU/Linux binaries on an EABI system. */
28+/* GNU/Linux on ARM currently supports three dynamic linkers:
29+ - ld-linux.so.2 - for the legacy ABI
30+ - ld-linux.so.3 - for the EABI-derived soft-float ABI
31+ - ld-linux-armhf.so.3 - for the EABI-derived hard-float ABI.
32+ All the dynamic linkers live in /lib.
33+ We default to soft-float, but this can be overridden by changing both
34+ GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI. */
35+
36 #undef GLIBC_DYNAMIC_LINKER
37-#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.3"
38+#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT SYSTEMLIBS_DIR "ld-linux.so.3"
39+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT SYSTEMLIBS_DIR "ld-linux-armhf.so.3"
40+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
41+
42+ #define GLIBC_DYNAMIC_LINKER \
43+ "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
44+ %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
45+ %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
46
47 /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
48 use the GNU/Linux version, not the generic BPABI version. */