projects
/
test_jj.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
8f2b7c1
)
libsanitizer: cherry-pick commit b226894d475b from upstream
author
H.J. Lu
<hjl.tools@gmail.com>
Thu, 5 May 2022 20:59:16 +0000
(13:59 -0700)
committer
H.J. Lu
<hjl.tools@gmail.com>
Fri, 6 May 2022 14:38:35 +0000
(07:38 -0700)
cherry-pick:
b226894d475b
[sanitizer] [sanitizer] Correct GetTls for x32
(cherry picked from commit
a48be2e513d9ddb2fa8800a158f18502a0923aec
)
libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
patch
|
blob
|
history
diff --git
a/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
b/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
index
0c260b6
..
4f22c78
100644
(file)
--- a/
libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
+++ b/
libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
@@
-463,7
+463,11
@@
static void GetTls(uptr *addr, uptr *size) {
#elif SANITIZER_GLIBC && defined(__x86_64__)
// For aarch64 and x86-64, use an O(1) approach which requires relatively
// precise ThreadDescriptorSize. g_tls_size was initialized in InitTlsSize.
+# if SANITIZER_X32
+ asm("mov %%fs:8,%0" : "=r"(*addr));
+# else
asm("mov %%fs:16,%0" : "=r"(*addr));
+# endif
*size = g_tls_size;
*addr -= *size;
*addr += ThreadDescriptorSize();