mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 21:10:07 +00:00
* 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.
This commit is contained in:
parent
18915760ad
commit
91ddd9c448
@ -1,5 +1,12 @@
|
|||||||
2007-08-16 Jakub Jelinek <jakub@redhat.com>
|
2007-08-16 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
* stdlib/bits/stdlib-ldbl.h (__strtold_internal): Remove.
|
* stdlib/bits/stdlib-ldbl.h (__strtold_internal): Remove.
|
||||||
* wcsmbs/bits/wchar-ldbl.h (__wcstold_internal): Remove.
|
* wcsmbs/bits/wchar-ldbl.h (__wcstold_internal): Remove.
|
||||||
|
|
||||||
|
@ -41,9 +41,9 @@ ENTRY (__clone)
|
|||||||
|
|
||||||
/* sanity check arguments */
|
/* sanity check arguments */
|
||||||
orcc %i0,%g0,%g2
|
orcc %i0,%g0,%g2
|
||||||
be .Lerror
|
be .Leinval
|
||||||
orcc %i1,%g0,%o1
|
orcc %i1,%g0,%o1
|
||||||
be .Lerror
|
be .Leinval
|
||||||
mov %i2,%o0
|
mov %i2,%o0
|
||||||
|
|
||||||
/* The child_stack is the top of the stack, allocate one
|
/* The child_stack is the top of the stack, allocate one
|
||||||
@ -70,9 +70,11 @@ ENTRY (__clone)
|
|||||||
jmpl %i7 + 8, %g0
|
jmpl %i7 + 8, %g0
|
||||||
restore %o0,%g0,%o0
|
restore %o0,%g0,%o0
|
||||||
|
|
||||||
|
.Leinval:
|
||||||
|
mov EINVAL, %o0
|
||||||
.Lerror:
|
.Lerror:
|
||||||
call HIDDEN_JUMPTARGET(__errno_location)
|
call HIDDEN_JUMPTARGET(__errno_location)
|
||||||
or %g0,EINVAL,%i0
|
mov %o0, %i0
|
||||||
st %i0,[%o0]
|
st %i0,[%o0]
|
||||||
jmpl %i7 + 8, %g0
|
jmpl %i7 + 8, %g0
|
||||||
restore %g0,-1,%o0
|
restore %g0,-1,%o0
|
||||||
|
@ -62,33 +62,16 @@ ENTRY (__clone)
|
|||||||
/* Do the system call */
|
/* Do the system call */
|
||||||
set __NR_clone, %g1
|
set __NR_clone, %g1
|
||||||
ta 0x6d
|
ta 0x6d
|
||||||
bcs,pn %xcc, 99f
|
bcs,pn %xcc, 98f
|
||||||
nop
|
nop
|
||||||
brnz,pn %o1, __thread_start
|
brnz,pn %o1, __thread_start
|
||||||
nop
|
nop
|
||||||
jmpl %i7 + 8, %g0
|
jmpl %i7 + 8, %g0
|
||||||
restore %o0, %g0, %o0
|
restore %o0, %g0, %o0
|
||||||
99:
|
99: mov EINVAL, %o0
|
||||||
#ifndef _LIBC_REENTRANT
|
98: call HIDDEN_JUMPTARGET(__errno_location)
|
||||||
#ifdef PIC
|
mov %o0, %i0
|
||||||
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
|
|
||||||
st %i0, [%o0]
|
st %i0, [%o0]
|
||||||
#endif
|
|
||||||
jmpl %i7 + 8, %g0
|
jmpl %i7 + 8, %g0
|
||||||
restore %g0,-1,%o0
|
restore %g0,-1,%o0
|
||||||
END(__clone)
|
END(__clone)
|
||||||
|
Loading…
Reference in New Issue
Block a user