uClibc: add another missing backport patch
[openwrt.git] / toolchain / uClibc / patches-0.9.33.2 / 612-mips64_relocation_fix.patch
1 commit 052bcf13afb067cafac5e7f4fc21fbad2b34b11f
2 Author: Waldemar Brodkorb <wbx@openadk.org>
3 Date:   Wed Nov 27 09:55:51 2013 +0100
4
5     Fix for SIGBUS error on MIPS64 with N64 ABI
6     
7     When accessing errno, a per thread variable, from _stdio_init
8     a SIGBUS error happens. This change fixes the wrong relocation
9     and debug output.
10     
11     Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
12     Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
13
14 --- a/ldso/ldso/mips/elfinterp.c
15 +++ b/ldso/ldso/mips/elfinterp.c
16 @@ -259,11 +259,11 @@ int _dl_parse_relocation_information(str
17                                         case R_MIPS_TLS_TPREL32:
18                                         case R_MIPS_TLS_TPREL64:
19                                                 CHECK_STATIC_TLS((struct link_map *)tls_tpnt);
20 -                                               *(ElfW(Word) *)reloc_addr +=
21 +                                               *(ElfW(Addr) *)reloc_addr +=
22                                                         TLS_TPREL_VALUE (tls_tpnt, symbol_addr);
23  #ifdef __SUPPORT_LD_DEBUG__
24                                                 _dl_dprintf(2, "TLS_TPREL  : %s, %x, %x\n",
25 -                                                       symname, old_val, *((unsigned int *)reloc_addr));
26 +                                                       symname, old_val, *((unsigned long *)reloc_addr));
27  #endif
28                                                 break;
29                                 }