Update.
authorUlrich Drepper <drepper@redhat.com>
Sun, 12 Jan 2003 23:13:14 +0000 (23:13 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 12 Jan 2003 23:13:14 +0000 (23:13 +0000)
* Makerules (build-shlib-helper): Don't use -z defs linker option
if no-z-defs is defined either.

2003-01-10  Martin Schwidefsky  <schwidefsky@de.ibm.com>

* sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Remove unused
file.

2003-01-10  Martin Schwidefsky  <schwidefsky@de.ibm.com>

* sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list: Add vfork.
* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise.

2003-01-12  Ulrich Drepper  <drepper@redhat.com>

ChangeLog
Makerules
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S [new file with mode: 0644]
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S [moved from sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h with 50% similarity]
sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list
sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list

index 313f0e8..4a55f7f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2003-01-12  Ulrich Drepper  <drepper@redhat.com>
 
+       * Makerules (build-shlib-helper): Don't use -z defs linker option
+       if no-z-defs is defined either.
+
+2003-01-10  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Remove unused
+       file.
+
+2003-01-10  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list: Add vfork.
+       * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Likewise.
+
+2003-01-12  Ulrich Drepper  <drepper@redhat.com>
+
        * io/ftwtest-sh: Add test case for relative path with /. at the end.
 
 2003-01-12  Jim Meyering  <jim@meyering.net>
index 169da4a..8dc2282 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -460,7 +460,7 @@ endif
 ifeq ($(elf),yes)
 define build-shlib-helper
 $(LINK.o) -shared $(static-libgcc) -Wl,-O1 $(sysdep-LDFLAGS) \
-         $(if $($(@F)-no-z-defs),,-Wl,-z,defs) $(config-LDFLAGS) \
+         $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) $(config-LDFLAGS) \
          $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
          $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
          -Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
index 753fdd9..9e856a4 100644 (file)
@@ -38,21 +38,22 @@ ENTRY(name)                                                               \
        br      %r14;                                                         \
 L(pseudo_cancel):                                                            \
        STM_##args                                                            \
-       stm     %r13,%r15,52(%r15);                                           \
+       stm     %r12,%r15,48(%r15);                                           \
+       lr      %r14,%r15;                                                    \
        ahi     %r15,-96;                                                     \
+       st      %r14,0(%r15);                                                 \
        basr    %r13,0;                                                       \
 200301:        l       %r1,200302f-200301b(%r13);                                    \
-       bas     %r14,0(%r13,%r1);                                             \
+       bas     %r14,0(%r1,%r13);                                             \
        lr      %r0,%r2;                                                      \
        LM_##args                                                             \
        DO_CALL(syscall_name, args);                                          \
-       l       %r3,200303f-200301b(%r13);                                    \
-       lr      %r4,%r13;                                                     \
-       lr      %r13,%r2;                                                     \
+       l       %r1,200303f-200301b(%r13);                                    \
+       lr      %r12,%r2;                                                     \
        lr      %r2,%r0;                                                      \
-       bas     %r14,0(%r4,%r3);                                              \
-       lr      %r2,%r13;                                                     \
-       lm      %r13,%r15,52+96(%r15);                                        \
+       bas     %r14,0(%r1,%r13);                                             \
+       lr      %r2,%r12;                                                     \
+       lm      %r12,%r15,48+96(%r15);                                        \
        lhi     %r4,-4095;                                                    \
        clr     %r2,%r4;                                                      \
        jnl     SYSCALL_ERROR_LABEL;                                          \
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
new file mode 100644 (file)
index 0000000..6047723
--- /dev/null
@@ -0,0 +1,54 @@
+/* Copyright (C) 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+   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>
+
+/* 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)
+       SINGLE_THREAD_P
+       jne     0f
+
+       /* Do vfork system call.  */
+       svc     SYS_ify (vfork)
+
+       /* Check for error.  */
+       lhi     %r4,-4095
+       clr     %r2,%r4
+       jnl     SYSCALL_ERROR_LABEL
+
+       /* Normal return.  */
+       br      %r14
+0:
+       basr    %r1,0
+1:
+       l       %r1,2f-1b(%r1)
+       br      %r1
+2:
+       .long   HIDDEN_JUMPTARGET(__fork)
+PSEUDO_END(__vfork)
+
+libc_hidden_def (__vfork)
+
+weak_alias (__vfork, vfork)
index 0e3daa5..19ecee8 100644 (file)
@@ -39,16 +39,18 @@ ENTRY(name)                                                               \
 L(pseudo_cancel):                                                            \
        STM_##args                                                            \
        stmg    %r13,%r15,104(%r15);                                          \
