Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 16 Jul 2001 07:32:48 +0000 (07:32 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 16 Jul 2001 07:32:48 +0000 (07:32 +0000)
2001-07-15  Ulrich Drepper  <drepper@redhat.com>

* malloc/obstack.c: Define __attribute__ for non-gcc compilers.
Patch by Jim Meyering <jim@meyering.net>.

2001-07-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>

* sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h: Reorder
fields in the sigaction struct to match the definition in the kernel.

2001-07-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>

* sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S: Correct the
test for ENOSYS.

2001-07-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>

* sysdeps/s390/s390-32/bits/setjmp.h: Add leading underscores
to the entries in the __jmp_buf structure.
* sysdeps/s390/s390-64/bits/setjmp.h: Likewise.

2001-07-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>

* sysdeps/s390/s390-32/bcopy.S: Use mvcle for big blocks
(> 64K) and a mvc loop for small blocks.
* sysdeps/s390/s390-32/memcpy.S: Likewise.
* sysdeps/s390/s390-64/bcopy.S: Likewise.
* sysdeps/s390/s390-64/memcpy.S: Likewise.

ChangeLog
linuxthreads/ChangeLog
linuxthreads/pthread.c
malloc/obstack.c
sysdeps/s390/s390-32/bits/setjmp.h
sysdeps/s390/s390-64/bits/setjmp.h
sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S
sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h

index 0b9e069..ac2c57c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+2001-07-15  Ulrich Drepper  <drepper@redhat.com>
+
+       * malloc/obstack.c: Define __attribute__ for non-gcc compilers.
+       Patch by Jim Meyering <jim@meyering.net>.
+
+2001-07-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * sysdeps/unix/sysv/linux/s390/s390-64/bits/sigaction.h: Reorder
+       fields in the sigaction struct to match the definition in the kernel.
+
+2001-07-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S: Correct the
+       test for ENOSYS.
+
+2001-07-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * sysdeps/s390/s390-32/bits/setjmp.h: Add leading underscores
+       to the entries in the __jmp_buf structure.
+       * sysdeps/s390/s390-64/bits/setjmp.h: Likewise.
+
+2001-07-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * sysdeps/s390/s390-32/bcopy.S: Use mvcle for big blocks
+       (> 64K) and a mvc loop for small blocks.
+       * sysdeps/s390/s390-32/memcpy.S: Likewise.
+       * sysdeps/s390/s390-64/bcopy.S: Likewise.
+       * sysdeps/s390/s390-64/memcpy.S: Likewise.
+
 2001-07-15  Andreas Schwab  <schwab@suse.de>
 
        * sysdeps/unix/sysv/linux/m68k/sys/procfs.h: New file.
index efc0143..b4bab43 100644 (file)
@@ -1,3 +1,10 @@
+2001-07-16  Ulrich Drepper  <drepper@redhat.com>
+
+       * pthread.c (pthread_initialize): For FLOATING_STACKS do't bother
+       to find the right value for __pthread_initial_thread_bos, it's not
+       used.  If not FLOATING_STACKS first run
+       __pthread_init_max_stacksize.
+
 2001-06-16  H.J. Lu  <hjl@gnu.org>
 
        * internals.h: Include <stackinfo.h>.
index 88fbf0c..1321bd4 100644 (file)
@@ -401,6 +401,40 @@ __pthread_initialize_minimal(void)
 }
 
 
+void
+__pthread_init_max_stacksize(void)
+{
+  struct rlimit limit;
+  size_t max_stack;
+
+  getrlimit(RLIMIT_STACK, &limit);
+#ifdef FLOATING_STACKS
+  if (limit.rlim_cur == RLIM_INFINITY)
+    limit.rlim_cur = ARCH_STACK_MAX_SIZE;
+# ifdef NEED_SEPARATE_REGISTER_STACK
+  max_stack = limit.rlim_cur / 2;
+# else
+  max_stack = limit.rlim_cur;
+# endif
+#else
+  /* Play with the stack size limit to make sure that no stack ever grows
+     beyond STACK_SIZE minus one page (to act as a guard page). */
+# ifdef NEED_SEPARATE_REGISTER_STACK
+  /* STACK_SIZE bytes hold both the main stack and register backing
+     store. The rlimit value applies to each individually.  */
+  max_stack = STACK_SIZE/2 - __getpagesize ();
+# else
+  max_stack = STACK_SIZE - __getpagesize();
+# endif
+  if (limit.rlim_cur > max_stack) {
+    limit.rlim_cur = max_stack;
+    setrlimit(RLIMIT_STACK, &limit);
+  }
+#endif
+  __pthread_max_stacksize = max_stack;
+}
+
+
 static void pthread_initialize(void)
 {
   struct sigaction sa;
@@ -412,16 +446,24 @@ static void pthread_initialize(void)
   /* Test if compare-and-swap is available */
   __pthread_has_cas = compare_and_swap_is_available();
 #endif
-#ifdef _STACK_GROWS_UP
+#ifdef FLOATING_STACKS
+  /* We don't need to know the bottom of the stack.  Give the pointer some
+     value to signal that initialization happened.  */
+  __pthread_initial_thread_bos = (void *) -1l;
+#else
+  /* Determine stack size limits .  */
+  __pthread_init_max_stacksize ();
+# ifdef _STACK_GROWS_UP
   /* The initial thread already has all the stack it needs */
   __pthread_initial_thread_bos = (char *)
     ((long)CURRENT_STACK_FRAME &~ (STACK_SIZE - 1));
-#else
+# else
   /* For the initial stack, reserve at least STACK_SIZE bytes of stack
      below the current stack address, and align that on a
      STACK_SIZE boundary. */
   __pthread_initial_thread_bos =
     (char *)(((long)CURRENT_STACK_FRAME - 2 * STACK_SIZE) & ~(STACK_SIZE - 1));
+# endif
 #endif
   /* Update the descriptor for the initial thread. */
   __pthread_initial_thread.p_pid = __getpid();
@@ -470,38 +512,6 @@ void __pthread_initialize(void)
   pthread_initialize();
 }
 
