diff options
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.h | 7 |
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; \ |