-       aghi    %r15,-192;                                                    \
+       lgr     %r14,%r15;                                                    \
+       aghi    %r15,-160;                                                    \
+       stg     %r14,0(%r15);                                                 \
        brasl   %r14,CENABLE;                                                 \
-       l     %r0,%r2;                                                      \
+       lgr     %r0,%r2;                                                      \
        LM_##args                                                             \
        DO_CALL(syscall_name, args);                                          \
        lgr     %r13,%r2;                                                     \
-       l     %r2,%r0;                                                      \
+       lgr     %r2,%r0;                                                      \
        brasl   %r14,CDISABLE;                                                \
        lgr     %r2,%r13;                                                     \
-       lmg     %r13,%r15,104+192(%r15);                                      \
+       lmg     %r13,%r15,104+160(%r15);                                      \
        lghi    %r4,-4095;                                                    \
        clgr    %r2,%r4;                                                      \
        jnl     SYSCALL_ERROR_LABEL;                                          \
@@ -72,11 +74,11 @@ L(pseudo_end):
 #define STM_5          stmg %r2,%r5,16(%r15);
 
 #define LM_0           /* Nothing */
-#define LM_1           lg %r2,16+192(%r15);
-#define LM_2           lmg %r2,%r3,16+192(%r15);
-#define LM_3           lmg %r2,%r4,16+192(%r15);
-#define LM_4           lmg %r2,%r5,16+192(%r15);
-#define LM_5           lmg %r2,%r5,16+192(%r15);
+#define LM_1           lg %r2,16+160(%r15);
+#define LM_2           lmg %r2,%r3,16+160(%r15);
+#define LM_3           lmg %r2,%r4,16+160(%r15);
+#define LM_4           lmg %r2,%r5,16+160(%r15);
+#define LM_5           lmg %r2,%r5,16+160(%r15);
 
 # ifndef __ASSEMBLER__
 extern int __local_multiple_threads attribute_hidden;
@@ -1,7 +1,6 @@
-/* Definition of `struct stat' used in the kernel.  64 bit S/390 version.
-   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+/* Copyright (C) 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
+   Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-struct kernel_stat
-  {
-    unsigned int st_dev;
-    unsigned int st_ino;
-    unsigned int st_mode;
-    unsigned int st_nlink;
-    unsigned int st_uid;
-    unsigned int st_gid;
-    unsigned int __pad1;
-    unsigned int st_rdev;
-    unsigned long int st_size;
-    struct timespec st_atim;
-    struct timespec st_mtim;
-    struct timespec st_ctim;
-    unsigned int  st_blksize;
-    int st_blocks;
-    unsigned long __unused[3];
-  };
-
-extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf);
-
-#define XSTAT_IS_XSTAT64 1
-#define _HAVE_STAT_NSEC
+#include <sysdep-cancel.h>
+#define _ERRNO_H       1
+#include <bits/errno.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)
+       SINGLE_THREAD_P
+       jgne    HIDDEN_JUMPTARGET(__fork)
+
+       /* Do vfork system call.  */
+       svc     SYS_ify (vfork)
+
+       /* Check for error.  */
+       lghi    %r4,-4095
+       clgr    %r2,%r4
+       jnl     SYSCALL_ERROR_LABEL
+
+       /* Normal return.  */
+       br      %r14
+PSEUDO_END(__vfork)
+
+libc_hidden_def (__vfork)
+
+weak_alias (__vfork, vfork)
index 913f051..0e76857 100644 (file)
@@ -2,3 +2,4 @@
 
 oldgetrlimit   EXTRA   getrlimit       i:ip    __old_getrlimit getrlimit@GLIBC_2.0
 oldsetrlimit   EXTRA   setrlimit       i:ip    __old_setrlimit setrlimit@GLIBC_2.0
+vfork          -       vfork           0       __vfork         vfork
index d7773c2..7d78856 100644 (file)
@@ -11,6 +11,7 @@ ftruncate     -       ftruncate       2       __ftruncate     ftruncate ftruncate64 __ftruncate64
 truncate       -       truncate        2       truncate        truncate64
 getrlimit      -       getrlimit       2       __getrlimit     getrlimit getrlimit64
 setrlimit      -       setrlimit       2       __setrlimit     setrlimit setrlimit64
+vfork          -       vfork           0       __vfork         vfork
 
 # semaphore and shm system calls
 msgctl         -       msgctl          i:iip   __msgctl        msgctl