aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-09-30 10:26:28 +0000
committerRoland McGrath <roland@gnu.org>2002-09-30 10:26:28 +0000
commit7de490c6863aa4bb81d3a1cb4a0a35028aeee260 (patch)
tree53f79d3eb5749bbd9e516ed42c2c55c29f6dcced /sysdeps/unix/sysv
parent82685ecbd7ffcae45b078cc5e2faeb88205a1785 (diff)
downloadglibc-7de490c6863aa4bb81d3a1cb4a0a35028aeee260.tar
glibc-7de490c6863aa4bb81d3a1cb4a0a35028aeee260.tar.gz
glibc-7de490c6863aa4bb81d3a1cb4a0a35028aeee260.tar.bz2
glibc-7de490c6863aa4bb81d3a1cb4a0a35028aeee260.zip
2002-09-30 Roland McGrath <roland@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysdep.h [USE_TLS && HAVE___THREAD] (SYSCALL_ERROR_HANDLER): Use direct-%gs form of TLS access for errno.
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 6dbeb3d297..ed0bdf6b7d 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -99,11 +99,10 @@ __i686.get_pc_thunk.reg: \
# define SYSCALL_ERROR_HANDLER \
0:SETUP_PIC_REG (cx); \
addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
+ movl errno@gotntpoff(%ecx), %ecx; \
xorl %edx, %edx; \
subl %eax, %edx; \
- movl %gs:0, %eax; \
- subl errno@gottpoff(%ecx), %eax; \
- movl %edx, (%eax); \
+ movl %edx, %gs:0(%ecx); \
orl $-1, %eax; \
jmp L(pseudo_end);
# else
@@ -127,7 +126,7 @@ __i686.get_pc_thunk.reg: \
# endif
# else
# define SYSCALL_ERROR_HANDLER \
-0:define SETUP_PIC_REG(cx); \
+0:SETUP_PIC_REG(cx); \
addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
xorl %edx, %edx; \
subl %eax, %edx; \