]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix x32 sched_getcpu.S error code
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 23 May 2012 13:48:05 +0000 (06:48 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 23 May 2012 13:48:05 +0000 (06:48 -0700)
ChangeLog
sysdeps/unix/sysv/linux/x86_64/x32/sched_getcpu.S

index 87dc9113973d614723416bc477857fa40849005a..14f37cf9bcafe61723cb989a000a640ca180f23b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-05-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * sysdeps/unix/sysv/linux/x86_64/x32/sched_getcpu.S: Rearrange
+       code so that pseudo_end is just ret and the stack pointer is
+       correct also for static library in error case.
+
 2012-05-23  Joseph Myers  <joseph@codesourcery.com>
 
        * sysdeps/unix/sysv/linux/powerpc/chown.c: Add comment suggesting
index f3ba9f1c9f591bd004841aa37bbd0ee259c54841..789552ebbb885740684e48b060c7d4be6fece917 100644 (file)
@@ -33,14 +33,18 @@ ENTRY (sched_getcpu)
 
        call    __getcpu
 
+       /* Local variable is result if the call is successful.  */
+       mov     (%rsp), %edx
+       /* Restore stack pointer before we might jump to
+          SYSCALL_ERROR_LABEL which returns to the caller.  */
+       add     $0x8, %esp
+       cfi_adjust_cfa_offset(-8)
+
        cmp     $-4095, %eax
        jae     SYSCALL_ERROR_LABEL
 
-       mov     (%rsp), %eax
-
+       mov     %edx, %eax
 L(pseudo_end):
-       add     $0x8, %esp
-       cfi_adjust_cfa_offset(-8)
        ret
 PSEUDO_END(sched_getcpu)
 #endif