aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/uClibc/patches/409-ldso-avr32-startup-hack.patch
diff options
context:
space:
mode:
authorImre Kaloz <kaloz@openwrt.org>2007-06-08 10:44:01 +0000
committerImre Kaloz <kaloz@openwrt.org>2007-06-08 10:44:01 +0000
commit15a51103e899264b1689fa9967c4f74c4417bca1 (patch)
treeab9aee6ffb779dd0147f55c0876d42e29802fe90 /toolchain/uClibc/patches/409-ldso-avr32-startup-hack.patch
parentd442289f60548d0c33385edd723ba2eb61cd88c5 (diff)
downloadmaster-187ad058-15a51103e899264b1689fa9967c4f74c4417bca1.tar.gz
master-187ad058-15a51103e899264b1689fa9967c4f74c4417bca1.tar.bz2
master-187ad058-15a51103e899264b1689fa9967c4f74c4417bca1.zip
add support for the AVR32 platform, namely the ATNGW100 board - joint work with wigyori
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7533 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/uClibc/patches/409-ldso-avr32-startup-hack.patch')
-rw-r--r--toolchain/uClibc/patches/409-ldso-avr32-startup-hack.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches/409-ldso-avr32-startup-hack.patch b/toolchain/uClibc/patches/409-ldso-avr32-startup-hack.patch
new file mode 100644
index 0000000000..0cdc2ccb32
--- /dev/null
+++ b/toolchain/uClibc/patches/409-ldso-avr32-startup-hack.patch
@@ -0,0 +1,40 @@
+Subject: [PATCH] ldso: AVR32 startup hack
+
+AVR32 needs to do both PERFORM_BOOTSTRAP_GOT and a full relocation of
+the GOT. I don't quite remember why, but I think it's because some GOT
+entries just need the load address added to them, while the rest need
+the full relocation code.
+
+This patch should be revisited to figure out whether we're processing
+relocations against undefined symbols and whether that's something we
+should be doing...
+
+---
+
+ ldso/ldso/dl-startup.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+Index: uClibc-0.9.28/ldso/ldso/dl-startup.c
+===================================================================
+--- uClibc-0.9.28.orig/ldso/ldso/dl-startup.c 2006-02-07 16:49:27.000000000 +0100
++++ uClibc-0.9.28/ldso/ldso/dl-startup.c 2006-02-07 17:12:09.000000000 +0100
+@@ -217,7 +217,9 @@ static void * __attribute_used__ _dl_sta
+ /* some arches (like MIPS) we have to tweak the GOT before relocations */
+ PERFORM_BOOTSTRAP_GOT(tpnt);
+
+-#else
++#endif
++
++#if !defined(PERFORM_BOOTSTRAP_GOT) || defined(__avr32__)
+
+ /* OK, now do the relocations. We do not do a lazy binding here, so
+ that once we are done, we have considerably more flexibility. */
+@@ -259,7 +261,7 @@ static void * __attribute_used__ _dl_sta
+ rel_addr += relative_count * sizeof(ELF_RELOC);;
+ }
+
+- rpnt = (ELF_RELOC *) (rel_addr + load_addr);
++ rpnt = (ELF_RELOC *) (rel_addr /* + load_addr */);
+ for (i = 0; i < rel_size; i += sizeof(ELF_RELOC), rpnt++) {
+ reloc_addr = (unsigned long *) (load_addr + (unsigned long) rpnt->r_offset);
+ symtab_index = ELF_R_SYM(rpnt->r_info);