30 lines
1.0 KiB
Diff
30 lines
1.0 KiB
Diff
|
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;
|
||
|
}
|