diff options
56 files changed, 9704 insertions, 9135 deletions
@@ -1,3 +1,138 @@ +Wed Oct 9 00:30:33 1996 Ulrich Drepper <drepper@cygnus.com> + + * inet/getnetgrent_r.c: Correct netgroup implementation. A + specification of a netgroup can also name another netgroup. + * nss/nss_files/files-netgrp.c: Likewise. + * inet/netgroup.h: Add fields to hold additional information. + +Tue Oct 8 21:51:14 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us> + + * posix/getopt.c: Implement POSIX -W option handling. When the + option string contains "W;" -W foo is handled like --foo. + +Tue Oct 8 12:27:26 1996 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/unix/sysv/linux/i386/clone.S: Define _ERRNO_H before + inclusing <errnos.h> so we really get error symbols defined. + * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise. + * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. + + * sunrpc/auth_unix.c (authunix_create_default): Don't use fixed + size array for getgroups call. Instead get maximal number via + sysconf. But discard list to NGRPS elements before calling XDR + function since Sun's code cannot handle longer lists. + Based on a patch by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>. + + * sysdeps/stub/e_j0l.c: Define y0l as well. + * sysdeps/stub/e_j1l.c: Define y1l as well. + * sysdeps/stub/e_jnl.c: Define ynl as well. + + * posix/unistd.h: Correct prototype for execlp. + + * sysdeps/unix/sysv/linux/posix_opt.h: Define _POSIX_NO_TRUNC. + +Mon Oct 7 22:18:03 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * Makeconfig (sysdep-library-path): New variable. + (built-program-cmd): Use it here to properly build a colon + separated library path. + +Mon Oct 7 22:11:55 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * crypt/md5-crypt.c (md5_crypt_r): Add missing parens around & + within comparison. Fix comments. + (md5_crypt): Fix comment. + +Tue Oct 8 05:10:49 1996 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/unix/sysv/linux/errnos.h: Only include <linux/errnos.h> + when _ERRNO_H is defined. + [!_ERRNO_H && __need_Emath]: Define value for EDOM and ERANGE. + Should there ever be a Linux port where the numeric values are + not 33 and 34 this file must change. + +Mon Oct 7 13:54:04 1996 Ulrich Drepper <drepper@cygnus.com> + + * libio/iofgets.c (_IO_fgets): Use _IO_flockfile instead of + __flockfile. + +Mon Oct 7 11:01:45 1996 Andreas Jaeger <aj@arthur.pfalz.de> + + * string/tst-strlen.c (main): Provide prototype. + * malloc/mallocbug.c: Likewise. + * io/test-utime.c: Likewise. + + * sysdeps/generic/crypt-entry.c: Correct typo. + +Mon Oct 7 13:42:20 1996 Ulrich Drepper <drepper@cygnus.com> + + * elf/dl-open.c (_dl_open): Check against _dl_sysdep_start to + test for libc.a. Checking _DYNAMIC is of no worth here. + Suggested by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. + + * nss/nss_files/files-parse.c: Define LOOKUP_NAME even if + EXTERN_PARSER is defined. + +Sat Oct 5 17:05:36 1996 Andreas Jaeger <aj@arthur.pfalz.de> + + * Rules (dep-dummy-lib): Correct prototype for __dummy__. + + * crypt/md5-crypt.c: Fix typos in comments. + + * gmon/gmon.c: Provide prototypes. + * db/makedb.c: Likewise. + * locale/programs/xmalloc.c: Likewise. + * stdio-common/bug11.c (main): Likewise. + * stdio-common/bug7.c (main): Likewise. + * stdio-common/bug8.c (main): Likewise. + * stdio-common/bug9.c (main): Likewise. + * stdio-common/scanf1.c (main): Likewise. + * stdio-common/scanf2.c (main): Likewise. + * stdio-common/scanf5.c (main): Likewise. + * stdio-common/scanf6.c (main): Likewise. + * stdio-common/scanf7.c (main): Likewise. + * stdio-common/scanf8.c (main): Likewise. + * stdio-common/temptest.c (main): Likewise. + * stdio-common/test-fwrite.c (main): Likewise. + * stdio-common/tst-printf.c: Likewise. + * stdio-common/tstdiomisc.c: Likewise. + * stdio-common/tstgetln.c (main): Likewise. + * stdlib/testmb.c (main): Likewise. + + * stdio-common/scanf4.c (main): Correct prototype, remove unused + variable n. + + * stdio-common/scanf3.c (main): Correct prototype, change + declaration of s to reduce warnings. + * stdio-common/bug10.c (main): Likewise. + + * stdio-common/tfformat.c: Provide prototype, remove unused + reference to dump_stats, add braces in sprint_doubles. + * stdio-common/tiformat.c: Likewise. + + * stdio-common/test_rdwr.c (main): Parameter `where' is long in + printf call. + +Mon Oct 7 14:04:26 1996 NIIBE Yutaka <gniibe@mri.co.jp> + + * sysdeps/unix/sysv/linux/sys/soundcard.h: Fix typo. + + * shadow/putspent.c: Don't write colon after flag field. + + * sysdeps/unix/sysv/linux/net/if_ppp.h: New file. Wrapper around + kernel header. + * sysdeps/unix/sysv/linux/net/ppp-comp.h: Likewise. + * sysdeps/unix/sysv/linux/net/ppp_defs.h: Likewise. + * sysdeps/unix/sysv/linux/Dist: Mention new files. + +Mon Oct 7 00:58:19 1996 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/i386/i586/strchr.S: Correct handling of first bytes to + get pointer aligned. Reported by Matthias Urlichs <smurf@noris.de>. + + * sysdeps/posix/euidaccess.c [_LIBC]: Avoid calling get?id functions + by using __libc_enable_secure variable. + Tue Oct 8 13:58:31 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu> * hurd/ports-get.c (_hurd_ports_get): If the requested port is @@ -32,7 +167,7 @@ Sun Oct 6 02:05:52 1996 Ulrich Drepper <drepper@cygnus.com> values to make `long double' functions available. (distribute): Add $(long-m-yes:=.c). - * sysdeps/libm-i387/s_ceill.S: Correct loading of return value. + * sysdeps/libm-i387/s_copysignl.S: Correct loading of return value. Use long double instruction. * sysdeps/libm-ieee754/e_atanhl.c (huge): Correct constant. diff --git a/Makeconfig b/Makeconfig index 8eb15d0c64..2a76ca34d8 100644 --- a/Makeconfig +++ b/Makeconfig @@ -369,10 +369,12 @@ ifneq (yes,$(build-shared)) built-program-cmd = $(built-program-file) else comma = , +sysdep-library-path = \ +$(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\ + $(filter -Wl$(comma)-rpath-link=%,\ + $(sysdep-LDFLAGS))))) define built-program-cmd -LD_LIBRARY_PATH=$(rpath-link)$(patsubst -Wl$(comma)-rpath-link=%,:%,\ - $(filter -Wl$(comma)-rpath-link=%,\ - $(sysdep-LDFLAGS))) \ +LD_LIBRARY_PATH=$(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \ $(elf-objpfx)$(rtld-installed-name) $(built-program-file) endef endif @@ -72,7 +72,7 @@ $(AR) cr$(verbose) $@ $< endef $(common-objpfx)dummy.c: rm -f $@ - echo 'void __dummy__ () { }' > $@ + echo 'void __dummy__ (void) { }' > $@ $(common-objpfx)empty.c: cp -f /dev/null $@ common-generated := $(common-generated) dummy.o dummy.c empty.c empty.o diff --git a/db/makedb.c b/db/makedb.c index d30ca2cef1..eb17a2254e 100644 --- a/db/makedb.c +++ b/db/makedb.c @@ -52,6 +52,7 @@ static void usage __P ((int status)) __attribute__ ((noreturn)); static int process_input __P ((FILE *input, const char *inname, DB *output, int to_lowercase, int be_quiet)); static int print_database __P ((DB *db)); +int main __P ((int argc, char *argv[])); int diff --git a/elf/dl-open.c b/elf/dl-open.c index 6b8b218582..25f2ba6fab 100644 --- a/elf/dl-open.c +++ b/elf/dl-open.c @@ -23,7 +23,11 @@ Cambridge, MA 02139, USA. */ #include <errno.h> -weak_extern (_DYNAMIC) +extern ElfW(Addr) _dl_sysdep_start (void **start_argptr, + void (*dl_main) (const ElfW(Phdr) *phdr, + ElfW(Word) phnum, + ElfW(Addr) *user_entry)); +weak_extern (_dl_sysdep_start) extern int __libc_multiple_libcs; /* Defined in init-first.c. */ @@ -141,7 +145,7 @@ _dl_open (const char *file, int mode) (*(void (*) (int, char **, char **)) init) (__libc_argc, __libc_argv, __environ); - if (_DYNAMIC == NULL) + if (_dl_sysdep_start == NULL) /* We must be the static _dl_open in libc.a. A static program that has loaded a dynamic object now has competition. */ __libc_multiple_libcs = 1; diff --git a/gmon/gmon.c b/gmon/gmon.c index 00b5df5332..6dc4cb5998 100644 --- a/gmon/gmon.c +++ b/gmon/gmon.c @@ -58,6 +58,11 @@ static int s_scale; #define ERR(s) write(2, s, sizeof(s) - 1) +void moncontrol __P ((int mode)); +static void write_hist __P ((int fd)); +static void write_call_graph __P ((int fd)); +static void write_bb_counts __P ((int fd)); + /* * Control profiling * profiling is what mcount checks to see if diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c index 52a90d055c..ff6d5395ed 100644 --- a/inet/getnetgrent_r.c +++ b/inet/getnetgrent_r.c @@ -31,6 +31,16 @@ static service_user *nip; /* Remember the first service_entry, it's always the same. */ static service_user *startp; +/* A netgroup can consist of names of other netgroups. We have to + track which netgroups were read and which still have to be read. */ +struct name_list +{ + const char *name; + struct name_list *next; +}; +struct name_list *known_groups; +struct name_list *needed_groups; + /* The lookup function for the first entry of this service. */ extern int __nss_netgroup_lookup (service_user **nip, const char *name, @@ -62,30 +72,79 @@ setup (void **fctp, const char *func_name, int all) return no_more; } -int -setnetgrent (const char *group) +/* Free used memory. */ +static void +free_memory (void) +{ + while (known_groups != NULL) + { + struct name_list *tmp = known_groups; + known_groups = known_groups->next; + free (tmp->name); + free (tmp); + } + + while (needed_groups != NULL) + { + struct name_list *tmp = needed_groups; + needed_groups = needed_groups->next; + free (tmp->name); + free (tmp); + } +} + +static int +internal_setnetgrent (const char *group) { enum nss_status (*fct) (const char *); enum nss_status status = NSS_STATUS_UNAVAIL; + struct name_list *new_elem; int no_more; - __libc_lock_lock (lock); - /* Cycle through all the services and run their setnetgrent functions. */ no_more = setup ((void **) &fct, "setnetgrent", 1); while (! no_more) { - /* Ignore status, we force check in __NSS_NEXT. */ + /* Ignore status, we force check in `__nss_next'. */ status = (*fct) (group); no_more = __nss_next (&nip, "setnetgrent", (void **) &fct, status, 0); } - __libc_lock_unlock (lock); + /* Add the current group to the list of known groups. */ + new_elem = (struct name_list *) malloc (sizeof (struct name_list)); + if (new_elem == NULL || (new_elem->name = strdup (group)) == NULL) + { + if (new_elem != NULL) + free (new_elem); + status == NSS_STATUS_UNAVAIL; + } + else + { + new_elem->next = known_groups; + known_groups = new_elem; + } return status == NSS_STATUS_SUCCESS; } +int +setnetgrent (const char *group) +{ + int result; + + __libc_lock_lock (lock); + + /* Free list of all netgroup names from last run. */ + free_memory (); + + result = internal_setnetgrent (group); + + __libc_lock_unlock (lock); + + return result; +} + void endnetgrent (void) @@ -103,13 +162,16 @@ endnetgrent (void) no_more = setup ((void **) &fct, "endnetgrent", 1); while (! no_more) |
