2004-03-10  Ulrich Drepper  <drepper@redhat.com>

	* posix/getopt.c (_): Don't define here for glibc.
This commit is contained in:
Ulrich Drepper 2004-03-10 23:14:28 +00:00
parent d3a4a571c4
commit d682a515f1
9 changed files with 202 additions and 8 deletions

View File

@ -1,3 +1,7 @@
2004-03-10 Ulrich Drepper <drepper@redhat.com>
* posix/getopt.c (_): Don't define here for glibc.
2004-03-10 Jakub Jelinek <jakub@redhat.com> 2004-03-10 Jakub Jelinek <jakub@redhat.com>
* include/libc-symbols.h [__ASSEMBLY__] (compat_text_section, * include/libc-symbols.h [__ASSEMBLY__] (compat_text_section,

View File

@ -1,5 +1,15 @@
2004-03-10 Jakub Jelinek <jakub@redhat.com> 2004-03-10 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: Remove.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: New file.
* sysdeps/powerpc/tcb-offsets.sym: Add PID.
* sysdeps/unix/sysv/linux/ia64/pt-vfork.S (__vfork): Don't use
a local register for saving old PID. Negate PID in parent upon exit.
* sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: Include * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: Include
tcb-offsets.h. tcb-offsets.h.
(__vfork): Negate PID if non-zero and set to INT_MIN if zero (__vfork): Negate PID if non-zero and set to INT_MIN if zero

View File

@ -11,3 +11,4 @@
#if TLS_MULTIPLE_THREADS_IN_TCB #if TLS_MULTIPLE_THREADS_IN_TCB
MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads) MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads)
#endif #endif
PID thread_offsetof (pid)

View File

@ -32,22 +32,26 @@
ENTRY(__vfork) ENTRY(__vfork)
.prologue // work around a GAS bug which triggers if .prologue // work around a GAS bug which triggers if
.body // first .prologue is not at the beginning of proc. .body // first .prologue is not at the beginning of proc.
alloc r2=ar.pfs,0,1,2,0 alloc r2=ar.pfs,0,0,2,0
adds r14=PID,r13 adds r14=PID,r13
;; ;;
ld4 loc0=[r14] ld4 r16=[r14]
;; ;;
sub r15=0,loc0 sub r15=0,r16
mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
mov out1=0 /* Standard sp value. */ mov out1=0 /* Standard sp value. */
;; ;;
st4 [r14]=r15 st4 [r14]=r15
DO_CALL (SYS_ify (clone)) DO_CALL (SYS_ify (clone))
cmp.eq p0,p7=0,r8 cmp.eq p0,p7=0,r8
cmp.eq p6,p0=-1,r10
adds r14=PID,r13 adds r14=PID,r13
;; ;;
(p7) st4 [r14]=loc0 (p7) ld4 r16=[r14]
cmp.eq p6,p0=-1,r10
;;
(p7) sub r15=0,r16
;;
(p7) st4 [r14]=r15
(p6) br.cond.spnt.few __syscall_error (p6) br.cond.spnt.few __syscall_error
ret ret
PSEUDO_END(__vfork) PSEUDO_END(__vfork)

View File

@ -1,5 +1,6 @@
/* Copyright (C) 2003 Free Software Foundation, Inc. /* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -20,6 +21,7 @@
#define _ERRNO_H 1 #define _ERRNO_H 1
#include <bits/errno.h> #include <bits/errno.h>
#include <kernel-features.h> #include <kernel-features.h>
#include <tcb-offsets.h>
/* Clone the calling process, but without copying the whole address space. /* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is The calling process is suspended until the new process exits or is
@ -27,7 +29,19 @@
and the process ID of the new process to the old process. */ and the process ID of the new process to the old process. */
ENTRY (__vfork) ENTRY (__vfork)
DO_CALL (SYS_ify (vfork)); lwz 0,PID(2)
neg 0,0
stw 0,PID(2)
DO_CALL (SYS_ify (vfork))
cmpwi 1,3,0
beqlr- 1
lwz 0,PID(2)
neg 0,0
stw 0,PID(2)
PSEUDO_RET PSEUDO_RET
PSEUDO_END (__vfork) PSEUDO_END (__vfork)

View File

@ -0,0 +1,57 @@
/* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep-cancel.h>
#define _ERRNO_H 1
#include <bits/errno.h>
#include <kernel-features.h>
#include <tcb-offsets.h>
/* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is
replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
and the process ID of the new process to the old process. */
ENTRY (__vfork)
lwz 0,PID(2)
cmpwi 0,0,0
neg 0,0
bne- 0,1f
lis 0,0x8000
1: stw 0,PID(2)
DO_CALL (SYS_ify (vfork))
cmpwi 1,3,0
beqlr- 1
lwz 0,PID(2)
/* Cannot use clrlwi. here, because cr0 needs to be preserved
until PSEUDO_RET. */
clrlwi 4,0,1
cmpwi 1,4,0
beq- 1,1f
neg 4,0
1: stw 4,PID(2)
PSEUDO_RET
PSEUDO_END (__vfork)
weak_alias (__vfork, vfork)

View File

@ -0,0 +1,49 @@
/* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep-cancel.h>
#define _ERRNO_H 1
#include <bits/errno.h>
#include <kernel-features.h>
#include <tcb-offsets.h>
/* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is
replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
and the process ID of the new process to the old process. */
ENTRY (__vfork)
lwz 0,PID(13)
neg 0,0
stw 0,PID(13)
DO_CALL (SYS_ify (vfork))
cmpwi 1,3,0
beqlr- 1
lwz 0,PID(13)
neg 0,0
stw 0,PID(13)
PSEUDO_RET
PSEUDO_END (__vfork)
weak_alias (__vfork, vfork)

View File

@ -0,0 +1,55 @@
/* Copyright (C) 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <sysdep-cancel.h>
#define _ERRNO_H 1
#include <bits/errno.h>
#include <kernel-features.h>
#include <tcb-offsets.h>
/* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is
replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
and the process ID of the new process to the old process. */
ENTRY (__vfork)
lwz 0,PID(13)
cmpwi 0,0,0
neg 0,0
bne- 0,1f
lis 0,0x8000
1: stw 0,PID(13)
DO_CALL (SYS_ify (vfork))
cmpwi 1,3,0
beqlr- 1
lwz 0,PID(13)
clrlwi 4,0,1
cmpwi 1,4,0
beq- 1,1f
neg 4,0
1: stw 4,PID(13)
PSEUDO_RET
PSEUDO_END (__vfork)
weak_alias (__vfork, vfork)

View File

@ -71,8 +71,8 @@
# include <libintl.h> # include <libintl.h>
#else #else
# include "gettext.h" # include "gettext.h"
# define _(msgid) gettext (msgid)
#endif #endif
#define _(msgid) gettext (msgid)
#if defined _LIBC && defined USE_IN_LIBIO #if defined _LIBC && defined USE_IN_LIBIO
# include <wchar.h> # include <wchar.h>