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 87dc911..14f37cf 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 f3ba9f1..789552e 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