mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
Update.
* po/sv.po: Update from translation team. * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Add __vfork as alias. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. 1999-01-24 Andreas Jaeger <aj@arthur.rhein-neckar.de> * ctype/ctype.h (toupper,tolower): Use __inline instead of inline, define inline functions only when optimizing for speed and __USE_EXTERN_INLINES is set. 1999-01-24 Ulrich Drepper <drepper@cygnus.com> * ctype/ctype.c (toupper): Correct variable names from last change.
This commit is contained in:
parent
6a3b5b5c71
commit
4487e30b40
16
ChangeLog
16
ChangeLog
@ -1,3 +1,17 @@
|
||||
1999-01-24 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* po/sv.po: Update from translation team.
|
||||
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Add __vfork
|
||||
as alias.
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.
|
||||
|
||||
1999-01-24 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
|
||||
* ctype/ctype.h (toupper,tolower): Use __inline instead of inline,
|
||||
define inline functions only when optimizing for speed and
|
||||
__USE_EXTERN_INLINES is set.
|
||||
|
||||
1999-01-24 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* scripts/config.sub: Update from latest autoconf release.
|
||||
@ -41,7 +55,7 @@
|
||||
|
||||
1999-01-24 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* ctype/ctype.c (toupper): Correct variable names from lat change.
|
||||
* ctype/ctype.c (toupper): Correct variable names from last change.
|
||||
(tolower): Likewise.
|
||||
|
||||
1999-01-23 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
@ -150,14 +150,15 @@ __exctype (_tolower);
|
||||
# define isblank(c) __isctype((c), _ISblank)
|
||||
#endif
|
||||
|
||||
#if __GNUC__ >= 2
|
||||
extern inline int
|
||||
#if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \
|
||||
&& defined __USE_EXTERN_INLINES
|
||||
extern __inline int
|
||||
tolower (int __c)
|
||||
{
|
||||
return __c >= -128 && __c < 256 ? __tolower (__c) : __c;
|
||||
}
|
||||
|
||||
extern inline int
|
||||
extern __inline int
|
||||
toupper (int __c)
|
||||
{
|
||||
return __c >= -128 && __c < 256 ? __toupper (__c) : __c;
|
||||
|
@ -104,6 +104,8 @@ 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,7 +164,7 @@ int __pthread_manager(void *arg)
|
||||
case REQ_DEBUG:
|
||||
/* Make gdb aware of new thread */
|
||||
if (__pthread_threads_debug && __pthread_sig_debug > 0)
|
||||
raise(__pthread_sig_debug);
|
||||
raise(__pthread_sig_debug);
|
||||
restart(request.req_thread);
|
||||
break;
|
||||
}
|
||||
@ -375,9 +377,6 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
||||
/* Do the cloning */
|
||||
pid = __clone(pthread_start_thread, (void **) new_thread,
|
||||
CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
|
||||
#ifdef CLONE_PTRACE
|
||||
CLONE_PTRACE |
|
||||
#endif
|
||||
__pthread_sig_cancel, new_thread);
|
||||
/* Check if cloning succeeded */
|
||||
if (pid == -1) {
|
||||
|
@ -223,7 +223,7 @@ static void pthread_initialize(void)
|
||||
/* Allocate the signals used. */
|
||||
__pthread_sig_restart = __libc_allocate_rtsig (1);
|
||||
__pthread_sig_cancel = __libc_allocate_rtsig (1);
|
||||
__pthread_sig_debug = __libc_allocate_rtsig (2);
|
||||
__pthread_sig_debug = __libc_allocate_rtsig (1);
|
||||
if (__pthread_sig_restart < 0 ||
|
||||
__pthread_sig_cancel < 0 ||
|
||||
__pthread_sig_debug < 0)
|
||||
@ -297,9 +297,6 @@ int __pthread_initialize_manager(void)
|
||||
/* Start the thread manager */
|
||||
pid = __clone(__pthread_manager, (void **) __pthread_manager_thread_tos,
|
||||
CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND
|
||||
#ifdef CLONE_PTRACE
|
||||
| CLONE_PTRACE
|
||||
#endif
|
||||
, (void *)(long)manager_pipe[0]);
|
||||
if (pid == -1) {
|
||||
free(__pthread_manager_thread_bos);
|
||||
@ -311,7 +308,8 @@ int __pthread_initialize_manager(void)
|
||||
__pthread_manager_reader = manager_pipe[0]; /* reading end */
|
||||
__pthread_manager_thread.p_pid = pid;
|
||||
/* Make gdb aware of new thread manager */
|
||||
if (__pthread_threads_debug) raise(__pthread_sig_cancel);
|
||||
if (__pthread_threads_debug && __pthread_sig_debug > 0)
|
||||
raise(__pthread_sig_cancel);
|
||||
/* Synchronize debugging of the thread manager */
|
||||
request.req_kind = REQ_DEBUG;
|
||||
__libc_write(__pthread_manager_request, (char *) &request, sizeof(request));
|
||||
@ -484,8 +482,8 @@ static void pthread_handle_sigrestart(int sig, struct sigcontext ctx)
|
||||
asm volatile ("movw %w0,%%gs" : : "r" (ctx.gs));
|
||||
self = thread_self();
|
||||
#endif
|
||||
THREAD_SETMEM(self, p_signal, sig);
|
||||
if (THREAD_GETMEM(self, p_signal_jmp) != NULL)
|
||||
THREAD_SETMEM(self, p_signal, sig);
|
||||
if (THREAD_GETMEM(self, p_signal_jmp) != NULL)
|
||||
siglongjmp(*THREAD_GETMEM(self, p_signal_jmp), 1);
|
||||
}
|
||||
|
||||
@ -536,7 +534,7 @@ static void pthread_handle_sigcancel(int sig, struct sigcontext ctx)
|
||||
The debugging strategy is as follows:
|
||||
On reception of a REQ_DEBUG request (sent by new threads created to
|
||||
the thread manager under debugging mode), the thread manager throws
|
||||
__pthread_sig_cancel to itself. The debugger (if active) intercepts
|
||||
__pthread_sig_debug to itself. The debugger (if active) intercepts
|
||||
this signal, takes into account new threads and continue execution
|
||||
of the thread manager by propagating the signal because it doesn't
|
||||
know what it is specifically done for. In the current implementation,
|
||||
|
@ -1,6 +1,6 @@
|
||||
# File name Caller Syscall name # args Strong name Weak names
|
||||
|
||||
vfork - vfork 0 vfork
|
||||
vfork - vfork 0 __vfork vfork
|
||||
|
||||
s_getgroups getgroups getgroups 2 __syscall_getgroups
|
||||
s_getpagesize getpagesize getpagesize 0 __syscall_getpagesize
|
||||
|
@ -11,7 +11,7 @@ setrlimit - setrlimit 2 setrlimit setrlimit64
|
||||
ftruncate - ftruncate 2 __ftruncate ftruncate ftruncate64
|
||||
truncate - truncate 2 truncate truncate64
|
||||
mmap - mmap 6 __mmap mmap __mmap64 mmap64
|
||||
vfork - vfork 0 vfork
|
||||
vfork - vfork 0 __vfork vfork
|
||||
|
||||
# Override select.S in parent directory:
|
||||
select - select 5 __select select
|
||||
|
Loading…
Reference in New Issue
Block a user