summaryrefslogtreecommitdiff
path: root/recipes/uclibc/files
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2009-03-20 12:28:27 -0700
committerKhem Raj <raj.khem@gmail.com>2009-03-20 12:28:27 -0700
commit8d0b0994a86b2800363b7d1ab4384bd87fb94f6a (patch)
treeea45aabd41a00c38565bb10340f2fc60bc4414be /recipes/uclibc/files
parenta7b83866a10c1487125720d7583b9f6935ea9e61 (diff)
uclibc: Get uclibc working in thumb mode.
* WARNING!! Do not use bintils 2.19 or 2.19.1 when compiling in thumb mode. The veneer generation does not work as expected. Use binutils 2.18 or binutils_cvs * Move LEAD_SONAME into uclibc.inc * Use no optimizations while compiling ldso.c to over come a gcc ICE * Use ARM mode resolver for thumb mode. The resolver depends on ip register and if we use thumb function for _dl_linux_resolve then it adds a veneer which corrupts ip.
Diffstat (limited to 'recipes/uclibc/files')
-rw-r--r--recipes/uclibc/files/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch21
-rw-r--r--recipes/uclibc/files/uclibc_ldso_use_O0.patch13
2 files changed, 34 insertions, 0 deletions
diff --git a/recipes/uclibc/files/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch b/recipes/uclibc/files/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch
new file mode 100644
index 0000000000..cfa68ce52d
--- /dev/null
+++ b/recipes/uclibc/files/ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch
@@ -0,0 +1,21 @@
+Index: uClibc/ldso/ldso/arm/resolve.S
+===================================================================
+--- uClibc.orig/ldso/ldso/arm/resolve.S 2009-03-20 12:03:32.000000000 -0700
++++ uClibc/ldso/ldso/arm/resolve.S 2009-03-20 12:04:23.000000000 -0700
+@@ -97,7 +97,6 @@
+
+ .text
+ .align 4 @ 16 byte boundary and there are 32 bytes below (arm case)
+- #if !defined(__thumb__) || defined(__thumb2__)
+ .arm
+ .globl _dl_linux_resolve
+ .type _dl_linux_resolve,%function
+@@ -129,7 +128,7 @@
+ #else
+ mov pc,ip
+ #endif
+-#else
++#if 0
+ @ In the thumb case _dl_linux_resolver is thumb. If a bl is used
+ @ from arm code the linker will insert a stub call which, with
+ @ binutils 2.16, is not PIC. Since this code is accessed by an
diff --git a/recipes/uclibc/files/uclibc_ldso_use_O0.patch b/recipes/uclibc/files/uclibc_ldso_use_O0.patch
new file mode 100644
index 0000000000..7a89e66621
--- /dev/null
+++ b/recipes/uclibc/files/uclibc_ldso_use_O0.patch
@@ -0,0 +1,13 @@
+Index: uClibc/ldso/ldso/Makefile.in
+===================================================================
+--- uClibc.orig/ldso/ldso/Makefile.in 2009-02-03 17:27:55.000000000 -0800
++++ uClibc/ldso/ldso/Makefile.in 2009-02-03 17:28:11.000000000 -0800
+@@ -8,7 +8,7 @@
+ CFLAGS-ldso := -DNOT_IN_libc -DIS_IN_rtld $(SSP_DISABLE_FLAGS)
+
+ # This stuff will not work with -fomit-frame-pointer
+-CFLAGS-ldso += -fno-omit-frame-pointer
++CFLAGS-ldso += -O0 -fno-omit-frame-pointer
+
+ CFLAGS-ldso += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso
+ CFLAGS-ldso += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\"