diff --git a/ChangeLog b/ChangeLog index 475b668797..19389326ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,33 @@ +2000-07-06 Ulrich Drepper + + * include/signal.h: Declare __libc_sigaction. + * sysdeps/unix/sysv/linux/Versions: Export __libc_sigaction. + * sysdeps/unix/sysv/linux/sigaction.c: Add __libc_sigaction alias. + * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise. + + * configure.in: Fix CLAGS-memprofstat.c definition after + 2000-06-19 change. + Patch by Bradford W. Johnson . + +2000-07-06 Jakub Jelinek + + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Pass 0 + instead of NULL to elf_machine_fixup_plt t argument. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c (__mmap64): Add + cast. + +2000-07-06 Andreas Jaeger + + * crypt/Makefile (LDLIBS-cert): Removed. + (LDLIBS-md5c-test): Removed. + ($(objpfx)cert): Renamed from cert.out to fix dependencies. + ($(objpfx)md5c-test): Likewise for md5c-test.out. + 2000-07-06 Andreas Jaeger * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): The type diff --git a/FAQ.in b/FAQ.in index 348a8607cd..d010ef8e93 100644 --- a/FAQ.in +++ b/FAQ.in @@ -217,8 +217,8 @@ errors while linking before deciding there is a problem. ??addon What are these `add-ons'? {UD} To avoid complications with export rules or external source code some -optional parts of the libc are distributed as separate packages (e.g., the -crypt package, see ?crypt). +optional parts of the libc are distributed as separate packages, e.g., the +linuxthreads package. To use these packages as part of GNU libc, just unpack the tarfiles in the libc source directory and tell the configuration script about them using the @@ -227,7 +227,7 @@ to find all the add-on packages in your source tree. This may not work. If it doesn't, or if you want to select only a subset of the add-ons, give a comma-separated list of the add-ons to enable: - configure --enable-add-ons=crypt,linuxthreads + configure --enable-add-ons=linuxthreads for example. @@ -237,9 +237,13 @@ else. The existing makefiles do most of the work; only some few stub rules must be written to get everything running. Most add-ons are tightly coupled to a specific GNU libc version. Please -check that the add-ons work with the GNU libc. For example the crypt and -linuxthreads add-ons have the same numbering scheme as the libc and will in -general only work with the corresponding libc. +check that the add-ons work with the GNU libc. For example the linuxthreads +add-on has the same numbering scheme as the libc and will in general only +work with the corresponding libc. + +{AJ} With glibc 2.2 the crypt add-on and with glibc 2.1 the localedata +add-on have been integrated into the normal glibc distribution, crypt and +localedata are therefore not anymore add-ons. ?? My XXX kernel emulates a floating-point coprocessor for me. Should I enable --with-fp? @@ -472,20 +476,8 @@ versions of some string functions. These can only be used with GCC. See `crypt' and `setkey'. Why aren't these functions in the libc anymore? -{UD} The US places restrictions on exporting cryptographic programs and -source code. Until this law gets abolished we cannot ship the cryptographic -functions together with glibc. -The functions are available, as an add-on (see ?addon). People in the US -may get it from the same place they got GNU libc from. People outside the -US should get the code from ftp.gwdg.de [134.76.11.100] in the directory -pub/linux/glibc, or another archive site outside the USA. The README explains -how to install the sources. - -If you already have the crypt code on your system the reason for the failure -is probably that you did not link with -lcrypt. The crypto functions are in -a separate library to make it possible to export GNU libc binaries from the -US. +Removed. Does not apply anymore. ?? When I use GNU libc on my Linux system by linking against the libc.so which comes with glibc all I get is a core dump. diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index d825934e28..9af0269f65 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,5 +1,10 @@ 2000-07-06 Ulrich Drepper + * Version: Export __sigaction. + * signals.c: Define __sigaction alias. Use __libc_sigaction instead + of __sigaction. + * pthread.c: Use __libc_sigaction instead of __sigaction. + * condvar.c: Implement pthread_condattr_getpshared and pthread_condattr_setpshared. * mutex.c: Implement pthread_mutexattr_getpshared and diff --git a/linuxthreads/Versions b/linuxthreads/Versions index 94a18e528c..c52d88f4e1 100644 --- a/linuxthreads/Versions +++ b/linuxthreads/Versions @@ -85,6 +85,9 @@ libpthread { # The error functions. __errno_location; __h_errno_location; + + # Must be preemptible + __sigaction; } GLIBC_2.1 { # Functions with changed interface. diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index a3f829f9ac..2700a29fb1 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -379,15 +379,15 @@ static void pthread_initialize(void) sa.sa_handler = pthread_handle_sigrestart; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; - __sigaction(__pthread_sig_restart, &sa, NULL); + __libc_sigaction(__pthread_sig_restart, &sa, NULL); sa.sa_handler = pthread_handle_sigcancel; // sa.sa_flags = 0; - __sigaction(__pthread_sig_cancel, &sa, NULL); + __libc_sigaction(__pthread_sig_cancel, &sa, NULL); if (__pthread_sig_debug > 0) { sa.sa_handler = pthread_handle_sigdebug; sigemptyset(&sa.sa_mask); // sa.sa_flags = 0; - __sigaction(__pthread_sig_debug, &sa, NULL); + __libc_sigaction(__pthread_sig_debug, &sa, NULL); } /* Initially, block __pthread_sig_restart. Will be unblocked on demand. */ sigemptyset(&mask); @@ -768,10 +768,10 @@ void __pthread_kill_other_threads_np(void) sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sa.sa_handler = SIG_DFL; - __sigaction(__pthread_sig_restart, &sa, NULL); - __sigaction(__pthread_sig_cancel, &sa, NULL); + __libc_sigaction(__pthread_sig_restart, &sa, NULL); + __libc_sigaction(__pthread_sig_cancel, &sa, NULL); if (__pthread_sig_debug > 0) - __sigaction(__pthread_sig_debug, &sa, NULL); + __libc_sigaction(__pthread_sig_debug, &sa, NULL); } weak_alias (__pthread_kill_other_threads_np, pthread_kill_other_threads_np) diff --git a/linuxthreads/signals.c b/linuxthreads/signals.c index 452d860f92..be9e5aa1a2 100644 --- a/linuxthreads/signals.c +++ b/linuxthreads/signals.c @@ -131,7 +131,7 @@ static void pthread_sighandler_rt(int signo, struct siginfo *si, /* The wrapper around sigaction. Install our own signal handler around the signal. */ -int sigaction(int sig, const struct sigaction * act, +int __sigaction(int sig, const struct sigaction * act, struct sigaction * oact) { struct sigaction newact; @@ -159,7 +159,7 @@ int sigaction(int sig, const struct sigaction * act, } else newactp = NULL; - if (__sigaction(sig, newactp, oact) == -1) + if (__libc_sigaction(sig, newactp, oact) == -1) return -1; if (sig > 0 && sig < NSIG) { @@ -172,6 +172,7 @@ int sigaction(int sig, const struct sigaction * act, } return 0; } +strong_alias(__sigaction, sigaction) /* A signal handler that does nothing */ static void pthread_null_sighandler(int sig) { } diff --git a/linuxthreads/spinlock.h b/linuxthreads/spinlock.h index 96f39551dd..6609ef71c9 100644 --- a/linuxthreads/spinlock.h +++ b/linuxthreads/spinlock.h @@ -107,7 +107,7 @@ static inline int __pthread_trylock (struct _pthread_fastlock * lock) #endif #if !defined HAS_COMPARE_AND_SWAP { - return (testandset(&lock->__spinlock) : EBUSY : 0) + return (testandset(&lock->__spinlock) ? EBUSY : 0); } #endif diff --git a/localedata/ChangeLog b/localedata/ChangeLog index a6bafc9a35..96d0753a25 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,84 @@ +2000-07-06 Jakub Jelinek + + * locales/af_ZA (LC_TELEPHONE): Add int_prefix. + * locales/ar_SA (LC_TELEPHONE): Likewise. + * locales/be_BY (LC_TELEPHONE): Likewise. + * locales/bg_BG (LC_TELEPHONE): Likewise. + * locales/ca_ES (LC_TELEPHONE): Likewise. + * locales/da_DK (LC_TELEPHONE): Likewise. + * locales/de_BE (LC_TELEPHONE): Likewise. + * locales/de_CH (LC_TELEPHONE): Likewise. + * locales/de_LU (LC_TELEPHONE): Likewise. + * locales/el_GR (LC_TELEPHONE): Likewise. + * locales/en_AU (LC_TELEPHONE): Likewise. + * locales/en_BW (LC_TELEPHONE): Likewise. + * locales/en_CA (LC_TELEPHONE): Likewise. + * locales/en_CA,2.5 (LC_TELEPHONE): Likewise. + * locales/en_DK (LC_TELEPHONE): Likewise. + * locales/en_IE (LC_TELEPHONE): Likewise. + * locales/en_NZ (LC_TELEPHONE): Likewise. + * locales/en_ZA (LC_TELEPHONE): Likewise. + * locales/en_ZW (LC_TELEPHONE): Likewise. + * locales/es_AR (LC_TELEPHONE): Likewise. + * locales/es_BO (LC_TELEPHONE): Likewise. + * locales/es_CL (LC_TELEPHONE): Likewise. + * locales/es_CO (LC_TELEPHONE): Likewise. + * locales/es_DO (LC_TELEPHONE): Likewise. + * locales/es_EC (LC_TELEPHONE): Likewise. + * locales/es_ES (LC_TELEPHONE): Likewise. + * locales/es_GT (LC_TELEPHONE): Likewise. + * locales/es_HN (LC_TELEPHONE): Likewise. + * locales/es_MX (LC_TELEPHONE): Likewise. + * locales/es_PA (LC_TELEPHONE): Likewise. + * locales/es_PE (LC_TELEPHONE): Likewise. + * locales/es_PY (LC_TELEPHONE): Likewise. + * locales/es_SV (LC_TELEPHONE): Likewise. + * locales/es_US (LC_TELEPHONE): Likewise. + * locales/es_UY (LC_TELEPHONE): Likewise. + * locales/es_VE (LC_TELEPHONE): Likewise. + * locales/et_EE (LC_TELEPHONE): Likewise. + * locales/eu_ES (LC_TELEPHONE): Likewise. + * locales/fa_IR (LC_TELEPHONE): Likewise. + * locales/fi_FI (LC_TELEPHONE): Likewise. + * locales/fo_FO (LC_TELEPHONE): Likewise. + * locales/fr_BE (LC_TELEPHONE): Likewise. + * locales/fr_CA (LC_TELEPHONE): Likewise. + * locales/fr_CA,2.13 (LC_TELEPHONE): Likewise. + * locales/fr_CH (LC_TELEPHONE): Likewise. + * locales/fr_LU (LC_TELEPHONE): Likewise. + * locales/ga_IE (LC_TELEPHONE): Likewise. + * locales/gl_ES (LC_TELEPHONE): Likewise. + * locales/gv_GB (LC_TELEPHONE): Likewise. + * locales/he_IL (LC_TELEPHONE): Likewise. + * locales/hr_HR (LC_TELEPHONE): Likewise. + * locales/hu_HU (LC_TELEPHONE): Likewise. + * locales/id_ID (LC_TELEPHONE): Likewise. + * locales/in_ID (LC_TELEPHONE): Likewise. + * locales/is_IS (LC_TELEPHONE): Likewise. + * locales/it_CH (LC_TELEPHONE): Likewise. + * locales/it_IT (LC_TELEPHONE): Likewise. + * locales/iw_IL (LC_TELEPHONE): Likewise. + * locales/kl_GL (LC_TELEPHONE): Likewise. + * locales/ko_KR (LC_TELEPHONE): Likewise. + * locales/kw_GB (LC_TELEPHONE): Likewise. + * locales/lt_LT (LC_TELEPHONE): Likewise. + * locales/lv_LV (LC_TELEPHONE): Likewise. + * locales/mk_MK (LC_TELEPHONE): Likewise. + * locales/nl_BE (LC_TELEPHONE): Likewise. + * locales/nl_NL (LC_TELEPHONE): Likewise. + * locales/pl_PL (LC_TELEPHONE): Likewise. + * locales/pt_BR (LC_TELEPHONE): Likewise. + * locales/ro_RO (LC_TELEPHONE): Likewise. + * locales/ru_RU (LC_TELEPHONE): Likewise. + * locales/ru_UA (LC_TELEPHONE): Likewise. + * locales/sk_SK (LC_TELEPHONE): Likewise. + * locales/sl_SI (LC_TELEPHONE): Likewise. + * locales/sr_YU (LC_TELEPHONE): Likewise. + * locales/sv_FI (LC_TELEPHONE): Likewise. + * locales/th_TH (LC_TELEPHONE): Likewise. + * locales/tr_TR (LC_TELEPHONE): Likewise. + * locales/uk_UA (LC_TELEPHONE): Likewise. + 2000-07-05 NIIBE Yutaka * locales/th_TH: Update revision information. diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 483e0140ae..5b085620db 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -84,7 +84,7 @@ libc { } GLIBC_2.2 { # needed in other libraries. - __endmntent; __getmntent_r; __setmntent; __statfs; + __endmntent; __getmntent_r; __setmntent; __statfs; __libc_sigaction; # ipc ctl interface change. semctl; shmctl; msgctl; diff --git a/sysdeps/unix/sysv/linux/arm/sigaction.c b/sysdeps/unix/sysv/linux/arm/sigaction.c index 2e70b321ef..ae8b7f8e72 100644 --- a/sysdeps/unix/sysv/linux/arm/sigaction.c +++ b/sysdeps/unix/sysv/linux/arm/sigaction.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000 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 @@ -55,7 +55,7 @@ extern void __default_rt_sa_restorer(void); /* If ACT is not NULL, change the action for SIG to *ACT. If OACT is not NULL, put the old action for SIG in *OACT. */ int -__sigaction (sig, act, oact) +__libc_sigaction (sig, act, oact) int sig; const struct sigaction *act; struct sigaction *oact; @@ -147,4 +147,5 @@ __sigaction (sig, act, oact) return result; } -weak_alias (__sigaction, sigaction) +strong_alias (__libc_sigaction, __sigaction) +weak_alias (__libc_sigaction, sigaction) diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c index 5e431218e9..c7493de6bb 100644 --- a/sysdeps/unix/sysv/linux/i386/sigaction.c +++ b/sysdeps/unix/sysv/linux/i386/sigaction.c @@ -55,7 +55,7 @@ static void restore (void) asm ("__restore"); /* If ACT is not NULL, change the action for SIG to *ACT. If OACT is not NULL, put the old action for SIG in *OACT. */ int -__sigaction (int sig, const struct sigaction *act, struct sigaction *oact) +__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) { #if __ASSUME_REALTIME_SIGNALS == 0 struct old_kernel_sigaction k_newact, k_oldact; @@ -146,7 +146,8 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact) #endif } -weak_alias (__sigaction, sigaction) +strong_alias (__libc_sigaction, __sigaction) +weak_alias (__libc_sigaction, sigaction) /* NOTE: Please think twice before making any changes to the bits of code below. GDB needs some intimate knowledge about it to diff --git a/sysdeps/unix/sysv/linux/ia64/sigaction.c b/sysdeps/unix/sysv/linux/ia64/sigaction.c index c84964077b..3769abf0ea 100644 --- a/sysdeps/unix/sysv/linux/ia64/sigaction.c +++ b/sysdeps/unix/sysv/linux/ia64/sigaction.c @@ -38,7 +38,7 @@ extern int __syscall_rt_sigaction (int, const struct sigaction *, /* If ACT is not NULL, change the action for SIG to *ACT. If OACT is not NULL, put the old action for SIG in *OACT. */ int -__sigaction (sig, act, oact) +__libc_sigaction (sig, act, oact) int sig; const struct sigaction *act; struct sigaction *oact; @@ -48,4 +48,5 @@ __sigaction (sig, act, oact) return INLINE_SYSCALL (rt_sigaction, 4, sig, act, oact, _NSIG / 8); } -weak_alias (__sigaction, sigaction) +strong_alias (__libc_sigaction, __sigaction) +weak_alias (__libc_sigaction, sigaction) diff --git a/sysdeps/unix/sysv/linux/sigaction.c b/sysdeps/unix/sysv/linux/sigaction.c index dc46bb1b5b..d97b8bf62d 100644 --- a/sysdeps/unix/sysv/linux/sigaction.c +++ b/sysdeps/unix/sysv/linux/sigaction.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000 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 @@ -45,7 +45,7 @@ extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *, /* If ACT is not NULL, change the action for SIG to *ACT. If OACT is not NULL, put the old action for SIG in *OACT. */ int -__sigaction (sig, act, oact) +__libc_sigaction (sig, act, oact) int sig; const struct sigaction *act; struct sigaction *oact; @@ -131,4 +131,5 @@ __sigaction (sig, act, oact) #endif } -weak_alias (__sigaction, sigaction) +string_alias (__libc_sigaction, __sigaction) +weak_alias (__libc_sigaction, sigaction) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c index b33feeb09c..2b6e58d5bd 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c @@ -1,5 +1,5 @@ /* POSIX.1 sigaction call for Linux/SPARC. - Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Miguel de Icaza (miguel@nuclecu.unam.mx), 1997. @@ -36,7 +36,8 @@ static void __sigreturn_stub (void); int __libc_missing_rt_sigs; int -__sigaction (int sig, __const struct sigaction *act, struct sigaction *oact) +__libc_sigaction (int sig, __const struct sigaction *act, + struct sigaction *oact) { struct old_kernel_sigaction k_sigact, k_osigact; int ret; @@ -134,7 +135,8 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact) return -1; } -weak_alias (__sigaction, sigaction); +strong_alias (__libc_sigaction, __sigaction); +weak_alias (__libc_sigaction, sigaction); static void __rt_sigreturn_stub (void) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c index 87468fd409..3fba97fd51 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c @@ -1,5 +1,5 @@ /* POSIX.1 sigaction call for Linux/SPARC64. - Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Miguel de Icaza (miguel@nuclecu.unam.mx) and Jakub Jelinek (jj@ultra.linux.cz). @@ -31,7 +31,8 @@ static void __rt_sigreturn_stub (void); int -__sigaction (int sig, __const struct sigaction *act, struct sigaction *oact) +__libc_sigaction (int sig, __const struct sigaction *act, + struct sigaction *oact) { int ret; struct kernel_sigaction kact, koact; @@ -61,7 +62,8 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact) return ret; } -weak_alias (__sigaction, sigaction); +strong_alias (__libc_sigaction, __sigaction); +weak_alias (__libc_sigaction, sigaction); static void __rt_sigreturn_stub (void)