-void __pthread_init_max_stacksize(void)
-{
-  struct rlimit limit;
-  size_t max_stack;
-
-  getrlimit(RLIMIT_STACK, &limit);
-#ifdef FLOATING_STACKS
-  if (limit.rlim_cur == RLIM_INFINITY)
-    limit.rlim_cur = ARCH_STACK_MAX_SIZE;
-# ifdef NEED_SEPARATE_REGISTER_STACK
-  max_stack = limit.rlim_cur / 2;
-# else
-  max_stack = limit.rlim_cur;
-# endif
-#else
-  /* Play with the stack size limit to make sure that no stack ever grows
-     beyond STACK_SIZE minus one page (to act as a guard page). */
-# ifdef NEED_SEPARATE_REGISTER_STACK
-  /* STACK_SIZE bytes hold both the main stack and register backing
-     store. The rlimit value applies to each individually.  */
-  max_stack = STACK_SIZE/2 - __getpagesize ();
-# else
-  max_stack = STACK_SIZE - __getpagesize();
-# endif
-  if (limit.rlim_cur > max_stack) {
-    limit.rlim_cur = max_stack;
-    setrlimit(RLIMIT_STACK, &limit);
-  }
-#endif
-  __pthread_max_stacksize = max_stack;
-}
-
 int __pthread_initialize_manager(void)
 {
   int manager_pipe[2];
index 30e908d..dcc5cce 100644 (file)
@@ -470,6 +470,13 @@ _obstack_memory_used (h)
 # define fputs(s, f) _IO_fputs (s, f)
 #endif
 
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#  define __attribute__(Spec) /* empty */
+# endif
+#endif
+
 static void
 __attribute__ ((noreturn))
 print_and_abort ()
index 07ca865..fa6e03b 100644 (file)
 
 typedef struct {
     /* We save registers 6-15.  */
-    long int gregs[10];
+    long int __gregs[10];
 
     /* We save fpu registers 4 and 6.  */
-    long fpregs[4];
+    long __fpregs[4];
 } __jmp_buf[1];
 
 #endif
@@ -47,6 +47,6 @@ typedef struct {
 /* Test if longjmp to JMPBUF would unwind the frame
    containing a local variable at ADDRESS.  */
 #define _JMPBUF_UNWINDS(jmpbuf, address) \
-  ((int) (address) < (jmpbuf)->gregs[__JB_GPR15])
+  ((int) (address) < (jmpbuf)->__gregs[__JB_GPR15])
 
 #endif /* __S390_SETJMP_H__ */
index 5e77572..4cb4d79 100644 (file)
 
 typedef struct {
     /* We save registers 6-15.  */
-    long int gregs[10];
+    long int __gregs[10];
 
     /* We save fpu registers 4 and 6.  */
-    long fpregs[8];
+    long __fpregs[8];
 } __jmp_buf[1];
 
 #endif
index 35338aa..c0652ca 100644 (file)
@@ -51,7 +51,7 @@ ENTRY(__mmap64)
        svc     SYS_ify(mmap2)          /* Do the system call trap.  */
 
 #ifndef __ASSUME_MMAP2_SYSCALL
-       chi     %r0,-ENOSYS
+       chi     %r2,-ENOSYS
        je      1f
 #endif
 
index fbbfd30..43738b2 100644 (file)
@@ -43,6 +43,9 @@ struct sigaction
     /* Special flags.  */
     unsigned long int sa_flags;
 
+    /* Restore handler.  */
+    void (*sa_restorer) (void);
+
     /* Additional set of signals to be blocked.         */
     __sigset_t sa_mask;
   };