mirror of
https://sourceware.org/git/glibc.git
synced 2025-06-06 11:41:02 +03:00
Update.
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.
This commit is contained in:
parent
e72ed84d09
commit
f549233427
10
ChangeLog
10
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>
|
1999-02-02 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
|
||||||
|
|
||||||
* manual/time.texi (General Time String Parsing): Fix typos. Fix
|
* manual/time.texi (General Time String Parsing): Fix typos. Fix
|
||||||
|
@ -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>
|
1999-01-24 H.J. Lu <hjl@gnu.org>
|
||||||
|
|
||||||
* manager.c (__pthread_manager): Delete __pthread_sig_debug
|
* manager.c (__pthread_manager): Delete __pthread_sig_debug
|
||||||
|
@ -104,8 +104,6 @@ int __pthread_manager(void *arg)
|
|||||||
/* Block all signals except __pthread_sig_cancel and SIGTRAP */
|
/* Block all signals except __pthread_sig_cancel and SIGTRAP */
|
||||||
sigfillset(&mask);
|
sigfillset(&mask);
|
||||||
sigdelset(&mask, __pthread_sig_cancel); /* for thread termination */
|
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 */
|
sigdelset(&mask, SIGTRAP); /* for debugging purposes */
|
||||||
sigprocmask(SIG_SETMASK, &mask, NULL);
|
sigprocmask(SIG_SETMASK, &mask, NULL);
|
||||||
/* Raise our priority to match that of main thread */
|
/* Raise our priority to match that of main thread */
|
||||||
@ -162,10 +160,10 @@ int __pthread_manager(void *arg)
|
|||||||
sem_post(request.req_args.post);
|
sem_post(request.req_args.post);
|
||||||
break;
|
break;
|
||||||
case REQ_DEBUG:
|
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)
|
if (__pthread_threads_debug && __pthread_sig_debug > 0)
|
||||||
raise(__pthread_sig_debug);
|
raise(__pthread_sig_debug);
|
||||||
restart(request.req_thread);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -195,7 +193,7 @@ static int pthread_start_thread(void *arg)
|
|||||||
THREAD_GETMEM(self, p_start_args.schedpolicy),
|
THREAD_GETMEM(self, p_start_args.schedpolicy),
|
||||||
&self->p_start_args.schedparam);
|
&self->p_start_args.schedparam);
|
||||||
/* Make gdb aware of new thread */
|
/* Make gdb aware of new thread */
|
||||||
if (__pthread_threads_debug) {
|
if (__pthread_threads_debug && __pthread_sig_debug > 0) {
|
||||||
request.req_thread = self;
|
request.req_thread = self;
|
||||||
request.req_kind = REQ_DEBUG;
|
request.req_kind = REQ_DEBUG;
|
||||||
__libc_write(__pthread_manager_request,
|
__libc_write(__pthread_manager_request,
|
||||||
|
@ -309,7 +309,12 @@ int __pthread_initialize_manager(void)
|
|||||||
__pthread_manager_thread.p_pid = pid;
|
__pthread_manager_thread.p_pid = pid;
|
||||||
/* Make gdb aware of new thread manager */
|
/* Make gdb aware of new thread manager */
|
||||||
if (__pthread_threads_debug && __pthread_sig_debug > 0)
|
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 */
|
/* Synchronize debugging of the thread manager */
|
||||||
request.req_kind = REQ_DEBUG;
|
request.req_kind = REQ_DEBUG;
|
||||||
__libc_write(__pthread_manager_request, (char *) &request, sizeof(request));
|
__libc_write(__pthread_manager_request, (char *) &request, sizeof(request));
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
clone.S
|
clone.S
|
||||||
pipe.S
|
|
||||||
fork.S
|
|
||||||
kernel_stat.h
|
kernel_stat.h
|
||||||
init-first.h
|
init-first.h
|
||||||
setresuid.c
|
setresuid.c
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Low-level statistical profiling support function. Linux/SPARC version.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
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
|
||||||
@ -20,7 +20,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
void
|
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);
|
||||||
}
|
}
|
||||||
|
@ -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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
|
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
|
||||||
|
|
||||||
@ -20,15 +20,15 @@
|
|||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
ENTRY (__libc_pipe)
|
ENTRY (__libc_pipe)
|
||||||
mov %o0, %o2 /* Save PIPEDES. */
|
mov %o0, %o2 /* Save PIPEDES. */
|
||||||
LOADSYSCALL(pipe)
|
LOADSYSCALL(pipe)
|
||||||
ta 0x6d
|
ta 0x6d
|
||||||
bcc,pn %xcc, 2f
|
bcc,pt %xcc, 2f
|
||||||
nop
|
nop
|
||||||
SYSCALL_ERROR_HANDLER
|
SYSCALL_ERROR_HANDLER
|
||||||
|
|
||||||
2: st %o0, [%o2] /* PIPEDES[0] = %o0; */
|
2: st %o0, [%o2] /* PIPEDES[0] = %o0; */
|
||||||
st %o1, [%o2 + 4] /* PIPEDES[1] = %o1; */
|
st %o1, [%o2 + 4] /* PIPEDES[1] = %o1; */
|
||||||
retl
|
retl
|
||||||
clr %o0
|
clr %o0
|
||||||
PSEUDO_END (__libc_pipe)
|
PSEUDO_END (__libc_pipe)
|
||||||
|
@ -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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
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
|
||||||
@ -35,5 +35,6 @@ ENTRY (syscall)
|
|||||||
SYSCALL_ERROR_HANDLER
|
SYSCALL_ERROR_HANDLER
|
||||||
|
|
||||||
1: retl
|
1: retl
|
||||||
|
nop
|
||||||
|
|
||||||
PSEUDO_END (syscall)
|
PSEUDO_END (syscall)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user