diff options
Diffstat (limited to 'sysdeps/unix/i386/sysdep.S')
-rw-r--r-- | sysdeps/unix/i386/sysdep.S | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sysdeps/unix/i386/sysdep.S b/sysdeps/unix/i386/sysdep.S index efe4f56e95..95e2fd5c7a 100644 --- a/sysdeps/unix/i386/sysdep.S +++ b/sysdeps/unix/i386/sysdep.S @@ -41,11 +41,11 @@ notb: #ifndef PIC movl %eax, C_SYMBOL_NAME(errno) #else - /* Standard PIC nonsense to store into `errno' through the GOT. */ - call here -here: popl %ecx - addl $_GLOBAL_OFFSET_TABLE_+[.-here], %ecx - movl C_SYMBOL_NAME(errno@GOT)(%ecx), %ecx + /* The caller has pushed %ebx and then set it up to + point to the GOT before calling us through the PLT. */ + movl C_SYMBOL_NAME(errno@GOT)(%ebx), %ecx + /* Pop %ebx value saved before jumping here. */ + popl %ebx movl %eax, (%ecx) #endif movl $-1, %eax |