diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/sysdep.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h index 17f2ca919f..de6bb44d9f 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h @@ -23,6 +23,7 @@ #include <sysdeps/unix/x86_64/sysdep.h> #include <bp-sym.h> #include <bp-asm.h> +#include <tls.h> #ifdef IS_IN_rtld # include <dl-sysdep.h> /* Defines RTLD_PRIVATE_ERRNO. */ @@ -82,22 +83,22 @@ #ifndef PIC #define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ -#elif USE___THREAD +#elif RTLD_PRIVATE_ERRNO # define SYSCALL_ERROR_HANDLER \ 0: \ - movq errno@GOTTPOFF(%rip), %rcx; \ + leaq errno(%rip), %rcx; \ xorq %rdx, %rdx; \ subq %rax, %rdx; \ - movl %edx, %fs:(%rcx); \ + movl %edx, (%rcx); \ orq $-1, %rax; \ jmp L(pseudo_end); -#elif RTLD_PRIVATE_ERRNO +#elif USE___THREAD # define SYSCALL_ERROR_HANDLER \ 0: \ - leaq errno(%rip), %rcx; \ + movq errno@GOTTPOFF(%rip), %rcx; \ xorq %rdx, %rdx; \ subq %rax, %rdx; \ - movl %edx, (%rcx); \ + movl %edx, %fs:(%rcx); \ orq $-1, %rax; \ jmp L(pseudo_end); #elif defined _LIBC_REENTRANT |