From 99ce72fbb19e3488d842809734750ee463022aa3 Mon Sep 17 00:00:00 2001 From: gonzo Date: Tue, 6 Mar 2012 03:27:08 +0000 Subject: [PATCH 127/175] - Switch to saving non-offseted pointer to TLS block in order too keep things simple git-svn-id: http://svn.freebsd.org/base/head@232578 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f (cherry picked from commit 422eebf7ef16662dc965a93bd0577dc19c4cd31c) Signed-off-by: Xin Li --- libexec/rtld-elf/mips/reloc.c | 7 +++---- libexec/rtld-elf/mips/rtld_machdep.h | 14 +------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/libexec/rtld-elf/mips/reloc.c b/libexec/rtld-elf/mips/reloc.c index 7b520c9..fd108f9 100644 --- a/libexec/rtld-elf/mips/reloc.c +++ b/libexec/rtld-elf/mips/reloc.c @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include "debug.h" #include "rtld.h" @@ -622,8 +623,7 @@ allocate_initial_tls(Obj_Entry *objs) */ tls_static_space = tls_last_offset + tls_last_size + RTLD_STATIC_TLS_EXTRA; - tls = ((char *) allocate_tls(objs, NULL, TLS_TCB_SIZE, 8) - + TLS_TP_OFFSET + TLS_TCB_SIZE); + tls = (char *) allocate_tls(objs, NULL, TLS_TCB_SIZE, 8); sysarch(MIPS_SET_TLS, tls); } @@ -636,8 +636,7 @@ __tls_get_addr(tls_index* ti) sysarch(MIPS_GET_TLS, &tls); - p = tls_get_addr_common((Elf_Addr**)((Elf_Addr)tls - TLS_TP_OFFSET - - TLS_TCB_SIZE), ti->ti_module, ti->ti_offset + TLS_DTP_OFFSET); + p = tls_get_addr_common(tls, ti->ti_module, ti->ti_offset + TLS_DTP_OFFSET); return (p); } diff --git a/libexec/rtld-elf/mips/rtld_machdep.h b/libexec/rtld-elf/mips/rtld_machdep.h index b7cdc00..327a359 100644 --- a/libexec/rtld-elf/mips/rtld_machdep.h +++ b/libexec/rtld-elf/mips/rtld_machdep.h @@ -31,6 +31,7 @@ #include #include +#include struct Struct_Obj_Entry; @@ -48,19 +49,6 @@ Elf_Addr reloc_jmpslot(Elf_Addr *where, Elf_Addr target, #define call_initfini_pointer(obj, target) \ (((InitFunc)(target))()) -/* - * TLS - */ - -#define TLS_TP_OFFSET 0x7000 -#define TLS_DTP_OFFSET 0x8000 - -#ifdef __mips_n64 -#define TLS_TCB_SIZE 16 -#else -#define TLS_TCB_SIZE 8 -#endif - typedef struct { unsigned long ti_module; unsigned long ti_offset; -- 1.7.9.4