diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-07-10 19:28:45 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2014-07-10 19:28:45 +0000 |
commit | ded4c0675d1dd3b6268ac94ff2c99ebb280815f9 (patch) | |
tree | bfa8b5fbe38c9d55ce814c4fbdbc02c830a0a8b9 /toolchain/uClibc/patches-0.9.33.2/612-mips64_relocation_fix.patch | |
parent | a44b4e3ffb2a35cc83871c46d8b45327e5abc91c (diff) | |
download | upstream-ded4c0675d1dd3b6268ac94ff2c99ebb280815f9.tar.gz upstream-ded4c0675d1dd3b6268ac94ff2c99ebb280815f9.tar.bz2 upstream-ded4c0675d1dd3b6268ac94ff2c99ebb280815f9.zip |
uClibc: add a whole bunch of mips64 related fixes
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 41570
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.patch | 29 |
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; + } |