diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-08-16 19:44:26 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2007-08-16 19:44:26 +0000 |
commit | 91ddd9c44807742aba0fd255b0345bbb547e1d50 (patch) | |
tree | e53b85646dca01c2ab344e021e72d7cdba106701 /sysdeps/unix/sysv/linux/sparc/sparc64 | |
parent | 18915760ad84c8901767391f0633b189d7bf2cd3 (diff) | |
download | glibc-91ddd9c44807742aba0fd255b0345bbb547e1d50.tar.gz glibc-91ddd9c44807742aba0fd255b0345bbb547e1d50.tar.xz glibc-91ddd9c44807742aba0fd255b0345bbb547e1d50.zip |
* sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone):
If the syscall fails, set errno to the actual returned error number rather than EINVAL. * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S (__clone): If arguments are incorrect, set errno to EINVAL, if the syscall fails, set errno to the actual returned error number. * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): If the syscall fails, set errno to the actual returned error number rather than EINVAL. * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S (__clone): If arguments are incorrect, set errno to EINVAL, if the syscall fails, set errno to the actual returned error number.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/sparc64')
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/clone.S | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S index b1dcc914b0..2bbbd80202 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S @@ -62,33 +62,16 @@ ENTRY (__clone) /* Do the system call */ set __NR_clone, %g1 ta 0x6d - bcs,pn %xcc, 99f + bcs,pn %xcc, 98f nop brnz,pn %o1, __thread_start nop jmpl %i7 + 8, %g0 restore %o0, %g0, %o0 -99: -#ifndef _LIBC_REENTRANT -#ifdef PIC - call 1f - sethi %hi(_GLOBAL_OFFSET_TABLE_-(99b-.)), %l7 -1: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(99b-.)), %l7 - add %l7, %o7, %l7 - set EINVAL, %i0 - sethi %hi(errno), %g2 - or %g2, %lo(errno), %g2 - st %i0, [%l7+%g2] -#else - sethi %hi(errno), %g2 - set EINVAL, %i0 - st %i0, [%g2+%lo(errno)] -#endif -#else - call HIDDEN_JUMPTARGET(__errno_location) - nop +99: mov EINVAL, %o0 +98: call HIDDEN_JUMPTARGET(__errno_location) + mov %o0, %i0 st %i0, [%o0] -#endif jmpl %i7 + 8, %g0 restore %g0,-1,%o0 END(__clone) |