Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 3 Feb 1999 09:31:42 +0000 (09:31 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 3 Feb 1999 09:31:42 +0000 (09:31 +0000)
1999-02-03  Jakub Jelinek  <jj@ultra.linux.cz>

* sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S: Set branch
prediction correctly.

* sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h: Signal
takes a pointer to __sigcontext_t.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S: Do a nop after retl.
* sysdeps/unix/sysv/linux/sparc/sparc32/Dist: Remove fork.S.

ChangeLog
linuxthreads/ChangeLog
linuxthreads/manager.c
linuxthreads/pthread.c
sysdeps/unix/sysv/linux/sparc/sparc32/Dist
sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h
sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S
sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S

index 37874a6..c732150 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+1999-02-03  Jakub Jelinek  <jj@ultra.linux.cz>
+
+       * sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S: Set branch
+       prediction correctly.
+
+       * sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h: Signal
+       takes a pointer to __sigcontext_t.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S: Do a nop after retl.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/Dist: Remove fork.S.
+
 1999-02-02  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
 
        * manual/time.texi (General Time String Parsing): Fix typos.  Fix
index e65ee76..352b343 100644 (file)
@@ -1,3 +1,14 @@
+1999-02-03  H.J. Lu  <hjl@gnu.org>
+
+       * manager.c (__pthread_manager): Do block __pthread_sig_debug.
+       Don't restart the thread which sent REQ_DEBUG.
+       (pthread_start_thread): Check if __pthread_sig_debug > 0
+       before debugging.
+
+       * pthread.c (__pthread_initialize_manager): Suspend ourself
+       after sending __pthread_sig_debug to gdb instead of
+       __pthread_sig_cancel.
+
 1999-01-24  H.J. Lu  <hjl@gnu.org>
 
        * manager.c (__pthread_manager): Delete __pthread_sig_debug
index 033e5ad..9657cc5 100644 (file)
@@ -104,8 +104,6 @@ int __pthread_manager(void *arg)
   /* Block all signals except __pthread_sig_cancel and SIGTRAP */
   sigfillset(&mask);
   sigdelset(&mask, __pthread_sig_cancel); /* for thread termination */
-  if (__pthread_sig_debug > 0)
-    sigdelset(&mask, __pthread_sig_debug); /* for debugging purposes */
   sigdelset(&mask, SIGTRAP);            /* for debugging purposes */
   sigprocmask(SIG_SETMASK, &mask, NULL);
   /* Raise our priority to match that of main thread */
@@ -162,10 +160,10 @@ int __pthread_manager(void *arg)
         sem_post(request.req_args.post);
         break;
       case REQ_DEBUG:
-        /* Make gdb aware of new thread */
+       /* Make gdb aware of new thread and gdb will restart the
+          new thread when it is ready to handle the new thread. */
        if (__pthread_threads_debug && __pthread_sig_debug > 0)
          raise(__pthread_sig_debug);
-        restart(request.req_thread);
         break;
       }
     }
@@ -195,7 +193,7 @@ static int pthread_start_thread(void *arg)
                         THREAD_GETMEM(self, p_start_args.schedpolicy),
                          &self->p_start_args.schedparam);
   /* Make gdb aware of new thread */
-  if (__pthread_threads_debug) {
+  if (__pthread_threads_debug && __pthread_sig_debug > 0) {
     request.req_thread = self;
     request.req_kind = REQ_DEBUG;
     __libc_write(__pthread_manager_request,
index 4d182a8..42ed581 100644 (file)
@@ -309,7 +309,12 @@ int __pthread_initialize_manager(void)
   __pthread_manager_thread.p_pid = pid;
   /* Make gdb aware of new thread manager */
   if (__pthread_threads_debug && __pthread_sig_debug > 0)
-    raise(__pthread_sig_cancel);
+    {
+      raise(__pthread_sig_debug);
+      /* We suspend ourself and gdb will wake us up when it is
+        ready to handle us. */
+      suspend(thread_self());
+    }
   /* Synchronize debugging of the thread manager */
   request.req_kind = REQ_DEBUG;
   __libc_write(__pthread_manager_request, (char *) &request, sizeof(request));
index db60e2c..28968fd 100644 (file)
@@ -1,6 +1,4 @@
 clone.S
-pipe.S
-fork.S
 kernel_stat.h
 init-first.h
 setresuid.c
index 1bd0648..4937725 100644 (file)
@@ -1,5 +1,5 @@
 /* Low-level statistical profiling support function.  Linux/SPARC version.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,7 +20,7 @@
 #include <signal.h>
 
 void
-profil_counter (int signo, __siginfo_t si)
+profil_counter (int signo, __siginfo_t *si)
 {
-  profil_count ((void *) si.si_regs.pc);
+  profil_count ((void *) si->si_regs.pc);
 }
index 38a6f8f..49b1d28 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
 
 #include <sysdep.h>
 
 ENTRY (__libc_pipe)
-        mov    %o0, %o2            /* Save PIPEDES. */
+       mov     %o0, %o2                /* Save PIPEDES. */
        LOADSYSCALL(pipe)
        ta      0x6d
-       bcc,pn  %xcc, 2f
+       bcc,pt  %xcc, 2f
         nop
        SYSCALL_ERROR_HANDLER
 
-2:     st      %o0, [%o2]           /* PIPEDES[0] = %o0; */
-        st     %o1, [%o2 + 4]       /* PIPEDES[1] = %o1; */
+2:     st      %o0, [%o2]              /* PIPEDES[0] = %o0; */
+       st      %o1, [%o2 + 4]          /* PIPEDES[1] = %o1; */
        retl
         clr    %o0
 PSEUDO_END (__libc_pipe)
index 5864bfc..945d2e4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -35,5 +35,6 @@ ENTRY (syscall)
        SYSCALL_ERROR_HANDLER
 
 1:     retl
+        nop
 
 PSEUDO_END (syscall)