From 49700fa92a3727e0248fc7c23f6df8486707deb1 Mon Sep 17 00:00:00 2001 From: Max Filippov Date: Fri, 3 Jul 2015 19:51:25 +0300 Subject: test/tls: xtensa: fix TLS_LD definition TLS_LD should use linker-provided symbol _TLS_MODULE_BASE_ instead of symbol it resolves to get thread pointer, otherwise linker relaxation doesn't work correctly, adding extra offset to thread-local variable address. This fixes most of tls/tst-tls* tests. Signed-off-by: Max Filippov --- test/tls/tls-macros.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/tls/tls-macros.h b/test/tls/tls-macros.h index a41aef688..7d8927400 100644 --- a/test/tls/tls-macros.h +++ b/test/tls/tls-macros.h @@ -900,9 +900,9 @@ register void *__gp __asm__("$29"); #define TLS_LD(x) \ ({ int *__l; \ - __asm__ ("movi a8, " #x "@TLSFUNC\n\t" \ - "movi a10, " #x "@TLSARG\n\t" \ - "callx8.tls a8, " #x "@TLSCALL\n\t" \ + __asm__ ("movi a8, _TLS_MODULE_BASE_@TLSFUNC\n\t" \ + "movi a10, _TLS_MODULE_BASE_@TLSARG\n\t" \ + "callx8.tls a8, _TLS_MODULE_BASE_@TLSCALL\n\t" \ "movi %0, " #x "@TPOFF\n\t" \ "add %0, %0, a10\n\t" \ : "=r" (__l) \ -- cgit v1.2.3