aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/uClibc/patches-0.9.33.2/612-mips64_relocation_fix.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-07-10 19:28:45 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-07-10 19:28:45 +0000
commita22846267123c31f3717f42d0bce7da2043be0b0 (patch)
tree1c35e5d5a0c2df50f7ec21f071d63a5b7a66be02 /toolchain/uClibc/patches-0.9.33.2/612-mips64_relocation_fix.patch
parent752fdaeb911e28d139baf4f04f019cf56e6cb7e9 (diff)
downloadmaster-187ad058-a22846267123c31f3717f42d0bce7da2043be0b0.tar.gz
master-187ad058-a22846267123c31f3717f42d0bce7da2043be0b0.tar.bz2
master-187ad058-a22846267123c31f3717f42d0bce7da2043be0b0.zip
uClibc: add a whole bunch of mips64 related fixes
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@41570 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/uClibc/patches-0.9.33.2/612-mips64_relocation_fix.patch')
-rw-r--r--toolchain/uClibc/patches-0.9.33.2/612-mips64_relocation_fix.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches-0.9.33.2/612-mips64_relocation_fix.patch b/toolchain/uClibc/patches-0.9.33.2/612-mips64_relocation_fix.patch
new file mode 100644
index 0000000000..7edeee17d0
--- /dev/null
+++ b/toolchain/uClibc/patches-0.9.33.2/612-mips64_relocation_fix.patch
@@ -0,0 +1,29 @@
+commit 052bcf13afb067cafac5e7f4fc21fbad2b34b11f
+Author: Waldemar Brodkorb <wbx@openadk.org>
+Date: Wed Nov 27 09:55:51 2013 +0100
+
+ Fix for SIGBUS error on MIPS64 with N64 ABI
+
+ When accessing errno, a per thread variable, from _stdio_init
+ a SIGBUS error happens. This change fixes the wrong relocation
+ and debug output.
+
+ Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+ Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
+
+--- a/ldso/ldso/mips/elfinterp.c
++++ b/ldso/ldso/mips/elfinterp.c
+@@ -259,11 +259,11 @@ int _dl_parse_relocation_information(str
+ case R_MIPS_TLS_TPREL32:
+ case R_MIPS_TLS_TPREL64:
+ CHECK_STATIC_TLS((struct link_map *)tls_tpnt);
+- *(ElfW(Word) *)reloc_addr +=
++ *(ElfW(Addr) *)reloc_addr +=
+ TLS_TPREL_VALUE (tls_tpnt, symbol_addr);
+ #ifdef __SUPPORT_LD_DEBUG__
+ _dl_dprintf(2, "TLS_TPREL : %s, %x, %x\n",
+- symname, old_val, *((unsigned int *)reloc_addr));
++ symname, old_val, *((unsigned long *)reloc_addr));
+ #endif
+ break;
+ }