Compare commits

...
Author SHA1 Message Date
Ulrich Drepper 1228ed5cd5 update from main archive 970202
1997-02-03 02:33  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-deps.c (_dl_map_object_deps): Handle multiple AUXILIARY
	entries.  This is still no complete implementation since AUXILIARY
	entries in other shared objects are not yet handled.

	* libio/libio.h (_IO_cookie_io_functions_t): Move to C++ protected
	place.

	* po/es.po: Update.
	* po/fr.po: Update.
	* po/nl.po: Update.

	* time/Makefile: Better cross-compile support.  Avoid test which
	cannot be run.
	(CFLAGS-tzset.c): New variable.  Overwrite TZDEFAULT value from
	tzfile.h file.
	* time/tzfile.c (__tzfile_read): Allow TZDEFAULT start with '/' even
	in SUID programs.
	* time/tzset.c (__tzset_internal): If TZ envvar is not set use same
	default values as in tzfile.c.

	* elf/dynamic-link.h (elf_get_dynamic_info): Recognize versioning
	tags.
	* elf/link.h: Likewise.
	* elf/elf.h: Add tag definitions and data structures for versioning.

1997-02-03 02:17  Ulrich Drepper  <drepper@cygnus.com>

	* nis/rpcsvc/yp.x (struct ypresp_key_val): There is not stupid
	"Sun bug".  This is the order of elements also used by 4.4BSD.
	* nis/rpcsvc/yp.h: Likewise.
	Reported by HJ Lu.

1997-02-02 12:13  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* sunrpc/Makefile ($(objpfx)x%.h, $(objpfx)x%.c): Add "@:" as
	action.

	* Makefile (install): Pass installation directories as arguments
	to ldconfig.

1997-02-02 23:15  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/malloc.c (__after_morecore_hook): New variable.
	(malloc_extend_top): Call __after_morecore_hook if set.
	(main_trim): Likewise.
	* malloc/malloc.h: Add declaration of __after_morecore_hook.
	Suggested by Marcus Daniels.

1997-02-02 23:00  Marcus G. Daniels  <marcus@tdb.com>

	* malloc/malloc.c (rEALLOc): Protect tsd_setspecific call by
	#ifndef NO_THREADS.
	(mallinfo): Likewise.

	* malloc/malloc.c (__morecore): Make external since it is used in
	programs.

1997-02-02 15:10  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/statbuf.h (struct stat): Make st_dev field
	unsigned.

1997-02-01 23:36  Richard Henderson  <rth@tamu.edu>

	* sysdeps/alpha/stxncpy.S ($unaligned) [src % 8 > dst % 8]: Don't
	use t6 as a temporary; it contains bits we still need in $u_head.

1997-01-31 15:05  John Bowman  <bowman@ipp-garching.mpg.de>

	* sysdeps/i386/fpu/__math.h [__USE_MISC]: Don't declare prototypes
	using __ prefix.  Add prototype for log1p.
1997-02-03 03:18:58 +00:00
Ulrich Drepper c0e4567461 update from main archive 970201
1997-02-02 00:39  Ulrich Drepper  <drepper@cygnus.com>

	* dirent/dirent.h: Add description _DIRENT_HAVE_D_TYPE.

1997-02-01 17:04  Philip Blundell  <pjb27@cam.ac.uk>

	* inet/netinet/ip.h (MAX_IPOPTLEN): Add definition.

1997-02-01 17:00  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/socketbits.h: Add definition of cmsghdr
	structure plus related macros.
	* sysdeps/unix/sysv/linux/cmsg_nxthdr.c: New file.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=socket]
	(sysdep_routines): Add cmsg_nxthdr.
	* sysdeps/unix/sysv/linux/Dist: Add cmsg_nxthdr.c.
	Suggested by Philip Blundell <pjb27@cam.ac.uk>.

1997-02-01 12:34  Ulrich Drepper  <drepper@cygnus.com>

	* time/strftime.c: Define _strftime_copytm without protecting arguments
	which breaks the definition.

1997-02-01 03:31  Thorsten Kukuk  <kukuk@weber.uni-paderborn.de>

	* nis/rpcsvc/yp_prot.h: Move definition of yppushresp_xfr after
	definition of type for element.

1997-02-01 03:28  Philip Blundell  <pjb27@cam.ac.uk>

	* sydsdeps/unix/sysv/linux/netinet/in.h: Add IPv6 related IPPROTO_*
	constants.

1997-02-01 03:09  H.J. Lu  <hjl@lucon.org>

	* Makefile: Pass PARALLELMFLAGS to sub-makes.
	* Makefile.in: Mention PARALLELMFLAGS and pass to main Makefile.

1997-01-31  Paul Eggert  <eggert@twinsun.com>

	* time/mktime.c (HAVE_LIMITS_H, HAVE_LOCALTIME_R, STDC_HEADERS):
	Define if _LIBC is defined.
	<limits.h>: Include if HAVE_LIMITS_H instead of if
	__STDC__ || __GNU_LIBRARY__ || STDC_HEADERS.
	<stdlib.h>: Similarly, include if STDC_HEADERS.
	(localtime_r): Redo #ifdef to make it clear that glibc has
	localtime_r now.

1997-02-29 20:08  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sunrpc/Makefile ($(objpfx)rpcsvc/%.h, $(objpfx)x%.c): Use stamp
	file to avoid unnecessary recompilation.

1997-01-29 19:33  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile: Set install-others, not install_others.
	(before-compile): Use += to preserve previous value.
	($(inst_includedir)/gnu/lib-names.h): Remove obsolete comment and
	fix dependency name.
	($(objpfx)lib-names.h): Remove rule.
	* Makeconfig ($(common-objpfx)gnu/lib-names.h): Generate it here,
	with correct name, using an intermediate stamp file.
	(common-generated): Add gnu/lib-names.h.
	(before-compile): Add $(common-objpfx)gnu/lib-names.h.

1997-01-30 18:29  Richard Henderson  <richard@atheist.tamu.edu>

	* malloc/malloc.c (MAGICBYTE): Use cast to size_t instead of unsigned
	to prevent warnings on 64 bit systems.
	Reported by Paul Wouters <paul@xtdnet.nl>.

	* sysdeps/alpha/dl-machine.h: Revert check for broken gas.  By default
	we assume it works.
1997-02-02 01:50:11 +00:00
Ulrich Drepper 19361cb768 update from main archive 970129
1997-01-30 03:24  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/elf/start.S (_start): Align stack pointer to
	double word boundary before pushing args for main.  This way we
	don't get penalties for misaligned memory accesses.  Reported by
	Edward Seidl <seidl@janed.com>.

	* Makefile: Correct *my* changes of Richards patch of 1997-01-28 10:51.
	Patch by HJ Lu.

	* misc/bsd-compat.c: Update copyright.
	* misc/efgcvt.c: Likewise.
	* misc/efgcvt_r.c: Likewise.
	* misc/error.c: Likewise.
	* misc/error.h: Likewise.
	* misc/fstab.c: Likewise.
	* misc/init-misc.c: Likewise.
	* misc/lsearch.c: Likewise.
	* misc/mntent.c: Likewise.
	* misc/qefgcvt.c: Likewise.
	* misc/qefgcvt_r.c: Likewise.
	* nss/databases.def: Likewise.
	* nss/db-Makefile: Likewise.
	* nss/ethers-lookup.c: Likewise.
	* nss/hosts-lookup.c: Likewise.
	* nss/netgrp-lookup.c: Likewise.
	* nss/nsswitch.h: Likewise.
	* nss/proto-lookup.c: Likewise.
	* nss/rpc-lookup.c: Likewise.
	* nss/service-lookup.c: Likewise.
	* nss/nss_db/db-netgrp.c: Likewise.
	* nss/nss_files/files-grp.c: Likewise.
	* nss/nss_files/files-hosts.c: Likewise.
	* nss/nss_files/files-network.c: Likewise.
	* nss/nss_files/files-proto.c: Likewise.
	* nss/nss_files/files-pwd.c: Likewise.
	* nss/nss_files/files-rpc.c: Likewise.
	* nss/nss_files/files-service.c: Likewise.
	* nss/nss_files/files-spwd.c: Likewise.
	* shadow/fgetspent.c: Likewise.
	* shadow/fgetspent_r.c: Likewise.
	* shadow/getspent.c: Likewise.
	* shadow/getspent_r.c: Likewise.
	* shadow/getspnam.c: Likewise.
	* shadow/getspnam_r.c: Likewise.
	* shadow/putspent.c: Likewise.
	* shadow/sgetspent.c: Likewise.
	* shadow/sgetspent_r.c: Likewise.
	* sysdeps/i386/init-first.c: Likewise.
	* sysdeps/unix/i386/sysdep.S: Likewise.

	* shadow/shadow.h: Don't use __USE_REENTRENT.  All code must be
	prepared to be running in a multi-threaded environment.  Change
	to __USE_MISC unless the function is defined in POSIX.1 (in this
	case also test for __USE_POSIX).
	* dirent/dirent.h: Likewise.
	* grp/grp.h: Likewise.
	* inet/aliases.h: Likewise.
	* libio/libio.h: Likewise.
	* libio/stdio.h: Likewise.
	* login/utmp.h: Likewise.
	* math/mathcalls.h: Likewise.
	* misc/mntent.h: Likewise.
	* pwd/pwd.h: Likewise.
	* resolv/netdb.h: Likewise.
	* stdlib/stdlib.h: Likewise.
	* string/string.h: Likewise.
	* sunrpc/rpc/netdb.h: Likewise.
	* sysdeps/generic/crypt.h: Likewise.
	* sysdeps/unix/sysv/linux/errnos.h: Likewise.
	* time/time.h: Likewise.

1997-01-30 00:27  Fila Kolodny  <fila@ibi.com>

	* sunrpc/Makefile (install-others): Add rpcsvc/bootparam_prot.h
	only if not cross compiling.

1997-01-29 16:16  Fila Kolodny  <fila@ibi.com>

	* sysdeps/posix/sigpause.c: Include <stddef.h> to get definition of
	NULL.
	* sysdeps/posix/sigwait.c: Likewise.

1997-01-28 23:42  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makeconfig ($(common-objpfx)config.make): Depend on
	$(..)config.make.in.
1997-01-30 04:09:36 +00:00
Ulrich Drepper 56552e4257 update from main archive 970128
1997-01-29 04:30  Ulrich Drepper  <drepper@cygnus.com>

	* sunrpc/Makefile: Don't generate headers derived from .x files when
	crosscompiling.

1997-01-28 10:51  Richard Henderson  <rth@tamu.edu>

	* Makefile: Generate gnu/lib-names.h in before-compile.
	* nss/nss.h (NSS_SHLIB_REVISION): Turn it into a const variable.
	* nss/nssswitch.c (__nss_shlib_revision): New variable.  Initialize
	to the revision found for LIBNSS_FILES_SO.
	(nss_initilized): Removed.  It was tested but never set.
	(nss_lookup_function): Don't treat NSS_SHLIB_REVISION as a literal.

	* shlib-versions: Tag all alpha-linux shlibs with a .1 "minor"
	not just libc.  Except instead of ld.so.1.1 use ld-linux.so.2.

	* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Typo in ldgp.

1997-01-28 12:16  Andreas Jaeger  <aj@arthur.pfalz.de>

	* elf/Makefile (CFLAGS-dl-load.c): Use += to not
	override the definition.

1997-01-28 20:13  Fila Kolodny  <fila@ibi.com>

	* config.make.in (malloc): Remove.
1997-01-29 03:50:12 +00:00
Ulrich Drepper 831372e7c1 update from main archive 970127
1997-01-28 04:23  Ulrich Drepper  <drepper@cygnus.com>
	* version.h (VERSION): Bump to 2.0.1.
	* posix/getopt.c: Handle another problem introduced by the
	nonoption_flags array.  We must be able to work with reordered
	argv arrays.  Reported by Andreas Schwab.
1997-01-28 02:38  Ulrich Drepper  <drepper@cygnus.com>
	* sysdeps/unix/sysv/linux/i386/clone.S: Correct handling of new
1997-01-27 17:34  Thorsten Kukuk <kukuk@weber.uni-paderborn.de>
	* nis/rpcsvc/yp_prot.h: Correct definitions and types in file so
	that it works with yp.h.
1997-01-27 13:28  Ulrich Drepper  <drepper@cygnus.com>
	* malloc/malloc.h (__malloc_initialized) [_LIBC]: Define as
	__libc_malloc_initialized so that this variable is not shared with
	other users of GNU malloc.
	Suggested by Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>.
	* mcheck.h: Correct typo.  Use malloc/ instead of new-malloc/.
	* sysdeps/i386/Makefile (CFLAGS-dl-load.c, CFLAGS-dl-reloc.c): New
	variables to prevent warnings.
	* sysdeps/i386/dl-machine.h (fixup): Add prototype and declare
	using attribute regparm.
	(ELF_MACHINE_RUNTIME_TRAMPOLINE): Rewrite so that no register
	is changed by the resolver code.
1997-01-14 14:20  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
	* malloc/malloc.c (weak_variable): Define.
	(__malloc_initialize_hook, __free_hook, __malloc_hook, __realloc_hook,
	__memalign_hook): Make them weak definitions.
1997-01-26 11:35  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
	* sysdeps/unix/sysv/linux/getdents.c: Don't write beyond buffer
	limits, correctly take structure padding into account, use correct
	offset when resetting the stream, change heuristic to assume an
	average name length of 14 characters.
1997-01-25 18:06  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
	* sysdeps/unix/sysv/linux/alpha/termbits.h: Protect against multiple
	inclusion.
See ChangeLog.6 for earlier changes.
1997-01-28 03:59:29 +00:00
Ulrich Drepper bdf289b222 update from main archive 970126
Sun Jan 26 19:40:17 1997  Ulrich Drepper  <drepper@cygnus.com>

	* Version 2.0 net release.

	* Make-dist: Don't take care for two malloc directories.

Sun Jan 26 13:39:31 1997  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/alpha/Dist: Correct distribution of
	kernel_*.h files.

	* Make-dist: Don't mention new-malloc for dirs with have to be
	processed.

	* sysdeps/unix/sysv/linux/netinet/in.h (SOL_IP): Added.
	* inet/netinet/tcp.h (SOL_TCP): Added.
	* sysdeps/unix/sysv/linux/socketbits.h (SOL_RAW): Added.
	Reported by a sun <asun@zoology.washington.edu>.

	* Makefile: Add special goal to generate only-MD5 based crypt
1997-01-27 06:02:03 +00:00
Ulrich Drepper 33a934a3ab update from main archive 970125
Sun Jan 26 05:41:42 1997  Ulrich Drepper  <drepper@cygnus.com>

	* version.h (VERSION): Bump to 2.0.
	(RELEASE): Now it's "experimental".

	* Makefile (subdirs): Change $(malloc) to malloc.  We have only
	one malloc implementation again.
	* malloc/*: Remove from GNU libc.
	* new-malloc/* Move to malloc/.
	* config.make.in (defines): Remove @USE_NEW_MALLOC@.
	* configure.in: Remove --enable-new-malloc option and check for
	malloc implementation choice.
	* malloc.h: We don't need to check for the implementation to use
	anymore.  Simply include malloc/malloc.h.
	* malloc/Makefile (subdir): Change to malloc.
	* sysdeps/unix/sysv/linux/configure.in: Don't set malloc anymore.

	* Makefile: Add special goal to call generate only-MD5 based crypt
	library.
	* md5-crypt/Makefile: Likewise.

	* stdio-common/tstscanf.c: De-ANSI-declfy.  Update copyright.
	(rounds): Change type to size_t to prevent warning.

	* wcsmbs/btowc.c: Reformat copyright.
	* wcsmbs/mbrlen.c: Likewise.
	* wcsmbs/mbsinit.c: Likewise.
	* wcsmbs/mbsnrtowcs.c: Likewise.
	* wcsmbs/mbsrtowcs.c: Likewise.
	* wcsmbs/wcpcpy.c: Likewise.
	* wcsmbs/wcpncpy.c: Likewise.
	* wcsmbs/wcscat.c: Likewise.
	* wcsmbs/wcscmp.c: Likewise.
	* wcsmbs/wcscoll.c: Likewise.
	* wcsmbs/wcscpy.c: Likewise.
	* wcsmbs/wcscspn.c: Likewise.
	* wcsmbs/wcsdup.c: Likewise.
	* wcsmbs/wcslen.c: Likewise.
	* wcsmbs/wcsncat.c: Likewise.
	* wcsmbs/wcsncpy.c: Likewise.
	* wcsmbs/wcsnrtombs.c: Likewise.
	* wcsmbs/wcsrtombs.c: Likewise.
	* wcsmbs/wcsspn.c: Likewise.
	* wcsmbs/wcsstr.c: Likewise.
	* wcsmbs/wcstod.c: Likewise.
	* wcsmbs/wcstof.c: Likewise.
	* wcsmbs/wcstok.c: Likewise.
	* wcsmbs/wcstol.c: Likewise.
	* wcsmbs/wcstold.c: Likewise.
	* wcsmbs/wcstoq.c: Likewise.
	* wcsmbs/wcstoul.c: Likewise.
	* wcsmbs/wcstouq.c: Likewise.
	* wcsmbs/wcswidth.c: Likewise.
	* wcsmbs/wcsxfrm.c: Likewise.
	* wcsmbs/wctob.c: Likewise.
	* wcsmbs/wcwidth.c: Likewise.
	* wcsmbs/wcwidth.h: Likewise.
	* wcsmbs/wmemchr.c: Likewise.
	* wcsmbs/wmemcmp.c: Likewise.
	* wcsmbs/wmemmove.c: Likewise.
	* wcsmbs/wmemset.c: Likewise.

Sat Jan 25 03:34:14 1997  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/termbits.h: Protect against multiple
	inclusion.  Reported by a sun <asun@zoology.washington.edu>.

	Likewise for scanf4.c
	* stdlib/stdlib.h: Declare reentrant function from rand48 family
1997-01-26 05:33:35 +00:00
Ulrich Drepper 5b82669229 update from main archive 970124
Sat Jan 25 02:05:19 1997  Eirik Fuller  <eirik@netcom.com>

	* sysdeps/unix/sysv/linux/alpha/ioperm.c: Rename T2_SPARSE_BASE and
	T2_DENSE_BASE to T2_SPARSE_MEM and T2_DENSE_MEM resp.

Thu Jan 23 11:13:46 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/usleep.c: Normalize the time
	specification.

Fri Jan 24 14:33:45 1997  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/socketbits.h: Also make SOCK_* constants available
	as macros so that #ifdef works.
	* sysdeps/unix/sysv/linux/socketbits.h: Likewise.

1997-01-23  Paul Eggert  <eggert@twinsun.com>

	* login/utmp_db.c, manual/time.texi, shlib-versions, sunrpc/rpc/svc.h,
	sunrpc/rpcsvc/sm_inter.x, sysdeps/generic/abort.c,
	sysdeps/libm-ieee754/e_sinhl.c, sysdeps/unix/sysv/linux/net/route.h,
	sysdeps/unix/sysv/linux/sparc/__sigtrampoline.S: Spell fixes.
1997-01-25 02:36:37 +00:00
Ulrich Drepper 9d187dd4ad update from main archive 970122
1997-01-23  Paul Eggert  <eggert@twinsun.com>

	* mktime.c (mktime): Invoke __tzset, not __tzset_internal, to set tz,
	so that tzname is set as POSIX requires.

Fri Jan 24 02:49:18 1997  Ulrich Drepper  <drepper@cygnus.com>

	* dirent/dirent.h: Declare readdir_r also when __USE_POSIX.
	* grp/grp.h: Declare *_r functions also when __USE_POSIX.
	* pwd/pwd.h: Likewise.
	* time/time.h: Likewise.
	* posix/unistd.h: Declare ttyname_r also when __USE_POSIX.
	* string/string.h: Declare strtok_r also when __USE_POSIX.

	* stdio-common/bug7.c: Use tmpnam to generate names for test files.

	* stdio-common/tmpnam.c: Update copyright.
	* stdio-common/tmpnam_r.c: Likewise.

	* sysdeps/unix/sysv/linux/alpha/sys/kernel_termios.h: Protect
	against multiple inclusion.  Include <termbits.h>.
	* sysdeps/unix/sysv/linux/sys/kernel_termios.h: Likewise.

	* sysdeps/unix/sysv/linux/net/if.h: Update according to recent
	kernel headers.  Patch by Philip Blundell <pjb27@cam.ac.uk>.

Thu Jan 23 17:42:00 1997  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sparc/clone.S: Correct author attribution.

	* sysdeps/unix/sysv/linux/net/if_arp (MAX_ADDR_LEN): Add definition.

Thu Jan 23 14:20:34 1997  Ulrich Drepper  <drepper@cygnus.com>

	* time/tzfile.c (__tzfile_read): Don't allow arbitrary files to be
	read when running a setuid program.
1997-01-24 02:23:54 +00:00
Ulrich Drepper 8d57beeab1 update from main archive 970121
Thu Jan 23 04:06:42 1997  Ulrich Drepper  <drepper@cygnus.com>

	* Make-dist (.PHONY: dist): Remove duplicate declaration.
	(README): Depend on version.h not version.c.
	* Makefile (README): Depend on version.h not version.c.

	* Makeconfig (inst_libdir, inst_slibdir, inst_includedir,
	inst_datadir, inst_zonedir, inst_localedir, inst_i18ndir, inst_bindir,
	inst_sbindir, inst_infodir, inst_sysconfdir): New variables.  Same
	as variable withough inst_ but prepended with $(install_root).
	(localtime-time): Use $(inst_sysconfdir) not $(sysconfdir).
	* Makefile (install-others): Use $(inst_includedir).
	(gnu/stabs.h, gnu/lib-names.h): Use $(inst_includedir).
	* Makerules (tons of install rules): Use inst_% variables.
	* elf/Makefile: Likewise.
	* hurd/Makefile: Likewise.
	* intl/Makefile: Likewise.
	* manual/Makefile: Likewise.
	* po/Makefile: Likewise.
	* sunrpc/Makefile: Likewise.
	* sysdeps/mach/hurd/Makefile: Likewise.
	* sysdeps/standalone/i386/force_cpu386/Makefile: Likewise.
	* time/Makefile: Likewise.

	* config.make.in: Revert patch from Sat Jan 18 22:15:26 1997,
	leave install_root in place.

	* gnu-versions.h (_GNU_GETOPT_INTERFACE_VERSION): Define to 2.
	* posix/getopt.c (GETOPT_INTERFACE_VERSION): Define to 2.
	* posix/getopt1.c (GETOPT_INTERFACE_VERSION): Define to 2.

	* elf/Makefile [yes==$(has-ldconfig)]: Correct dependencies of
	ldconfig.
	(CFLAGS-dl-load.c): New variable, avoid gcc warning.

	* sysdeps/mach/hurd/configure.in: Add _LIBC_REENTRENT to DEFINES.

	* sysdeps/mach/hurd/getdents.c: Update copyright.  De-ANSI-declfy.
	* sysdeps/stub/getdents.c: Likewise.  Correct return value.
	* sysdeps/unix/getdents.c: Likewise.
	* sysdeps/unix/sysv/getdents.c: Likewise.

	* sysdeps/unix/readdir.c: Update copyright.

	* sysdeps/unix/bsd/sony/newsos4/Makefile: Correct ifeq arguments.
	* sysdeps/unix/bsd/sun/sunos4/Makefile: Likewise.
	* sysdeps/unix/sysv/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/alpha/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/i386/Makefile: Likewise.

	* sysdeps/unix/sysv/linux/Dist: Don't distribute kernel_termios.h,
	but sys/kernel_termios.h.
	* sysdeps/unix/sysv/linux/alpha/Dist: Likewise.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)==termios]
	(sysdep_headers): Add sys/kernel_termios.h.
	* sysdeps/unix/sysv/linux/kernel_termios.h: Moved to...
	* sysdeps/unix/sysv/linux/sys/kernel_termios.h: ...here.
	* sysdeps/unix/sysv/linux/sys/tcgetattr.c: Use __kernel_termios and
	__KERNEL_NCCS instead of kernel_termios and KERNEL_NCCS resp.

	* sysdeps/unix/sysv/linux/alpha/ioctls.h: New file.

	* sysdeps/unix/sysv/linux/getdents.c: Correct problems with alignment.
	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove getdents.
	Reported by Eirik Fuller <eirik@netcom.com>.

	* time/Banner: Removed.  Wrong and unnecessary information.  It's now
	in...
	* time/README: New file.
	* time/Makefile (distribute): Remove Banner, add README.

Wed Jan 22 13:19:56 1997  Richard Henderson  <rth@tamu.edu>

	* sysdeps/unix/sysv/linux/alpha/ioperm.c (platforms): Add Sable.
	(init_iosys): Recognize /etc/alpha_systype as a four-tuple for
	the purpose of supporting brand new systems.
	(*): The type of iosys variables should be iosys_t.

1997-01-22  Paul Eggert  <eggert@twinsun.com>

	* strftime.c (_strftime_copytm):
	New function, to work around Solaris 2.5 tzset bug.

Wed Jan 22 23:05:14 1997  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/mach/hurd/vdprintf.c: Complete de-ANSI-declfication.
	* sysdeps/posix/pipestream.c (writedecl): Fix typo.
	Reported by Marcus G. Daniels <marcus@shannon.sysc.pdx.edu>.

Wed Jan 22 13:58:56 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* elf/Makefile (CFLAGS-dl-load.c): New Variable to keep gcc silent
	since name_copy is initialized.

Wed Jan 22 16:58:12 1997  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/Makefile (tests): Remove scanf11.
	* stdio-common/scanf11.c: Removed.
	* stdio-common/vfscanf.c Revert patch of Thu Jan 16 23:39:25 1997.
	Although the Corrigendum 1 describes the result as implemented the
	even more recent Amendement 1 seconds the position of ISO C:1990
	where the %n directive has no effect on the assignment count.
	* stdio-common/bug10.c: Likewise.
	* stdio-common/scanf1.c: Likewise.
	* stdio-common/scanf3.c: Likewise.
	* stdio-common/scanf10.c: Likewise.
	* stdio-common/tstdiomisc.c: Likewise.

	* new-malloc/obstack.h: Don't define malloc using bcopy if malloc
	is not available.  This leads to problems since bcopy does not
	return a value.  Instead define _obstack_memcpy based on memcpy or
	bcopy.  This name isn't used outside obstack.h and so no problems
	from using the memcpy function in a file including obstack.h can
	result.
	Reported by Martin Trapp <trapp@ipd.info.uni-karlsruhe.de>.

Tue Jan 21 18:35:55 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* misc/regexp.h (compile): Fix typos.

Tue Jan 21 01:01:59 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/sys/procfs.h (struct elf_prpsinfo): Fix
	type of pr_{pid,ppid,pgrp,sid} fields.
	* sysdeps/unix/sysv/linux/alpha/sys/procfs.h (struct
	elf_prpsinfo): Likewise.
1997-01-23 04:24:20 +00:00
Ulrich Drepper 1ef32c3dc4 update from main archive 970121
1997-01-21  Paul Eggert  <eggert@twinsun.com>

	* posix/getopt.c (_getopt_internal): Return -1, not EOF, when args
	are exhausted; this is required by POSIX.2.
	* catgets/gencat.c, db/makedb.c, locale/programs/locale.c,
	locale/programs/localedef.c, manual/examples/subopt.c,
	posix/getopt.c, posix/getopt1.c, stdio-common/bug4.c,
	sunrpc/rpcinfo.c (main): Check getopt return value against -1, not EOF.

Tue Jan 21 23:10:40 1997  Ulrich Drepper  <drepper@cygnus.com>

	* version.h (VERSION): Bump to 1.102.

	* sysdeps/unix/sysv/linux/alpha/Dist: Add kernel_sigaction.h.

	* elf/Makefile: Don't use CFLAGS-dl-load.c, but instead
	CPPFLAGS-dl-load.c so that dependencies can be determined correctly.
	* elf/dl-load.c: Fix comment.

	* time/Banner: New file.
	* time/Makefile (distribute): Add Banner.

	Update from ADO tzcode1997a and tzdata1997a.
	* time/antarctica: Update.
	* time/australia: Update.
	* time/zdump.c: Update.
	* time/zic.c: Update.
	* time/zone.tab: Update.

Mon Jan 20 08:38:32 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* config.make.in (has-ldconfig): New variable.

	* configure, configure.in (has_ldconfig): New substitute.

	* sysdeps/unix/sysv/linux/configure.in (has_ldconfig): New,
	check if $srcdir/elf/ldconfig.c exists.

	* Makeconfig (rootsbindir): New, default as
	$(exec_prefix)/sbin.
	(rtld-version-installed-name): New, default as
	ld-$(version).so.

	* Makefile (install): Call `$(common-objpfx)elf/ldconfig -d'
	only if $(cross-compiling) is no and $(build-shared) is yes.

	* Makerules (make-shlib-link): New macro.
	($(slibdir)/libfoo.so.$(libfoo.so-version)): Use
	$(make-shlib-link) for symlink.
	(install-rootsbin, install-rootsbin-nosubdir): New.
	(install-no-libc.a-nosubdir): Add
	install-rootsbin-nosubdir.

	* Rules (others): Add $(install-rootsbin).

	* config.make.in (rootsbindir): New.

	* configure, configure.in (libc_cv_rootsbindir): New
	substitute.

	* elf/Makefile (others, install-rootsbin): New, set to
	ldconfig.
	(+link): New for static linking.
	($(slibdir)/$(rtld-version-installed-name)): New.
	($(slibdir)/$(rtld-installed-name)): Depend on
	$(slibdir)/$(rtld-version-installed-name) and use
	$(make-shlib-link) for symlink.

	* sunrpc/xdr.c (xdr_string): Return FALSE if sp == NULL
	while XDR_ENCODE.

	* sysdeps/unix/sysv/linux/a.out.h: Use #include_next for
	glibc internals.

	* sysdeps/unix/sysv/linux/configure.in (libc_cv_rootsbindir):
	New, set to "/sbin" if "$prefix" == "/usr".

Tue Jan 21 13:38:39 1997  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile (distribute): Add glibcbug.in.
	Reported by Philip Blundell <pjb27@cam.ac.uk>.

	* elf/Makefile ($(objpfx)trusted-dirs.h): Create elf/ subdir in
	build directory if necessary.
	Reported by marcus@shannon.sysc.pdx.edu (Marcus G. Daniels).
1997-01-22 05:26:05 +00:00
Ulrich Drepper fd26970f33 update from main archive 970120
Tue Jan 21 04:05:20 1997  Ulrich Drepper  <drepper@cygnus.com>

	* version.h (VERSION): Bump to 1.101.

	Implement -d and -r option to `ldd' to check relocations.
	* elf/dl-error.c: Add another method to intercept errors.
	(_dl_receive_error): New function.  Install user defined handler.
	(receiver): New variable.  Contains pointer to user provided handler.
	(_dl_signal_error): If user provided handler is installed call this.
	* elf/dl-load.c (_dl_map_object): When shared object is not found in
	trace mode initialize a few more fields so that lookup can actually
	happen but always fails.
	* elf/ldd.sh.in: Rewrite argument handling.  Recognize new arguments
	to trigger reloation test.  Return with appropriate error code if
	a file wasn't found.  Print warning if object is not executable.
	* elf/ldd.bash.in: Likewise.
	* elf/link.h (receiver_fct): New type.  Used in _dl_receive_error.
	(_dl_sysdep_error): New prototype.
	(_dl_receive_error): New prototype.
	(_dl_signal_error): Remove  __attribute__ ((__noreturn__)).
	* elf/rtld.c (dl_main): Rewrite argument handling.  More than
	one argument allowed.  Recognize --data-relocs and --function-relocs
	arguments.
	Don't determine `lazy' mode from LD_BIND_NOW environment variable
	when in trace mode.
	If in trace mode and either --data-relocs or --function-relocs is
	given perform relocation.  Report errors using print_unresolved
	function.
	(print_unresolved): New function.  Print information about missing
	symbol on stderr.
	* sysdeps/generic/dl-sysdep.c (_dl_sysdep_error): New function.
	Like _dl_sysdep_message but print to stderr.
	* sysdeps/mach/hurd/dl-sysdep.c: Likewise.

	* sysdeps/generic/sockaddrcom.h: Add definition of sa_family_t.
	Reported by Andreas Schwab.
	(__SOCKADDR_COMMON): Use sa_family_t for family member.
	* sysdeps/unix/bsd/bsd4.4/sockaddrcom.h: Likewise.

	Linux/Sparc support by Miguel de Icaza.
	* sysdeps/sparc/fpu_control.h: New file.
	* sysdeps/unix/sysv/linux/sparc/__sigtrampoline.S: New file.
	* sysdeps/unix/sysv/linux/sparc/brk.c: New file.
	* sysdeps/unix/sysv/linux/sparc/profil-counter.h: New file.
	* sysdeps/unix/sysv/linux/sparc/sigaction.c: New file.
	* sysdeps/unix/sysv/linux/sparc/socket.S: New file.
	* sysdeps/unix/sysv/linux/sparc/syscall.S: New file.
	* sysdeps/unix/sysv/linux/sparc/sysdep.h: New file.
	* sysdeps/unix/sysv/linux/sparc/Dist: New file.
	* sysdeps/unix/sysv/linux/sparc/Makefile: New file.

	* sysdeps/unix/sysv/linux/net/if_arp.h: Don't use kernel header.
	Provide own definition based on 4.4BSD and Linux.
	* sysdeps/unix/sysv/linux/net/ppp_defs.h: Define __u32 before
	including <linux/ppp_defs.h>.
	* sysdeps/unix/sysv/linux/sys/msq_buf.h (struct msqid_ds): Don't
	use __pid_t since the kernel might have a different size.
	* sysdeps/unix/sysv/linux/sys/shm_buf.h (struct shmid_ds): Likewise.
	Reported by Andreas Schwab.

	* time/asctime.c: Update copyright.
	* time/dysize.c: Likewise.
	* time/gmtime.c: Likewise.
	* time/timegm.c: Likewise.
	* time/offtime.c: Likewise.  De-ANSI-declfy.

	* time/tzset.c (__tzset_internal): When TZ envvar does not name a
	DST timezone don't default to offset -1.

	* sysdeps/unix/sysv/linux/net/route.h: Don't use kernel header.
	Reported by a sun <asun@zoology.washington.edu>.

	* resolv/Makefile: Correct spelling: subdirs-dirs -> subdir-dirs.

	* sysdeps/stub/sysv_signal.c: New file.  Stub implementation.

	* Makefile (distribute): Add mcheck.h.

	* nis/Makefile (distribute): Add nss-nis.h.

	* libio/Makefile (routines): Change vdprintf to iovdprintf to prevent
	dist problem.

	* nss/Makefile (distribute): Add digits_dots.c.

	* sysdeps/unix/sysv/linux/Dist: Add kernel_sigaction.h.
	* sysdeps/unix/sysv/linux/alpha/Dist: Add sys/procfs.h.
	* sysdeps/unix/sysv/linux/sparc/Dist: Add clone.S.
	* new-malloc/Makefile (distribute): Add mcheck-init.c and mcheck.h.

Mon Jan 20 17:54:28 1997  Sven Verdoolaege  <skimo@breughel.ufsia.ac.be>

	* manual/filesys.texi: Fix little problem (reentrant->readdir).

Fri Jan 17 19:07:07 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* configure.in [$elf=yes]: Check for support of .previous and
	.popsection in the assembler.
	* config.h.in: Add HAVE_ASM_PREVIOUS_DIRECTIVE and
	HAVE_ASM_POPSECTION_DIRECTIVE.
	* libc-symbols.h (__make_section_unallocated) [HAVE_ELF]: Define
	appropriate if either .previous or .popsection is supported.
	(libc_warning) [HAVE_ELF]: Use it here.

Sat Jan 18 22:15:26 1997  Richard Henderson  <rth@tamu.edu>

	* Makeconfig (CFLAGS-.so): Add -fno-common to prevent odd sorts of
	errors that can occur when linking libc.so.

Mon Jan 20 05:20:49 1997  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-load.c (open_path): When running setuid don't try
	a directory if it is not given with the full name.

	* elf/Makefile (before-compile): New variable.  Mention trusted-dirs.h.
	(trusted-dirs.h): Construct file from $(default-rpath) and
	$(user-defined-trusted-dirs) variables.
	* elf/dl-load.c (_dl_map_object): Pass additional argument to open_path
	which is NULL except for the LD_LIBRARY_PATH pass in which case it
	is a pointer to the list of directories from the trusted-dirs.h
	file.
	(open_path): Accept additional argument with list of trusted dirs.
	When running setuid and a list of trusted dirs is given only use
	those which are mentioned in the list.

	* elf/rtld.c (dl_main): Don't reject whole LD_LIBRARY_PATH when
	running setuid.  Instead accept entries which do not contain a '/'.

	* Makeconfig: Correct comment about +(default_cflags).

Mon Jan 20 05:11:14 1997  Hrvoje Niksic  <hniksic@srce.hr>

	* time/strptime.c (recursive): Use && not || to test for valid
	argument.

Mon Jan 20 05:06:50 1997  Ulrich Drepper  <drepper@cygnus.com>

	* elf/ldd.sh.in: Exit with value 1 if an error occured.
	* elf/ldd.bash.in: Likewise.

	* elf/rtld.c (dl_main): Do not always ignore LD_PRELOAD when the
	binary runs setuid.  It is save to use those entries which do not
	contain a '/'.  This is compatible with Solaris-2.
1997-01-21 06:10:42 +00:00
Thomas Bushnell, BSG f9c53d1159 Regenerated: autoconf configure.in 1997-01-20 18:45:02 +00:00
Thomas Bushnell, BSG 9381196a94 *** empty log message *** 1997-01-20 18:44:20 +00:00
Ulrich Drepper 0c5ecdc449 update from main arhive 970119
Mon Jan 20 03:02:50 1997  Ulrich Drepper  <drepper@cygnus.com>

	* Make-dist: Update and reformat copyright.
	* Makeconfig: Likewise.
	* assert/Makefile: Likewise.
	* bare/Makefile: Likewise.
	* ctype/Makefile: Likewise.
	* dirent/Makefile: Likewise.
	* gmon/Makefile: Likewise.
	* gnulib/Makefile: Likewise.
	* grp/Makefile: Likewise.
	* hurd/Makefile: Likewise.
	* intl/Makefile: Likewise.
	* mach/Makefile: Likewise.
	* malloc/Makefile: Likewise.
	* manual/Makefile: Likewise.
	* math/Makefile: Likewise.
	* po/Makefile: Likewise.
	* pwd/Makefile: Likewise.
	* resource/Makefile: Likewise.
	* setjmp/Makefile: Likewise.
	* socket/Makefile: Likewise.
	* string/Makefile: Likewise.
	* sunrpc/Makefile: Likewise.
	* sysdeps/alpha/Makefile: Likewise.
	* sysdeps/gnu/Makefile: Likewise.
	* sysdeps/m68k/fpu/switch/Makefile: Likewise.
	* sysdeps/m68k/fpu/switch/68881-sw.h: Likewise.
	* sysdeps/m68k/fpu/switch/switch.c: Likewise.
	* sysdeps/mach/Makefile: Likewise.
	* sysdeps/hurd/Makefile: Likewise.
	* sysdeps/sparc/Makefile: Likewise.
	* sysdeps/standalone/i960/nindy960/Makefile: Likewise.
	* sysdeps/standalone/m68k/m68020/mvme136/Makefile: Likewise.
	* sysdeps/unix/common/Makefile: Likewise.
	* sysdeps/unix/sysv/Makefile: Likewise.
	* sysdeps/unix/sysv/irix4/Makefile: Likewise.
	* sysdeps/unix/sysv/sco3.2/Makefile: Likewise.
	* sysdeps/unix/sysv/sysv4/Makefile: Likewise.
	* sysdeps/vax/Makefile: Likewise.
	* sysvipc/Makefile: Likewise.
	* wcsmbs/Makefile: Likewise.
	* wctype/Makefile: Likewise.
	* elf/rtld.c (dl_main): Objects in LD_PRELOAD environment variable
	are separated according to Sun docs by white space not colon.
	* locale/C-time.c (_nl_C_LC_TIME): Use empty string to initialize
	fields which are not defined for the C locale.
	* sysdeps/m68k/fpu/switch/Makefile: Don't use ansidecl.h in constructed
	files.
	* sysdeps/m68k/fpu/switch/68881-sw.h: Likewise.
	* sysdeps/m68k/fpu/switch/switch.c: Likewise.
Sun Jan 19 19:43:31 1997  Andreas Jaeger  <aj@arthur.pfalz.de>
	* time/strptime.c: Provide prototype for strptime_internal.
Sun Jan 19 23:46:27 1997  Ulrich Drepper  <drepper@cygnus.com>
	* glibcbug.in: We don't guarantee confidential handling.  Set
	field to always contain `no'.
Sun Jan 19 21:28:01 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* intl/explodename.c: Include sys/types.h.
	* intl/l10nflist.c: Likewise.

Sat Jan 18 22:15:26 1997  Richard Henderson  <rth@tamu.edu>

	* config.make.in (install_root): New variable to make it easy to
	install glibc somewhere other than /.

	* shlib-versions: alpha-*-linux-* libc=6.1.

	Since sigset_t no longer fits in a register, we can't pass in the
	thread's initial mask so easily.  Take this opportunity to simplify
	the clone implementation by only accepting a single void* argument.

	* sysdeps/unix/sysv/linux/alpha/clone.S: Only take one argument.
	* sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/m68k/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/schedbits.h: Update clone prototypes.

	* sysdeps/unix/sysv/linux/alpha/ioctl-types.h: Remove.
	Default Linux version should be sufficient.

	* sysdeps/unix/sysv/linux/alpha/sigprocmask.c: The osf_sigprocmask
	system call wants the sigset dereferenced.

	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add entries for
	__syscall_ustat and __syscall_xmknod.
	* sysdeps/unix/sysv/linux/alpha/xmknod.c: Include sys/sysmacros.h.

	* sysdeps/unix/sysv/linux/sigset.h: Use longs instead of ints.

	* sysdeps/unix/sysv/linux/tcsetattr.c: Fix pointer dereferences.

	* sysdeps/unix/sysv/linux/alpha/sigsuspend.c: Add comment about
	dependency to kernel type.

	* sysdeps/unix/sysv/linux/alpha/termbits.h: Correct comment.
1997-01-20 02:49:49 +00:00
Ulrich Drepper 5290baf06c update from main archive 970118
Sun Jan 19 04:38:20 1997  Ulrich Drepper  <drepper@cygnus.com>

	* config.make.in (have-ksh, KSH): New variables.  Will be filled
	in by configure.
	* configure.in: Add test for ksh like shell (prefer bash).
	* time/Makefile (tests): Depend on install-test-data.
	(distribute): Add simplebackw.
	(generated-dirs): New variable.
	[$(have-ksh)==yes] (install-others): Add iso3166.tab and zone.tab.
	(install-bin): Add tzselect.
	(install-test-data): Install the zoneinfo files which are needed
	for the test case in the build directory.
	(test-tz-ENV): New variable.  Call test-tz program using data in
	build directory.
	* time/simpleback: New file.
	* time/test-tz.c: Pretty print.
	* time/tzfile.c: Use value of environment variable TZDIR as directory
	to look for zone info files.
	don't let search for DST data destroy already found values.
	* time/tzselect.ksh: Use @KSH@ and @TZDIR@ to be substituted when
	installing.
	* time/tzset.c (__tzset_internal): Avoid freeing string twice.
	Set DST zone name to normal zone name if no information is provided.

	* time/mktime.c (mktime): Call __tzset_internal to use current
	value of TZ.

	* Makerules (common-clean): Remove $(generated-dirs) inclusing content.

	* glibcbug.in: Fix several bugs.  Reported by several people.

	* elf/Makefile: Correct dependecies for $(objpfx)ldd.

	* inet/netinet/ip.h: Define IPTOS_LOWCOST and IPTOS_MINCOST.

	* locale/C-time.c: Update copyright.
	* locale/localeinfo.h: Likewise.
	* sysdeps/unix/bsd/bsd4.4/direntry.h: Likewise.

	* locale/programs/ld-time.c (time_finish): Correct message string.
	* locale/programs/linereader.c (lr_token): Use correctly `number'
	not `digit' in message string.

	* stdlib/strtol.c [UNSIGNED]: Don't punt immediately when `-' is
	seen.  Instead return ULONG_MAX and set ERANGE.
	* stdlib/tst-strtol.c: Correct test to reflect above change.

Sun Jan 19 03:22:30 1997  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sys/mtio.h: Don't use <linux/mtio.h>.
	We must not use <linux/posix_types.h>.

	* sysdeps/unix/sysv/linux/sys/ipc_buf.h: Don't use __kernel_* types
	since we must not use <linux/posix_types.h>.
	* sysdeps/unix/sysv/linux/sys/procfs.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sys/ipc_buf.h: New file.  Similar
	to sysdeps/unix/sysv/linux/sys/ipc_buf.h, but use alpha relavent
	types.
	* sysdeps/unix/sysv/linux/alpha/sys/procfs.h: New file.  Similar
	to sysdeps/unix/sysv/linux/sys/procfs.h, but use alpha relavent
	types.

Sun Jan 19 01:48:20 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* sysdeps/libm-i387/e_exp.S: Correct computation of fractional
	part.
	* sysdeps/libm-i387/e_expf.S: Likewise.
	* sysdeps/libm-i387/e_expl.S: Likewise.
	* sysdeps/libm-i387/s_expm1.S: Correct computation of fractional
	part.  Take care of additional value left on stack by fscale.
	* sysdeps/libm-i387/s_expm1f.S: Likewise.
	* sysdeps/libm-i387/s_expm1l.S: Likewise.

Fri Jan 17 17:45:32 1997  Ulrich Drepper  <drepper@cygnus.com>

	* posix/getopt.c: Change all direct usages of `gettext' to `_'.

	* sysdeps/generic/sysd-stdio.c (__stdio_reopen): Add missing
	parameter.
	Reported by Harmanjit Singh <harman@netearth.iitd.ernet.in>.

Thu Jan 16 23:39:25 1997  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/Makefile (tests): Add scanf11.
	* stdio-common/scanf11.c: New file.
	* stdio-common/vfscanf.c (__vfscanf): Increment `done' when %n
	was processed and value is not suppressed.
	* stdio-common/bug10.c: Correct test to expect %n increment the
	return value of scanf.
	* stdio-common/scanf1.c: Likewise.
	* stdio-common/scanf3.c: Likewise.
	* stdio-common/scanf10.c: Likewise.
	* stdio-common/tstdiomisc.c: Likewise.

	* time/strptime.c: Add lots of conditional compiling to enable use
	outside glibc.  When used in glibc, make sure C locale format
	strings will always be recognized.

Sat Jan 11 18:53:47 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/sys/sysmacros.h (major, minor, makedev):
	Fix definitions so that they work with __kernel_dev_t.

Sat Jan 11 14:24:10 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/kernel_sigaction.h,
	sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h,
	sysdeps/unix/sysv/linux/sigaction.c: New files.
	* sysdeps/unix/sysv/linux/syscalls.list: Add s_sigaction.

Sun Jan 12 15:22:33 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* libc-symbols.h (link_warning): Make sure that the .gnu.warning
	section is not allocated.
	Update and reformat copyright.

Sun Jan 12 12:19:28 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/Makefile ($(objpfx)ldd): Fix depedency list.

Sat Jan 11 15:11:26 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/Makefile ($(common-objpfx)sysd-syscalls): Fix
	command so that it works in subdirectories.

Wed Jan  8 22:07:58 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/i386/syscalls.list: Add s_getgroups and
	s_setgroups.
	* sysdeps/unix/sysv/linux/m68k/syscalls.list: Likewise.
	* sysdeps/unix/sysv/linux/i386/getgroups.c,
	sysdeps/unix/sysv/linux/i386/setgroups.c,
	sysdeps/unix/sysv/linux/m68k/getgroups.c,
	sysdeps/unix/sysv/linux/m68k/setgroups.c: New files.

Wed Jan  8 19:42:59 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile (config.status): Delete bogus rule.
	($(objpfx)glibcbug): Renamed from plain `glibcbug', depend on
	config.status in build directory, fix command to change to build
	directory.
	* Makeconfig ($(common-objpfx)config.status): Depend on version.h.

Thu Jan  9 08:47:54 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* glibcbug.in (while): We test for four and not five conditions,
	set MAIL_AGENT instead of RMAIL, filter spaces and tabs.

Thu Jan 16 22:00:27 1997  Ulrich Drepper  <drepper@cygnus.com>

	* misc/syslog.c: Don't define cancel_handler if _LIBC_REENTRANT
	is not defined.  Reported by Andreas Jaeger.

Thu Jan  9 08:47:54 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* new-malloc/malloc.c (__MALLOC_P): define call to pthread
	initializer only if NO_THREADS is not defined.

Wed Jan  8 21:28:58 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* resolv/nss_dns/dns-host.c: Clean-up: delete unnecessary includes
	and variables.

Thu Jan 16 21:50:27 1997  Ulrich Drepper  <drepper@cygnus.com>

	* inet/arpa/inet.h: Include <netinet/in.h> to get struct in_addr
	defined.

Tue Jan  7 17:29:59 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makerules (LDLIBS-c.so): New variable.

Tue Jan  7 19:22:00 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile ($(includedir)/gnu/lib-names.h): Define the library
	names as strings, not as sequence of tokens that may fall apart.

Fri Jan 10 14:08:41 1997  Roland McGrath  <roland@fmh.frob.com>

	* time/tzfile.c (__tzfile_read): Check for bogus type and zone name
	indices in data file and punt, so a bogus file can't crash us.

Thu Jan 16 20:29:15 1997  Ulrich Drepper  <drepper@cygnus.com>

	* values.h [__USE_MISC]: Define BITSPERBYTE.

Fri Jan 17 14:16:28 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* stdio/vdprintf.c: Moved file to ...
	* sysdeps/posix/vdprintf.c: Here.  De-ansideclificate.
	* sysdeps/stub/vdprintf.c: New file.
	* sysdeps/mach/hurd/vdprintf.c: New file.

Thu Jan  9 15:59:35 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/mach/hurd/posix_opt.h: New file.

	* sysdeps/mach/hurd/sigwait.c (sigwait): Don't affect signal mask.

	* sysdeps/unix/bsd/tcsendbrk.c (tcsendbreak): Finish
	deansideclification.

	* sysdeps/mach/libc-lock.h: Add kludges to pretend to implement
	recursive locks.

Tue Jan  7 09:48:15 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* signal/sigempty.c (sigemptyset): Correct typo: Empty set should
	have all bits zero.
1997-01-19 04:54:28 +00:00
Thomas Bushnell, BSG b51c27c032 Fri Jan 17 14:16:28 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* stdio/vdprintf.c: Moved file to ...
	* sysdeps/posix/vdprintf.c: Here.  De-ansideclificate.
	* sysdeps/stub/vdprintf.c: New file.
	* sysdeps/mach/hurd/vdprintf.c: New file.
1997-01-17 19:29:07 +00:00
Thomas Bushnell, BSG 038ebe2459 *** empty log message ***
Fri Jan 17 14:16:28 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* stdio/vdprintf.c: Moved file to ...
	* sysdeps/posix/vdprintf.c: Here.  De-ansideclificate.
	* sysdeps/stub/vdprintf.c: New file.
	* sysdeps/mach/hurd/vdprintf.c: New file.
1997-01-17 19:27:54 +00:00
Thomas Bushnell, BSG f94d25d4ee *** empty log message ***
Thu Jan  9 15:59:35 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/mach/hurd/posix_opt.h: New file.

	* sysdeps/mach/hurd/sigwait.c (sigwait): Don't affect signal mask.

	* sysdeps/unix/bsd/tcsendbrk.c (tcsendbreak): Finish
	deansideclification. 

	* sysdeps/mach/libc-lock.h: Add kludges to pretend to implement
	recursive locks.
1997-01-13 18:58:09 +00:00
Ulrich Drepper 61c162b5bc update from main archive 960107
Tue Jan  7 09:48:15 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* signal/sigempty.c (sigemptyset): Correct typo: Empty set should
	have all bits zero.

Tue Jan  7 23:44:39 1997  Ulrich Drepper  <drepper@cygnus.com>

	* inet/gethstbynm.c: Include additional headers for additional
	code in nss/digits_dots.c.
	* inet/gethstbynm_r.c: Likewise.
	* inet/gethstbynm2.c: Likewise.
	* inet/gethstbynm2_r.c: Likewise.
	* nss/digits_dots.c: New file.  Handle dotted pair notation for
	gethstbynm functions.
	* nss/getXXbyYY.c: Include digits_dots.c to get extra code for
	handling dotted pair notation.
	* nss/getXXbyYY_r.c: Likewise.
	Patches by HJ Lu.

	* resolv/nss_dns/dns-host.c: Don't handle dotted pair notation.

	* io/getwd.c: Optimized a bit.

	* signal/signal.h: Always declare __sysv_signal.

	* sysdeps/generic/setenv.c: Add some portability code.

	* sysdeps/unix/sysv/fcntlbits.h: Update copyright.

	* sysdeps/unix/sysv/linux/fcntlbits.h: Add definitions from kernel
	to avoid using kernel headers.
	* sysdeps/unix/sysv/linux/alpha/fcntlbits.h: New file.  Alpha
	specific version.

	* sysdeps/unix/sysv/linux/syscalls.list: Add sys_mknod.  Don't
	mark sigreturn as EXTRA.

	* sysdeps/unix/sysv/linux/ustat.c: Declare __syscall_ustat.
	* sysdeps/unix/sysv/linux/alpha/ustat.c: New file.  Alpha version.

Tue Jan  7 09:48:15 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* io/fts.c (fts_alloc): Add const to second parameter of function.

	* io/Makefile: Change CFLAGS-fts.c and define CFLAGS-ftw.c to
	prevent warnings.

	* signal/sigfillset.c: Include <string.h> for memset declaration.

Tue Jan  7 11:14:32 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* sysdeps/generic/setenv.c: Fix portability problems.

Tue Jan  7 02:10:17 1997  Ulrich Drepper  <drepper@cygnus.com>

	* posix/getopt.c (_getopt_internal): Don't reset __getopt_initialized
	after the last option was seen.

Mon Jan  6 15:30:21 1997  Ulrich Drepper  <drepper@cygnus.com>

	* elf/elf.h (DT_EXTRANUM): Set to 3 since 0x7ffffffd is used.
1997-01-07 23:29:44 +00:00
David MacKenzie 2ca1375a22 Add hppa1.1-hitachi-hiuxmpp support, passed along by rms. 1997-01-07 19:29:28 +00:00
Ulrich Drepper df4ef2ab9c update from main archive 960105 1997-01-06 22:07:28 +00:00
Ulrich Drepper 6f9e7002f3 Mon Jan 6 13:57:05 1997 Ulrich Drepper <drepper@cygnus.com>
* io/ftw.c: Add `const' to second parameter of function given as
	second parameter to ftw.
	* io/ftw.h: Likewise for prototype.
	Reported by Ronald F. Guilmette <rfg@monkeys.com>.

Thu Jan  2 23:44:39 1997  Philip Blundell  <pjb27@cam.ac.uk>

	* inet/Makefile (headers): Add netinet/ip.h.
	* inet/netinet/ip.h: New file, contains BSD definitions for struct
	ip and friends.

Fri Jan  3 23:17:11 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* string/string.h (strnlen): Add cast for C++.

Mon Jan  6 03:31:46 1997  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile (install-bin): Define as glibcbug to install script.
	(glibcbug): New rules.  Create from glibcbug.in.
	* configure.in (AC_OUTPUT): Generate glibcbug script.
	* glibcbug.in: New file.
	* version.c: Mention glibcbug to report bugs.
	* catgets/gencat.c: Likewise.
	* db/makedb.c: Likewise.
	* locale/programs/locale.c: Likewise.
	* locale/programs/localedef.c: Likewise.
	* elf/ldd.bash.in: Likewise.
	* elf/ldd.sh.in: Likewise.
	* intl/locale.alias: Likewise.

	* mcheck.h: New file.  Necessary since mcheck.h is used in time/ap.c.

	* set-init.c: Update and reformat copyright.
	* version.c: Likewise.
	* signal/sigaddset.c: Likewise.
	* signal/sigdelset.c: Likewise.
	* signal/sigempty.c: Likewise.
	* signal/sigfillset.c: Likewise.
	* signal/siggetmask.c: Likewise.
	* signal/sigismem.c: Likewise.
	* sysdeps/generic/speed.c: Likewise.
	* sysdeps/unix/getdents.c: Likewise.
	* sysdeps/unix/xmknod.c: Likewise.
	* sysdeps/unix/bsd/poll.c: Likewise.
	* sysdeps/unix/bsd/tcdrain.c: Likewise.
	* sysdeps/unix/bsd/tcflow.c: Likewise.
	* sysdeps/unix/bsd/tcflush.c: Likewise.
	* sysdeps/unix/bsd/tcgetpgrp.c: Likewise.
	* sysdeps/unix/bsd/tcsendbrk.c: Likewise.
	* sysdeps/unix/bsd/tcsetpgrp.c: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/tcsetattr.c: Likewise.
	* sysdeps/unix/sysv/getdents.c: Likewise.
	* sysdeps/unix/sysv/i386/sigreturn.S: Likewise.
	* termios/Makefile: Likewise.
	* termios/cfmakeraw.c: Likewise.
	* termios/cfsetspeed.c: Likewise.

	* version.h: Bump VERSION to 1.100.

	* intl/finddomain.c: Defining stpcpy function isn't necessary.

	* libio/genops.c (_IO_init): Use _IO_lock_init instead of
	_IO_lock_init_recursive.
	* libio/stdfiles.c (DEF_STDFILE): Use _IO_lock_initializer instead
	of _IO_lock_init.

	* locale/programs/charmap.c (obstack_chunk_alloc): Use malloc instead
	of xmalloc.
	* locale/programs/ld-collate.c: Likewise.
	* locale/programs/simple-hash.c: Likewise.

	* misc/Makefile (headers): Add selectbits.h.
	* misc/sys/select.h: Include <selectbits.h> to get necessary
	definitions.
	* sysdeps/generic/selectbits.h: New file.  Generic macros for
	handling file descriptor sets.
	* sysdeps/i386/selectbits.h: New file.  i386 specific macros for
	handling file descriptor sets.
	* sysdeps/generic/gnu/types.h: Remove _FD_* macros.

	* misc/mntent_r.c: Fix handling of multiple, comma-separated
	options.  Patch by Sai-Lai Lo <sll@orl.co.uk>.

	* po/de.po: Update.
	* po/ko.po: Update.
	* po/sv.po: Update.

	* posix/getopt.c: Only use the bash generated environment variable
	to determine non-option parameters when using in GNU libc and if
	the argument vector given to getopt is the same as given to the
	program.

	* posix/unistd.h [__USE_GNU]: Declare environ.

	* posix/sys/types.h (key_t): Also define when __USE_XOPEN.

	* resolv/res_debug.c: Add casts to prevent warnings.
	* resolv/res_query.c: Likewise.

	* resolv/nss_dns/dns-host.c: Change type for buffer size arguments
	to `size_t'.
	* resolv/nss_dns/dns-network.c: Likewise.

	* signal/sigempty.c: Use memset to initialize variable.
	* signal/sigfillset.c: Likewise.

	* signal/signal.h: Change back handling of signal.  The BSD
 	version is preferred and the new sysv_signal is used when
 	__USE_XOPEN.
	* sysdeps/posix/sysv_signal.c: Renamed from signal.c.  Use SVID
	semantic.
	* sysdeps/posix/signal.c: Renamed from bsd_signal.c.  Use BSD
	semantic.
	* sysdpes/posix/sigpause.c: Correct comment.
	* sysdeps/stub/sigpause.c: Provide default implementation.
	* signal/Makefile (routines): Remove bsd_signal, add sysv_signal.

	* sysdeps/generic/abort.c: Allow repeated calls to abort if
	a user defined handler for SIGABRT is installed.

	* sysdeps/stub/libc-lock.h: Define separate set of macros for
	handling recursive mutexes.

	* sysdeps/unix/Makefile: Change rule to generate syscall.h file
	so that it is generate in the sys/ subdir.

	* sysdeps/unix/sysv/linux/Dist: Add kernel_termios.h.
	* sysdeps/unix/sysv/linux/alpha/Dist: Add kernel_termios.h and
	sys/acct.h.

	* sysdeps/unix/sysv/linux/direntry.h: Don't use struct dirent from
	kernel.  Define own version with additional field d_type.
	* sysdeps/unix/sysv/linux/getdents.c: New file.  Reformat dirent
	entries after reading from kernel.

	* sysdeps/unix/sysv/linux/gnu/types.h: Don't use kernel headers.
	Define types based on kernel types except for uid_t, gid_t, mode_t,
	dev_t which are larger now.
	* sysdeps/unix/sysv/linux/alpha/gnu/types.h: Likewise.

	* sysdeps/unix/sysv/linux/ioctl-types.h: Don't include
	<linux/termios.h>.  Define structure here.
	* sysdeps/unix/sysv/linux/alpha/ioctl-types.h: Likewise.
	* sysdeps/unix/sysv/linux/kernel_termios.h: New file. Define
	architecture dependent struct termio type.
	* sysdeps/unix/sysv/linux/alpha/kernel_termios.h: Likewise.
	* sysdeps/unix/sysv/linux/sigset.h: Define extended sigset_t type.
	* sysdeps/unix/sysv/linux/sigsuspend.c: Pass first word of array
	to syscall.

	* sysdeps/unix/sysv/linux/socketbits.h: Don't use kernel header.
	* sysdeps/unix/sysv/linux/statfsbuf.h: Likewise.
	* sysdeps/unix/sysv/linux/termbits.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/termbits.h: Likewise.
	* sysdeps/unix/sysv/linux/ustatbits.h: Likewise.
	* sysdeps/unix/sysv/linux/net/if.h: Likewise.
	* sysdeps/unix/sysv/linux/netinet/in.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/acct.h: Likewise.

	* sysdeps/unix/sysv/linux/sys/sysmacros.h (minor, major, mkdev):
	Change definitions to fit new dev_t definition.

	* sysdeps/unix/sysv/linux/syscalls.list: Add getdents and sigreturn.
	Rename ustat to s_ustat since wrapper is needed.

	* sysdeps/unix/sysv/linux/tcgetattr.c: After getting value from
	kernel rewrite it to userland level data format.
	* sysdeps/unix/sysv/linux/tcsetattr.c: Before calling kernel change
	data format to kernel format.
	* sysdeps/unix/sysv/linux/ustat.c: New file.  Change format of
	device parameter to format needed by kernel.
	* sysdeps/unix/sysv/linux/alpha/ustat.c: Likewise.
	* sysdeps/unix/sysv/linux/xmknod.c: New file.  Extend generic
	version to change device parameter to format needed by kernel.
	* sysdeps/unix/sysv/linux/alpha/xmknod.c: Likewise.

	* sysdeps/unix/sysv/linux/alpha/sys/acct.h: New file.  Alpha specific
	definition of accounting structure.

	* sysdeps/unix/sysv/linux/sys/ptrace.h: Include <asm/ptrace.h>.
	Patch by Andreas Schwab.

	* time/ap.c: Include <mcheck.h>.

	* time/tzset.c (__tzset_internal): Change to take one argument
	which tells whether examining of TZ is always wanted or only if
	no initialization happened before.
	* time/localtime.c: (localtime, __localtime_r): Change for new
	__tzset_internal form.

	* time/sys/time.h: Include <sys/select.h> to get select related
	declarations.

Mon Jan  6 01:58:21 1997  Richard Henderson  <richard@atheist.tamu.edu>

	* sysdeps/alpha/dl-machine.h (elf_machine_dynamic): Work around
	bug in GNU ld.

Mon Jan  6 01:35:29 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* misc/getpass.c: Make sure the content of the input buffer is not
	printed if the getpass function is interrupted.

Sat Jan  4 17:07:08 1997  Roland McGrath  <roland@fmh.frob.com>

	* md5-crypt/Makefile (rpath-link): Add md5-crypt objdir, not crypt.

Thu Jan  2 17:58:23 1997  Roland McGrath  <roland@fmh.frob.com>

	* sysdeps/generic/abort.c: Include <string.h> for memset decl.

	* new-malloc/mcheck.c [_LIBC || STDC_HEADERS || USG]: Include
	<string.h> so memset is declared.

Tue Dec 31 21:16:05 1996  Roland McGrath  <roland@fmh.frob.com>

	* elf/dl-deps.c (_dl_map_object_deps): Support DT_AUXILIARY.

	* elf/dl-error.c (_dl_catch_error): Save and restore old catch site so
	calls can be nested.

	* elf/link.h (struct link_map): Extend `l_info' by DT_EXTRANUM elts.
	* elf/dynamic-link.h (elf_get_dynamic_info): Grok tags in the Sun
	extension range.

	* elf/elf.h (DT_AUXILIARY, DT_FILTER, DT_EXTRANUM): New constant
	macros, for Sun extensions.
	(DT_EXTRATAGID): New macro to convert Sun extension tag values placed
	near the top of the processor-specific range into zero-origin indices.

	* elf/dl-deps.c (_dl_map_object_deps): Check for malloc failure.

Sat Jan  4 22:25:01 1997  Andreas Jaeger  <aj@arthur.pfalz.de>

	* libio/fcloseall.c: Include stdio.h for prototype declaration for
	__fcloseall.

Thu Jan  2 17:35:20 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/posix/signal.c: Provide ignorable definitions of
	SA_ONESHOT, SA_NOMASK, and SA_INTERRUPT for non-threads Posix
	systems.

Thu Jan  2 23:20:51 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* MakeTAGS ($P/siglist.pot): Delete rule.
	(XGETTEXTFLAGS-siglist.pot): Remove definition.
	(all-pot): Remove $P/siglist.pot.
	* sysdeps/unix/siglist.c: Mark strings as translatable.
	* sysdeps/unix/sysv/linux/siglist.h: Likewise.

Wed Jan  1 22:21:18 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* misc/syscall.h: New file.
	* misc/sys/syscall.h: Removed.  Forwarding to <syscall.h> might
	find user header, so do it the other way round.
	* sysdeps/mach/sys/syscall.h: Moved here from parent directory.
	* sysdeps/stub/sys/syscall.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/syscall.h: Likewise.
	* sysdeps/unix/sysv/sco3.2.4/sys/syscall.h: Likewise.
	* sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Update
	dependency.
	* sysdeps/unix/sysdep.h: Include <sys/syscall.h> instead of
	<syscall.h>.

Tue Dec 31 00:03:18 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* features.h: Fix typo.

Thu Jan  2 00:46:09 1997  Ulrich Drepper  <drepper@cygnus.com>

	* libio/_G_config.h: Add _G_HAVE_LONG_DOUBLE_IO for libg++.

	function.  This is the old signal.c file.
	* sysdeps/posix/signal.c: Change to have semantic of X/Open.
1997-01-06 21:48:19 +00:00
Miles Bader 3aaa074393 (*:GNU:*:*): The machine/subtype separator printed by uname -m is now `-', not '/'. 1997-01-05 03:44:26 +00:00
Karl Berry 3e99cd6f00 Oops, did inadvertent branch. 1997-01-04 19:24:13 +00:00
Richard Kenner 4398fea0c2 (M68*:*:R3V[567]*:*): Use uppercase 'M'. 1997-01-03 13:38:47 +00:00
Ulrich Drepper 6a6836233e Instruction to abort any process 1997-01-02 18:38:59 +00:00
Ulrich Drepper 6bc31da01b update from main archive 970101
Wed Jan  1 15:15:00 1997  Ulrich Drepper  <drepper@cygnus.com>

	* libio/Makefile (routines): Add fcloseall.
	* libio/fcloseall.c: New file.
	* libio/stdio.h [__USE_GNU]: Add prototype for fcloseall.
	* libio/iofclose.c: Don't close all streams when argument is NULL.

	* stdio/Makefile (routines): Add fcloseall.
	* stdio/fcloseall.c: New file.
	* stdio/stdio.h [__USE_GNU]: Add prototype for fcloseall.
	* stdio/fclose.c: Don't close all streams when argument is NULL.

	* manual/stdio.texi: Document fcloseall.

	* sysdeps/generic/abort.c: Call __fcloseall instead of fclose with
	NULL argument.

	* socket/sys/un.h (SUN_LEN): Add cast.

	* sunrpc/auth_unix.c (authunix_create): Change parameter types
	of uid, gid, and aup_gids to uid_t and gid_t respectively.
	(authunix_create_default): Likewise.
	(authunix_refresh): Correct cast for aup_gids assignment.
	* sunrpc/rpc/auth.h (authunix_create): Correct types in declaration.
	* sunrpc/rpc/auth_unix.h (struct authunix_parms): Correct field
	types to uid_t and gid_t respectively.
	(struct short_hand_verf): Likewise.
	Reported by Andreas Schwab.

	* sysdeps/ieee754/Makefile: New file.  Make sure ieee754.h gets
	installed.
	* sysdeps/ieee754/ieee754.h: Protect against multiple inclusion and
	use in C++ programs.

	* sysdeps/libm-i387/e_pow.S: New file.  Optimized ix87 assembler
	version of pow() function.
	* sysdeps/libm-i387/e_powf.S: New file.  Float version.
	* sysdeps/libm-i387/e_powl.S: New file.  Long double version.

	* sysdeps/libm-i387/s_expm1.S: New file.  Optimized ix87 assembler
	version of expm1() function.
	* sysdeps/libm-i387/s_expm1f.S: New file.  Float version.
	* sysdeps/libm-i387/s_expm1l.S: New file.  Long double version.

	* sysdeps/libm-i387/e_exp.S: Optimize handling of +-Inf.
	Better handling of computation stack from current NetBSD sources.
	* sysdeps/libm-i387/e_expf.S: Likewise.
	* sysdeps/libm-i387/e_expl.S: Likewise.

	* sysdeps/libm-i387/e_log.S: Use fstp instead of fincstp.
	* sysdeps/libm-i387/e_logf.S: Likewise.
	* sysdeps/libm-i387/e_logl.S: Likewise.
	* sysdeps/libm-i387/e_log10.S: Likewise.
	* sysdeps/libm-i387/e_log10f.S: Likewise.
	* sysdeps/libm-i387/e_log10l.S: Likewise.
	* sysdeps/libm-i387/s_asinh.S: Likewise.
	* sysdeps/libm-i387/s_asinhf.S: Likewise.
	* sysdeps/libm-i387/s_asinhl.S: Likewise.
	* sysdeps/libm-i387/s_significandl.S: Likewise.

	* sysdeps/libm-i387/s_ceil.S: Don't create stack frame.  Modify
	stack pointer directly.  Use 32 bit instead of 16 bit operations.
	* sysdeps/libm-i387/s_ceilf.S: Likewise.
	* sysdeps/libm-i387/s_ceill.S: Likewise.
	* sysdeps/libm-i387/s_floor.S: Likewise.
	* sysdeps/libm-i387/s_floorf.S: Likewise.
	* sysdeps/libm-i387/s_floorl.S: Likewise.

	* sysdeps/libm-ieee754/e_coshf.c (huge): Don't declare volatile.
	* sysdeps/libm-ieee754/e_expf.c: Likewise.
	* sysdeps/libm-ieee754/e_powf.c: Likewise.
	From current NetBSD sources.

	* sysdeps/libm-ieee754/e_hypot.c (__ieee754_hypot): Don't initialize
	`a' and `b' in definition.
	* sysdeps/libm-ieee754/e_hypotf.c: Likewise.

	* sysdeps/libm-ieee754/e_hypotl.c: New file.  Long double
	implementation.
	* sysdeps/libm-ieee754/e_sinhl.c: New file.  Long double
	implementation.
	* sysdeps/stub/e_hypotl.c: Removed.  We have a real version now.
	* sysdeps/stub/e_sinhl.c: Removed.

	* sysdeps/posix/sigpause.c (__sigpause): Use sigdelset instead of
	sigaddset.  Reported by Andreas Schwab.
	(__default_sigpause): New function.  Call __sigpause as BSD version.
	Make this the default function by providing alias sigpause.
	* sysdeps/stub/sigpause.c (__default_sigpause): New funciton.
	Simply fail.  Provide alias sigpause.

Wed Jan  1 12:34:54 1997  Ulrich Drepper  <drepper@cygnus.com>

	* po/es.po: Update for glibc-1.98.
	* po/fr.po: Likewise.
	* po/sv.po: New file.  Swedish translation.

Wed Jan  1 12:18:07 1997   MacGyver  <macgyver@tos.net>

	* values.h: Fix typos: use SHRT_MAX but SHORT_MAX and SHRT_MIN but
	SHORT_MIN.

Tue Dec 24 23:10:21 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile: Replace `stubs.h' by `gnu/stubs.h'.
	* features.h: Include <gnu/stubs.h> instead of <stubs.h>.

Tue Dec 24 22:16:55 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile (subdirs): Move `elf' last so that librtld.so isn't
	relinked in the `make others' pass if an add-on adds something to
	libc.

Mon Dec 23 21:23:16 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/m68k/abort-instr.h: New File.

Mon Dec 23 21:16:38 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/m68k/Makefile ($(subdir)=elf): Define CFLAGS-rtld.c
	to prevent warning.

Mon Dec 23 21:14:22 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* resolv/Makefile (subdirs-dirs): Define.

Mon Dec 23 20:56:49 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/gnu/utmpbits.h (struct utmp): Fix padding.

Mon Dec 30 11:05:11 1996  Ulrich Drepper  <drepper@cygnus.com>

	Update from ADO tzcode1996o.
	* time/difftime.c: De-ANSI-declfy.  Simplify computation of hibit
	according to ADO version.
	* time/zic.c: Correct typo is message.

	Update from ADO tzdata1996n.
	* time/asia: Updated.
	* time/australasia: Likewise.
	* time/europe: Likewise.
	* time/northamerica: Likewise.
	* time/southamerica: Likewise.
1997-01-01 15:28:18 +00:00
Ian ea971c878f Handle mips-unknown-linux-gnu 1996-12-31 20:54:33 +00:00
Ian 3c143620a5 Recognize mips-unknown-linux-gnu 1996-12-31 20:51:53 +00:00
Ulrich Drepper d38cd08ca3 update from main archive 961229
Mon Dec 30 01:32:59 1996  Ulrich Drepper  <drepper@cygnus.com>

	* tme/localtime.c: Rewrite so that localtime_r does not call tzset,
	but localtime does.

	* features.h: Rename ANSI C to ISO C.
	Mention __GLIBC__ and __GLIBC_MINOR__ macros.

	* gnu-versions.h: Add _GNU_GETOPT_INTERFACE_VERSION.
	* posix/getopt.c: Use _GNU_GETOPT_INTERFACE_VERSION to check
	whether we can elide the code.
	* posix/getopt1.c: Likewise.
	* posix/Makefile: Correct copyright.

	* elf/dl-error.c (_dl_catch_error): Clear `catch' also when error
	occurred.
	* elf/dl-support.c (_dl_sysdep_open_zero_fill): Don't define if
	MAP_ANON is defined.
	* elf/eval.c: Use __getline instead of getline.
	* elf/rtld.c (dl_main): Check return value of _dl_new_object
	function for NULL.
	* sysdeps/generic/dl-cache.c: Update copyright.

	* signal/Makefile: Correct copyright.
	(routines): Remove gsignal and ssignal.  Add bsd_signal.
	* signal/gsignal.c: Removed.  Now is made an alias.
	* signal/ssignal.c: Likewise.
	* sysdeps/posix/raise.c: Add alias gsignal.
	* sysdeps/stub/raise.c: Likewise.
	* sysdeps/posix/signal.c: Add alias ssignal.
	* sysdeps/stub/signal.c: Likewise.
	* signal/signal.h: Declare bsd_signal.  Define signal as bsd_signal
	if __FAVOR_BSD.
	* sysdeps/posix/bsd_signal.c: New file.  Implementation of XPG
	function.

	* sysdeps/unix/sysv/linux/signal.c: Add explanation.

	* socket/sys/un.h: Define SUN_LEN according to POSIX.1g.

	* stdio-common/Makefile (tests): Add scanf10.
	* stdio-common/scanf10.c: New file.
	* stdio-common/vfscanf.c: Decrement counter if EOF is read while
	reading string.

	* sysdeps/libm-i387/e_acos.S: Use END, not PSEUDO_END.
	* sysdeps/libm-i387/e_acosl.S: Likewise.
	* sysdeps/libm-i387/e_asin.S: Likewise.
	* sysdeps/libm-i387/e_asinl.S: Likewise.
	* sysdeps/libm-i387/e_atan2.S: Likewise.
	* sysdeps/libm-i387/e_atan2f.S: Likewise.
	* sysdeps/libm-i387/e_atan2l.S: Likewise.
	* sysdeps/libm-i387/e_exp.S: Likewise.
	* sysdeps/libm-i387/e_expl.S: Likewise.
	* sysdeps/libm-i387/e_fmod.S: Likewise.
	* sysdeps/libm-i387/e_fmodl.S: Likewise.
	* sysdeps/libm-i387/e_log.S: Likewise.
	* sysdeps/libm-i387/e_log10.S: Likewise.
	* sysdeps/libm-i387/e_log10l.S: Likewise.
	* sysdeps/libm-i387/e_logl.S: Likewise.
	* sysdeps/libm-i387/e_remainder.S: Likewise.
	* sysdeps/libm-i387/e_remainderf.S: Likewise.
	* sysdeps/libm-i387/e_remainderl.S: Likewise.
	* sysdeps/libm-i387/e_scalb.S: Likewise.
	* sysdeps/libm-i387/e_scalbl.S: Likewise.
	* sysdeps/libm-i387/e_sqrt.S: Likewise.
	* sysdeps/libm-i387/e_sqrtf.S: Likewise.
	* sysdeps/libm-i387/e_sqrtl.S: Likewise.
	* sysdeps/libm-i387/s_atan.S: Likewise.
	* sysdeps/libm-i387/s_atanf.S: Likewise.
	* sysdeps/libm-i387/s_atanl.S: Likewise.
	* sysdeps/libm-i387/s_ceil.S: Likewise.
	* sysdeps/libm-i387/s_ceilf.S: Likewise.
	* sysdeps/libm-i387/s_ceill.S: Likewise.
	* sysdeps/libm-i387/s_copysign.S: Likewise.
	* sysdeps/libm-i387/s_copysignf.S: Likewise.
	* sysdeps/libm-i387/s_copysignl.S: Likewise.
	* sysdeps/libm-i387/s_cos.S: Likewise.
	* sysdeps/libm-i387/s_cosf.S: Likewise.
	* sysdeps/libm-i387/s_cosl.S: Likewise.
	* sysdeps/libm-i387/s_finite.S: Likewise.
	* sysdeps/libm-i387/s_finitef.S: Likewise.
	* sysdeps/libm-i387/s_finitel.S: Likewise.
	* sysdeps/libm-i387/s_floor.S: Likewise.
	* sysdeps/libm-i387/s_floorf.S: Likewise.
	* sysdeps/libm-i387/s_floorl.S: Likewise.
	* sysdeps/libm-i387/s_ilogb.S: Likewise.
	* sysdeps/libm-i387/s_ilogbf.S: Likewise.
	* sysdeps/libm-i387/s_ilogbl.S: Likewise.
	* sysdeps/libm-i387/s_log1p.S: Likewise.
	* sysdeps/libm-i387/s_log1pf.S: Likewise.
	* sysdeps/libm-i387/s_log1pl.S: Likewise.
	* sysdeps/libm-i387/s_logb.S: Likewise.
	* sysdeps/libm-i387/s_logbf.S: Likewise.
	* sysdeps/libm-i387/s_logbl.S: Likewise.
	* sysdeps/libm-i387/s_rint.S: Likewise.
	* sysdeps/libm-i387/s_rintf.S: Likewise.
	* sysdeps/libm-i387/s_rintl.S: Likewise.
	* sysdeps/libm-i387/s_scalbn.S: Likewise.
	* sysdeps/libm-i387/s_scalbnf.S: Likewise.
	* sysdeps/libm-i387/s_scalbnl.S: Likewise.
	* sysdeps/libm-i387/s_significand.S: Likewise.
	* sysdeps/libm-i387/s_significandf.S: Likewise.
	* sysdeps/libm-i387/s_significandl.S: Likewise.
	* sysdeps/libm-i387/s_sin.S: Likewise.
	* sysdeps/libm-i387/s_sinf.S: Likewise.
	* sysdeps/libm-i387/s_sinl.S: Likewise.

	* sysdeps/libm-i387/e_log.S: Use fyl2xp1 instruction for values
	near 1 to increase precision.
	* sysdeps/libm-i387/e_log10.S: Likewise.
	* sysdeps/libm-i387/e_log10l.S: Likewise.
	* sysdeps/libm-i387/e_logl.S: Likewise.

	* sysdeps/libm-i387/s_cos.S: Use testl instead of andw.
	* sysdeps/libm-i387/s_cosl.S: Likewise.
	* sysdeps/libm-i387/s_sin.S: Likewise.
	* sysdeps/libm-i387/s_sinl.S: Likewise.
	* sysdeps/libm-i387/s_tan.S: Likewise.
	* sysdeps/libm-i387/s_tanl.S: Likewise.

	* sysdeps/libm-i387/e_acosf.S: New file.  Add float versions.
	* sysdeps/libm-i387/e_asinf.S: Likewise.
	* sysdeps/libm-i387/e_expf.S: Likewise.
	* sysdeps/libm-i387/e_fmodf.S: Likewise.
	* sysdeps/libm-i387/e_log10f.S: Likewise.
	* sysdeps/libm-i387/e_logf.S: Likewise.
	* sysdeps/libm-i387/e_scalbf.S: Likewise.

	* sysdeps/libm-i387/e_acosh.S: New file.  Highly optimized versions.
	* sysdeps/libm-i387/e_acoshf.S: Likewise.
	* sysdeps/libm-i387/e_acoshl.S: Likewise.
	* sysdeps/libm-i387/e_atanh.S: Likewise.
	* sysdeps/libm-i387/e_atanhf.S: Likewise.
	* sysdeps/libm-i387/e_atanhl.S: Likewise.
	* sysdeps/libm-i387/e_asinh.S: Likewise.
	* sysdeps/libm-i387/e_asinhf.S: Likewise.
	* sysdeps/libm-i387/e_asinhl.S: Likewise.

	* sysdeps/libm-ieee754/s_asinhf.c: Tweak a bit.  Use lower levels
	for simplified handling.

	* sysdeps/unix/sysv/linux/syscalls.list: Add query_module.

Sun Dec 22 01:39:29 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* inet/rcmd.c (rcmd): Set h_errno before calling herror.
	* inet/rexec.c (rexec): Likewise.

Sat Dec 21 21:47:08 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/m68k/setjmp.c (__setjmp): Make it really
	compatible.

Sun Dec 22 03:23:33 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/libm-i387/s_log1p.S: Use fyl2xp1 for numbers in range
	-0.29 <= x <= 0.29, otherwise the old method.
	* sysdeps/libm-i387/s_log1pf.S: Likewise.
	* sysdeps/libm-i387/s_log1pl.S: Likewise.
1996-12-30 01:47:46 +00:00
Ulrich Drepper 01c901a56b update from main archive 961220
Sun Dec 22 00:01:27 1996  Ulrich Drepper  <drepper@cygnus.com>

	* inet/getnetgrent.c: Reformat copyright.

	* inet/getnetgrent_r.c (__internal_endnetgrent): Correct comment.
	(__internal_getnetgrent): Rename to __internal_getnetgrent_r as
	required in change nis/nss_compat/* at Thu Dec 19 14:24:50 1996.
	Reported by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>.

	* nss/nss_files/files-netgrp.c: Fix typo.
	* login/utmp_db.c: Comment out unused variables.
	* misc/tst-dirname.c: Provide prototype for main (for now).
	* new-malloc/mcheck-init.c: Include <mcheck.h>.
	* new-malloc/obstack.c: Provide real prototypes.

	* resolv/base64.c (b64_ntop): Use size_t as type of `i', not int.
	(b64_pton): Likewise for `tarindex'.
	* resolv/nsap_addr.c (inet_nsap_addr): Add cast to prevent warning.

	* stdio-common/Makefile: Add CFLAGS-vfprintf.c to prevent warning.
	* stdio-common/printf-parse.h: Remove definition of MIN and MAX.
	* stdio-common/printf-prs.c: Include <sys/param.h> to get MIN and MAX.
	* stdio-common/vfprintf.c: Likewise.
	* stdlib/gmp-impl.h: Only define MIN and MAX if not already done.
	* stdlib/tst-strtol.c: Don't use -2147483648 as unsigned long value.

	* sysdeps/generic/Makefile ($(subdir)=string): Define
	CFLAGS-wordcopy.c to prevent warning.
	* sysdeps/generic/mul_n.c (mpn_mul_n): Don't define as inline.
	* sysdeps/generic/wordcopy.c: De-ANSI-declfy.
	* sysdeps/i386/Makefile ($(subdir)=elf): Define CFLAGS-rtld.c
	to prevent warning.
	* sysdeps/i386/dl-machine.h: Correct copyright.
	* sysdeps/unix/closedir.c: Likewise.
	* sysdeps/unix/dirstream.h: Likewise.
	* sysdeps/unix/opendir.c: Likewise.
	* time/tzset.c: Add prototype for __tzset_internal.

	* sysdeps/gnu/utmpbits.h (enum utlogin): Comment out since the
	way it is supposed to work is not yet known.
	(struct utmp): Remove ut_login and ut_syslen field for now.

Sat Dec 21 16:23:54 1996  Ulrich Drepper  <drepper@cygnus.com>

	* time/strftime.c: Fix another bug in handling flags made it
	impossible to use the `-', `_', or `0' flag.
1996-12-22 00:32:43 +00:00
Ulrich Drepper 7e3be507ee update from main archive 961220
Sat Dec 21 04:14:16 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/common/pause.c: Add missing second argument in
	call to __sigpause.
	Reported by a sun <asun@zoology.washington.edu>.

	* locale/weight.h: Correct handling of collation elements.
	Reported by Keld Simonsen <keld@dkuug.dk>.

	* manual/time.texi: Document ^ flag and %P format.

	* new-malloc/malloc.c: Update from Wolfram Gloger.

	* nss/nss.h: Reformat copyright.
	* posix/sched.h: Likewise.
	* sysdeps/i386/fpu_control.h: Likewise.
	* sysdeps/unix/sysv/linux/fcntlbits.h: Likewise.
	* sysdeps/unix/sysv/linux/ioctls.h: Likewise.
	* sysdeps/unix/sysv/linux/sigcontext.h: Likewise.
	* sysdeps/unix/sysv/linux/utsnamelen.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/acct.h: Likewise.
	* sysvips/sys/msg.h: Likewise.

	* stdio-common/Makefile (routines): Remove fcloseall.
	* stdio-common/fcloseall.c: Removed.

	* stdlib/Makefile (distribute): Add abort-instr.h.
	* sysdeps/generic/abort-instr.h: New file.
	* sysdeps/i386/abort-instr.h: New file.
	* sysdeps/generic/abort.c: Use lock and stage counter to prevent
	any form of loop.

	* sysdeps/unix/sysv/linux/timebits.h: Define CLK_TCK as 100.
	* sysdeps/unix/sysv/linux/alpha/timebits.h: Define CLOCKS_PER_SEC
	as 1000000.  Define CLK_TCK as 1024.
	* time/time.c (CLK_TCK): Define only if not already set.

	* time/strftime.c: Don't use `isdigit' when computing field width
	from string since the locale might have more than one digit
	block.

Fri Dec 20 12:38:14 1996  Darrel Hankerson  <hankedr@mail.auburn.edu>

	* posix/getopt.c (in -W option handling): Return when optind == argc.

Thu Dec 19 14:24:50 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* nis/nss_nis/nis-alias.c (_nss_nis_parse_aliasent): Add const to
	type of KEY.

	* nis/nss_compat/compat-grp.c: Include the declaration of the file
	parser.
	* nis/nss_compat/compat-pwd.c: Likewise.
	* nis/nss_compat/compat-spwd.c: Likewise.
	* nis/nss_nis/nis-ethers.c: Likewise.
	* nis/nss_nis/nis-grp.c: Likewise.
	* nis/nss_nis/nis-network.c: Likewise.
	* nis/nss_nis/nis-proto.c: Likewise.
	* nis/nss_nis/nis-pwd.c: Likewise.
	* nis/nss_nis/nis-rpc.c: Likewise.
	* nis/nss_nis/nis-spwd.c: Likewise.

	* nis/nss_compat/compat-grp.c (getgrent_next_nis,
 	getgrent_next_file): Pass the correct type for the buffer to the
 	parser function.
	* nis/nss_compat/compat-pwd.c (getpwent_next_netgr,
	getpwent_next_nis, getpwent_next_file): Likewise.
	* nis/nss_compat/compat-spwd.c (getspent_next_netgr,
	getspent_next_nis, getspent_next_file): Likewise.
	* nis/nss_nis/nis-ethers.c (internal_nis_getetherent_r,
	_nss_nis_getethernam_r, _nss_nis_getetherbyaddr_r): Likewise.
	* nis/nss_nis/nis-grp.c (internal_nis_getgrent_r,
	_nss_nis_getgrnam_r, _nss_nis_getgrgid_r): Likewise.
	* nis/nss_nis/nis-network.c (internal_nis_getnetent_r,
	_nss_nis_getnetbyname_r, _nss_nis_getnetbyaddr_r): Likewise.
	* nis/nss_nis/nis-proto.c (internal_nis_getprotoent_r,
	_nss_nis_getprotobyname_r, _nss_nis_getprotobynumber_r): Likewise.
	* nis/nss_nis/nis-pwd.c (internal_nis_getpwent_r,
	_nss_nis_getpwnam_r, _nss_nis_getpwuid_r): Likewise.
	* nis/nss_nis/nis-rpc.c (internal_nis_getrpcent_r,
	_nss_nis_getrpcbynumber_r): Likewise.
	* nis/nss_nis/nis-spwd.c (internal_nis_getspent_r,
	_nss_nis_getspnam_r): Likewise.

Thu Dec 19 13:37:16 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/m68k/setjmp.c: New file.
1996-12-21 04:13:58 +00:00
Ulrich Drepper 6d52618b15 Update from main archive 961219
Thu Dec 19 23:28:33 1996  Ulrich Drepper  <drepper@cygnus.com>

	* resolv/resolv.h: Update from BIND 4.9.5-P1.
	* resolv/res_comp.c: Likewise.
	* resolv/res_debug.c: Likewise.
	* resolv/Banner: Update version number.

Thu Dec 19 20:58:53 1996  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dlfcn.h: Add extern "C" wrapper.

	* io/utime.h: Don't define NULL since this isn't allowed in POSIX.
	* io/sys/stat.h: Declare `lstat' only if __USE_BSD ||
	__USE_XOPEN_EXTENDED.
	* locale/locale.h: Define NULL.
	* math/math.c: Don't include <errno.h> to define math errors.
	* stdlib/stdlib.h: Likewise.
	* posix/unistd.h: Don't declare environ.
	* posix/sys/utsname.h (struct utsname): Declare member domainname
	as __domainname is !__USE_GNU.
	* signal/signal.h: Declare size_t only if __USE_BSD ||
	__USE_XOPEN_EXTENDED.
	* stdio/stdio.h: Don't declare cuserid when __USE_POSIX, but
	instead when __USE_XOPEN.
	* string/string.h: Define strndup only if __USE_GNU.
	* sysdeps/unix/sysv/linux/clock.c: New file.
	* sysdeps/unix/sysv/linux/timebits.h: Define CLOCKS_PER_SEC as
	1000000 per X/Open standard.
	* features.h: Add code to recognize _POSIX_C_SOURCE value 199309.
	Define __USE_POSIX199309.
	* posix/unistd.h: Declare fdatasync only if __USE_POSIX199309.
	* time/time.c: Declare nanosleep only if __USE_POSIX199309.
	Patches by Rüdiger Helsch <rh@unifix.de>.

	* locale/locale.h: Add declaration of newlocale and freelocale.

	* new-malloc/Makefile (distibute): Add mtrace.awk.
	(dist-routines): Add mcheck and mtrace.
	(install-lib, non-lib.a): Define as libmcheck.a.
	* new-malloc/malloc.h: Add declaration of __malloc_initialized.
	* new-malloc/mcheck.c: New file.
	* new-malloc/mcheck.h: New file.
	* new-malloc/mtrace.c: New file.
	* new-malloc/mtrace.awk: New file.

	* posix/unistd.h: Correct prototype for usleep.
	* sysdeps/unix/bsd/usleep.c: De-ANSI-declfy.  Correct return type.
	* sysdeps/unix/sysv/linux/usleep.c: Real implementation based on
	nanosleep.

	* signal/signal.h: Change protoype of __sigpause to take two
	arguments.  Remove prototype for sigpause.  Add two different
	macros named sigpause selected when __USE_BSD or __USE_XOPEN
	are defined.  This is necessary since the old BSD definition
	of theis function collides with the X/Open definition.
	* sysdeps/posix/sigpause.c: Change function definition to also
	fit X/Open definition.

	* sysdeps/libm-i387/e_exp.S: Make sure stack is empty when the
	function is left.
	* sysdeps/libm-i387/e_expl.S: Likewise.
	Patch by HJ Lu.

1996-12-17  Paul Eggert  <eggert@twinsun.com>

	* many, many files: Spelling corrections.
	* catgets/catgetsinfo.h (mmapped):
	Renamed from mmaped (in struct catalog_info.status).
	* mach/err_kern.sub (err_codes_unix), string/stratcliff.c (main):
	Fix spelling in message.
	* po/libc.pot: Fix spelling in message for `zic'; this anticipates
	a fix in the tzcode distribution.

Wed Dec 18 15:48:02 1996  Ulrich Drepper  <drepper@cygnus.com>

	* time/strftime.c: Implement ^ flag to cause output be converted
	to use upper case characters.

	* time/zic.c: Update from ADO tzcode1996n.

Wed Dec 18 14:29:24 1996  Erik Naggum  <erik@naggum.no>

	* time/strftime.c (add): Don't change global `i' until all is over.
	Define NULL is not already defined.

Tue Dec 17 09:49:03 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* libio/iovsprintf.c (_IO_vsprintf): Change `&sf' to `&sf._sbf._f'
	to avoid the need for a cast.
	* libio/iovsscanf.c (_IO_vsscanf): Likewise.

	* sunrpc/rpc/xdr.h: Add prototype for xdr_free.
1996-12-20 01:39:50 +00:00
Ulrich Drepper 10dc2a90b7 update from main archive 961217
Wed Dec 18 03:31:58 1996  Ulrich Drepper  <drepper@cygnus.com>

	* dirent/scandir.c: Undo change from Mon Dec  2 15:32:15 1996.
	The stream is private and usages outside glibc don't care about
	reentrancy.
	* io/fts.c: Likewise.
	* io/ftw.c: Likewise.
	* sysdeps/posix/getcwd.c: Likewise.
	* sysdeps/posix/ttyname.c: Likewise.
	* sysdeps/posix/ttyname_r.c: Likewise.
	* sysdeps/posix/glob.c: Likewise.

	* libio/iovsprintf.c: Add cast to prevent warning.
	* libio/iovsscanf.c: Likewise.

	* libio/libioP.h: Define mmap to __mmap and munmap to __munmap
	to keep namespace clean.

	* new-malloc/malloc.c: Update to last version from Wolfram Gloger.
	Add hooks and check functions from old GNU malloc.
	* new-malloc/malloc.h: Likewise.

	* nis/ypclnt.c: Remove prototype for xdr_free.
	* snrpc/rpc/xdr.h: Add prototype for xdr_free.

	* manual/nss.texi: Correct description of default values and don't
	meantion NSS as an add-on.

	* nss/grp-lookup.c: Provide default value as
	"compat [NOTFOUND=return] files".
	* nss/pwd-lookup.c: Likewise.
	* nss/spwd-lookup.c: Likewise.
	* nss/network-lookup.c: Correct default to
	"dns [!UNAVAIL=return] files".
	* nss/nsswitch.c: Change default-default value to "nis
	[NOTFOUND=return] files" since compat is only available for group,
	passwd, and shadow.

	* stdlib/on_exit.c (on_exit): Rename to __on_exit and make old name
	a weak alias.
	* stdlib/stdlib.h: Add prototype for __on_exit.

	* sysdeps/unix/sysv/linux/schedbits.h: Add prototype for __clone.

	* time/Makefile: Undo change from Sun Dec  8 06:56:49 1996.
	The new malloc now has mcheck.
	* time/ap.c: Likewise.

	* time/tzset.c (__tzset): Rename to __tzset_internal.
	(tzset): Rename to __tzset.  Make tzset a weak alias for __tzset.
	* time/localtime.c: Use __tzset_internal not __tzset.
	* time/strftime.c [_LIBC]: Define tzname as __tzname and tzset
	as __tzset to prevent namespace pollution.

	* wctype/iswctype.h (icwctype): Rename to __iswctype.  Make iswctype
	a weak alias of __iswctype.
	* wctype/wctype.h: Add prototype for __iswctype.
	(iswalnum, iswalpha, iswcntrl, iswdigit, iswlower, iswgraph,
	iswprint, iswpunct, iswspace, iswupper, iswxdigit, iswblank):
	Use __iswctype for the test, not iswctype.

1996-12-16  Paul Eggert  <eggert@twinsun.com>

	* hurd/hurd/sigpreempt.h
	(struct hurd_signal_preemptor.preemptor, _hurdsig_preemptors),
	hurd/hurd/signal.h (struct hurd_sigstate.preemptors),
	hurd/hurdfault.c, hurd/hurdfault.h (_hurdsig_fault_preemptor),
	hurd/hurdsig.c (_hurdsig_preempters):
	Renamed to fix spelling from `preempter' to `preemptor'.
	All uses changed.

1996-12-15  Paul Eggert  <eggert@twinsun.com>

	* ctime.c (ctime): Return asctime (localtime (t)), as the C
	standard requires.

Tue Dec 17 02:05:48 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/mach/libc-lock.h (__libc_lock_trylock): Invert return
	value because Mach/cthreads uses the opposite convention from
	Posix/glibc.

Mon Dec 16 22:41:01 1996  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/fcloseall.c: Correct test of already_called.
	Reported by Thomas Bushnell, n/BSG.

Mon Dec 16 14:52:07 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* mach/lock-intern.h (__mutex_try_lock): New function.

Sun Dec 15 16:33:44 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* termios/sys/ttydefaults.h (TTYDEF_OFLAG): Only use OXTABS if
	defined, else XTABS.
	(CEOL, CSTATUS): Use _POSIX_VDISABLE if defined.

Sun Dec 15 11:56:19 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/m68k/mremap.S: New file.
	* sysdeps/unix/sysv/linux/m68k/Dist: Distribute it.
	* sysdeps/unix/sysv/linux/m68k/Makefile (sysdep_routines): Add mremap.
1996-12-18 03:23:47 +00:00
Paul Eggert cc2af7ea03 Spelling fix. 1996-12-17 06:25:17 +00:00
Ulrich Drepper 860d372986 update from main archive 961215
Mon Dec 16 02:15:42 1996  Ulrich Drepper  <drepper@cygnus.com>

	Make sure tzset() sets always tzname[].
	* time/tzfile.c: De-ANSI-declfy.
	(find_transition): New function.  Set tzname according to given time.
	(__tzread_file): Use find_transition to set tzname.
	(__tzfile_compute): Use find_transition instead of doing the work
	self.
	* time/tzset.c (tzset): Set tzname[] directly only if !__use_tzfile.

Sun Dec 15 16:52:34 1996  Ulrich Drepper  <drepper@cygnus.com>

	* login/utmp-file.c (pututline_file): Open file if closed.
	Reported by Roma Ekzhanov <ekzhanov@paragraph.com>.
	Use fcntl instead of flock.

Sun Dec 15 14:20:51 1996  Ulrich Drepper  <drepper@cygnus.com>

	* manual/time.texi: Update documentation of strftime function.
1996-12-16 01:40:21 +00:00
Ulrich Drepper 68dbb3a69e update from main archive 961214
Sun Dec 15 01:53:20 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile (subdirs): Change crypt to md5-crypt.
	* crypt/Makefile, crypt/md5-crypt.c, crypt/md5.c, crypt/md5.h,
	crypt/md5c-test.c, crypt/md5test.c: Move to new directory
	md5-crypt.
	* sysdeps/unix/sysv/linux/configure.in: Refer to linuxthreads and
	crypt instead of LinuxThreads and des-crypt.

	* Makefile (subdirs): Add nss back.
	* sysdeps/unix/inet/Subdirs: Move nis to end of file to fulfill
	dependencies.

	* libio/iofclose.c: Implement fclose(NULL) as closing all streams.
	* stdio-common/Makefile (routines): Add fcloseall.
	* stdio-common/fcloseall.c: New file.
	* sysdeps/generic/abort.c: Make implementation POSIX.1 compatible.

	* sysdeps/mach/libc-lock.h: Add definition of __libc_lock_trylock.
	* sysdeps/stub/libc-lock.h: Define __libc_lock_trylock to always
	return 0.

	* stdio-common/printf.h: Define MIN and MAX only if not already
	defined.

	* stdio-common/vfprintf.c: Set errno to EBADF if stream does not
	allow writing.  Required by POSIX.1.

	* libio/libioP.h (CHECK_FILE): Use MAYBE_SET_EINVAL instead of
	assignment.

	* interp.c: Update copyright.
	* libio/clearerr.c: Likewise.
	* libio/ioseekoff.c: Likewise.
	* libio/ioseekpos.c: Likewise.
	* stdio/fclose.c: Likewise.
	* stdio/fflus.c: Likewise.

	* libio/libio.h [!_IO_MTSAFE_IO]: Define _IO_cleanup_region_start
	and _IO_cleanup_region_end as empty.
	* libio/fgetc.c: Use _IO_cleanup_region_start and
	_IO_cleanup_region_end instead of __libc_cleanup_region_start and
	__libc_cleanup_region_end.
	* libio/fputc.c: Likewise.
	* libio/freopen.c: Likewise.
	* libio/fseek.c: Likewise.
	* libio/getc.c: Likewise.
	* libio/getchar.c: Likewise.
	* libio/iofclose.c: Likewise.
	* libio/iofflush.c: Likewise.
	* libio/iofgetpos.c: Likewise.
	* libio/iofgets.c: Likewise.
	* libio/iofputs.c: Likewise.
	* libio/iofread.c: Likewise.
	* libio/iofsetpos.c: Likewise.
	* libio/ioftell.c: Likewise.
	* libio/iofwrite.c: Likewise.
	* libio/iogetdelim.c: Likewise.
	* libio/iogets.c: Likewise.
	* libio/ioputs.c: Likewise.
	* libio/iosetbuffer.c: Likewise.
	* libio/iosetvbuf.c: Likewise.
	* libio/ioungetc.c: Likewise.

	* libio/iovspintf.c: Use cleanup handler to make sure no dangling
	locks can stay over.
	* libio/iovsscanf.c: Likewise.

	* libio/genops.c: Use _IO_lock_init_recursive and _IO_lock_fini
	instead of __libc_lock_init_recursive and __libc_lock_fini.

	* libio/filedoalloc.c: Only use __isatty when compiling GNU libc.
	Otherwise use isatty.
	* libio/fileops.c: Likewise for __open and open.

	* login/utmp_file.c (getutent_r_file): Use fcntl instead of
	flock.

	* nis/ypclnt.h: Add more casts to prevent warnings.

	* nss/Makefile (services): Remove dns.
	(libnss_dns, libnss_dns-inhibit-o): Remove definition.
	($(objpfx)libnss_dns.so): Removed.
	* nss/nss_dns/dns-host.c, nss/nss_dns/dns-network.c: Moved to...
	* resolv/nss_dns: ...here.
	* resolv/Makefile (extra-libs): Add libnss_dns.
	(libnss_dns-routines, libnss_dns-inhibit-o): Define as in
	nss/Makefile.

	* nss/XXX-lookup.c: Call __nss_database_lookup with new argument
	specifying alternate name for entry in /etc/nsswitch.conf
	* nss/nsswitch.c: If no entry with primary name is found in
	/etc/nsswitch.conf try alternate name if given.
	* nss/nsswitch.h: Add new parameter in prototype for
	__nss_database_lookup.
	* nss/spwd-lookup.c: Provide alternative entry name to look for.
	This makes our NSS compatible with Solaris' nsswitch.conf files.

	* string/tst-strlen.c: Change all counting variables to type size_t
	to prevent warnings.

	* sysdeps/posix/fpathconf.c: Update copyright.
	* sysdeps/posix/pathconf.c: Don't call fpathconf to do the work.
	Opening the file at this path may fail if it is a FIFO or pipe.

	These changes make the time implementation POSIX.1 compliant.
	* time/localtime.c (__localtime_r): Always call __tzset not only
	if __tzset_run is zero.
	* time/strftime.c: Add definition of memset_space to help to
	reduce for systems which have memset.
	(strftime): Don't use tm_zone member of argument for zone name.
	Instead always use tzname[].
	Call tzset() as required by POSIX.1 before any action.
	* time/tzset.c (tzset): Set tzname[] as required by POSIX.1.
	Remove global variable __tzset_run.  __tzset is now called always
	when a dependent function is used.
	(__tzset): Caching happens based on the contents of the
	environment variable TZ.

Fri Dec 13 01:06:52 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/paths.h: Add _PATH_KLOG.

Thu Dec 12 09:16:35 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* rellns-sh: Correctly handle a relative source file name.

Wed Dec 11 19:18:40 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* login/utmp_file.c (setutent_file): Seek back to beginning of the
	file if resetting.

Thu Dec 12 16:39:12 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* hurd/hurdinit.c (map0): Delete function.  Don't do this on
	_hurd_preinit_hook.
	* hurd/hurdstartup.c (_hurd_startup): Map page zero redzone here.
1996-12-15 02:15:29 +00:00
Ulrich Drepper f8b87ef0d4 update from main archive 961211
Thu Dec 12 03:32:21 1996  Ulrich Drepper  <drepper@cygnus.com>

	* libio/_G_config.h: Add definition of _G_int16_t, _G_int32_t,
	_G_uint16_t, _G_uin32_t, _G_HAVE_BOOL, _G_HAVE_MMAP, and
	_G_ARGS.

	Change libio buffer handling to allocate internal buffers using
	mmap if possible.
	* libio/filedoalloc.c (_IO_file_doallocate): Change call to
	ALLOC_BUF.
	* libio/genops.c (_IO_setb, _IO_default_finish): Change call
	to FREE_BUF.
	(_IO_default_doallocate): Change call to ALLOC_BUF.
	* libio/libioP.h: Change definition of ALLOC_BUF and FREE_BUF
	to use mmap/munmap when possible.
	* libio/memstream.c: Don't use ALLOC_BUF, but directly malloc.
	* libio/vasprintf.c: Likewise.
	Patch by HJ Lu.

	* libio/libio.h: Define NULL as __null only for gcc-2.8 and up.
	* libio/libioP.h: Likewise.

	* libio/fileops.c (_IO_file_read, _IO_file_write): Don't
	restart syscall when EINTR was returned.  Necessary for POSIX.1.

	* libio/strops.c (_IO_str_overflow): Add cast to prevent warning.

	* new-malloc/malloc.c (heap_trim): Correctly place parentheses to
	prevent warnings.

	* nis/Makefile: Remove rules for bsd-tools which are not part
	of glibc.
	Patch by Thorsten Kukuk.

	* nis/ypclnt.c: Add prototype for xdr_free.
	Add const to first parameter for __yp_bind.
	* nis/nss_compat/compat-pwd.c (getpwent_next_netgr, getpwent_next_nis,
	getpwent_next_file): Variable `p2len' must have type size_t.
	* nis/nss_nis/nis-alias.c: Add casts to prevent warnings.
	* nis/nss_nis/nis-ethers.c: Likewise.
	* nis/nss_nis/nis-grp.c: Likewise.
	* nis/nss_nis/nis-hosts.c: Likewise.
	* nis/nss_nis/nis-network.c: Likewise.
	* nis/nss_nis/nis-proto.c: Likewise.
	* nis/nss_nis/nis-pwd.c: Likewise.
	* nis/nss_nis/nis-rpc.c: Likewise.
	* nis/nss_nis/nis-service.c: Likewise.
	* nis/nss_nis/nis-spwd.c: Likewise.

	* nis/rpcsvc/yp_prot.h (ypreq_key): Change type of members to
	`const char *'.
	(ypmaplist): Change member names to `map' and `next' and provide
	#defines for old names.
	Patch by Thorsten Kukuk.

	* nss/nss_files/files-parse.c (parse_line, parse_list): Change
	type for `datalen' parameter to size_t.

	* shsdow/lckpwdf.c: Use fcntl forlocking, not flock.

	* stdio-common/printf.c [USE_IN_LIBIO]: Provide alias _IO_printf
	for printf.
	* stdio-common/sscanf.c [USE_IN_LIBIO]: Provide alias _IO_sscanf
	for sscanf.
	Patch by HJ Lu.

	* stdio-common/tmpfile.c: Update copyright.

	* stdio-common/vfscanf.c: Correctly handle EINTR error from fgetc
	function.
	Don't eat white space for `C' format.

	* stdlib/tst-strtol.c [~0UL != 0xffffffff]: Fix typo in test data.

	* sysdeps/generic/abort.c: Update copyright.  De-ANSI-declfy.
	* sysdeps/i386/abort.c: Removed.  This version does not use
	signal SIGABRT.

	* sysdeps/i386/fpu/__math.h: Define __NO_MATH_INLINES if not using
	gcc-2.8 or up.
	Patch by HJ Lu.

	* sysdeps/posix/tempname.c: Test for error but EEXIST after open
	call.  If EMFILE, ENFILE, or EINTR return with error.

Wed Dec 11 14:43:52 1996  Ulrich Drepper  <drepper@cygnus.com>

	* gnu-versions.h: Set _GNU_OBSTACK_INTERFACE_VERSION back to 1.
	We are compatible again.
	* new-malloc/obstack.h (struct obstack): Add back alloc_failed bit
	even though it is not used.
	* malloc/obstack.h: Likewise.
	* new-malloc/obstack.c (_obstack_begin, _obstack_begin_1): Initialize
	alloc_failed bit to 0.

	* time/strftime.c: Extend for Emacs' needs.  Recognize field width,
	%P format and `0' modifier.

Tue Dec 10 21:20:44 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makerules (make-link): Don't discard exit codes of intermediate
	commands.  Always use rellns-sh if symbolic links are available.

Tue Dec 10 20:09:51 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/netinet/in.h: Enclose #include
	<linux/in.h> in __BEGIN_DECLS/__END_DECLS to avoid linkage
	conflict of ntohs etc. in <asm/byteorder.h>.
1996-12-12 03:24:48 +00:00
Ulrich Drepper 6259ec0d78 update from main arcive 961210
Wed Dec 11 01:04:30 1996  Ulrich Drepper  <drepper@cygnus.com>

	Add NIS NSS implementation.
	* shlib-versions: Add versions for NIS libraries.
	* sysdeps/unix/inet/Subdirs: Add nis.
	* nis/Banner: New file.
	* nis/Makefile: New file.
	* nis/nss-nis.h: New file.
	* nis/yp_xdr.h: New file.
	* nis/ypclnt.h: New file.
	* nis/ypupdate_xdr.c: New file.
	* nis/nss_compat/compat-grp.c: New file.
	* nis/nss_compat/compat-pwd.c: New file.
	* nis/nss_compat/compat-spwd.c: New file.
	* nis/nss_nis/nis-alias.c: New file.
	* nis/nss_nis/nis-ethers.c: New file.
	* nis/nss_nis/nis-grp.c: New file.
	* nis/nss_nis/nis-hosts.c: New file.
	* nis/nss_nis/nis-netgrp.c: New file.
	* nis/nss_nis/nis-network.c: New file.
	* nis/nss_nis/nis-proto.c: New file.
	* nis/nss_nis/nis-publickey.c: New file.
	* nis/nss_nis/nis-pwd.c: New file.
	* nis/nss_nis/nis-rpc.c: New file.
	* nis/nss_nis/nis-service.c: New file.
	* nis/nss_nis/nis-spwd.c: New file.
	* nis/rpcsvc/yp.h: New file.
	* nis/rpcsvc/yp.x: New file.
	* nis/rpcsvc/yp_prot.h: New file.
	* nis/rpcsvc/ypclnt.h: New file.
	* nis/rpcsvc/ypupd.h: New file.

	* libio/_G_config.h: Define _G_HAVE_SYS_WAIT and _G_HAVE_PRINTF_FP.

	* locale/C-numeric.c: Update copyright.

	* locale/Makefile: Add rules to build libBrokenLocale.
	* locale/broken_cur_max.c: New file.
	* locale/mb_cur_max.c: Update copyright.
	(__ctype_get_mb_cur_max): Make function weak.

	* new-malloc/malloc.c: Correct copyright.
	* new-malloc/thread-m.h: Correct key handling.

	* shadow/lckpwdf.c: Update copyright.
	(PWD_LOCKFILE): Change to /etc/.pwd.lock.

	* stdlib/strtod.c: Add another assertion.
	* stdlib/tst-strtod.c: Add another test case.

	* sysdeps/generic/paths.h: Add _PATH_PRESERVE.  Needed by nvi.
	* sysdeps/unix/sysv/linux/paths.h: Likewise.

	* sysdeps/gnu/utmpbits.h: Rename ut_addr field to ut_addr_v6.
	ut_addr names a single element in ut_addr_v6.

	* sysdeps/mach/hurd/xmknod.c: Remove alias from __mknod to mknod.
	Patch by Thomas Bushnell, n/BSG.

Tue Dec 10 11:35:28 1996  Richard Henderson  <rth@tamu.edu>

	* sysdeps/alpha/strncmp.S: Fix aligned short truncated compare
	corner condition.

	* sysdeps/alpha/memchr.S: Don't read ahead, even if the load
	did fit nicely into that delay slot (patch from David Mosberger-Tang).

Mon Dec  9 23:53:43 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/mach/hurd/ttyname_r.c (__ttyname_r): Renamed from
	`ttyname_r'.
	(ttyname_r): New alias.

	* stdio-common/printf_fp.c (__guess_grouping): Fix off by one
1996-12-11 01:40:39 +00:00
David MacKenzie aee321f468 * config.guess: Recognize machten.
From Eric W. Bates <ericx@vineyard.net>.
1996-12-11 00:37:52 +00:00
Ulrich Drepper 8a4b65b469 update from main archive 961209
Tue Dec 10 02:17:31 1996  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/printf_fp.c (__guess_grouping): Fix of by one
	error in computation of number of groups.
	Patch sent by Harald Schreiber <Harald.Schreiber@post.rwth-aachen.de>.

Tue Dec 10 01:50:07 1996  Ulrich Drepper  <drepper@cygnus.com>

	* version.h: Set version to 1.99.

	* Make-dist (routines): Add malloc and new-malloc.

	* Makeconfig: Allow Makefiles to set $(CPPFLAGS-$(<F)) and
	$(CPPFLAGS-$(@F)) to be added to CPPFLAGS.
	Same for $(CFLAGS-$(@F)) and CFLAGS.

	* gmon/sys/gmon_out.h: Add __BEGIN_DECLS/__END_DECLS.  Unify
	layout.
	* io/sys/poll.h: Likewise.
	* sysdeps/stub/sys/ipb_buf.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/sys/perm.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/sys/vm86.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/ipc_buf.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/kdaemon.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/klog.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/module.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/mount.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/msq_buf.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/param.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/procfs.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/ptrace.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/reboot.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/sem_buf.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/shm_buf.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/socketcall.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/swap.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/sysctl.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/sysinfo.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/sysmacros.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/timex.h: Likewise.
	* sysvipc/sys/sem.h: Likewise.
	* sysvipc/sys/shm.h: Likewise.

	* new-malloc/Makefile: Set CPPFLAGS-malloc.o.
	* new-malloc/malloc.c: Remove problem with 64 bits pointers.
	Add statistics for threads.
	* new-malloc/malloc.h: Likewise.
	* new-malloc/thread-m.h: Likewise.

	* time/strftime.c: Declare tzname if if HAVE_TZNAME is defined.

	* time/strptime.c: Update copyright.

Mon Dec  9 14:51:10 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Make-dist: Make sure both malloc directories get distributed.

Sun Dec  8 23:14:10 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* libio/iogets.c (_IO_gets): Fix early returns to not leave the
	stream locked.

Sat Dec  7 22:08:09 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/sys/module.h: Enclose declarations in
	__BEGIN_DECLS/__END_DECLS.

Sat Dec  7 14:23:12 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* login/utmp_file.c: Consistently set file_offset to the position
	after the entry just read.
1996-12-10 03:08:06 +00:00
Thomas Bushnell, BSG f5c1ec414e Regenerated: autoconf configure.in 1996-12-09 21:45:10 +00:00
Ulrich Drepper feb3c93435 update from main archive 961208
Mon Dec  9 03:39:30 1996  Ulrich Drepper  <drepper@cygnus.com>

	* config.make.in (defines): Add @USE_NEW_MALLOC@.
	* Makefile.in: Define USE_NEW_MALLOC to -DUSE_NEW_MALLOC if
	we use the new malloc.

	* malloc.h: Use either <malloc/malloc.h> or <new-malloc/malloc.h>
	depending on USE_NEW_MALLOC.

	Fix some more POSIX.1 problems.
	* libio/fileops.c (_IO_file_underflow): Set errno to EBADF if used
	on a write-only stream.
	(_IO_file_overflow): Set errno to EBADF if used on a read-only
	stream.
	(_IO_file_seekoff): POSIX.1 requires that fseek() after an fflush()
	call really positions the file offset to the correct position
	and no read-ahead happens.

	* locale/C-monetary.c: Set mon_grouping file to "" and "\377"
	to pass POSIX test suite.
	* stdio-common/vfprintf.c: Handle empty string as grouping command
	correctly.
	* stdlib/grouping.h: Likewise.

	* misc/syslog.c: Case first argument of __libc_cleanup_region_start.

	* signal/sigsetops.h: Update copyright.  Don't include ansidecl.h.

	* stdio-common/printf_fp.c: Update copyright.

Sun Dec  8 16:39:28 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* time/Makefile: Compile ap.c with NO_MCHECK flag if new-malloc
	used (not otherwise).

	* misc/syslog.c (vsyslog): Cast argument to __libc_cleanup_region
	to get Hurd macros right.
1996-12-09 03:15:25 +00:00
Ulrich Drepper f65fd747b4 update from main archive 961207
Sun Dec  8 06:56:49 1996  Ulrich Drepper  <drepper@cygnus.com>

	* io/getwd.c: Use PATH_MAX not LOCAL_PATH_MAX.  Fix typo in
	comment.
	* stdlib/canonicalize.c: Correct bugs in last change.
	Patch by HJ Lu.

	* libio/Makefile (routines): Remove ioprims.
	(aux): Remove cleanup.
	Add IO_DEBUG option for .o files.
	* libio/cleanups.c: Removed.
	* libio/ioprims.c: Removed.
	* libio/filedoalloc.c: More updates from libg++-2.8b5.
	* libio/fileops.c: Likewise.
	* libio/genops.c: Likewise.
	* libio/iolibio.h: Likewise.
	* libio/iopopen.c: Likewise.
	* libio/iovsprintf.c: Likewise.
	* libio/iovsscanf.c: Likewise.
	* libio/libio.h: Likewise.
	* libio/libioP.h: Likewise.
	* libio/memstream.c: Likewise.
	* libio/strfile.h: Likewise.
	* libio/vasprintf.c: Likewise.
	* libio/vsnprintf.c: Likewise.

	* libio/stdio.h: Define P_tmpdir only is __USE_SVID.

	* manual/arith.texi: Change references to ANSI C to ISO C.
	* manual/conf.texi: Likewise.
	* manual/creature.texi: Likewise.
	* manual/ctype.texi: Likewise.
	* manual/errno.texi: Likewise.
	* manual/filesys.texi: Likewise.
	* manual/intro.texi. Likewise.
	* manual/io.texi: Likewise.
	* manual/lang.texi: Likewise.
	* manual/libc.texinfo: Likewise.
	* manual/locale.texi: Likewise.
	* manual/maint.texi: Likewise.
	* manual/mbyte.texi: Likewise.
	* manual/memory.texi: Likewise.
	* manual/process.texi: Likewise.
	* manual/process.texi: Likewise.
	* manual/search.texi: Likewise.
	* manual/setjmp.texi: Likewise.
	* manual/signal.texi: Likewise.
	* manual/startup.texi: Likewise.
	* manual/stdio.texi: Likewise.
	* manual/string.texi: Likewise.
	* manual/time.texi: Likewise.

	* manual/locale.texi: Remove description of LC_RESPONSE and add
	LC_MESSAGES.

	* Makefile (subdirs): Change malloc in $(malloc).
	* config.make.in: Add variable malloc which is initialized from
	@malloc@.
	* configure.in: Add new option --enable-new-malloc to use new
	malloc.  This is the default on Linux.
	* sysdeps/unix/sysv/linux/configure.in: Define malloc to new-malloc
	by default.
	* new-malloc/Makefile: New file.  Improved malloc implementation.
	* new-malloc/malloc.c: Likewise.
	* new-malloc/malloc.h: Likewise.
	* new-malloc/mallocbug.c: Likewise.
	* new-malloc/obstack.c: Likewise.
	* new-malloc/obstack.h: Likewise.
	* new-malloc/thread-m.h: Likewise.
	* time/Makefile: Compile ap.c with NO_MCHECK flag for now.
	* time/ap.c: Don't call mcheck if NO_MCHECK is defined.

	* resolv/Makefile: Add rule to rebuiild libresolv.so when libc.so
	changed.

	* stdio/feof.c: Update copyright.
	* stdio/stdio.h: Add field for lock to FILE structure.
	Add cast to *MAGIC constants to prevent warnings.

	* stdio-common/bug7.c: Correct test.  Stream must not be closed
	twice.

	* stdlib/Makefile (routines): Add secure-getenv.
	* stdlib/secure-getenv.c: New file.  __secure_getenv function
	moved to here from sysdeps/generic/getenv.c.  Otherwise an
	application cannot replace the getenv function in the libc.
	* sysdeps/generic/getenv.c: Remove __secure_getenv function.
	* sysdeps/stub/getenv.c: Remove __secure_getenv alias.

	* sysdeps/mach/libc-lock.h: Define__libc_mutex_lock to __mutex_lock.

	* sysdeps/posix/fdopen.c: Update copyright.  Don't use EXFUN.

	* time/test-tz.c: Comment fifth test out.  PROBLEM.

	* time/tzset.c: De-ANSI-declfy.
	(__tzset): Don't increment pointer tz when no DST information is
	given.

Sat Dec  7 23:47:54 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/mach/libc-lock.h [_LIBC]: Add definition of
	__libc_mutex_lock.
	Patch by Thomas Bushnell.

	* sysdeps/unix/sysv/linux/timebits.h: Load <asm/param.h> only
	if __USE_MISC.

	* sysdeps/unix/sysv/linux/Dist: Add llseek.c.

Sat Dec  7 12:18:56 1996  Ulrich Drepper  <drepper@cygnus.com>

	* time/strftime (%c format): Remove %Z from default string.
	Reported by Paul Eggert

	* io/getwd.c: Don't apply getcwd on user supplied buffer.
1996-12-08 08:01:13 +00:00
Richard Kenner 42054ddb49 (PENTIUM:CPunix:4.0*:*): New case. 1996-12-07 22:47:59 +00:00
Thomas Bushnell, BSG 8844bedd4c Regenerated: autoconf configure.in 1996-12-07 04:57:17 +00:00
Ulrich Drepper a18f587da5 update from main archive 961206
Sat Dec  7 03:24:36 1996  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Discard error message from test in test for
	bash-2.0.

	* io/getpw.c: Don't apply getcwd on user supplied buffer.
	Instead always use temporary buffer and only copy the result.
	Patch by HJ Lu.
	* stdlib/canonicalize.c: Likewise.

	* libio/fileops.c: Change comments according to libg++2.8b5.
	* libio/iosetvbuf.c: Follow change in libg++-2.8b5 to clear
	unbuffered flag.
	Reported by HJ Lu.

	* manual/nss.texi: Correct prototypes.

	* misc/syslog.c: Make reentrant.  Catch SIGPIPE signal to prevent
	crash if syslog daemon is restarted.

	* stdlib/rand_r.c: New file.  Implementation of POSIX.2 function
	rand_r.
	* stdlib/Makefile (routines): Add rand_r.

	* sysdeps/stub/libc-lock.h: Define __libc_lock_trylock and
	__libc_mutex_lock.

	* configure.in: Add --disable-sanity-check option.
	* sysdeps/unix/sysv/linux/configure.in: If linuxthreads or
	des-crypt are not available and --disbale-sanity-check is not
	given abort with a message.

Thu Dec  5 19:19:53 1996  Richard Henderson  <rth@tamu.edu>

	* posix/glob.c: Tests against STDC_HEADERS should also test
	__GNU_LIBRARY__.

Thu Dec  5 16:20:55 1996  Ulrich Drepper  <drepper@cygnus.com>

	* misc/err.c (vwarn): Set errno again before using %m format.

Thu Dec  5 10:14:05 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* grp/grp.h: Add declaration of __getgrent_r.

	* io/fts.c (fts_build): Remove "register" from variables dirbuf
	and dp since their address is needed.

	* sysdeps/posix/getcwd.c (__getcwd): Remove "register" from
	variable d since d's address is needed.

	* misc/tst-dirname.c (main): Provide prototype.
	* misc/ioctltst.c (main): Dito.

	* Makefile: Add gnu/lib-names.h to install-others before including
	Makerules.

Wed Dec  4 16:00:09 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sys/socketvar.h: New file.  Simply use
	<sys/socket.h>.
	* sysdeps/unix/sysv/linux/Dist: Add sys/socketvar.h.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=inet)]: Add
	sys/socketvar.h to sysdep_headers.

	since the value might be outside the range of the `long int'.
1996-12-07 03:30:25 +00:00
Ulrich Drepper 6b612c6709 Remove a.out.h.
* a.out.h: Removed.
1996-12-04 01:55:50 +00:00
Ulrich Drepper 4770745624 update from main archive 961203
Tue Dec  3 08:38:15 1996  Richard Henderson  <rth@tamu.edu>

	* sysdeps/unix/alpha/sysdep.S: Remove definition of __errno_location.
	Reformat copyright.

	* elf/rtld.c (_dl_start): Don't dereference the value returned by
	elf_machine_got to get _DYNAMIC, instead call new function
	elf_machine_dynamic.
	* sysdeps/alpha/dl-machine.h: Permute elf_machine_got to
	elf_machine_dynamic.  Reformat copyright.
	* sysdeps/i386/dl-machine.h: Likewise.
	* sysdeps/m68k/dl-machine.h: Likewise.
	* sysdeps/mips/dl-machine.h: Likewise.
	* sysdeps/sparc/dl-machine.h: Likewise.
	* sysdeps/stub/dl-machine.h: Likewise.

Tue Oct 15 23:46:00 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* MakeTAGS (sysdep_dirs): Include add-on sysdep directories.

Tue Dec  3 02:06:18 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makerules ($(libdir)/libc.so): Make first line of generated
	link script contain `/* GNU ld script'.  This will be used in
	ldconfig to check for linker scripts.
	* sysdeps/mach/hurd/libc-ldscript: Likewise.
	* sysdeps/mach/hurd/libc_p-ldscript: Likewise.

	* stdlib/getsubopt.c: Update copyright.  Correct typo in comment.
1996-12-04 01:41:39 +00:00
Ulrich Drepper d88554f033 Mon Dec 2 15:32:15 1996 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-lookup.c (_dl_lookup_symbol_skip): Remove unused variable
	`found_entry'.

	* misc/ttyslot.c: Use ttyname_r instead of ttyname.

	* assert/assert-perr.c: Use __strerror_r instead of strerror.
	* assert/assert.c: De-ANSIdecl-fy.  Update copyright.
	* string/string.h: Declare __strerror_r.
	* string/strerror_r.c: Make strerror_r a weak alias of __strerror_r.
	* stdio-common/vfprintf.c: Save current errno value on entry so
	that %m format finds the correct value.
	* io/getwd.c: Use __strerror_r instead of strerror.
	* misc/err.c (vwarn): Use %m printf format instead of explicitly
	calling strerror.
	* inet/rcmd.c: Likewise.
	* misc/error.c (error, error_at_line): Use __strerror_r instead
	of strerror when this function is available.

	* stdlib/rand.c: Update copyright and de-ANSI-declfy.
	* stdlib/random_r.c: Don't make srand_r weak alais of __srandom_r.
	* stdlib/stdlib.h: Define prototype for rand_r.

	* string/strfry.c: Update copyright.  Use reentrant random functions.

	* dirent/scandir.c: Use __readdir_r instead of readdir.
	* posix/glob.c: Likewise.
	* sysdeps/posix/ttyname.c: Likewise.
	* sysdeps/posix/ttyname_r.c: Likewise.
	* io/ftw.c: Likewise.
	* io/fts.c: Likewise.
	* sysdeps/posix/getcwd.c: Likewise.
	* dirent/dirent.h: Add prototype for __readdir_r.
	* sysdeps/unix/readdir_r: Update copyright.

	* time/ctime.c: Use __localtime_r and __asctime_r instead of
	non reentrant versions.
	* time/ctime_r.c: Update copyright.

	* intl/l10nflist.c (_nl_make_l10nflist): Pretty print.

	* locale/Makefile (localepath): Correct value.

	* nss/nss_files/files-XXX.c: Include <netdb.h> to define
	NETDB_INTERNAL.
	Fix typo in using H_ERRNO_SET macro.

Fri Nov 29 23:22:14 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makerules (elfobjdir): Definition removed.
	* Makeconfig (elfobjdir): Define it here instead, so that
	expanding $(rpath-link) gets the right value.

	* misc/a.out.h: Moved to...
	* sysdeps/generic/a.out.h: ...here.
	* sysdeps/unix/sysv/linux/a.out.h: New file.  Wrapper around
	kernel header.
1996-12-03 10:02:36 +00:00
Ulrich Drepper e4cf507069 update from main archive 961201
Mon Dec  2 03:59:38 1996  Ulrich Drepper  <drepper@cygnus.com>

	* grp/initgroups.c: Update and reformat copyright.
	Use __getgrent_r instead of getgrent.

	* inet/rcmd.c: Update and reformat copyright.
	Use __gethostbyname_r instead of gethostbyname.
	* inet/rexec.c: Likewise.

	* intl/finddomain.c: Correct comment about CEN sponsor and revision.
	* locale/findlocale.c: Likewise.
	* intl/l10nflist.c: Correct handling of CEN sponsor and revision.
	* locale/Makefile (CPPFLAGS): Add definition of LOCALEDIR.
	* locale/setlocale.c (setlocale): Correctly split value of
	LOCALE_PATH.
	* locale/programs/localedef.c: Use LOCALEDIR not LOCALE_PATH to
	find output directory.

	* nss/getXXbyYY.c [NEED_H_ERRNO]: Before enlarging buffer test
	h_errno_tmp variable.
	Save error value from being changed during `free' call.
	* nss/getXXent.c: Likewise.

	* nss/nss_files/files-XXX.c: Set h_errno variable to NETDB_INTERNAL
	before returning ERANGE error.

	* posix/glob.c: Use getlogin_r and getpwnam_r function when available
	or in GNU libc.

	* pwd/getpw.c: Use getpwuid_r instead of getpwuid.

	* sunrpc/clnt_gen.c: Use gethostbyname_r and getprotobyname_r.
	* sunrpc/clnt_simp.c: Likewise.
	* sunrpc/getrpcport.c: Likewise.
	* sysdeps/unix/sysv/linux/gethostid.c: Likewise.

	* posix/getconf.c: Treat _SC_UNIT_MAX and _SC_ULONG_MAX separately
	since the value might be outsode the range of the `long int'.
	Print string `undefined' when a value is undefined.

	* stdlib/l64a.c: Return correct pointer.
	Patch by NIIBE Yutaka <gniibe@mri.co.jp>.

	* string/Makefile (routines): Add argz-addsep.
	* string/argz-addsep.c: New file.
	* string/argz.h: Add prototypes for argz_add_sep.

	* string/argz-ctsep.c: Prevent memory leak.

	* string/strcoll.c: Correct typo in comment.

Sat Nov 30 02:53:59 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sys/serial.h: Removed again.  The file is
	not general enough to be part of the libc.
	* sysdeps/unix/sysv/linux/Dist: Remove sys/serial.h.
	* sysdeps/unix/sysv/linux/Makefile: Don't install sys/serial.h.

Thu Nov 28 20:04:41 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* login/Makefile: Fix typo.

	* nss/Makefile (generated): Filter out db-alias.c.

Thu Nov 28 14:44:01 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* time/Makefile (echo-zonenames): Don't depend on non-existing
	target `zonenames'.

Thu Nov 28 12:34:05 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* link.h: New file.
	* nss/nsswitch.c: Use it.

	* printf.h: Fix file name.
	* stdlib/strfmon.c: Use it.
1996-12-02 04:00:15 +00:00
Ulrich Drepper a401eea9eb update from main archive 961127
Thu Nov 28 23:03:32 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/netinet/in_systm.h: New file.
	* sysdeps/unix/sysv/linux/Dist: Add netinet/in_systm.h.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=inet] (sysdep_headers):
	Add netinet/in_systm.h.
	Reported by NIIBE Yutaka <gniibe@mri.co.jp>.

	* sysdeps/unix/sysv/linux/i386/brk.c: Reformat copyright.
1996-11-29 02:24:43 +00:00
Ulrich Drepper c66452515d update from main archive 961127
Thu Nov 28 03:11:11 1996  Ulrich Drepper  <drepper@cygnus.com>

	* libio/fileops.c: Update from latest libg++.

	* sysdeps/unix/sysv/linux/init-first.c: Reformat copyright.

	* sysdeps/stub/libc-lock.h: Add __libc_lock_init_recursive.
	* libio/genops.c (_IO_init): Use __libc_lock_init_recursive
	instead of __libc_lock_init for streams.
	Reported by a sun <asun@zoology.washington.edu>.

	* sysdepsunix/sysv/linux/i386/brk.c: Reformat copyright.

	* sysdeps/generic/errno-loc.c: New file.  Generic definition of
	__errno_location function.
	* sysdeps/unix/sysv/linux/i386/sysdep.S: Remove definition of
	__errno_location.
	* sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=csu]: Add errno-loc
	to sysdep-routines.

	* sysdeps/unix/sysv/linux/configure: Add test for linuxthreads
	and crypt add-on and warn if not available.

Wed Nov 27 23:09:37 1996  Ulrich Drepper  <drepper@cygnus.com>

	* po/ko.po: Update from Bang Jun-Young <bangjy@nownuri.nowcom.co.kr>.

	* sysdeps/unix/sysv/linux/syscalls.list: Remove _llseek.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=misc] (routines): Add
	llseek.
	* sysdeps/unix/sysv/linux/llseek.c: New file.  Uses syscall.
	* sysdeps/unix/sysv/linux/i386/syscalls.list: Add __sys_llseek.
	* sysdeps/unix/sysv/linux/m68k/syscalls.list: Add __sys_llseek.
	Reported by HJ Lu <hjl@gnu.ai.mit.edu>.
	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add llseek.
	* sysdeps/unix/sysv/linux/alpha/llseek.S: Remove.  Generic syscall
	is enough.
	Patch by Richard Henderson <rth@tamu.edu>.

	* sysdeps/unix/sysv/linux/alpha/sys/io.h: Add prototypes for
	pciconfig_read and pciconfig_write.
	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add new syscalls
	pciconfig_read and pciconfig_write.

	* login/getutent_r.c: Fix several bugs in last change.
1996-11-28 04:16:09 +00:00
Ulrich Drepper 8a52392237 update from main archive 961126
Wed Nov 27 06:10:10 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Makefile: Fix typo.

	* configure: Require autoconf-2.11.

	* elf/dl-deps.c: Terminate duplicate list.

	* libio/libio.h: Add prototypes for _IO_seekoff and _IO_seekpos.
	* libio/strfile.h: Update from current libg++.
	* libio/strops.c: Likewise.

	* login/Makefile (routines): Update after correction of reentrant
	interface.
	* login/endutent.c: Removed.
	* login/endutent_r.c: Likewise.
	* login/pututline.c: Likewise.
	* login/pututline_r.c: Likewise.
	* login/setutent.c: Likewise.
	* login/setutent_r.c: Likewise.
	* login/getutent.c: Update for new interface.
	* login/getutent_r.c: Likewise.
	* login/getutid.c: Likewise.
	* login/getutid_r.c: Likewise.
	* login/getutline.c: Likewise.
	* login/getutline_r.c: Likewise.
	* login/login.c: Likewise.
	* login/logout.c: Likewise.
	* login/logwtmp.c: Likewise.
	* login/utmp.h: Likewise.
	* sysdeps/unix/getlogin.c: Likewise.
	* sysdeps/unix/getlogin_r.c: Likewise.
	* login/utmp-private.h: New private header.
	* login/utmp_db.c: Stub DB backend for utmp handler.
	* login/utmp_file.c: File backend for utmp handler.
	* sysdeps/gnu/utmpbits.h (struct utmp): Add some more fields.
	(enum utlogin): List of record types.
	(struct exit_status): Record to align with other implementations.

	* sysdeps/generic/paths.h: Add _PATH_UTMP_DB.
	* sysdeps/unix/sysv/linux/paths.h: Likewise.

	* sysdeps/generic/pty.c: Use getgrnam_r instead of getgrnam.

	* sysdeps/stub/getlogin.c: Update copyright.
	* sysdeps/stub/getlogin_r.c: Likewise.

	* nss/getXXbyYY_r.c: Use -1l for error-pointer value instead of -1.
	* nss/getXXent_r.c: Likewise.
	* nss/nsswitch.c: Likewise.

	* posix/Makefile (headers): Add wait.h.
	* posix/wait.h: New file.

	* posix/sys/types.h: Always define intN_t types.

	* stdio-common/Makefile: Update copyright.
	Use -Wno-format flag for scanf4.c and scanf7.c.

	* stdlib/stdlib.h: Reformat.

	* time/africa: Update from ADO tzdata1996m.
	* time/antarctica: Likewise.
	* time/asia: Likewise.
	* time/australia: Likewise.
	* time/etcetera: Likewise.
	* time/europe: Likewise.
	* time/northamerica: Likewise.
	* time/southamerica: Likewise.
	* time/zone.tab: Likewise.

Fri Nov 22 19:34:12 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/posix/getcwd.c (__getcwd): After resizing the buffer
	move the current contents to the end and relocate file name
	pointer to upper half of the buffer.

Sun Nov 24 04:56:19 1996  Ulrich Drepper  <drepper@cygnus.com>

	* time/africa: Update from ADO tzdata1996m.
	* time/antarctica: Likewise.
	* time/asia: Likewise.
	* time/australia: Likewise.
	* time/etcetera: Likewise.
	* time/europe: Likewise.
	* time/nothamerica: Likewise.
	* time/southameria: Likewise.
	* time/zone.tab: Likewise.

	* sysdeps/unix/sysv/linux/sys/serial.h: New file.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=misc] (sysdep_headers):
	Add sys/serial.h.
	* sysdeps/unix/sysv/linux/Dist: Add sys/serial.h.

	* posix/wait.h: New file.
	* posix/Makefile (headers): Add wait.h.

Sat Nov 23 17:27:52 1996  Roland McGrath  <roland@gnu.ai.mit.edu>

	* Makeconfig ($(common-objpfx)soversions.mk): Use regular
	expression instead of shell pattern matching.
	* shlib-versions: Change to regular expressions.

Sat Nov 23 13:24:55 1996  Ulrich Drepper  <drepper@cygnus.com>

	* io/stat.c: Add section from libgcc to copyright comment
	to allow this file to be statically linked in applications.
	* io/fstat.c: Likewise.
	* io/lstat.c: Likewise.
	* io/mknod.c: Likewise.

Fri Nov 22 15:14:23 1996  Ulrich Drepper  <drepper@cygnus.com>

	* csu/initfini.c: Add section from libgcc to copyright comment
	to allow this file to be statically linked in applications.

	* malloc/obstack.h [!_LIBC && !HAVE_STRING_H]: Define memcpy if
	not already defined.
	(obstack_grow, obstack_grow0): Correct placement of braces.

	* gnu-versions.h (_GNU_OBSTACK_INTERFACE_VERSION): Define to 2.
	* malloc/obstack.c (OBSTACK_INTERFACE_VERSION): Define to 2.

Thu Nov 21 19:54:51 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makerules (make-link): Simplify by changing directory only if
	not using rellns-sh; check whether we really have symbolic links.

	* rellns-sh: Fix the case of $(dirname $2) being a prefix of
	$(dirname $1); use status of ln for exit code; make more robust
	against multiple slashes in a row.

Thu Nov 21 13:05:21 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* configure.in (after AC_CANONICAL_HOST): mutate *-*-gnu* names
	into *-*-gnu-gnu*.
	* shlib-versions (gnu versions): Recognize *-*-gnu-gnu* instead of
	the three-part name, to distinguish correctly from *-*-linux-gnu*.

	* sysdeps/mach/hurd/Makefile ($(libdir)/libc.so): Depend on
	$(rpcuserlibs).

	* sysdeps/mach/hurd/Makefile (install-others): Add
	$(libdir)/libc_p.a.
	($(libdir)/libc_p.a): New rule.
	* sysdeps/mach/hurd/libc_p-ldscript: New file.
	* sysdeps/mach/hurd/Dist: Add libc_p-ldscript.

Wed Nov 20 20:28:21 1996  Richard Henderson  <rth@tamu.edu>

	* Makerules (make-link): Use $(shell) to find rellns-sh before we cd.
	* time/Makefile: Likewise.

	* sysdeps/alpha/elf/Makefile: New file.  Build crtbegin.o & crtend.o.
	* sysdeps/alpha/elf/Dist: New file.
	* sysdeps/alpha/elf/crtbegin.S, sysdeps/alpha/elf/crtend.S: New files.
	The bits currently distributed with GCC fail in two ways -- they don't
	understand multiple .got subsections and the extents of the lists are
	dynamicly bound meaning that the application's lists get executed
	multiple times and the library's lists never get executed.

Wed Nov 20 00:42:45 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* stdlib/strtod.c: Fix previous change.

Wed Nov 20 22:07:58 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* time/Makefile ($(installed-localtime-file)): Use $(..) to find
	rellns-sh script.

Wed Nov 20 12:50:54 1996  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/Makefile: Add CFLAGS-scanf7.c to prevent warning.
	Likesie for scanf4.c
1996-11-27 06:13:15 +00:00
Thomas Bushnell, BSG 8f8619cbd2 Revert last change. 1996-11-21 22:20:09 +00:00
Thomas Bushnell, BSG 3747899aa6 Thu Nov 21 16:42:41 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* config.guess [UNAME_SYSTEM == GNU]: Use a four-part
	configuration name for gnu so it can be distinguished from
	foo-foo-linux-gnu with simple globbing patterns.
1996-11-21 21:43:48 +00:00
David MacKenzie 2c6d7e67cb cleanups 1996-11-20 21:28:45 +00:00
Ulrich Drepper 84384f5b6a update from main archive 961119
Wed Nov 20 02:04:11 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sigsuspend.c: Make sigsuspend a weak
	alias of __sigsuspend.

	* grp/grp.h: Correct comment about POSIX compliance.
	* pwd/pwd.h: Likewise.

	* login/utmp.h: Update copyright and pretty-print prototypes.
	* sysdeps/generic/paths.h: Add _PATH_LASTLOG, _PATH_UTMP and
	_PATH_WTMP from utmpbits.h.
	* sysdeps/unix/sysv/linux/paths.h: Likewise.
	* sysdeps/generic/utmpbits.h: Remove here.
	* sysdeps/gnu/utmpbits.h: Likewise.

	* misc/sys/uio.h: Place __BEGIN_DECLS correctly.
	Pretty-print prototypes.

	* sysdeps/unix/sysv/linux/sparc/clone.S: New file.  Taken from
	LinuxThreads-0.5.

Tue Nov 19 13:43:07 1996  Richard Henderson  <rth@tamu.edu>

	* inet/ether_hton.c: Include <string.h>.
	* inet/ether_ntoh.c: Likewise.
	* inet/rexec.c: Get errno, index, getpass, getlogin from headers.
	* misc/search.h: Fix hcreate_r argument type (unsigned -> size_t).

	* misc/sys/cdefs.h: Change __long_double_t definition from typedef
	to define.  Jim Nance reports problems building XEmacs otherwise.

	* resolv/gethnamaddr.c: Protect h_errno redefinition.
	* resolv/getnetnamadr.c: Likewise.
	* resolv/herror.c: Likewise.

	* sysdeps/generic/sigset.h (__SIGSETFN): Operator ## doesn't work
	with -traditional.  Reported by Eric Youngdale.  While we're at this,
	don't do error checking in the __ functions.  This is consistent
	with the sysv4 definitions and seems Right.
	* signal/signal.h: Don't __OPTIMIZE__ sigops to __ versions.  Add
	prototype for __sigsuspend.
	* sysdeps/posix/sigblock.c: Optimize sigmask <-> sigset_t conversions
	for sigset_t == unsigned long.  De-ansidecl-ify.  Reformat copyright.
	* sysdeps/posix/sigpause.c: Likewise.
	* sysdeps/posix/sigsetmask.c: Likewise.
	* sysdeps/posix/sigvec.c: Likewise.
	* sysdeps/posix/sigintr.c: Reformat copyright.
	* sysdeps/posix/signal.c: Check signal number out of range since
	__sigismember doesn't anymore.  Reformat copyright.
	* sysdeps/posix/sigwait.c: Use __ versions of sigfillset, sigismember,
	sigdelset, sigaction, and sigsuspend.

	* stdlib/drand48-iter.c (__drand48_iterate): Cast state fragments
	to the wider type before shifting.

	* sysdeps/alpha/bsd-_setjmp.S: Silence assembler warning "$at used
	without .set noat" in profiling hook.
	* sysdeps/alpha/bsd-setjmp.S: Likewise.
	* sysdeps/alpha/htonl.S: Likewise.
	* sysdeps/alpha/htons.S: Likewise.
	* sysdeps/alpha/s_copysign.S: Likewise.
	* sysdeps/alpha/setjmp.S: Likewise.
	* sysdeps/alpha/stpcpy.S: Likewise.
	* sysdeps/alpha/strcat.S: Likewise.
	* sysdeps/alpha/strcpy.S: Likewise.
	* sysdeps/alpha/strncat.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/brk.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/llseek.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise.  Rename
	function to __sigsuspend and add weak alias.
	* sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise.  Add missing END.

	* sysdeps/alpha/w_sqrt.S: Define _ERRNO_H so <errnos.h> defines EDOM.

	* sysdeps/unix/execve.S: Match PSEUDO_END symbol with the symbol
	SYSCALL__ actually generated.

	* sysdeps/unix/sysv/linux/errnos.h [_LIBC_REENTRANT]: Reflexively
	#define __set_errno, as several imported subsystems (eg. BIND) check
	that the symbol is defined.

	* sysdeps/unix/sysv/linux/getsysstats.c: Include <alloca.h>.

	* sysdeps/alpha/memcpy.S: Temporarily remove until I can find a bug
	that manifests in GCC.

Tue Nov 19 11:10:05 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/posix/writev.c (writev): COUNT parm is now int.
	* sysdeps/posix/readv.c (readv): Likewise.

Tue Nov 19 15:28:29 1996  Ulrich Drepper  <drepper@cygnus.com>

	* nss/nss_dns/dns-network.c: Change return type of all functions
	to enum nss_status.
	Reported by NIIBE Yutaka.
	* nss/nss_dns/dns-host.c: Update copyright.

Fri Nov 15 20:16:38 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config.make.in: Remove definition of top_absdir.
	* configure.in: Likewise. Use $(..) instead.
	* Makerules (make-link): Use $(..) to find rellns-sh script.

Sat Nov 16 15:52:29 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/nss.texi (Name Service Switch): Fix reference to
	`frobnicate'.

Fri Nov 15 22:08:33 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
	sys/mtio.h.

Mon Nov 18 05:51:13 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/waitstatus.h (__WIFSIGNALED): Rename local
	variable from __stat to __status to prevent shadowing.
	* sunrpc/rpc/clnt.h (clntudp_create, clntudp_bufcreate): Likewise
	for parameter __wait.
	Reported by NIIBE Yutaka.

Mon Nov 18 02:05:38 1996  Ulrich Drepper  <drepper@cygnus.com>

	* misc/regexp.c: New file.  Implementation of obsolete interface
	to regular expression matcher (required in XPG4.2).
	* misc/regexp.h: New file.  Header for above.
	* misc/Makefile (headers): Add regexp.h.
	(routines): Add regexp.c.
	Update copyright.

Sun Nov 17 21:50:24 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* stdlib/tst-strtod.c (main): Add arguments for main.
	* stdlib/tst-strtol.c (main): Likewise.

Sun Nov 17 21:15:05 1996  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Substitute libc_cv_slibdir and libc_cv_sysconfdir
	in output files.
	* sysdepes/unix/sysv/linux/configure: Define libc_cv_slibdir to /lib
	and sysconfdir to /etc if $prefix is /usr.
	* config.make.in: Add slibdir, sysconfdir and BASH to be replaced.

	* elf/Makefile ($(objpfx)ldd): Install ldd.bash.in if
	$(have-bash2) is yes.
	* elf/ldd.bash.in: Add copyright and various cleanups.
	* elf/ldd.sh.in: Likewise.

	Implement RTLD_NEXT.
	* elf/dlfcn.h: Define RTLD_NEXT.
	* elf/dl-deps.c: Build second searchlist which contains duplicates.
	* elf/dl-lookup.c (_dl_lookup_symbol_skip): New function.  Used
	for RTLD_NEXT lookup.
	Rewrite _dl_lookup_symbol to put common parts for both lookup
	functions in a separate function.
	* elf/dlsym.c: Handle RTLD_NEXT by calling _dl_lookup_symbol_skip.
	* elf/link.h (struct link_map): Add l_dupsearchlist and
	l_ndupsearchlist.
	Add prototype for _dl_lookup_symbol_skip.

	* sunrpc/Makefile (rpcsvc): Add rusers.
	* sunrpc/rpcsvc/rnusers.x: Remove.  Obsolteted by rusers.x.
	* sunrpc/rpcsvc/rusers.x: New file.

Sun Nov 17 04:24:35 1996  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/vfprintf.c [USE_IN_LIBIO] (buffered_vfprintf): Call
	__libc_lock_init for local lock.
	Reported by a sun <asun@zoology.washington.edu>.
	[!USE_IN_LIBIO] (PAD): Optimize a bit.
1996-11-20 03:45:51 +00:00
Karl Berry c44db1b198 (\deftypevarheader, \deftypevrheader): Remove
* texinfo.tex (\deftypevarheader, \deftypevrheader): Remove         anything after the first space in the name to be indexed, for the 
sake of tzname[2]. 
(\dovarind): New macro. 
From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
1996-11-19 21:11:43 +00:00
Ulrich Drepper afd4eb3759 update from main archive 961116
Sun Nov 17 03:13:57 1996  Ulrich Drepper  <drepper@cygnus.com>

	* db/makedb.c: Update and reformat copyright.
	* elf/Makefile: Likewise.
	* elf/dl-close.c: Likewise.
	* elf/dl-debug.c: Likewise.
	* elf/dl-deps.c: Likewise.
	* elf/dl-error.c: Likewise.
	* elf/dl-fini.c: Likewise.
	* elf/dl-init.c: Likewise.
	* elf/dl-load.c: Likewise.
	* elf/dl-lookup.c: Likewise.
	* elf/dl-minimal.c: Likewise.
	* elf/dl-object.c: Likewise.
	* elf/dl-open.c: Likewise.
	* elf/dl-reloc.c: Likewise.
	* elf/dl-runtime.c: Likewise.
	* elf/dl-support.c: Likewise.
	* elf/dl-symbol.c: Likewise.
	* elf/dladdr.c: Likewise.
	* elf/dlclose.c: Likewise.
	* elf/dlerror.c: Likewise.
	* elf/dlopen.c: Likewise.
	* elf/dlsym.c: Likewise.
	* elf/do-rel.h: Likewise.
	* elf/dynamic-link.h: Likewise.
	* elf/eval.c: Likewise.
	* elf/rtld.c: Likewise.
	* inet/ether_hton.c: Likewise.
	* inet/ether_ntoh.c: Likewise.
	* inet/ether_line.c: Likewise.
	* inet/getnetgrent_r.c: Likewise.

	* inet/Makefile (+gccwarn): Remove definition.
	Instead set CFLAGS-rcmd.c, CFLAGS-rexec.c, and CFLAGS-ruserpass.c
	to `-w'.
	* inet/aliases.h: Add C++ protection.
	* inet/ether_hton.c: Add prototype for __nss_ethers_lookup.
	(ether_hostton): Remove unused variable result.
	* inet/ether_ntoh.c: Likewise.
	* inet/ether_line.c: Include <ctype.h> and <string.h>.
	* inet/getnetgrent_r.c: Include <stdlib.h>.
	Use casts to prevent warnings.
	(innetgr): Initialize `known' and `needed'.
	* inet/inet_net.c: Make local variable `i' of type u_int32_t.
	* nss/getXXbyYY_r.c (INTERNAL (REENTRANT_NAME)) [NEED__RES]: Don't
	return NULL.  Instead set *RESULT to NULL and return -1.
	* nss/getXXent_r.c (INTERNAL (REENTRANT_GETNAME)): Likewise.
	(SETFUNC_NAME, ENDFUNC_NAME) [NEED__RES]: Don't return anything.

	* nss/nss_files/files-alias.c: Debug function.  I didn't worked at
	all before.

Sat Nov 16 15:25:34 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/posix/readv.c: Don't use PTR anymore.
	* sysdeps/posix/writev.c: Likewise.

	* version.h (VERSION): Bump to 1.98.

	* nss/db-Makefile: Generate lines for getXXXent iteration.

	* sysdeps/alpha/Dist: Don't distribute removed files divlu.S,
	divqu.S, remlu.S, and remqu.S.

Fri Nov 15 08:55:54 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* posix/unistd.h: Correct typo in documentation.

Thu Nov 14 18:08:14 1996  a sun  <asun@zoology.washington.edu>

	* inet/netinet/tcp.h: Use __ protected versions instead of
	BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN directly.

Sat Nov 16 13:44:55 1996  Ulrich Drepper  <drepper@cygnus.com>

	* intl/loadmsgcat.c (_nl_msg_cat_cntr): Initialize so that
	references in libc.so are not anymore undefined.

Sat Nov 16 18:17:36 1996  NIIBE Yutaka  <gniibe@mri.co.jp>

	* io/utime.h: Rename second parameter for utime to prevent warning
	for -Wshadow.
	* dirent/dirent.h: Same here for scandir prototype.
	* math/mathcalls.h: Likewise for frexp and ldexp.
	* sysdeps/unix/sysv/linux/netinet/in.h: Likewise for bindresvport.

Sat Nov 16 03:49:27 1996  Ulrich Drepper  <drepper@cygnus.com>

	* stdlib/tst-strtod.c: Add test for error case below.

Sat Nov 16 03:48:39 1996  Wolfram Gloger  <Wolfram.Gloger@dent.med.uni-muenchen.de>

	* stdlib/strtod.c: Recognize numbers like 0e-19.

Fri Nov 15 08:38:43 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* time/Makefile ($(installed-localtime-file)): Fix path to
	rellns-sh.

	* Makefile: Don't generate and install gnu/lib-names.h if
	$(build-shared) is not `yes'.

Thu Nov 14 09:23:58 1996  H.J. Lu (hjl@gnu.ai.mit.edu)

	* sysdeps/posix/Makefile ($(common-objpfx)mk-stdiolim): Depend
	on $(..)posix/posix1_lim.h, not ../posix/posix1_lim.h.

	* Makerules (REAL_MAKE_VERSION): New, use it instead of
	MAKE_VERSION.

Thu Nov 14 22:10:43 1996  Ulrich Drepper  <drepper@cygnus.com>

	* nss/nss_files/files-XXX.x (_nss_files_get,ENTNAME_r): Fix typo.
	* nss/getXXent_r.c: Fix typo.  Set correct return value when
	no further service is available.

Thu Nov 14 17:48:13 1996  Ulrich Drepper  <drepper@cygnus.com>

	* db/recno/rec_put.c: Add cast to avoid warning.
	* db/recno/rec_close.c: Likewise.
	* db/mpool/mpool.c: Likewise.
	* db/hash/hash_bigkey.h: Likewise.
	* db/hash/hash.c: Likewise.
	* db/btree/bt_split.c: Likewise.
	* db/btree/bt_put.c: Likewise.

Thu Nov 14 14:11:44 1996  Ulrich Drepper  <drepper@cygnus.com>

	* dirent/dirent.h: Update copyright.
	* elf/elf.h: Likewise.
	* elf/link.h: Likewise.
	* gmon/sys/gmon_out.h: Likewise.
	* gnu-versions.h: Likewise.
	* intl/libintl.h: Likewise.
	* io/fcntl.h: Likewise.
	* io/ftw.h: Likewise.
	* io/sys/statfs.h: Likewise.
	* io/utime.h: Likewise.
	* locale/langinfo.h: Likewise.
	* malloc/malloc.h: Likewise.
	* malloc/obstack.h: Likewise.
	* misc/ar.h: Likewise.
	* misc/error.h: Likewise.
	* misc/mntent.h: Likewise.
	* misc/sgtty.h: Likewise.
	* misc/sys/cdefs.h: Likewise.
	* misc/sys/dir.h: Likewise.
	* misc/sys/file.h: Likewise.
	* misc/sys/ioctl.h: Likewise.
	* misc/sys/ustat.h: Likewise.
	* posix/fnmatch.h: Likewise.
	* posix/getopt.h: Likewise.
	* posix/glob.h: Likewise.
	* posix/posix2_lim.h: Likewise.
	* posix/regex.h: Likewise.
	* posix/sys/times.h: Likewise.
	* posix/sys/types.h: Likewise.
	* posix/sys/utsname.h: Likewise.
	* posix/tar.h: Likewise.
	* posix/wordexp.h: Likewise.
	* resource/sys/resource.h: Likewise.
	* resource/sys/vlimit.h: Likewise.
	* resource/sys/vtimes.h: Likewise.
	* socket/sys/socket.h: Likewise.
	* socket/sys/un.h: Likewise.
	* stdio-common/printf.h: Likewise.
	* stdlib/alloca.h: Likewise.
	* string/argz.h: Likewise.
	* string/endian.h: Likewise.
	* string/envz.h: Likewise.
	* string/memory.h: Likewise.
	* string/strings.h: Likewise.
	* sysdeps/generic/crypt.h: Likewise.
	* sysdeps/generic/direntry.h: Likewise.
	* sysdeps/generic/gnu/types.h: Likewise.
	* sysdeps/generic/ioctl-types.h: Likewise.
	* sysdeps/generic/netinet/in.h: Likewise.
	* sysdeps/generic/resourcebits.h: Likewise.
	* sysdeps/generic/sigset.h: Likewise.
	* sysdeps/generic/sockaddrcom.h: Likewise.
	* sysdeps/generic/sys/mman.h: Likewise.
	* sysdeps/generic/sys/ptrace.h: Likewise.
	* sysdeps/generic/termbits.h: Likewise.
	* sysdeps/generic/waitstatus.h: Likewise.
	* sysdeps/ieee754/huge_val.h: Likewise.
	* sysdeps/ieee754/nan.h: Likewise.
	* sysdeps/mach/hurd/local_lim.h: Likewise.
	* sysdeps/mach/hurd/statbuf.h: Likewise.
	* sysdeps/stub/huge_val.h: Likewise.
	* sysdeps/stub/libc-lock.h: Likewise.
	* sysdeps/stub/signum.h: Likewise.
	* sysdeps/stub/statbuf.h: Likewise.
	* sysdeps/stub/waitflags.h: Likewise.
	* sysdeps/unix/bsd/bsd4.4/sockaddrcom.h: Likewise.
	* sysdeps/unix/bsd/osf/alpha/statbuf.h: Likewise.
	* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/signum.h: Likewise.
	* sysdeps/unix/bsd/statbuf.h: Likewise.
	* sysdeps/unix/bsd/sun/signum.h: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/resourcebits.h: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/termbits.h: Likewise.
	* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/waitflags.h: Likewise.
	* sysdeps/unix/sysv/irix4/signum.h: Likewise.
	* sysdeps/unix/sysv/irix4/statbuf.h: Likewise.
	* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/statbuf.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sys/io.h: Likewise.
	* sysdeps/unix/sysv/linux/direntry.h: Likewise.
	* sysdeps/unix/sysv/linux/gnu/types.h: Likewise.
	* sysdeps/unix/sysv/linux/ioctl-types.h: Likewise.
	* sysdeps/unix/sysv/linux/local_lim.h: Likewise.
	* sysdeps/unix/sysv/linux/netinet/in.h: Likewise.
	* sysdeps/unix/sysv/linux/resourcebits.h: Likewise.
	* sysdeps/unix/sysv/linux/signum.h: Likewise.
	* sysdeps/unix/sysv/linux/statbuf.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/io.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/klog.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/ptrace.h: Likewise.
	* sysdeps/unix/sysv/linux/syscall.h: Likewise.
	* sysdeps/unix/sysv/linux/termbits.h: Likewise.
	* sysdeps/unix/sysv/local_lim.h: Likewise.
	* sysdeps/unix/sysv/sco3.2.4/syscall.h: Likewise.
	* sysdeps/unix/sysv/sco3.2/local_lim.h: Likewise.
	* sysdeps/unix/sysv/signum.h: Likewise.
	* sysdeps/unix/sysv/sysv4/i386/statbuf.h: Likewise.
	* sysdeps/unix/sysv/sysv4/signum.h: Likewise.
	* sysdeps/unix/sysv/sysv4/sigset.h: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/signum.h: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/statbuf.h: Likewise.
	* sysdeps/unix/sysv/sysv4/waitflags.h: Likewise.
	* sysdeps/vax/huge_val.h: Likewise.
	* values.h: Likewise.

Thu Nov 14 04:22:41 1996  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/obstack.h: Use memcpy instead of bcopy and define a macro
	`memcpy' using bcopy if memcpy is not available.

	* manual/stdio.texi: Correct description of printf customization.
	The argument info function is not optional anymore and the
	interface for `printf_function' also changed.
	* manual/examples/rprintf.c: Define and use argument info function.

	* stdio-common/printf.h (struct printf_info): Change type for field
	`pad' to wchar_t.
	Correct comment for `register_printf_function'.

	* nss/getXXbyYY.c [NEED_H_ERRNO]: Don't pass pointer to h_errno
	to reentrant function.  Instead use temporary variable and set
	h_errno if an error occured.
	Reported by NIIBE Yutaka.

	are no bits set in the masks.  Reported by baldazzi@csr.unibo.it.
1996-11-17 03:15:52 +00:00
Karl Berry 3a3df4c78a \indexbreaks, \realunder, \multitable, \footnotezzz. 1996-11-17 00:12:46 +00:00
Karl Berry df9ceed92b (\parsetpheaderline): Don't go through \tptemp when
removing braces from #2, use the macro call directly. 
(\removeemptybraces): Expand to #1 instead of defining \tptemp. 
From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. 
This makes @deftp {Data type} {struct termios} work again.
1996-11-16 00:19:07 +00:00
Thomas Bushnell, BSG ebe3b3ebb7 Fri Nov 15 12:27:25 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/posix/readv.c (readv): Change return type to ssize_t.
  	Deansideclized.
	* sysdeps/posix/writev.c (writev): Likewise.
1996-11-15 19:50:04 +00:00
Thomas Bushnell, BSG 63afd6ae40 *** empty log message ***
Fri Nov 15 12:27:25 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/mach/hurd/statbuf.h (S_IPTRANS, S_IATRANS, S_IROOT,
	S_ITRANS): New macros.
	(S_ISPARE): Update to include new macros and S_IUSEUNK.

	* sysdeps/mach/hurd/select.c (__select): Construct arg to
	mach_msg_destroy more nicely.

	* sysdeps/mach/hurd/ioctl.c: Include <mach/mig-support.h>.

	* stdio/fopen.c (__getmode): Declare with prototype.
	* stdio/memstream.c (enlarge_buffer, seek, free_info): Likewise.
	* stdio/internals.c (__stdio_check_funcs, init_stream,
	seek_to_target, flushbuf, fillbuf): Likewise.

	* stdio-common/vfscanf.c (encode_error) [! USE_IN_LIBIO]: Call
	funlockfile, not _IO_funlockfile.

	* sysdeps/posix/readv.c (readv): Change return type to ssize_t.
  	Deansideclized.
	* sysdeps/posix/writev.c (writev): Likewise.

	* sysdeps/mach/hurd/lchown.c: Include <fcntl.h> and fix typo.

Thu Nov 14 12:53:16 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/mach/hurd/i386/init-first.c (_dl_start): Make this a
	prototyped definition.

	* sysdeps/mach/hurd/select.c (__select): Deal properly when there
	are no bits set in the masks.  Reported by baldazzi@csr.unibo.it. 

Tue Nov 12 16:58:41 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* mach/mach.h (__mach_msg_destroy, mach_msg_destroy, __mach_msg):
 	Provide prototypes.

	* mach/msg-destroy.c (mach_msg_destroy_port,
	mach_msg_destroy_memory): Use prototype	syntax.
	* hurd/hurdmalloc.c (more_memory, malloc_fork_prepare,
	malloc_fork_parent, malloc_fork_child): Likewise. 

	* stdio/stdio.h: Repair broken cpp syntax.

	* sysdeps/mach/hurd/lchown.c: New file.  Guts from chown.c, except
	we pass O_NOLINK on the open.

	* manual/errno.texi (EBADMSG, EIDRM, EMULTIHOP, ENODATA, ENOLINK,
 	ENOMSG, ENOSR, ENOSTR, EOVERFLOW, EPROTO, ETIME): Redesignate as
 	an XOPEN error code, move to before the "Linux only" section, and
 	give it a new number for the Hurd.

	* sysdeps/generic/sysdep.h: Define END only if not yet defined.
	* sysdeps/unix/sysdep.h: Define PSEUDO_END only if not yet defined.
1996-11-15 19:43:19 +00:00
Ulrich Drepper 54d79e995d update from main archive 961114 1996-11-15 04:08:00 +00:00
Per Bothner b296c23344 Bunch of updates. See ChangeLog. 1996-11-14 02:06:05 +00:00
Ulrich Drepper 26761c287f update from main archive 961113
Thu Nov 14 02:00:33 1996  Ulrich Drepper  <drepper@cygnus.com>

	* inet/Makefile (headers): Add aliases.h.
	(routines): Add getaliasent_r, getaliasent, getaliasname, and
	getaliasname_r.
	* aliases.h: New file.
	* inet/aliases.h: New file.
	* inet/getaliasent.c: New file.
	* inet/getaliasent_r.c: New file.
	* inet/getaliasname.c: New file.
	* inet/getaliasname_r.c: New file.
	* nss/Makefile (databases): Add alias.
	* nss/alias-lookup.c: New file.
	* nss/databases.def: Add aliases and publickey.
	* nss/nss_db/db-alias.c: New file.
	* nss/nss_files/files-alias.c: New file.

	* inet/getnetgrent_r.c (__internal_getnetgrent): Buffer length
	argument to lookup function is of type size_t.
	(innetgr): Likewise.
	* nss/getXXbyYY_r.c: Likewise.
	* nss/getXXent_r.c: Likewise.
	* nss/nss_db/db-XXX.c: Likewise.

	* nss/getXXbyYY.c: Don't provide static buffer.  Resize if call
	failed because buffer was too small.
	* nss/getXXent.c: Likewise.

	* nss/nss_files/files-XXX.c: Correct handling of shared file.  The
	getXXent_r function now uses f[gs]etpos to get to the correct
	position.

	* nss/nss_files/files-parse.c: Indent lines for better readability.

	* malloc/obstack.c: Add new variable obstack_alloc_failed_handler
	and new function print_and_abort.  Remove all references to
	alloc_failed field.
	Add new function _obstack_memory_used.
	* malloc/obstack.h (struct obstack): Remove field alloc_field.
	Remove all references to alloc_failed field.
	Add prototype for _obstack_memory_used.

	* posix/unistd.h: Correct typo.

Wed Nov 13 03:09:16 1996  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Require at least autoconf-2.10.2.

Tue Nov 12 03:35:01 1996  Christian von Roques  <roques@pond.sub.org>

	* malloc/obstack.h: Add new macro `obstack_make_room'.
	* malloc/obstack.c: Add function implementation for
	`obstack_make_room'.

Mon Nov 11 13:54:04 1996  Ulrich Drepper  <drepper@cygnus.com>

	Update to BIND-4.9.5-REL.
	* resolv/Banner: Set to 4.9.5-REL.
	* resolv/inet_net_pton.c: Was doing bad things to subnets and b'casts.
	* resolv/res_debug.c (__fp_nquery): Could read past end of buffer.
	(fix from BIND 8.1)

	* config.make.in: Add definition for top_absdir.
	* Makerules (make-link): Fix path to rellns-sh script.

Sat Nov  9 02:15:24 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* posix/unistd.h: Fix comment.

	* manual/arith.texi: Fix misspellings.  Use `zero', not `null',
	when talking about numbers.
	* manual/users.texi: Likewise.
	* manual/creature.texi: Likewise.  Use @defvarx for a secondary
	description header.

Sat Nov  9 19:25:11 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/posix/Makefile ($(common-objpfx)mk-stdiolim): Depend on
	the real posix1_lim.h file so that it works in all subdirs, not
	only in posix.

Sat Nov  9 02:08:34 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile ($(includedir)/gnu/lib-names.h): Quote arguments of tr.

Sat Nov  9 02:06:17 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/Makefile ($(common-objpfx)s-proto.d): Don't depend
	on $(before-compile) which hasn't been properly setup yet at this
	point.

Sat Nov  9 02:02:48 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/generic/sigset.h: Don't use implicit int which will
	probably require a diagnostic in the next revision of the C
	standard.
	* sysdeps/stub/lockfile.c: Likewise.

Sat Nov  9 01:57:17 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/m68k/syscall.S: Correct last change.
	* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.

Mon Nov 11 02:53:14 1996  Ulrich Drepper  <drepper@cygnus.com>

	* time/strftime.c: Update copyright.  Small cosmetic changes.

	char *' and `int'.
	PROJ_ID are used.
1996-11-14 02:04:07 +00:00
Thomas Bushnell, BSG b8591d1bdf Regenerated from sysdeps/mach/hurd/errnos.awk manual/errno.texi /home/hi2/build/i486-gnu/libc/config.h libintl.h intl/libintl.h features.h sys/cdefs.h misc/sys/cdefs.h /usr/lib/gcc-lib/i486-gnu-miles/2.7.2/include/stddef.h locale.h locale/locale.h /gd4/gnu/miles/i486-gnu/install/include/mach/message.h /gd4/gnu/miles/i486-gnu/install/include/mach/kern_return.h /gd4/gnu/miles/i486-gnu/install/include/mach/machine/kern_return.h /gd4/gnu/miles/i486-gnu/install/include/mach/port.h /gd4/gnu/miles/i486-gnu/install/include/mach/boolean.h /gd4/gnu/miles/i486-gnu/install/include/mach/machine/boolean.h /gd4/gnu/miles/i486-gnu/install/include/mach/machine/vm_types.h /gd4/gnu/miles/i486-gnu/install/include/mach/mig_errors.h /gd4/gnu/miles/i486-gnu/install/include/device/device_types.h /gd4/gnu/miles/i486-gnu/install/include/mach/std_types.h 1996-11-12 22:22:42 +00:00
David MacKenzie 412b5b499a cosmetic tweaks 1996-11-12 18:52:10 +00:00
David MacKenzie f155a595f0 more bug fixes 1996-11-12 04:49:23 +00:00
Ulrich Drepper d4a089cf19 update from main archive 961110
Sun Nov 10 23:28:16 1996  Ulrich Drepper  <drepper@cygnus.com>

	* inet/getprtname_r.c: Reformat copyright.

	* nss/Makefile (databases): Add key.
	(libnss_files-routines): Exclude key database.
	(libnss_db-routines): Likewise.
	* nss/key-lookup.c: New file.

	* nss/getXXent_r.c (last_nip): Remember last service used since
	last setXXent call.
	(SETFUNC): Don't force to work through whole list of services in
	call to __nss_next.
	Update last_nip if necessary.
	(ENDFUNC): Only process endXXent function up to currently used
	last service.
	(GETFUNC): Update last_nip if necessary.

	* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
	make static.

	* rpc/auth_des.h: New file.
	* sunrpc/Makefile (headers): Add auth_des.h.
	(routines): Add publickey.
	* sunrpc/publickey.c: New file.  Interface to public key handling.
	* sunrpc/rpc/auth_des.h: New file.
	* sunrpc/rpc/netdb.h: Really include <rpc/auth_des.h>.
1996-11-11 00:59:33 +00:00
Ulrich Drepper 2303f5fdd9 update from main archive 961109
Sun Nov 10 02:37:15 1996  Ulrich Drepper  <drepper@cygnus.com>

	* inet/gethstent_r.c: Update copyright.
	* nss/getXXbyYY_r.c: Likewise.
	* nss/nsswitch.c: Likewise.
	* nss/getXXent_r.c: Likewise.
	* nss/nss_files/files-XXX.c: Likewise.
	* nss/nss_files/files-netgroup.c: Likewise.
	* nss/nss_files/files-parse.c: Likewise.

	* nss/getXXent_r.c: Change implementation.  It's not necessary to
	call all setXXent functions.  Just find first available and
	when necessary let getXXent_r call the others.

	* nss/nss_files/files-XXX.c: Make really reentrant.  Now calls
	of getXXent and getXXbyYY can be mixed.  The cursor for traversing
	the database with getXXent will be remembered.

	* stdlib/test-canon.c (cwd): Change size to PATH_MAX.

Sat Nov  9 15:34:48 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/Dist: Add sys/mtio.h.
	* sysdeps/unix/sysv/linux/sys/mtio.h: New file.

	* signal/signal.h [__USE_BSD]: Add prototype for siggetmask.

Fri Nov  8 13:29:30 1996  Ulrich Drepper  <drepper@cygnus.com>

	* ctype/ctype.h (__isascii): Don't test for seventh bit not to be
	set.  Instead for none beside the first seven bits to be set.
	X/Open allows the argument to be an `int' value.
	Reported by Alain Williams <addw@phcomp.co.uk>.
	(toascii, isascii): Define macro also when __USE_XOPEN.

	* sysdeps/posix/fpathconf.c: Use fstatfs to compute NAME_MAX, not
	PATH_MAX.

Thu Nov  7 03:04:29 1996  Ulrich Drepper  <drepper@cygnus.com>

	* nss/getXXXent_r.c (SETFUNC_NAME): Reset `nip' after loop to
	NULL so that GETFUNC will see first entry.
	(ENDFUNC_NAME): Likewise.

	Rewrite Netgroups implementation to avoid global data.
	* inet/netgroup.h: Add definition of name_list and struct
	__netgrent.
	Add prototypes for internal netgroup functions.
	* nss/nss_files/files-netgroup.c (_nss_files_setnetgrent): Take
	extra argument and use the included data instead of global vars.
	(_nss_files_endnetgrent): Likewise.
	(_nss_netgroup_parseline): Change to be static and use data
	included in the RESULT structure.
	* inet/getnetgrent_r.c (startp): Move into setup function.
	(known_groups, needed_groups): new part of the __netgrent sruct.
	(freememory): Take extra argument and use included data.
	(__internal_endnetgrent): Likewise.
	(internal_setnetgrent): Renamed to __internal_setnetgrent_reuse
	and take extra argument.
	(__internal_setnetgrent): New function.  Call
	__internal_setnetgrent_reuse after calling free_memory.
	(setnetgrent): Only call __internal_setnetgrent.
	(__getnetgrent_r): Split into two functions.  __getnetgrent_r
	calls __internal_getnetgrent after locking.
	(innetgr): Use dynamic data only.  I.e., innetgr now is fully
	reentrant.

Thu Nov  7 00:15:14 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/stub/setenv.c: Correct typo: unseenv -> unsetenv.
	Reported by Joshua Cowan <jcowan@jcowan.reslife.okstate.edu>.

Wed Nov  6 13:13:37 1996  Ulrich Drepper  <drepper@cygnus.com>

	* manual/creature.texi: Document that _GNU_SOURCE is no longer the
	default when no *_SOURCE macro is given.
	Reported by Karsten Weiss <karsten@addx.au.s.shuttle.de>.
	* NOTES: remade from manual/creature.texi.
	* manual/libc.texinfo: Add back line about GPL translation which
	somehow got lost.

	* Make-dist (dist.tar): Depend on README being updated.

	* rellns-sh: Correct thinko in removing leading /.
	Reported by Andreas Jaeger <aj@arthur.pfalz.de>.

	* pwd/fgetpwent_r.c: Recognize lines containing only names starting
	with `+' or `-' in parser.
	* grp/fgetgrent_r.c: Likewise.
	* shadow/sgetspent_r.c: Likewise.
	* nss/nss_files/files-spwd.c: Don't accept entries starting with
	`+' or `-'.

	* sysdeps/stub/lchown.c: New file.
1996-11-10 02:21:51 +00:00
Karl Berry fe92af1832 (\set, \value): Allow - and _ in @set variable names. 1996-11-09 23:37:11 +00:00
Karl Berry 4dbca03b64 (\readauxfile): Leave \catcode`\^ as other;
* texinfo.tex (\readauxfile): Leave \catcode`\^ as other;  
otherwise, node names containing ^, such as in info/info.texi,  
cause an error when run through TeX. 
(\setq): Do not call \auxhat. 
(\auxhat): Definition no longer needed. 
Reported by Howard Gayle <howard@hal.com>.
1996-11-09 18:44:09 +00:00
David MacKenzie d780e42f3c patches from bug-gnu-utils to support more architectures 1996-11-08 07:35:31 +00:00
Ulrich Drepper b57910379e update from 961105, second try 1996-11-07 01:35:04 +00:00
Ulrich Drepper 2c6fe0bd3b update from main archive 961105
Wed Nov  6 04:30:26 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/syscalls.list: Add weak alias llseek for
	_llseek syscall.  Reported by Andy Sewell <puck@pookhill.demon.co.uk>.

	* string/argz.h: Don't protect by __USE_GNU.

Tue Nov  5 23:38:28 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Lots of files: Update and reformat copyright.

	* Makefile (headers): Add xopen_lim.h.

	* catgets/nl_types.h: Move __BEGIN_DECLS before definition of nl_catd.

	* grp/grp.h: Define setgrent, getgrent, endgrent, and getgrent_r
	if __USE_XOPEN_EXTENDED is defined.
	* pwd/pwd.h: Define setpwent, getpwent, endpwent, and getpwent_r
	if __USE_XOPEN_EXTENDED is defined.

	* io/Makefile (routines): Add lchown.

	* io/sys/poll.h: Add definition of POLLWRNORM.

	* io/sys/stat.h: Declare lstat, fchmod, mknod when
	__USE_XOPEN_EXTENDED is defined.

	* libio/Makefile (routines): Add obprintf.
	* libio/obprintf.c: New file.
	* libio/iolibio.h: Add prototypes for _IO_obstack_vprintf and
	_IO_obstack_printf.
	* libio/libio.h: Fix typo.
	* libio/stdio.h: Declare tempnam if __USE_XOPEN_EXTENDED is defined.
	Add prototypes for obstack_vprintf and obstack_printf.

	* manual/creature.texi: Describe _XOPEN_SOURCE macro.
	* manual/intro.texi: Add reference to NSS chapter.
	* manual/libc.texinfo: Update UPDATED.
	Comment out `@printindex cp'.  It works again.
	* manual/memory.texi: Add description for obstack_ptr_grow,
	obstack_int_grow, obstack_ptr_grow_fast, and obstack_int_grow_fast.
	* manual/nss.texi: Add a few @cindex entries and change NSS_STATUS_*
	index entries to @vindex.
	* manual/users.texi: Correct @cindex entry for Netgroup.

	* math/mathcalls.h: Use __USE_XOPEN and __USE_XOPEN_EXTENDED to
	make declarations visible for X/Open sources.

	* misc/search.h: Declare insque/remque only is __USE_SVID or
	__USE_XOPEN_EXTENDED is defined.

	* misc/sys/uio.h (readv, writev): Change return value from int to
	ssize_t.

	* posix/Makefile (headers): Add re_comp.h.
	* posix/re_comp.h: New file.  XPG interface to regex functions.

	* posix/getconf.c: Add all names from XPG4.2.
	* posix/posix1_lim.h: Increase minimum values for _POSIX_CHILD_MAX
	and _POSIX_OPEN_MAX to minimums from XPG4.2.
	* sysdeps/generic/confname.h: Add all _SC_* names from XPG4.2.
	* sysdeps/posix/sysconf.c: Handle new _SC_* values.
	* sysdeps/stub/sysconf.c: Likewise.

	* posix/unistd.h: Add declaration of ualarm and lchown.  Declare
	usleep, fchown, fchdir, nice, getpgid, setsid, getsid, setreuid,
	setregid, vfork, ttyslot, symlink, readlink, gethostid, truncate,
	ftruncate, getdtablesize, brk, sbrk, lockf when
	__USE_XOPEN_EXTENDED is defined.

	* posix/sys/wait.h: Declare wait3 if __USE_XOPEN_EXTENDED is defined.

	* shadow/shadow.h: Define SHADOW using _PATH_SHADOW.
	* sysdeps/generic/paths.h: Define _PATH_SHADOW.
	* sysdeps/unix/sysv/linux/paths.h: Likewise.

	* signal/signal.h: Declare killpg, sigstack and sigaltstack when
	__USE_XOPEN_EXTENDED is defined.

	* stdio/stdio.h: Declare tempnam when __USE_XOPEN is defined.

	* stdlib/stdlib.h: Make rand48 functions available when __USE_XOPEN
	is defined.
	Likewise for valloc, putenv, realpath, [efg]cvt*, and getsubopt
	functions.

	* string/string.h: Make memccpy, strdup, bcmp, bcopy, bzero, index,
	and rindex available when __USE_XOPEN_EXTENDED is defined.

	* sysdeps/mach/getpagesize.c: De-ANSI-fy.  Change return type to int.
	* sysdeps/posix/getpagesize.c: Likewise.
	* sysdeps/stub/getpagesize.c: Likewise.
	* sysdeps/unix/getpagesize.c: Likewise.

	* time/africa: Update from tzdata1996l.
	* time/asia: Likewise.
	* time/australia: Likewise.
	* time/europe: Likewise.
	* time/northamerica: Likewise.
	* time/pacificnew: Likewise.
	* time/southamerica: Likewise.
	* time/tzfile.h: Update from tzcode1996m.

	* time/time.h: Declare strptime if __USE_XOPEN.
	Declare daylight and timezone also if __USE_XOPEN.

	* time/sys/time.h: Remove declaration of ualarm.

	* wctype/wctype.h: Just reference ISO C standard.

Tue Nov  5 01:26:32 1996  Richard Henderson  <rth@tamu.edu>

	* crypt/Makefile: Add crypt routines to libc as well iff
	$(crypt-in-libc) is set.  Do this for temporary binary compatibility
	on existing Linux/Alpha installations.

	* stdlib/div.c, sysdeps/generic/div.c: Move file to .../generic/.
	* stdlib/ldiv.c, sysdeps/generic/ldiv.c: Likewise.
	* stdlib/lldiv.c, sysdeps/generic/lldiv.c: Likewise.
	* sysdeps/alpha/Makefile (divrem): Add divlu, dviqu, remlu, and
	remqu.
	* sysdeps/alpha/div.S: New file.
	* sysdeps/alpha/ldiv.S: New file.
	* sysdeps/alpha/lldiv.S: New file.
	* sysdeps/alpha/divrem.h: Merge signed and unsigned division.
	Take pointers from Linus and tighten the inner loops a bit.
	* sysdeps/alpha/divl.S: Change defines for merged routines.
	* sysdeps/alpha/divq.S: Likewise.
	* sysdeps/alpha/reml.S: Likewise.
	* sysdeps/alpha/remq.S: Likewise.
	* sysdeps/alpha/divlu.S: Remove file.
	* sysdeps/alpha/divqu.S: Likewise.
	* sysdeps/alpha/remlu.S: Likewise.
	* sysdeps/alpha/remqu.S: Likewise.

	* sysdeps/alpha/bsd-_setjmp.S: If PROF, call _mcount.
	* sysdeps/alpha/bsd-setjmp.S: Likewise.
	* sysdeps/alpha/bzero.S: Likewise.
	* sysdeps/alpha/ffs.S: Likewise.
	* sysdeps/alpha/htonl.S: Likewise.
	* sysdeps/alpha/htons.S: Likewise.
	* sysdeps/alpha/memchr.S: Likewise.
	* sysdeps/alpha/memset.S: Likewise.
	* sysdeps/alpha/s_copysign.S: Likewise.
	* sysdeps/alpha/s_fabs.S: Likewise.
	* sysdeps/alpha/setjmp.S: Likewise.
	* sysdeps/alpha/stpcpy.S: Likewise.
	* sysdeps/alpha/stpncpy.S: Likewise.
	* sysdeps/alpha/strcat.S: Likewise.
	* sysdeps/alpha/strchr.S: Likewise.
	* sysdeps/alpha/strcpy.S: Likewise.
	* sysdeps/alpha/strlen.S: Likewise.
	* sysdeps/alpha/strncat.S: Likewise.
	* sysdeps/alpha/strncpy.S: Likewise.
	* sysdeps/alpha/strrchr.S: Likewise.
	* sysdeps/alpha/udiv_qrnnd.S: Likewise.  Fix private labels.
	Convert two small jumps to use conditional moves.
	* sysdeps/unix/alpha/sysdep.h: Compress all __STDC__ nastiness.
	(PSEUDO): If PROF, call _mcount.
	* sysdeps/unix/sysv/linux/alpha/brk.S: If PROF, call _mcount.
	* sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/llseek.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise.

	* sysdeps/alpha/memcpy.S: New file.  Odd layout because it should
	eventually contain memmove as well.
	* sysdeps/alpha/strcmp.S: New file.
	* sysdeps/alpha/strncmp.S: New file.
	* sysdeps/alpha/w_sqrt.S: New file.

Tue Nov  5 18:06:06 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/mach/hurd/ttyname_r.c: Use `size_t' for len variable.

Tue Nov  5 12:09:29 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdep/generic/sysdep.h: Define END only if not yet defined.
	* sysdep/unix/sysdep.h: Define PSEUDO_END only if not yet defined.
	Reported by Thomas Bushnell, n/BSG.

Mon Nov  4 22:46:53 1996  Ulrich Drepper  <drepper@cygnus.com>

	* manual/users.texi (Netgroup Data): Remove { } around @cindex.

Mon Nov  4 19:07:05 1996  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/calloc.c: Check for overflow before trying to allocate
	memory.  Proposed by Neil Matthews <nm@adv.sbc.sony.co.jp>.

Fri Nov  1 18:18:32 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/llio.texi (Operating Modes): Add missing arguments to
	@deftypevr in O_NONBLOCK description.

	* manual/time.texi (Time Zone Functions): Enclose type name in
	braces in description of tzname.  FIXME: this does not yet work
	correctly in info.

Sun Nov  3 17:29:06 1996  Ulrich Drepper  <drepper@cygnus.com>

	* features.h: Add X/Open macros.
	* posix/unistd.h: Define X/Open macros.
	* sysdeps/generic/confname.h: Add _SC_XOPEN_XCU_VERSION,
	_SC_XOPEN_UNIX, _SC_XOPEN_CRYPT, _SC_XOPEN_ENH_I18N,
	_SC_XOPEN_SHM, _SC_2_CHAR_TERM, _SC_2_C_VERSION, and _SC_2_UPE.
	* sysdeps/posix/sysconf.c: Handle new constants.
	* sysdeps/stub/sysconf.c: Likewise.
	* sysdeps/unix/sysv/linux/posix_opt.h: Add definition of _XOPEN_SHM.

	* catgets/catgets.c (catopen): Set errno to ENOMEM when
	we run out of memory.
	(catgets): Set errno to EBADF when catalog handle is invalid.
	Set errno to ENOMSG when translation is not available.
	(catclose): Set errno to EBADF when catalog handle is invalid.

	* ctype/ctype.h: Declare isascii and toascii when __USE_XOPEN.
	Likewise for _toupper and _tolower.

	* manual/arith.texi: Document strtoq, strtoll, strtouq, strtoull,
	strtof, and strtold.
	* manual/math.texi: Document HUGE_VALf and HUGE_VALl.
	* manual/stdio.h: Document ' flag for numeric formats of scanf.
	* manual/users.texi: Document that cuserid shouldn't be used.

	* misc/Makefile (routines): Add dirname.
	(headers): Add libgen.h.
	(tests): Add tst-dirname.
	* misc/dirname.c: New file.
	* misc/libgen.h: New file.
	* misc/tst-dirname.c: New file.

	* misc/search.h: Parameter of hcreate must be of type size_t.
	* misc/hsearch.c: Likewise.
	* misc/hsearch_r.c: Likewise for hcreate_r.
	* misc/search.h: Parameters of insque and remque must be `void *'.
	* misc/insremque.c: Likewise.

	* posix/unistd.h: Move declarations of mktemp and mkstemp to...
	* stdlib/stdlib.h: ...here.
	* posix/unistd.h [__USE_XOPEN]: Add prototypes for crypt, setkey,
	encrypt, and swab.

	* stdio-common/printf-parse.h (struct printf_spec): Add pa_wchar
	and pa_wstring.
	(parse_one_spec): Remove Linux compatibility code.
	Recognize %C and %S formats.
	* stdio-common/printf.h: Add PA_WCHAR and PA_WSTRING.
	* stdio-common/vfprintf.c: Add implementation of %C and %S format.
	* stdio-common/vfscanf.c: Likewise for scanf.

	* stdlib/l64a.c: Return value for 0 must be the empty string.
	* stdlib/stdlib.h: Declare reentrant function from rand49 family
	only if __USE_REENTRANT.
	Declare rand48 functions also if __USE_XOPEN.

	* stdlib/strtol.c: Return 0 and set errno to EINVAL when BASE is
	not a legal value.
	Return 0 and set errno to EINVAL when strou* sees negativ number.
	* stdlib/tst-strtol.c: De-ANSI-fy.
	Change expected results for test of unsigned function and negative
	input.

	* string/stratcliff.c: Prevent warnings.
	* string.h: Move declaration of swab to <unistd.h>.
	* string/swab.c: De-ANSI-fy.

	* sysdeps/posix/cuserid.c: Implement using getpwuid_r.
	* sysdeps/posix/mkstemp.c: Include <stdlib.h> for prototype.
	* sysdeps/posix/mktemp.c: Likewise.
	* sysdeps/stub/mkstemp.c: Likewise.
	* sysdeps/stub/mktemp.c: Likewise.

	* sysvipc/sys/ipc.h: Prototypes of ftok have to be of types `const
 	char *' and `int'.
	* sysvipc/ftok.c: Likewise.  Make sure only lower 8 bits of
 	PROJ_ID are used.

Sun Nov  3 03:21:28 1996  Heiko Schroeder  <Heiko.Schroeder@post.rwth-aachen.de>

	* locale/programs/ld-numeric.c (numeric_output): Compute idx[0]
	correctly.

Sat Nov  2 17:44:32 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/posix/cuserid.c: Use reentrant functions.
	* manual/users.texi: Tell that cuserid is marked to be withdrawn in
	XPG4.2.

Sat Nov  2 14:26:37 1996  Ulrich Drepper  <drepper@cygnus.com>

	Linus said he will make sure no system call will return a value
	in -1 ... -4095 as a valid result.
	* sysdeps/unix/sysv/linux/i386/sysdep.h: Correct test for error.
	* sysdeps/unix/sysv/linux/i386/syscall.S: Likewise.
	* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise.

Sat Nov  2 16:54:49 1996  NIIBE Yutaka  <gniibe@mri.co.jp>

	* sysdeps/stub/lockfile.c [!USE_IN_LIBIO]: Define weak alias for
	__funlockfile, not a circular alias.
	Define __IO_ftrylockfile if USE_IN_LIBIO and __ftrylockfile if not,
	not vice versa.

	* sysdeps/unix/sysv/linux/i386/sysdep.S (__errno_location): Make
	it a weak symbol.
	* sysdeps/unix/sysv/linux/m68k/sysdep.S (__errno_location): Likewise.


	Likewise.

	* crypt/Makefile (rpath-link): Extend search path to current directory.
1996-11-06 04:24:40 +00:00
Karl Berry f5311448f8 (see ChangeLog for Oct 29.) 1996-11-05 19:52:23 +00:00
Karl Berry 23a01afea2 Call \normalturnoffactive for the sake of \write's that include a \. 1996-11-05 19:51:16 +00:00
Thomas Bushnell, BSG 4e32d5893f * stdio-common/vfprintf.c: Include <libc-lock.h>. 1996-11-05 05:08:15 +00:00
Thomas Bushnell, BSG 0f110f4100 *** empty log message ***
Tue Nov  5 00:04:48 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* stdio-common/vfprintf.c: Include <libc-lock.h>.
1996-11-05 05:07:48 +00:00
Thomas Bushnell, BSG 050a966adc *** empty log message ***
Mon Nov  4 16:57:42 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/mach/hurd/ttyname_r.c (ttyname_r): Change prototype to
	match POSIX.1c.

	* sysdeps/stub/lockfile.c [! USE_IN_LIBIO]: Second definition of
	__internal_funlockfile (in terms of itself) should actually be a
	definition of __funlockfile.
	
	* pwd/pwd.h: Get `size_t' from <stddef.h>.
	* grp/grp.h: Likewise.
	* shadow/shadow.h: Likewise.

	* stdlib/atexit.c (__new_exitfn): Add missing semicolons after
	calls to __libc_lock_lock and __libc_lock_unlock.
	* stdlib/random.c (__srandom, __initstate, __setstate, __random):
	Likewise. 

	* hurd/hurdsig.c (write_corefile): Fix typo.

	* sysdeps/mach/hurd/sigwait.c: New file.
1996-11-05 04:17:28 +00:00
1261 changed files with 66615 additions and 24801 deletions
+225 -6658
View File
File diff suppressed because it is too large Load Diff
+10547
View File
File diff suppressed because it is too large Load Diff
+85 -24
View File
@@ -68,6 +68,15 @@ please let me know.
`setsockopt', `getsockname', `getpeername', `send',
`sendto', and `recvfrom' are different in GNU libc than
on any other system I saw. This is a bug, isn't it?''
[Q19] ``My XXX kernel emulates a floating-point coprocessor for me.
Should I enable --with-fp?''
[Q20] ``How can I compile gcc 2.7.2.1 from the gcc source code using
glibc 2.x?
[Q21] ``On Linux I've got problems with the declarations in Linux
kernel headers.''
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q1] ``What systems does the GNU C Library run on?''
@@ -254,7 +263,7 @@ incompatibilities:
* swapon(): the interface of this function didn't changed, but the
prototype is in a separate header file <sys/swap.h>. For the additional
argument of of swapon() you should use the SWAP_* constants from
argument of swapon() you should use the SWAP_* constants from
<linux/swap.h>, which get defined when <sys/swap.h> is included.
* errno: If a program uses variable "errno", then it _must_ include header
@@ -292,6 +301,13 @@ incompatibilities:
a separate library libresolv. If you find some symbols starting with
`res_*' undefined simply add -lresolv to your call of the linker.
* the `signal' function's behaviour corresponds to the BSD semantic and
not the SysV semantic as it was in libc-5. The interface on all GNU
systems shall be the same and BSD is the semantic of choice. To use
the SysV behaviour simply use `sysv_signal'. The major difference is
that the SysV implementation sets the SA_ONESHOT flag and so the handler
gets removed after the first call.
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q10] ``Why does getlogin() always return NULL on my Linux box?''
@@ -359,10 +375,10 @@ catalog files to the XPG4 form:
[Q13] ``How do I configure GNU libc so that the essential libraries
like libc.so go into /lib and the other into /usr/lib?''
[A13] {UD} Like all other GNU packages GNU libc is configured to use a
base directory and install all files relative to this. If you intend
to really use GNU libc on your system this base directory is /usr. I.e.,
you run
[A13] {UD,AJ} Like all other GNU packages GNU libc is configured to
use a base directory and install all files relative to this. If you
intend to really use GNU libc on your system this base directory is
/usr. I.e., you run
configure --prefix=/usr <other_options>
Some systems like Linux have a filesystem standard which makes a
@@ -372,10 +388,10 @@ located on the same disk partition as /. The /usr subtree might be
found on another partition/disk.
To install the essential libraries which come with GNU libc in /lib
one must explicitly tell this. Autoconf has no option for this so you
have to use the file where all user supplied additional information
should go in: `configparms' (see the `INSTALL' file). For Linux the
`configparms' file should contain:
one must explicitly tell this (except on Linux, see below). Autoconf
has no option for this so you have to use the file where all user
supplied additional information should go in: `configparms' (see the
`INSTALL' file). Therefore the `configparms' file should contain:
slibdir=/lib
sysconfdir=/etc
@@ -384,6 +400,10 @@ The first line specifies the directory for the essential libraries,
the second line the directory for file which are by tradition placed
in a directory named /etc.
No rule without an exception: If you configure for Linux with
--prefix=/usr, then slibdir and sysconfdir will automatically be
defined as stated above.
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q14] ``When linking with the new libc I get unresolved symbols
@@ -419,7 +439,7 @@ the package and tell the configuration script about these additional
subdirectories using the --enable-add-ons option. When you add the
crypt add-on you just have to use
configure --enable-add-ons=des-crypt,XXX ...
configure --enable-add-ons=crypt,XXX ...
where XXX are possible other add-ons and ... means the rest of the
normal option list.
@@ -470,7 +490,7 @@ use it instead of the old libc. In this case the needed startup files
and libraries are not found in the regular places. So the specs file
must tell the compiler and linker exactly what to use. Here is for
example the gcc-2.7.2 specs file when GNU libc is installed at
/home/gnu:
/usr:
-----------------------------------------------------------------------
*asm:
@@ -480,28 +500,28 @@ example the gcc-2.7.2 specs file when GNU libc is installed at
%{pipe:-}
*cpp:
%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!m386:-D__i486__} %{posix:-D_POSIX_SOURCE} -I/home/gnu/include
%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!m386:-D__i486__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}
*cc1:
%{profile:-p}
*cc1plus:
*endfile:
%{!shared:crtend.o%s} %{shared:crtendS.o%s} /home/gnu/lib/crtn.o%s
%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s
*link:
-m elf_i386 -rpath=/home/gnu/lib -L/home/gnu/lib %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker=/home/gnu/lib/ld.so.1}} %{static:-static}}}
-m elf_i386 %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} %{static:-static}}}
*lib:
%{!shared: %{mieee-fp:-lieee} %{p:-lc_p} %{!p:%{pg:-lc_p} %{!pg:-lc}}}
%{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}}
*libgcc:
%{!shared:-lgcc}
-lgcc
*startfile:
%{!shared: %{pg:/home/gnu/lib/gcrt1.o%s} %{!pg:%{p:/home/gnu/lib/gcrt1.o} %{!p:/home/gnu/lib/crt1.o%s}}} /home/gnu/lib/crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
*switches_need_spaces:
@@ -520,15 +540,15 @@ example the gcc-2.7.2 specs file when GNU libc is installed at
-----------------------------------------------------------------------
The above is currently correct for all systems but ix86/Linux.
Because of compatibility issues on this platform the dynamic linker
must have a different name: ld-linux.so.2. So you have to replace
The above is currently correct for ix86/Linux. Because of
compatibility issues on this platform the dynamic linker must have
a different name: ld-linux.so.2. So you have to replace
%{!dynamic-linker:-dynamic-linker=/home/gnu/lib/ld.so.1}
by
%{!dynamic-linker:-dynamic-linker=/home/gnu/lib/ld-linux.so.2}
by
%{!dynamic-linker:-dynamic-linker=/home/gnu/lib/ld.so.1}
in the above example specs file.
in the above example specs file to make it work for other systems.
Future versions of GCC will automatically provide the correct specs.
@@ -570,12 +590,53 @@ This change is critical for system which have
like the Alpha.
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q19] ``My XXX kernel emulates a floating-point coprocessor for me.
Should I enable --with-fp?''
[A19] {UD} As `configure --help' shows the default value is `yes' and
this should not be changed unless the FPU instructions would be
invalid. I.e., an emulated FPU is for the libc as good as a real one.
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q20] ``How can I compile gcc 2.7.2.1 from the gcc source code using
glibc 2.x?
[A20] {HJL} There is no support in gcc for glibc 2.0 before gcc 2.8. It
is very tricky to compile gcc 2.7.2.1 using glibc 2.x. You have to
build it manually or with one pass only. You also have to use the
specs file in this FAQ while compiling gcc.
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
[Q21] ``On Linux I've got problems with the declarations in Linux
kernel headers.''
[A21] {UD,AJ} On Linux, the use of kernel headers is reduced to a very
minimum. Besides giving Linus the possibility to change the headers
more freely it has another reason: user level programs now do not
always use the same types like the kernel does.
I.e., the libc abstracts the use of types. E.g., the sigset_t type is
in the kernel 32 or 64 bits wide. In glibc it is 1024 bits wide, in
preparation for future development. The reasons are obvious: we don't
want to have a new major release when the Linux kernel gets these
functionality. Consult the headers for more information about the changes.
Therefore you shouldn't include Linux kernel header files directly if
glibc has defined a replacement. Otherwise you might get undefined
results because of type conflicts.
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Answers were given by:
{UD} Ulrich Drepper, <drepper@cygnus.com>
{DMT} David Mosberger-Tang, <davidm@AZStarNet.com>
{RM} Roland McGrath, <roland@gnu.ai.mit.edu>
{HJL} H.J. Lu, <hjl@gnu.ai.mit.edu>
{AJ} Andreas Jaeger, <aj@arthur.pfalz.de>
Local Variables:
mode:text
+6 -7
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
dist:
@@ -187,11 +187,10 @@ endef
configure: configure.in aclocal.m4; $(autoconf-it)
%/configure: %/configure.in aclocal.m4; $(autoconf-it)
.PHONY: dist
dist: $(tardir).tar.gz
subdir_dist: dist.tar
dist.tar: $(tardir) $(+tsrcs)
dist.tar: README $(tardir) $(+tsrcs)
tar chvf $@ $(addprefix $(tardir)/,$(filter-out $(tardir),$^))
$(tardir).tar: dist.tar subdir_dist
@@ -214,7 +213,7 @@ $(dist-subdirs):
$(MAKE) -C $(patsubst dist-%,%,$@) dist
# This is here instead of in Makefile so it can use $(release) and $(version).
README: README.template version.c
README: README.template version.h
-rm -f $@
sed -e 's/RELEASE/$(release)/' -e 's/VERSION/$(version)/' < $< > $@
# Make it unwritable so I won't change it by mistake.
+8 -12
View File
@@ -14,9 +14,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# Make this the default goal.
TAGS:
@@ -43,8 +43,10 @@ sysdep-dirs := $(full-config-sysdirs)
ifndef sysdep_dirs
# Find all sysdep directories.
sysdep_dirs := $(shell find $(..)sysdeps -type d \
! -name RCS ! -name CVS -print)
sysdep_dirs := $(shell find $(..)sysdeps \
$(wildcard \
$(patsubst %,$(..)%/sysdeps,$(add-ons))) \
-type d ! -name RCS ! -name CVS -print)
endif
# Find all sysdep dirs there are, but putting the ones
@@ -145,13 +147,7 @@ else
$(extract)
endif
$P/siglist.pot: $(common-objpfx)stdio-common/siglist.c; $(extract)
# Extract all strings from this file; its strings are not marked.
# Their surroundings are also not interesting.
XGETTEXTFLAGS-siglist.pot = -a --no-location
all-pot = $P/libc-top.pot $P/subdirs.pot $P/siglist.pot
all-pot = $P/libc-top.pot $P/subdirs.pot
ifndef subdir
# Collect all the subdir messages, massaging the file names in comments
+69 -17
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Makefile configuration options for the GNU C library.
@@ -91,12 +91,13 @@ export full-config-sysdirs := $(full-config-sysdirs)
# changes and so config.status would be run every time; the dependence of
# config.make should suffice to force regeneration and re-exec, and the new
# image will notice if config.h changed.
$(common-objpfx)config.make: $(common-objpfx)config.status $(..)config.h.in
$(common-objpfx)config.make: $(common-objpfx)config.status \
$(..)config.make.in $(..)config.h.in
cd $(<D); $(SHELL) $(<F)
# Find all the sysdeps configure fragments, to make sure we re-run
# configure when any of them changes.
$(common-objpfx)config.status: $(..)configure \
$(common-objpfx)config.status: $(..)version.h $(..)configure \
$(foreach dir,$(full-config-sysdirs),\
$(wildcard \
$(dir)/Implies) \
@@ -146,11 +147,13 @@ endif
ifndef libdir
libdir = $(exec_prefix)/lib
endif
inst_libdir = $(install_root)$(libdir)
# Where to install the shared library and dynamic linker.
ifndef slibdir
slibdir = $(exec_prefix)/lib
endif
inst_slibdir = $(install_root)$(slibdir)
# Prefix to put on files installed in $(libdir). For libraries `libNAME.a',
# the prefix is spliced between `lib' and the name, so the linker switch
@@ -164,50 +167,64 @@ endif
ifndef includedir
includedir = $(exec_prefix)/include
endif
inst_includedir = $(install_root)$(includedir)
# Where to install machine-independent data files.
# These are the timezone database, and the locale database.
ifndef datadir
datadir = $(prefix)/share
endif
inst_datadir = $(install_root)$(datadir)
# Where to install the timezone data files (which are machine-independent).
ifndef zonedir
zonedir = $(datadir)/zoneinfo
endif
inst_zonedir = $(install_root)$(zonedir)
# Where to install the locale and message catalog data files (which are
# machine-independent).
ifndef localedir
localedir = $(datadir)/locale
endif
inst_localedir = $(install_root)$(localedir)
# Where to install the locale charmap source files.
ifndef i18ndir
i18ndir = $(datadir)/i18n
endif
inst_i18ndir = $(install_root)$(i18ndir)
# Where to install programs.
ifndef bindir
bindir = $(exec_prefix)/bin
endif
inst_bindir = $(install_root)$(bindir)
# Where to install administrative programs.
ifndef rootsbindir
rootsbindir = $(exec_prefix)/sbin
endif
inst_rootsbindir = $(install_root)$(rootsbindir)
ifndef sbindir
sbindir = $(exec_prefix)/sbin
endif
inst_sbindir = $(install_root)$(sbindir)
# Where to install the Info files.
ifndef infodir
infodir = $(prefix)/info
endif
inst_infodir = $(install_root)$(infodir)
# Where to install default configuration files. These include the local
# timezone specification and network data base files.
ifndef sysconfdir
sysconfdir = $(prefix)/etc
endif
inst_sysconfdir = $(install_root)$(sysconfdir)
# What timezone should be the installed default (e.g., US/Eastern).
# Run `make -C time echo-zonenames' to see a list of available zone names.
@@ -222,7 +239,7 @@ endif
# other than there, so the zoneinfo directory contains only universal data,
# localizing the configuration data elsewhere.
ifndef localtime-file
localtime-file = $(sysconfdir)/localtime
localtime-file = $(inst_sysconfdir)/localtime
endif
# What to use for leap second specifications in compiling the default
@@ -330,6 +347,7 @@ default-rpath = $(libdir)
endif
# This is how to find at build-time things that will be installed there.
rpath-link = $(common-objdir):$(elfobjdir):$(nssobjdir)
elfobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)elf)
nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
else
link-libc = $(common-objpfx)libc.a $(gnulib) $(common-objpfx)libc.a
@@ -402,7 +420,7 @@ M4 = m4
.NOEXPORT:
# We want to echo the commands we're running without
# umpteem zillion filenames along with it (we use `...' instead)
# umpteen zillion filenames along with it (we use `...' instead)
# but we don't want this echoing done when the user has said
# he doesn't want to see commands echoed by using -s.
ifneq "$(findstring s,$(MAKEFLAGS))" "" # if -s
@@ -420,7 +438,7 @@ ifdef CFLAGS
endif # CFLAGS
endif # +cflags
# If none of the above worked, default to "-g".
# If none of the above worked, default to "-g -O".
ifeq "$(strip $(+cflags))" ""
+cflags := $(default_cflags)
endif # $(+cflags) == ""
@@ -445,9 +463,10 @@ libio-include = -I$(..)libio
# These are the variables that the implicit compilation rules use.
CPPFLAGS = $(+includes) $(defines) -include $(..)libc-symbols.h \
$(sysdep-CPPFLAGS) $(CPPFLAGS-$(suffix $@))
$(sysdep-CPPFLAGS) $(CPPFLAGS-$(suffix $@)) $(CPPFLAGS-$(<F)) \
$(CPPFLAGS-$(@F))
override CFLAGS = $(+cflags) $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) \
$(CFLAGS-$(<F))
$(CFLAGS-$(<F)) $(CFLAGS-$(@F))
# This is the macro that the implicit linking rules use.
@@ -468,7 +487,7 @@ ifeq (yes,$(build-shared))
# The PIC object files are named foo.so.
object-suffixes += .so
CPPFLAGS-.so = -DPIC
CFLAGS-.so = -fPIC
CFLAGS-.so = -fPIC -fno-common
libtype.so := lib%_pic.a
endif
ifeq (yes,$(build-profile))
@@ -523,9 +542,10 @@ $(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makeconfig \
(file="$(wildcard $(patsubst %,$(..)%/shlib-versions,$(add-ons))) \
$(..)shlib-versions"; \
for f in $$file; do \
sed 's/#.*$$//' $$f | while read conf versions; do \
test -n "$$versions" || continue; \
case '$(config-machine)-$(config-vendor)-$(config-os)' in $$conf)\
sed 's/#.*$$//' $$f | while read conf versions; do \
test -n "$$versions" && \
test `expr '$(config-machine)-$(config-vendor)-$(config-os)' \
: "$$conf"` != 0 || continue; \
for v in $$versions; do \
lib=`echo $$v | sed 's/=.*$$//'`; \
if eval "test -z \"\$$vers_lib$$lib\""; then \
@@ -536,15 +556,43 @@ $(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makeconfig \
echo "all-sonames+=$$lib.so\$$($$lib.so-version)";;\
*) echo "$$lib.so-version=$$number"; \
echo "all-sonames+=\$$($$lib.so-version)";; \
esac; \
esac; \
fi; \
done ;; esac; done; \
done; \
done; \
done;) > $@T; exit 0
mv -f $@T $@
# Get $(version) defined with the release version number.
-include $(common-objpfx)version.mk
# Generate the header containing the names of all shared libraries.
# We use a stamp file to avoid uncessary recompilations.
before-compile += $(common-objpfx)gnu/lib-names.h
$(common-objpfx)gnu/lib-names.h: $(common-objpfx)gnu/lib-names.stmp
$(common-objpfx)gnu/lib-names.stmp: $(common-objpfx)soversions.mk
$(make-target-directory)
@rm -f ${@:stmp=T} $@
(echo '/* This file is automatically generated.';\
echo ' It defines macros to allow user program to find the shared';\
echo ' library files which come as part of GNU libc. */';\
echo '#ifndef __GNU_LIB_NAMES_H'; \
echo '#define __GNU_LIB_NAMES_H 1'; \
echo; \
(libs='$(all-sonames)';\
for l in $$libs; do \
upname=`echo $$l | sed 's/[.]so.*//' | \
tr '[:lower:]-' '[:upper:]_'`; \
echo "#define $${upname}_SO \"$$l\""; \
done;) | sort; \
echo; \
echo '#endif /* gnu/lib-names.h */';) > ${@:stmp=T}
if test -r ${@:stmp=h} && cmp -s ${@:stmp=h} ${@:stmp=T}; \
then rm -f ${@:stmp=T}; \
else mv -f ${@:stmp=T} ${@:stmp=h}; fi
touch $@
common-generated += gnu/lib-names.h gnu/lib-names.stmp
# The name under which the run-time dynamic linker is installed.
# We are currently going for the convention that `/lib/ld.so.1'
@@ -557,6 +605,10 @@ rtld-installed-name = ld.so.1
endif
endif
ifndef rtld-version-installed-name
rtld-version-installed-name = ld-$(version).so
endif
endif # build-shared
endif # Makeconfig not yet included
+49 -35
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Master Makefile for the GNU C library
@@ -52,9 +52,10 @@ endif
# These are the subdirectories containing the library source.
subdirs = csu assert ctype db locale intl catgets math setjmp signal stdlib \
stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd\
stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd \
posix io termios resource misc login socket sysvipc gmon gnulib \
wctype manual shadow crypt $(sysdep-subdirs) nss elf po $(add-ons)
wctype manual shadow md5-crypt nss $(sysdep-subdirs) po \
$(add-ons) elf
export subdirs := $(subdirs) # Benign, useless in GNU make before 3.63.
# The mach and hurd subdirectories have many generated header files which
@@ -82,14 +83,20 @@ subdirs := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
$(addprefix install-, no-libc.a bin lib data headers others)
headers := errno.h sys/errno.h errnos.h limits.h values.h \
features.h gnu-versions.h libc-lock.h
features.h gnu-versions.h libc-lock.h xopen_lim.h
aux = sysdep $(libc-init) version
before-compile = $(objpfx)version-info.h
echo-headers: subdir_echo-headers
# What to install.
install-others = $(includedir)/stubs.h $(includedir)/gnu/lib-names.h
install-others = $(inst_includedir)/gnu/stubs.h
install-bin = glibcbug
ifeq (yes,$(build-shared))
before-compile += $(objpfx)gnu/lib-names.h
install-others += $(inst_includedir)/gnu/lib-names.h
endif
ifeq (yes,$(gnu-ld))
libc-init = set-init
@@ -107,6 +114,15 @@ include Makerules
# Install from subdirectories too.
install: subdir_install
# Create linkfs for shared libraries using the `ldconfig' program is possible.
ifeq (no,$(cross-compiling))
ifeq (yes,$(build-shared))
install:
test ! -x $(common-objpfx)elf/ldconfig || \
$(common-objpfx)elf/ldconfig -d $(inst_slibdir) $(inst_libdir)
endif
endif
# Build subdirectory lib objects.
lib-noranlib: subdir_lib
@@ -154,7 +170,7 @@ $(version.c-objects): $(objpfx)version-info.h
# Makerules creates a file `stub-$(subdir)' for each subdirectory, which
# contains `#define __stub_FUNCTION' for each function which is a stub.
# Here we paste all of these together into <stubs.h>.
# Here we paste all of these together into <gnu/stubs.h>.
subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)stub-$(dir))
@@ -164,7 +180,7 @@ subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)stub-$(dir))
# iterates over all the subdirs; subdir_install in each subdir depends on
# the subdir's stubs file. Having more direct dependencies would result in
# extra iterations over the list for subdirs and many recursive makes.
$(includedir)/stubs.h: subdir_install
$(inst_includedir)/gnu/stubs.h: subdir_install
@rm -f $(objpfx)stubs.h
(echo '/* This file is automatically generated.';\
echo ' It defines a symbol `__stub_FUNCTION'\'' for each function';\
@@ -176,32 +192,23 @@ $(includedir)/stubs.h: subdir_install
else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi
rm -f $(objpfx)stubs.h
# Like stubs.h the gnu/lib-names.h header is not used while building the
# libc itself. So we generate it while installing.
$(includedir)/gnu/lib-names.h: $(common-objpfx)soversions.mk
@rm -f $(objpfx)lib-names.h
(echo '/* This file is automatically generated.';\
echo ' It defines macros to allow user program to find the shared';\
echo ' library files which come as part of GNU libc. */';\
echo '#ifndef __GNU_LIB_NAMES_H'; \
echo '#define __GNU_LIB_NAMES_H 1'; \
echo; \
(libs='$(all-sonames)';\
for l in $$libs; do \
upname=`echo $$l | sed 's/[.]so.*//' | tr [:lower:]- [:upper:]_`; \
echo "#define $${upname}_SO $$l"; \
done;) | sort; \
echo; \
echo '#endif /* gnu/lib-names.h */';) > $(objpfx)lib-names.h
if test -r $@ && cmp -s $(objpfx)lib-names.h $@; \
ifeq (yes,$(build-shared))
$(inst_includedir)/gnu/lib-names.h: $(common-objpfx)gnu/lib-names.h
if test -r $@ && cmp -s $< $@; \
then echo 'gnu/lib-names.h unchanged'; \
else $(INSTALL_DATA) $(objpfx)lib-names.h $@; fi
rm -f $(objpfx)lib-names.h
else $(INSTALL_DATA) $< $@; fi
endif
# The `glibcbug' script contains the version number and it shall be rebuild
# whenever this changes or the `glibcbug.in' file.
$(objpfx)glibcbug: $(common-objpfx)config.status glibcbug.in
cd $(<D); CONFIG_FILES=$(@F) CONFIG_HEADERS= $(SHELL) $(<F)
# This makes the Info or DVI file of the documentation from the Texinfo source.
.PHONY: info dvi
info dvi:
$(MAKE) -C manual $@
$(MAKE) $(PARALLELMFLAGS) -C manual $@
# This makes all the subdirectory targets.
@@ -215,7 +222,7 @@ all-subdirs-targets := $(foreach dir,$(subdirs),\
# The action for each of those is to cd into the directory and make the
# target there.
$(all-subdirs-targets):
$(MAKE) -C $(@D) $(@F)
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
.PHONY: $(+subdir_targets) $(all-subdirs-targets)
@@ -281,12 +288,13 @@ distribute := README INSTALL FAQ NOTES NEWS PROJECTS \
config.h.in config.make.in config-name.in Makefile.in \
autolock.sh rellns-sh munch-tmpl.c munch.awk interp.c \
sysdep.h set-hooks.h libc-symbols.h version.h shlib-versions \
rpm/Makefile rpm/template rpm/rpmrc nsswitch.h netgroup.h
rpm/Makefile rpm/template rpm/rpmrc nsswitch.h netgroup.h \
mcheck.h glibcbug.in
distribute := $(strip $(distribute))
generated := $(generated) stubs.h version-info.h
README: README.template version.c ; # Make-dist should update README.
README: README.template version.h ; # Make-dist should update README.
define format-me
@rm -f $@
@@ -297,4 +305,10 @@ INSTALL: manual/maint.texi; $(format-me)
NOTES: manual/creature.texi; $(format-me)
rpm/%: subdir_distinfo
$(MAKE) -C $(@D) subdirs='$(subdirs)' $(@F)
$(MAKE) $(PARALLELMFLAGS) -C $(@D) subdirs='$(subdirs)' $(@F)
# This is a special goal for people making binary distributions. Normally
# everybody uses the DES based crypt library but for the distribution we
# need the only-MD5 based one as well.
md5-crypt/libmd5crypt:
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
+4 -1
View File
@@ -2,5 +2,8 @@
srcdir = @srcdir@
# Uncomment the line below if you want to do parallel build.
# PARALLELMFLAGS = -j 4
all .DEFAULT:
$(MAKE) -C $(srcdir) objdir=`pwd` $@
$(MAKE) PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@
+91 -56
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Common rules for making the GNU C library. This file is included
@@ -26,9 +26,10 @@ This makefile requires GNU Make.
endif
REQUIRED_MAKE_VERSION = 3.74
REAL_MAKE_VERSION = $(shell echo "$(MAKE_VERSION)" | sed 's/ .*//')
ifneq ($(REQUIRED_MAKE_VERSION), \
$(firstword $(sort $(MAKE_VERSION) $(REQUIRED_MAKE_VERSION))))
$(firstword $(sort $(REAL_MAKE_VERSION) $(REQUIRED_MAKE_VERSION))))
Wrong GNU Make version. See above for the version needed.
endif
@@ -343,10 +344,11 @@ endef
# Also omits crti.o and crtn.o, which we do not want
# since we define our own `.init' section specially.
LDFLAGS-c.so = -nostdlib -nostartfiles
# But we still want to link libc.so against -lgcc.
LDLIBS-c.so = -lgcc
# Give libc.so an entry point and make it directly runnable itself.
LDFLAGS-c.so += -e __libc_main
# Use our own special initializer and finalizer files for libc.so.
elfobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)elf)
$(common-objpfx)libc.so: $(elfobjdir)/soinit.so \
$(common-objpfx)libc_pic.a \
$(elfobjdir)/sofini.so $(elfobjdir)/ld.so
@@ -567,11 +569,11 @@ endef
# to install everything it changes.
ifdef objects
installed-libcs := $(foreach o,$(object-suffixes),\
$(libdir)/$(patsubst %,$(libtype$o),\
$(libprefix)$(libc-name)))
$(inst_libdir)/$(patsubst %,$(libtype$o),\
$(libprefix)$(libc-name)))
installed-libcs := $(filter-out %_pic.a,$(installed-libcs))
install: $(installed-libcs)
$(installed-libcs): $(libdir)/lib$(libprefix)%: lib
$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib
$(make-target-directory)
$(INSTALL_DATA) $(common-objpfx)lib$(*:$(libc-name)%=c%) $@
# Running ranlib after installing makes the __.SYMDEF time stamp up to
@@ -589,47 +591,67 @@ install-lib.so := $(filter %.so,$(install-lib:%_pic.a=%.so))
install-lib := $(filter-out %.so %_pic.a,$(install-lib))
ifeq (yes,$(build-shared))
install-lib-nosubdir: $(install-lib.so:%=$(libdir)/%)
install-lib-nosubdir: $(install-lib.so:%=$(inst_libdir)/%)
# Find which .so's have versions.
versioned := $(strip $(foreach so,$(install-lib.so),\
$(patsubst %,$(so),$($(so)-version))))
# Install all the unversioned shared libraries.
$(addprefix $(slibdir)/,$(filter-out $(versioned),$(install-lib.so))): \
$(slibdir)/%.so: $(objpfx)%.so; $(do-install-program)
$(addprefix $(inst_slibdir)/, $(filter-out $(versioned),$(install-lib.so))): \
$(inst_slibdir)/%.so: $(objpfx)%.so; $(do-install-program)
ifneq ($(findstring -s,$(LN_S)),)
define make-link
cd $(@D); \
rm -f $(@F).new; \
if test '$(@D)' = '$(<D)'; then \
$(LN_S) $(<F) $(@F).new; \
else \
$(SHELL) $(common-objpfx)$(..)rellns-sh $< $(@F).new; \
fi; \
mv -f $(@F).new $(@F)
rm -f $@.new
$(SHELL) $(..)rellns-sh $< $@.new
mv -f $@.new $@
endef
else
# If we have no symbolic links don't bother with rellns-sh.
define make-link
rm -f $@.new
$(LN_S) $< $@.new
mv -f $@.new $@
endef
endif
# XXX The following will have to be changed when `ldconfig' is available.
ifneq (yes,$(cross-compiling))
ifeq (yes,$(has-ldconfig))
define make-shlib-link
@:
endef
endif
endif
ifndef make-shlib-link
define make-shlib-link
$(make-link)
endef
endif
ifdef libc.so-version
# For a library specified to be version N, install three files:
# libc.so -> libc.so.N (e.g. libc.so.6)
# libc.so.6 -> libc-VERSION.so (e.g. libc-1.10.so)
$(slibdir)/libc.so$(libc.so-version): $(slibdir)/libc-$(version).so
$(make-link)
$(slibdir)/libc-$(version).so: $(common-objpfx)libc.so; $(do-install-program)
install: $(slibdir)/libc.so$(libc.so-version)
$(inst_slibdir)/libc.so$(libc.so-version): $(inst_slibdir)/libc-$(version).so
$(make-shlib-link)
$(inst_slibdir)/libc-$(version).so: $(common-objpfx)libc.so
$(do-install-program)
install: $(inst_slibdir)/libc.so$(libc.so-version)
ifndef subdir
# What we install as libc.so for programs to link against is in fact a
# link script. It contains references for the various libraries we need.
# The libc.so object is not complete since some functions are only defined
# in libc.a and the dynamic linker is an etra object.
install: $(libdir)/libc.so
$(libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \
$(elfobjdir)/$(rtld-installed-name) \
$(libdir)/lib$(libc-name).a
(echo '/* Use the shared library, but some functions are only in';\
install: $(inst_libdir)/libc.so
$(inst_libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \
$(elfobjdir)/$(rtld-installed-name) \
$(inst_libdir)/lib$(libc-name).a
(echo '/* GNU ld script';\
echo ' Use the shared library, but some functions are only in';\
echo ' the static library, so try that secondarily.'; \
echo ' The dynamic linker defines some functions used by $(<F),';\
echo ' but ld uses definitions from libc.a before examining the';\
@@ -640,8 +662,9 @@ $(libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \
endif
else
install: $(slibdir)/libc.so
$(slibdir)/libc.so: $(common-objpfx)libc.so; $(do-install-program)
install: $(inst_slibdir)/libc.so
$(inst_slibdir)/libc.so: $(common-objpfx)libc.so
$(do-install-program)
endif
@@ -649,7 +672,7 @@ ifneq (,$(versioned))
# Produce three sets of rules as above for all the smaller versioned libraries.
define o-iterator-doit
$(libdir)/$o: $(slibdir)/$o$($o-version); $$(make-link)
$(inst_libdir)/$o: $(inst_slibdir)/$o$($o-version); $$(make-link)
endef
object-suffixes-left := $(versioned)
include $(o-iterator)
@@ -665,26 +688,28 @@ include $(o-iterator)
ifeq (,$($(subdir)-version))
define o-iterator-doit
$(slibdir)/$o$($o-version): $(slibdir)/$(o:.so=)-$(version).so; $$(make-link)
$(inst_slibdir)/$o$($o-version): $(inst_slibdir)/$(o:.so=)-$(version).so;
$$(make-shlib-link)
endef
object-suffixes-left := $(versioned)
include $(o-iterator)
define o-iterator-doit
$(slibdir)/$(o:.so=)-$(version).so: $(objpfx)$o; $$(do-install-program)
$(inst_slibdir)/$(o:.so=)-$(version).so: $(objpfx)$o; $$(do-install-program)
endef
object-suffixes-left := $(versioned)
include $(o-iterator)
else
define o-iterator-doit
$(slibdir)/$o$($o-version): $(slibdir)/$(o:.so=)-$($(subdir)-version).so;
$$(make-link)
$(inst_slibdir)/$o$($o-version): \
$(inst_slibdir)/$(o:.so=)-$($(subdir)-version).so;
$$(make-shlib-link)
endef
object-suffixes-left := $(versioned)
include $(o-iterator)
define o-iterator-doit
$(slibdir)/$(o:.so=)-$($(subdir)-version).so: $(objpfx)$o;
$(inst_slibdir)/$(o:.so=)-$($(subdir)-version).so: $(objpfx)$o;
$$(do-install-program)
endef
object-suffixes-left := $(versioned)
@@ -700,54 +725,62 @@ endef
so-versions := $(sort $(foreach so,$(install-lib.so),.so$($(so)-version)))
$(foreach v,$(so-versions),\
$(slibdir)/lib$(libprefix)%$v): $(common-objpfx)lib%.so
$(inst_slibdir)/lib$(libprefix)%$v): $(common-objpfx)lib%.so
$(do-install-so)
$(foreach v,$(so-versions),\
$(slibdir)/$(libprefix)%$v): $(common-objpfx)%.so
$(inst_slibdir)/$(libprefix)%$v): $(common-objpfx)%.so
$(do-install-so)
endif
ifdef install-bin
$(addprefix $(bindir)/,$(install-bin)): $(bindir)/%: $(objpfx)%
$(addprefix $(inst_bindir)/,$(install-bin)): $(inst_bindir)/%: $(objpfx)%
$(do-install-program)
endif
ifdef install-rootsbin
$(addprefix $(inst_rootsbindir)/,$(install-rootsbin)):
$(inst_rootsbindir)/%: $(objpfx)%
$(do-install-program)
endif
ifdef install-sbin
$(addprefix $(sbindir)/,$(install-sbin)): $(sbindir)/%: $(objpfx)%
$(addprefix $(inst_sbindir)/,$(install-sbin)): $(inst_sbindir)/%: $(objpfx)%
$(do-install-program)
endif
ifdef install-lib
install-lib.a := $(filter lib%.a,$(install-lib))
install-lib-non.a := $(filter-out lib%.a,$(install-lib))
ifdef install-lib-non.a
$(addprefix $(libdir)/$(libprefix),$(install-lib-non.a)): \
$(libdir)/$(libprefix)%: $(objpfx)%
$(addprefix $(inst_libdir)/$(libprefix),$(install-lib-non.a)): \
$(inst_libdir)/$(libprefix)%: $(objpfx)%
$(do-install)
endif
ifdef install-lib.a
$(install-lib.a:lib%.a=$(libdir)/lib$(libprefix)%.a): \
$(libdir)/lib$(libprefix)%.a: $(objpfx)lib%.a
$(install-lib.a:lib%.a=$(inst_libdir)/lib$(libprefix)%.a): \
$(inst_libdir)/lib$(libprefix)%.a: $(objpfx)lib%.a
$(do-install)
$(patsubst %,$(RANLIB) $@,$(filter-out $(non-lib.a),$(<F)))
endif
endif
ifdef install-data
$(addprefix $(datadir)/,$(install-data)): $(datadir)/%: %;$(do-install)
$(addprefix $(inst_datadir)/,$(install-data)): $(inst_datadir)/%: %;
$(do-install)
endif
headers := $(strip $(headers))
ifdef headers
$(addprefix $(includedir)/,$(headers)): \
$(includedir)/%: %;$(do-install)
$(addprefix $(inst_includedir)/,$(headers)): $(inst_includedir)/%: %;
$(do-install)
endif # headers
.PHONY: install-bin-nosubdir install-sbin-nosubdir install-lib-nosubdir \
install-data-nosubdir install-headers-nosubdir
install-bin-nosubdir: $(addprefix $(bindir)/,$(install-bin))
install-sbin-nosubdir: $(addprefix $(sbindir)/,$(install-sbin))
install-lib-nosubdir: $(addprefix $(libdir)/,\
.PHONY: install-bin-nosubdir install-rootsbin-nosubdir install-sbin-nosubdir \
install-lib-nosubdir install-data-nosubdir install-headers-nosubdir
install-bin-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin))
install-rootsbin-nosubdir: \
$(addprefix $(inst_rootsbindir)/,$(install-rootsbin))
install-sbin-nosubdir: $(addprefix $(inst_sbindir)/,$(install-sbin))
install-lib-nosubdir: $(addprefix $(inst_libdir)/,\
$(patsubst lib%.a,lib$(libprefix)%.a,$(install-lib.a)) \
$(addprefix $(libprefix),$(install-lib-non.a)))
install-data-nosubdir: $(addprefix $(datadir)/,$(install-data))
install-headers-nosubdir: $(addprefix $(includedir)/,$(headers))
install-data-nosubdir: $(addprefix $(inst_datadir)/,$(install-data))
install-headers-nosubdir: $(addprefix $(inst_includedir)/,$(headers))
install-others-nosubdir: $(install-others)
# We need all the `-nosubdir' targets so that `install' in the parent
@@ -759,7 +792,8 @@ install-%:: install-%-nosubdir ;
.PHONY: install install-no-libc.a-nosubdir
install-no-libc.a-nosubdir: install-headers-nosubdir install-data-nosubdir\
install-bin-nosubdir install-lib-nosubdir \
install-others-nosubdir install-sbin-nosubdir
install-others-nosubdir install-rootsbin-nosubdir \
install-sbin-nosubdir
install: install-no-libc.a-nosubdir
# Command to compile $< in $(objdir) using the native libraries.
@@ -818,6 +852,7 @@ endef
# Also remove the dependencies and generated source files.
common-clean: common-mostlyclean
-rm -f $(addprefix $(objpfx),$(generated)) $(+depfiles)
-rm -fr $(addprefix $(objpfx),$(generated-dirs))
-rm -f $(addprefix $(common-objpfx),$(common-generated))
-rm -f $(common-objpfx)distinfo-$(subdir)
+95 -24
View File
@@ -1,9 +1,11 @@
GNU C Library NEWS -- history of user-visible changes. 25 August 1996
GNU C Library NEWS -- history of user-visible changes. 26 January 1997
Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
Copyright (C) 1992, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports to bug-glibc@prep.ai.mit.edu.
Please send GNU C library bug reports using the `glibcbug' script to
<bugs@gnu.ai.mit.edu>. Questions and suggestions should be send to
<bug-glibc@prep.ai.mit.edu>.
Version 2.0
@@ -34,7 +36,9 @@ Version 2.0
are enabled, the new library `-ldl' is available for arbitrary run-time
loading of shared objects; its interface is defined in <dlfcn.h>. The
new header file <link.h> gives access to the internals of the run-time
dynamic linker, `ld.so'.
dynamic linker, `ld.so'. The shell script `ldd' is similar to the
application of same name on other systems and it provides information
about dynamically linked binaries.
* The C library now provides the run-time support code for profiling
executables compiled with `-pg'. Programs can control the profiling code
@@ -43,18 +47,22 @@ Version 2.0
the support for this file format was contributed by David Mosberger-Tang.
* The math code has been replaced with a math library based on fdlibm from
Sun, and modified by JT Conklin with i387 support and by Ian Taylor with
`float' functions. The math functions now reside in a separate library,
so programs using them will need to use `-lm' their linking commands.
Sun, and modified by JT Conklin and Ulrich Drepper with i387 support, by
Ian Taylor with `float' functions and by Ulrich Drepper with `long double'
functions. The math functions now reside in a separate library, so
programs using them will need to use `-lm' their linking commands.
* John C. Bowman contributed optimized ix87 assembler inline functions.
* Ulrich Drepper has contributed support for an `/etc/nsswitch.conf'
mechanism similar to that found in Solaris 2. This is now used for the
group, passwd, hosts, networks, services, protocols, and rpc databases.
The `nsswitch.conf' file controls what services are used for each
individual database. This works by loading shared libraries with names
specified in `nsswitch.conf', so service modules can be changed or added at
any time without even relinking any program. A future release of the
separate NYS package will provide NIS/YP and NIS+ modules for this interface.
group, passwd, hosts, networks, services, protocols, rpc, ethers,
shadow, netgroup, publickey, and alias databases. The `nsswitch.conf'
file controls what services are used for each individual database. This
works by loading shared libraries with names specified in `nsswitch.conf',
so service modules can be changed or added at any time without even
relinking any program. Currently there are the file, db, and NIS based
NSS services available.
* The new functions `strtoq' and `strtouq' parse integer values from
strings, like `strtol' and `strtoul', but they return `long long int' and
@@ -69,13 +77,25 @@ Version 2.0
`strtod', `strtof', and `strtold'. These new functions are perfectly
accurate, and much faster than the old ones.
* The implementation of the POSIX locale model was completely rewritten by
Ulrich Drepper. This includes the new programs `localedef' and `locale'
to compile the POSIX locale definition.
* The former dummy implementations of the strcoll and strxfrm function are
now replaced by fully functional code contributed by Ulrich Drepper. The
collation information comes from the POSIX locale definitions.
* The new header <langinfo.h> defines an interface for accessing
various locale-dependent data (using the locale chosen with `setlocale').
* Ulrich Drepper has contributed a new suite of functions for operation on
wide-character and multibyte-character strings, in <wcstr.h> and <mbstr.h>;
wide-character and multibyte-character strings, in <wchar.h>;
and classification and case conversion of wide characters, in <wctype.h>.
These new functions are intended to conform to the ISO C specification.
These new functions are conforming to the ISO C, Amendement 1 specification.
* There is now a second implementation of the standard I/O library available.
It comes from GNU libg++ as was written by Per Bothner, heavily modified
by Hongjiu Lu and made thread safe by Ulrich Drepper.
* You can now use positional parameter specifications in format strings
for the `printf' and `scanf' families of functions. For example,
@@ -104,7 +124,9 @@ Version 2.0
* The new header file <fts.h> and suite of functions simplify programs that
operate on directory trees. This code comes from 4.4 BSD.
* The resolver code has been updated from the BIND 4.9.5-T4B release.
* The resolver code has been updated from the BIND 4.9.5-P1 release.
Parts of the code were heavily modified by Ulrich Drepper to fit in the
NSS scheme used in glibc.
* The new function `malloc_find_object_address' finds the starting address
of a malloc'd block, given any address within the block;
@@ -132,7 +154,9 @@ Version 2.0
* The new functions `ecvt', `fcvt', and `gcvt' provide an obsolete interface
for formatting floating-point numbers. They are provided only for
compatibility; new programs should use `sprintf' instead.
compatibility; new programs should use `sprintf' instead. There are
also equivalent function for the `long double' floating-point type and
all functions also exist in a reentrant form.
* The new auxiliary library `-lutil' from 4.4 BSD contains various
functions for maintaining the login-record files (primarily of use to
@@ -156,13 +180,17 @@ Version 2.0
* Ulrich Drepper has updated the Linux-specific code, based largely
on work done in Hongjiu Lu's version of GNU libc for Linux.
The GNU library now supports Linux versions 1.3.29 and later,
using the ELF object file format (i[345]86-*-linux).
The GNU library now supports Linux versions 2.0.10 and later,
using the ELF object file format (i[3456]86-*-linux).
* Andreas Schwab has ported the C library to Linux/m68k (m68k-*-linux).
* David Mosberger-Tang has ported the C library to Linux/Alpha (alpha-*-linux).
Richard Henderson contributed the dynamic linking support for ELF/Alpha.
* David Mosberger-Tang and Richard Henderson have ported the C library
to Linux/Alpha (alpha-*-linux). Richard Henderson contributed the
dynamic linking support for ELF/Alpha.
* Richard Henderson contributed several Alpha optimized assembler function
for arithmetic and string handling.
* Ulrich Drepper has contributed a new set of message catalog functions to
support multiple languages using the <libintl.h> interface, for use with
@@ -190,7 +218,7 @@ Version 2.0
`struct sockaddr *' type, does not generate a type-clash warning.
* New function `error' declared in header file <error.h> is a convenient
function for printing error messages and optionally exitting; this is the
function for printing error messages and optionally exiting; this is the
canonical function used in GNU programs. The new functions `err', `warn',
and friends in header file <err.h> are the canonical 4.4 BSD interface for
doing the same thing.
@@ -199,20 +227,23 @@ Version 2.0
POSIX.2 `glob' function to do ~ and {...} expansion.
* New function `unsetenv' complements `setenv' for compatibility with 4.4 BSD.
`clearenv' which is used in POSIX.9 is also available.
* New function `getsid' returns session ID number on systems that support it.
* We have incorporated the 4.4 BSD `db' library (version 1.85). New header
files <db.h> and <mpool.h> provide a rich set of functions for several
types of simple databases stored in memory and in files, and <ndbm.h> is
an old `ndbm'-compatbile interface using the `db' functions. Link with
an old `ndbm'-compatible interface using the `db' functions. Link with
`-ldb' to get these functions.
* New macro `strdupa' copies a string like `strdup', but uses local stack
space from `alloca' instead of dynamic heap space from `malloc'.
* New function `strnlen' is like `strlen' but searches only a given maximum
number of characters for the null terminator.
number of characters for the null terminator. `stpncpy', `strndup' and
`strndupa' are similar variants for the `stpcpy', `strdup' and `strdupa'
function.
* New function `statfs' in header <sys/statfs.h>.
@@ -222,6 +253,46 @@ Version 2.0
* A new suite of functions in <utmp.h> handle all the details of reading
and writing the utmp file.
* An implementation of the NIS/YP(tm) based NSS service was contributed by
Thorsten Kukuk.
* Paul Eggert and Ulrich Drepper modified the `strftime' function to be
completely POSIX compliant and also implemented the extended functionality
to handle alternate digit representation and alternate era date formats.
* Ulrich Drepper provided an implementation of the `strptime' function
defined in XPG4.2 which transforms a string into a `struct tm' value.
* Paul Eggert provided the tzselect shell script as part of the timezone
code. The shell script makes it easy to select the correct timezone
specification.
* The implementation of the malloc family of functions is completely replaced
by a new implementation by Doug Lea with many improvements by Wolfram Gloger.
The implementation uses the mmap function (if available) and it is
optimized for the use in multi threaded programs.
* Ulrich Drepper contributed a MD5 "encryption" for the crypt family of
functions. This new functionality is usable by specifying a special
salt string and it is compatible with implementation on *BSD systems.
* Lots of functions from the XPG4.2 standard were added by Ulrich Drepper:
`getsubopt' to handle second level command line options, `bsd_signal'
to access BSD style `signal' functionality, the obsolete `regexp' style
expression matcher.
* the `lchown' function is available on system which support this
functionality.
* The implementation of the shadow password handling function was contributed
by Ulrich Drepper.
* David Mosberger-Tang changed the SunRPC implementation to be 64bit safe.
* POSIX.1g support was added. The <sys/select.h> header is available,
`isfdtype' and `pselect' are implemented. Craig Metz contributed an
implementation of `getaddrinfo'.
Version 1.09
+32 -4
View File
@@ -53,12 +53,26 @@ self-contained way.
- Macro: _SVID_SOURCE
If you define this macro, functionality derived from SVID is
included as well as the ANSI C, POSIX.1, and POSIX.2 material.
included as well as the ANSI C, POSIX.1, POSIX.2, and X/Open
material.
- Macro: _XOPEN_SOURCE
If you define these macro, functionality described in the X/Open
Portability Guide is included. This is an superset of the POSIX.1
and POSIX.2 functionality and in fact `_POSIX_SOURCE' and
`_POSIX_C_SOURCE' get automatically be defined.
But as the great unifaction of all Unices there is also
functionality only available in BSD and SVID is included.
If the macro `_XOPEN_SOURCE_EXTENDED' is also defined, even more
functionality is available. The extra functions will make all
functions available which are necessary for the X/Open Unix brand.
- Macro: _GNU_SOURCE
If you define this macro, everything is included: ANSI C, POSIX.1,
POSIX.2, BSD, SVID, and GNU extensions. In the cases where POSIX.1
conflicts with BSD, the POSIX definitions take precedence.
POSIX.2, BSD, SVID, X/Open, and GNU extensions. In the cases where
POSIX.1 conflicts with BSD, the POSIX definitions take precedence.
If you want to get the full effect of `_GNU_SOURCE' but make the
BSD definitions take precedence over the POSIX definitions, use
@@ -73,9 +87,23 @@ self-contained way.
compiler or linker. *Note:* If you forget to do this, you may get
very strange errors at run time.
- Macro: _REENTRANT,_THREAD_SAFE
If you define one this macro, reentrant versions of several
functions get declared. Some of the functions are specified in
POSIX.1c but many others are only available on a few other systems
or are unique to GNU libc. The problem is that the
standardization of the thread safe C library interface still is
behind.
Unlike on some other systems no special version of the C library
must be used for linking. There is only one version but while
compiling this it must have been specified to compile as thread
safe.
We recommend you use `_GNU_SOURCE' in new programs. If you don't
specify the `-ansi' option to GCC and don't define any of these macros
explicitly, the effect is the same as defining `_GNU_SOURCE'.
explicitly, the effect is the same as defining `_POSIX_C_SOURCE' to 2
and `_POSIX_SOURCE', `_SVID_SOURCE', and `_BSD_SOURCE' to 1.
When you define a feature test macro to request a larger class of
features, it is harmless to define in addition a feature test macro for
+20 -19
View File
@@ -1,6 +1,6 @@
Open jobs for finishing GNU libc:
---------------------------------
Status: October 1996
Status: January 1997
If you have time and talent to take over any of the jobs below please
contact <bug-glibc@prep.ai.mit.edu>
@@ -10,6 +10,8 @@ contact <bug-glibc@prep.ai.mit.edu>
[ 1] Port to new platforms or test current version on formerly supported
platforms.
**** See http://www.gnu.org/software/libc/porting.html for more details.
[ 2] Test compliance with standards. If you have access to recent
standards (IEEE, ISO, ANSI, X/Open, ...) and/or test suites you
@@ -31,6 +33,8 @@ contact <bug-glibc@prep.ai.mit.edu>
Implementation idea: use some functions from bash.
**** Somebody is working on this. Help may or may not be appreciated.
[ 5] Write `long double' versions of the math functions. This should be
done in collaboration with the NetBSD and FreeBSD people.
@@ -74,27 +78,24 @@ contact <bug-glibc@prep.ai.mit.edu>
It is planed to do a complete rewrite.
[10] Add mmap() support to malloc().
Doug Lea's malloc implementation might give some ideas. Perhaps
switching completly to his implementation is an option if it
a) can work without mmap() support (not all system GNU libc
is running on have mmap)
b) is without mmap support at least as fast as the current
implementation
c) will be extended with the current hooks and additional functions
Please contact bug-glibc@prep.ai.mit.edu before starting to avoid
duplicated work.
[11] Write access function for netmasks, bootparams, publickey, automount,
and aliases databases for nss_files and nss_db module.
[10] Write access function for netmasks, bootparams, and automount
databases for nss_files and nss_db module.
The functions should be embedded in the nss scheme. This is not
hard and not all services must be supported at once.
[12] Rewrite utmp/wtmp functions to use database functions. This is much
[11] Rewrite utmp/wtmp functions to use database functions. This is much
better than the normal flat file format.
Please contact bug-glibc@prep.ai.mit.edu before starting to avoid
duplicated work.
**** There are plans for a new approach to this problem. Please contact
bug-glibc@prep.ai.mit.edu before starting to work.)
[12] Several more or less small functions have to be written:
+ tcgetid() and waitid() from XPG4.2
+ grantpt(), ptsname(), unlockpt() from XPG4.2
+ getdate() from XPG4.2
+ fmtmsg() from SVID
More information are available on request.
+24 -12
View File
@@ -1,4 +1,4 @@
This directory contains the version 1.96 test release of the GNU C Library.
This directory contains the version 2.0.1 test release of the GNU C Library.
Many bugs have been fixed since the last release.
Some bugs surely remain.
@@ -6,9 +6,9 @@ As of this release, the GNU C library is known to run on the following
configurations:
*-*-gnu GNU Hurd
i[3456]86-*-linux Linux-2.0 on Intel
m68k-*-linux Linux-2.0 on Motorola 680x0
alpha-*-linux Linux-2.0 on DEC Alpha
i[3456]86-*-linux-gnu Linux-2.0 on Intel
m68k-*-linux-gnu Linux-2.0 on Motorola 680x0
alpha-*-linux-gnu Linux-2.0 on DEC Alpha
Former releases of this library (version 1.09.1 and perhaps earlier
@@ -39,38 +39,50 @@ versions) used to run on the following configurations:
Whether this is still true for this release is unknown. Porting the
library is not hard. If you are interested in doing a port, please
get on the mailing list by sending electronic mail to
bug-glibc-request@prep.ai.mit.edu.
<bug-glibc-request@prep.ai.mit.edu>.
The GNU C library now includes Michael Glad's Ultra Fast Crypt, which
provides the Unix `crypt' function, plus some other entry points.
Because of the United States export restriction on DES implementations,
we are distributing this code separately from the rest of the C
library. There is an extra distribution tar file just for crypt; it is
called `glibc-1.96-crypt.tar.gz'. You can just unpack the crypt
called `glibc-crypt-2.0.1.tar.gz'. You can just unpack the crypt
distribution along with the rest of the C library and build; you can
also build the library without getting crypt. Users outside the USA
can get the crypt distribution via anonymous FTP from ftp.uni-c.dk
[129.142.6.74], or another archive site outside the USA. Archive
can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no
[129.240.64.21], or another archive site outside the USA. Archive
maintainers are encouraged to copy this distribution to their archives
outside the USA. Please get it from ftp.uni-c.dk; transferring this
outside the USA. Please get it from ftp.ifi.uio.no; transferring this
distribution from prep.ai.mit.edu (or any other site in the USA) to a
site outside the USA is in violation of US export laws.
Beside the separate crypt tar file there are some more add-ons which can be
used together with GNU libc. They are designed in a way to ease the
installation by integrating them in the libc source tree. Simply get the
add-ons you need and use the --enable-add-ons option of the `configure'
script to tell where the add-ons are found. Please read the FAQ file for
more details.
See the file INSTALL to find out how to configure, build, install, and port
the GNU C library.
the GNU C library. You might also consider reading the WWW pages for the
GNU libc at http://www.gnu.org/software/libc/libc.html.
The GNU C Library is completely documented by the Texinfo manual found
in the `manual/' subdirectory. The manual is still being updated and
contains some known errors and omissions; we regret that we do not have
the resources to work on the manual as much as we would like. Please
send comments on the manual to bug-glibc-manual@prep.ai.mit.edu, and
send comments on the manual to <bug-glibc-manual@prep.ai.mit.edu>, and
not to the library bug-reporting address.
The file NOTES contains a description of the feature-test macros used
in the GNU C library, explaining how you can tell the library what
facilities you want it to make available.
Send bug reports to bug-glibc@prep.ai.mit.edu.
We prefer to get bug reports sent using the `glibcbug' shell script which
is install together with the rest of the GNU libc to <bugs@gnu.ai.mit.edu>.
Simply run this shell script and fill in the information. Nevertheless
you can still send bug reports to <bug-glibc@prep.ai.mit.edu> as normal
electronic mails.
The GNU C Library is free software. See the file COPYING.LIB for copying
conditions.
+827
View File
@@ -27,3 +27,830 @@ s_atanl.c
s_erfl.c
s_expm1l.c
s_log1pl.c
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Methods
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arcsin
~~~~~~
* Since asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ...
* we approximate asin(x) on [0,0.5] by
* asin(x) = x + x*x^2*R(x^2)
* where
* R(x^2) is a rational approximation of (asin(x)-x)/x^3
* and its remez error is bounded by
* |(asin(x)-x)/x^3 - R(x^2)| < 2^(-58.75)
*
* For x in [0.5,1]
* asin(x) = pi/2-2*asin(sqrt((1-x)/2))
* Let y = (1-x), z = y/2, s := sqrt(z), and pio2_hi+pio2_lo=pi/2;
* then for x>0.98
* asin(x) = pi/2 - 2*(s+s*z*R(z))
* = pio2_hi - (2*(s+s*z*R(z)) - pio2_lo)
* For x<=0.98, let pio4_hi = pio2_hi/2, then
* f = hi part of s;
* c = sqrt(z) - f = (z-f*f)/(s+f) ...f+c=sqrt(z)
* and
* asin(x) = pi/2 - 2*(s+s*z*R(z))
* = pio4_hi+(pio4-2s)-(2s*z*R(z)-pio2_lo)
* = pio4_hi+(pio4-2f)-(2s*z*R(z)-(pio2_lo+2c))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arccos
~~~~~~
* Method :
* acos(x) = pi/2 - asin(x)
* acos(-x) = pi/2 + asin(x)
* For |x|<=0.5
* acos(x) = pi/2 - (x + x*x^2*R(x^2)) (see asin.c)
* For x>0.5
* acos(x) = pi/2 - (pi/2 - 2asin(sqrt((1-x)/2)))
* = 2asin(sqrt((1-x)/2))
* = 2s + 2s*z*R(z) ...z=(1-x)/2, s=sqrt(z)
* = 2f + (2c + 2s*z*R(z))
* where f=hi part of s, and c = (z-f*f)/(s+f) is the correction term
* for f so that f+c ~ sqrt(z).
* For x<-0.5
* acos(x) = pi - 2asin(sqrt((1-|x|)/2))
* = pi - 0.5*(s+s*z*R(z)), where z=(1-|x|)/2,s=sqrt(z)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
atan2
~~~~~
* Method :
* 1. Reduce y to positive by atan2(y,x)=-atan2(-y,x).
* 2. Reduce x to positive by (if x and y are unexceptional):
* ARG (x+iy) = arctan(y/x) ... if x > 0,
* ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
atan
~~~~
* Method
* 1. Reduce x to positive by atan(x) = -atan(-x).
* 2. According to the integer k=4t+0.25 chopped, t=x, the argument
* is further reduced to one of the following intervals and the
* arctangent of t is evaluated by the corresponding formula:
*
* [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...)
* [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) )
* [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) )
* [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) )
* [39/16,INF] atan(x) = atan(INF) + atan( -1/t )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
exp
~~~
* Method
* 1. Argument reduction:
* Reduce x to an r so that |r| <= 0.5*ln2 ~ 0.34658.
* Given x, find r and integer k such that
*
* x = k*ln2 + r, |r| <= 0.5*ln2.
*
* Here r will be represented as r = hi-lo for better
* accuracy.
*
* 2. Approximation of exp(r) by a special rational function on
* the interval [0,0.34658]:
* Write
* R(r**2) = r*(exp(r)+1)/(exp(r)-1) = 2 + r*r/6 - r**4/360 + ...
* We use a special Reme algorithm on [0,0.34658] to generate
* a polynomial of degree 5 to approximate R. The maximum error
* of this polynomial approximation is bounded by 2**-59. In
* other words,
* R(z) ~ 2.0 + P1*z + P2*z**2 + P3*z**3 + P4*z**4 + P5*z**5
* (where z=r*r, and the values of P1 to P5 are listed below)
* and
* | 5 | -59
* | 2.0+P1*z+...+P5*z - R(z) | <= 2
* | |
* The computation of exp(r) thus becomes
* 2*r
* exp(r) = 1 + -------
* R - r
* r*R1(r)
* = 1 + r + ----------- (for better accuracy)
* 2 - R1(r)
* where
* 2 4 10
* R1(r) = r - (P1*r + P2*r + ... + P5*r ).
*
* 3. Scale back to obtain exp(x):
* From step 1, we have
* exp(x) = 2^k * exp(r)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hypot
~~~~~
* If (assume round-to-nearest) z=x*x+y*y
* has error less than sqrt(2)/2 ulp, than
* sqrt(z) has error less than 1 ulp (exercise).
*
* So, compute sqrt(x*x+y*y) with some care as
* follows to get the error below 1 ulp:
*
* Assume x>y>0;
* (if possible, set rounding to round-to-nearest)
* 1. if x > 2y use
* x1*x1+(y*y+(x2*(x+x1))) for x*x+y*y
* where x1 = x with lower 32 bits cleared, x2 = x-x1; else
* 2. if x <= 2y use
* t1*y1+((x-y)*(x-y)+(t1*y2+t2*y))
* where t1 = 2x with lower 32 bits cleared, t2 = 2x-t1,
* y1= y with lower 32 bits chopped, y2 = y-y1.
*
* NOTE: scaling may be necessary if some argument is too
* large or too tiny
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
j0/y0
~~~~~
* Method -- j0(x):
* 1. For tiny x, we use j0(x) = 1 - x^2/4 + x^4/64 - ...
* 2. Reduce x to |x| since j0(x)=j0(-x), and
* for x in (0,2)
* j0(x) = 1-z/4+ z^2*R0/S0, where z = x*x;
* (precision: |j0-1+z/4-z^2R0/S0 |<2**-63.67 )
* for x in (2,inf)
* j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0))
* where x0 = x-pi/4. It is better to compute sin(x0),cos(x0)
* as follow:
* cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
* = 1/sqrt(2) * (cos(x) + sin(x))
* sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4)
* = 1/sqrt(2) * (sin(x) - cos(x))
* (To avoid cancellation, use
* sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
* to compute the worse one.)
*
* Method -- y0(x):
* 1. For x<2.
* Since
* y0(x) = 2/pi*(j0(x)*(ln(x/2)+Euler) + x^2/4 - ...)
* therefore y0(x)-2/pi*j0(x)*ln(x) is an even function.
* We use the following function to approximate y0,
* y0(x) = U(z)/V(z) + (2/pi)*(j0(x)*ln(x)), z= x^2
* where
* U(z) = u00 + u01*z + ... + u06*z^6
* V(z) = 1 + v01*z + ... + v04*z^4
* with absolute approximation error bounded by 2**-72.
* Note: For tiny x, U/V = u0 and j0(x)~1, hence
* y0(tiny) = u0 + (2/pi)*ln(tiny), (choose tiny<2**-27)
* 2. For x>=2.
* y0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)+q0(x)*sin(x0))
* where x0 = x-pi/4. It is better to compute sin(x0),cos(x0)
* by the method mentioned above.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
j1/y1
~~~~~
* Method -- j1(x):
* 1. For tiny x, we use j1(x) = x/2 - x^3/16 + x^5/384 - ...
* 2. Reduce x to |x| since j1(x)=-j1(-x), and
* for x in (0,2)
* j1(x) = x/2 + x*z*R0/S0, where z = x*x;
* (precision: |j1/x - 1/2 - R0/S0 |<2**-61.51 )
* for x in (2,inf)
* j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x1)-q1(x)*sin(x1))
* y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
* where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
* as follow:
* cos(x1) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
* = 1/sqrt(2) * (sin(x) - cos(x))
* sin(x1) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
* = -1/sqrt(2) * (sin(x) + cos(x))
* (To avoid cancellation, use
* sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
* to compute the worse one.)
*
* Method -- y1(x):
* 1. screen out x<=0 cases: y1(0)=-inf, y1(x<0)=NaN
* 2. For x<2.
* Since
* y1(x) = 2/pi*(j1(x)*(ln(x/2)+Euler)-1/x-x/2+5/64*x^3-...)
* therefore y1(x)-2/pi*j1(x)*ln(x)-1/x is an odd function.
* We use the following function to approximate y1,
* y1(x) = x*U(z)/V(z) + (2/pi)*(j1(x)*ln(x)-1/x), z= x^2
* where for x in [0,2] (abs err less than 2**-65.89)
* U(z) = U0[0] + U0[1]*z + ... + U0[4]*z^4
* V(z) = 1 + v0[0]*z + ... + v0[4]*z^5
* Note: For tiny x, 1/x dominate y1 and hence
* y1(tiny) = -2/pi/tiny, (choose tiny<2**-54)
* 3. For x>=2.
* y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
* where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
* by method mentioned above.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jn/yn
~~~~~
* Note 2. About jn(n,x), yn(n,x)
* For n=0, j0(x) is called,
* for n=1, j1(x) is called,
* for n<x, forward recursion us used starting
* from values of j0(x) and j1(x).
* for n>x, a continued fraction approximation to
* j(n,x)/j(n-1,x) is evaluated and then backward
* recursion is used starting from a supposed value
* for j(n,x). The resulting value of j(0,x) is
* compared with the actual value to correct the
* supposed value of j(n,x).
*
* yn(n,x) is similar in all respects, except
* that forward recursion is used for all
* values of n>1.
jn:
/* (x >> n**2)
* Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
* Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
* Let s=sin(x), c=cos(x),
* xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
*
* n sin(xn)*sqt2 cos(xn)*sqt2
* ----------------------------------
* 0 s-c c+s
* 1 -s-c -c+s
* 2 -s+c -c-s
* 3 s+c c-s
...
/* x is tiny, return the first Taylor expansion of J(n,x)
* J(n,x) = 1/n!*(x/2)^n - ...
...
/* use backward recurrence */
/* x x^2 x^2
* J(n,x)/J(n-1,x) = ---- ------ ------ .....
* 2n - 2(n+1) - 2(n+2)
*
* 1 1 1
* (for large x) = ---- ------ ------ .....
* 2n 2(n+1) 2(n+2)
* -- - ------ - ------ -
* x x x
*
* Let w = 2n/x and h=2/x, then the above quotient
* is equal to the continued fraction:
* 1
* = -----------------------
* 1
* w - -----------------
* 1
* w+h - ---------
* w+2h - ...
*
* To determine how many terms needed, let
* Q(0) = w, Q(1) = w(w+h) - 1,
* Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
* When Q(k) > 1e4 good for single
* When Q(k) > 1e9 good for double
* When Q(k) > 1e17 good for quadruple
...
/* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
* Hence, if n*(log(2n/x)) > ...
* single 8.8722839355e+01
* double 7.09782712893383973096e+02
* long double 1.1356523406294143949491931077970765006170e+04
* then recurrent value may overflow and the result is
* likely underflow to zero
yn:
/* (x >> n**2)
* Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
* Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
* Let s=sin(x), c=cos(x),
* xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
*
* n sin(xn)*sqt2 cos(xn)*sqt2
* ----------------------------------
* 0 s-c c+s
* 1 -s-c -c+s
* 2 -s+c -c-s
* 3 s+c c-s
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lgamma
~~~~~~
* Method:
* 1. Argument Reduction for 0 < x <= 8
* Since gamma(1+s)=s*gamma(s), for x in [0,8], we may
* reduce x to a number in [1.5,2.5] by
* lgamma(1+s) = log(s) + lgamma(s)
* for example,
* lgamma(7.3) = log(6.3) + lgamma(6.3)
* = log(6.3*5.3) + lgamma(5.3)
* = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3)
* 2. Polynomial approximation of lgamma around its
* minimun ymin=1.461632144968362245 to maintain monotonicity.
* On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use
* Let z = x-ymin;
* lgamma(x) = -1.214862905358496078218 + z^2*poly(z)
* where
* poly(z) is a 14 degree polynomial.
* 2. Rational approximation in the primary interval [2,3]
* We use the following approximation:
* s = x-2.0;
* lgamma(x) = 0.5*s + s*P(s)/Q(s)
* with accuracy
* |P/Q - (lgamma(x)-0.5s)| < 2**-61.71
* Our algorithms are based on the following observation
*
* zeta(2)-1 2 zeta(3)-1 3
* lgamma(2+s) = s*(1-Euler) + --------- * s - --------- * s + ...
* 2 3
*
* where Euler = 0.5771... is the Euler constant, which is very
* close to 0.5.
*
* 3. For x>=8, we have
* lgamma(x)~(x-0.5)log(x)-x+0.5*log(2pi)+1/(12x)-1/(360x**3)+....
* (better formula:
* lgamma(x)~(x-0.5)*(log(x)-1)-.5*(log(2pi)-1) + ...)
* Let z = 1/x, then we approximation
* f(z) = lgamma(x) - (x-0.5)(log(x)-1)
* by
* 3 5 11
* w = w0 + w1*z + w2*z + w3*z + ... + w6*z
* where
* |w - f(z)| < 2**-58.74
*
* 4. For negative x, since (G is gamma function)
* -x*G(-x)*G(x) = pi/sin(pi*x),
* we have
* G(x) = pi/(sin(pi*x)*(-x)*G(-x))
* since G(-x) is positive, sign(G(x)) = sign(sin(pi*x)) for x<0
* Hence, for x<0, signgam = sign(sin(pi*x)) and
* lgamma(x) = log(|Gamma(x)|)
* = log(pi/(|x*sin(pi*x)|)) - lgamma(-x);
* Note: one should avoid compute pi*(-x) directly in the
* computation of sin(pi*(-x)).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
log
~~~
* Method :
* 1. Argument Reduction: find k and f such that
* x = 2^k * (1+f),
* where sqrt(2)/2 < 1+f < sqrt(2) .
*
* 2. Approximation of log(1+f).
* Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s)
* = 2s + 2/3 s**3 + 2/5 s**5 + .....,
* = 2s + s*R
* We use a special Reme algorithm on [0,0.1716] to generate
* a polynomial of degree 14 to approximate R The maximum error
* of this polynomial approximation is bounded by 2**-58.45. In
* other words,
* 2 4 6 8 10 12 14
* R(z) ~ Lg1*s +Lg2*s +Lg3*s +Lg4*s +Lg5*s +Lg6*s +Lg7*s
* (the values of Lg1 to Lg7 are listed in the program)
* and
* | 2 14 | -58.45
* | Lg1*s +...+Lg7*s - R(z) | <= 2
* | |
* Note that 2s = f - s*f = f - hfsq + s*hfsq, where hfsq = f*f/2.
* In order to guarantee error in log below 1ulp, we compute log
* by
* log(1+f) = f - s*(f - R) (if f is not too large)
* log(1+f) = f - (hfsq - s*(hfsq+R)). (better accuracy)
*
* 3. Finally, log(x) = k*ln2 + log(1+f).
* = k*ln2_hi+(f-(hfsq-(s*(hfsq+R)+k*ln2_lo)))
* Here ln2 is split into two floating point number:
* ln2_hi + ln2_lo,
* where n*ln2_hi is always exact for |n| < 2000.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
log10
~~~~~
* Method :
* Let log10_2hi = leading 40 bits of log10(2) and
* log10_2lo = log10(2) - log10_2hi,
* ivln10 = 1/log(10) rounded.
* Then
* n = ilogb(x),
* if(n<0) n = n+1;
* x = scalbn(x,-n);
* log10(x) := n*log10_2hi + (n*log10_2lo + ivln10*log(x))
*
* Note 1:
* To guarantee log10(10**n)=n, where 10**n is normal, the rounding
* mode must set to Round-to-Nearest.
* Note 2:
* [1/log(10)] rounded to 53 bits has error .198 ulps;
* log10 is monotonic at all binary break points.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pow
~~~
* Method: Let x = 2 * (1+f)
* 1. Compute and return log2(x) in two pieces:
* log2(x) = w1 + w2,
* where w1 has 53-24 = 29 bit trailing zeros.
* 2. Perform y*log2(x) = n+y' by simulating muti-precision
* arithmetic, where |y'|<=0.5.
* 3. Return x**y = 2**n*exp(y'*log2)
*
* Special cases:
* 1. (anything) ** 0 is 1
* 2. (anything) ** 1 is itself
* 3. (anything) ** NAN is NAN
* 4. NAN ** (anything except 0) is NAN
* 5. +-(|x| > 1) ** +INF is +INF
* 6. +-(|x| > 1) ** -INF is +0
* 7. +-(|x| < 1) ** +INF is +0
* 8. +-(|x| < 1) ** -INF is +INF
* 9. +-1 ** +-INF is NAN
* 10. +0 ** (+anything except 0, NAN) is +0
* 11. -0 ** (+anything except 0, NAN, odd integer) is +0
* 12. +0 ** (-anything except 0, NAN) is +INF
* 13. -0 ** (-anything except 0, NAN, odd integer) is +INF
* 14. -0 ** (odd integer) = -( +0 ** (odd integer) )
* 15. +INF ** (+anything except 0,NAN) is +INF
* 16. +INF ** (-anything except 0,NAN) is +0
* 17. -INF ** (anything) = -0 ** (-anything)
* 18. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer)
* 19. (-anything except 0 and inf) ** (non-integer) is NAN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rem_pio2 return the remainder of x rem pi/2 in y[0]+y[1]
~~~~~~~~
This is one of the basic functions which is written with highest accuracy
in mind.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sinh
~~~~
* Method :
* mathematically sinh(x) if defined to be (exp(x)-exp(-x))/2
* 1. Replace x by |x| (sinh(-x) = -sinh(x)).
* 2.
* E + E/(E+1)
* 0 <= x <= 22 : sinh(x) := --------------, E=expm1(x)
* 2
*
* 22 <= x <= lnovft : sinh(x) := exp(x)/2
* lnovft <= x <= ln2ovft: sinh(x) := exp(x/2)/2 * exp(x/2)
* ln2ovft < x : sinh(x) := x*shuge (overflow)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sqrt
~~~~
* Method:
* Bit by bit method using integer arithmetic. (Slow, but portable)
* 1. Normalization
* Scale x to y in [1,4) with even powers of 2:
* find an integer k such that 1 <= (y=x*2^(2k)) < 4, then
* sqrt(x) = 2^k * sqrt(y)
* 2. Bit by bit computation
* Let q = sqrt(y) truncated to i bit after binary point (q = 1),
* i 0
* i+1 2
* s = 2*q , and y = 2 * ( y - q ). (1)
* i i i i
*
* To compute q from q , one checks whether
* i+1 i
*
* -(i+1) 2
* (q + 2 ) <= y. (2)
* i
* -(i+1)
* If (2) is false, then q = q ; otherwise q = q + 2 .
* i+1 i i+1 i
*
* With some algebric manipulation, it is not difficult to see
* that (2) is equivalent to
* -(i+1)
* s + 2 <= y (3)
* i i
*
* The advantage of (3) is that s and y can be computed by
* i i
* the following recurrence formula:
* if (3) is false
*
* s = s , y = y ; (4)
* i+1 i i+1 i
*
* otherwise,
* -i -(i+1)
* s = s + 2 , y = y - s - 2 (5)
* i+1 i i+1 i i
*
* One may easily use induction to prove (4) and (5).
* Note. Since the left hand side of (3) contain only i+2 bits,
* it does not necessary to do a full (53-bit) comparison
* in (3).
* 3. Final rounding
* After generating the 53 bits result, we compute one more bit.
* Together with the remainder, we can decide whether the
* result is exact, bigger than 1/2ulp, or less than 1/2ulp
* (it will never equal to 1/2ulp).
* The rounding mode can be detected by checking whether
* huge + tiny is equal to huge, and whether huge - tiny is
* equal to huge for some floating point number "huge" and "tiny".
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cos
~~~
* kernel cos function on [-pi/4, pi/4], pi/4 ~ 0.785398164
* Input x is assumed to be bounded by ~pi/4 in magnitude.
* Input y is the tail of x.
*
* Algorithm
* 1. Since cos(-x) = cos(x), we need only to consider positive x.
* 2. if x < 2^-27 (hx<0x3e400000 0), return 1 with inexact if x!=0.
* 3. cos(x) is approximated by a polynomial of degree 14 on
* [0,pi/4]
* 4 14
* cos(x) ~ 1 - x*x/2 + C1*x + ... + C6*x
* where the remez error is
*
* | 2 4 6 8 10 12 14 | -58
* |cos(x)-(1-.5*x +C1*x +C2*x +C3*x +C4*x +C5*x +C6*x )| <= 2
* | |
*
* 4 6 8 10 12 14
* 4. let r = C1*x +C2*x +C3*x +C4*x +C5*x +C6*x , then
* cos(x) = 1 - x*x/2 + r
* since cos(x+y) ~ cos(x) - sin(x)*y
* ~ cos(x) - x*y,
* a correction term is necessary in cos(x) and hence
* cos(x+y) = 1 - (x*x/2 - (r - x*y))
* For better accuracy when x > 0.3, let qx = |x|/4 with
* the last 32 bits mask off, and if x > 0.78125, let qx = 0.28125.
* Then
* cos(x+y) = (1-qx) - ((x*x/2-qx) - (r-x*y)).
* Note that 1-qx and (x*x/2-qx) is EXACT here, and the
* magnitude of the latter is at least a quarter of x*x/2,
* thus, reducing the rounding error in the subtraction.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sin
~~~
* kernel sin function on [-pi/4, pi/4], pi/4 ~ 0.7854
* Input x is assumed to be bounded by ~pi/4 in magnitude.
* Input y is the tail of x.
* Input iy indicates whether y is 0. (if iy=0, y assume to be 0).
*
* Algorithm
* 1. Since sin(-x) = -sin(x), we need only to consider positive x.
* 2. if x < 2^-27 (hx<0x3e400000 0), return x with inexact if x!=0.
* 3. sin(x) is approximated by a polynomial of degree 13 on
* [0,pi/4]
* 3 13
* sin(x) ~ x + S1*x + ... + S6*x
* where
*
* |sin(x) 2 4 6 8 10 12 | -58
* |----- - (1+S1*x +S2*x +S3*x +S4*x +S5*x +S6*x )| <= 2
* | x |
*
* 4. sin(x+y) = sin(x) + sin'(x')*y
* ~ sin(x) + (1-x*x/2)*y
* For better accuracy, let
* 3 2 2 2 2
* r = x *(S2+x *(S3+x *(S4+x *(S5+x *S6))))
* then 3 2
* sin(x) = x + (S1*x + (x *(r-y/2)+y))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tan
~~~
* kernel tan function on [-pi/4, pi/4], pi/4 ~ 0.7854
* Input x is assumed to be bounded by ~pi/4 in magnitude.
* Input y is the tail of x.
* Input k indicates whether tan (if k=1) or
* -1/tan (if k= -1) is returned.
*
* Algorithm
* 1. Since tan(-x) = -tan(x), we need only to consider positive x.
* 2. if x < 2^-28 (hx<0x3e300000 0), return x with inexact if x!=0.
* 3. tan(x) is approximated by a odd polynomial of degree 27 on
* [0,0.67434]
* 3 27
* tan(x) ~ x + T1*x + ... + T13*x
* where
*
* |tan(x) 2 4 26 | -59.2
* |----- - (1+T1*x +T2*x +.... +T13*x )| <= 2
* | x |
*
* Note: tan(x+y) = tan(x) + tan'(x)*y
* ~ tan(x) + (1+x*x)*y
* Therefore, for better accuracy in computing tan(x+y), let
* 3 2 2 2 2
* r = x *(T2+x *(T3+x *(...+x *(T12+x *T13))))
* then
* 3 2
* tan(x+y) = x + (T1*x + (x *(r+y)+y))
*
* 4. For x in [0.67434,pi/4], let y = pi/4 - x, then
* tan(x) = tan(pi/4-y) = (1-tan(y))/(1+tan(y))
* = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y)))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
atan
~~~~
* Method
* 1. Reduce x to positive by atan(x) = -atan(-x).
* 2. According to the integer k=4t+0.25 chopped, t=x, the argument
* is further reduced to one of the following intervals and the
* arctangent of t is evaluated by the corresponding formula:
*
* [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...)
* [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) )
* [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) )
* [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) )
* [39/16,INF] atan(x) = atan(INF) + atan( -1/t )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
erf
~~~
* x
* 2 |\
* erf(x) = --------- | exp(-t*t)dt
* sqrt(pi) \|
* 0
*
* erfc(x) = 1-erf(x)
* Note that
* erf(-x) = -erf(x)
* erfc(-x) = 2 - erfc(x)
*
* Method:
* 1. For |x| in [0, 0.84375]
* erf(x) = x + x*R(x^2)
* erfc(x) = 1 - erf(x) if x in [-.84375,0.25]
* = 0.5 + ((0.5-x)-x*R) if x in [0.25,0.84375]
* where R = P/Q where P is an odd poly of degree 8 and
* Q is an odd poly of degree 10.
* -57.90
* | R - (erf(x)-x)/x | <= 2
*
*
* Remark. The formula is derived by noting
* erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....)
* and that
* 2/sqrt(pi) = 1.128379167095512573896158903121545171688
* is close to one. The interval is chosen because the fix
* point of erf(x) is near 0.6174 (i.e., erf(x)=x when x is
* near 0.6174), and by some experiment, 0.84375 is chosen to
* guarantee the error is less than one ulp for erf.
*
* 2. For |x| in [0.84375,1.25], let s = |x| - 1, and
* c = 0.84506291151 rounded to single (24 bits)
* erf(x) = sign(x) * (c + P1(s)/Q1(s))
* erfc(x) = (1-c) - P1(s)/Q1(s) if x > 0
* 1+(c+P1(s)/Q1(s)) if x < 0
* |P1/Q1 - (erf(|x|)-c)| <= 2**-59.06
* Remark: here we use the taylor series expansion at x=1.
* erf(1+s) = erf(1) + s*Poly(s)
* = 0.845.. + P1(s)/Q1(s)
* That is, we use rational approximation to approximate
* erf(1+s) - (c = (single)0.84506291151)
* Note that |P1/Q1|< 0.078 for x in [0.84375,1.25]
* where
* P1(s) = degree 6 poly in s
* Q1(s) = degree 6 poly in s
*
* 3. For x in [1.25,1/0.35(~2.857143)],
* erfc(x) = (1/x)*exp(-x*x-0.5625+R1/S1)
* erf(x) = 1 - erfc(x)
* where
* R1(z) = degree 7 poly in z, (z=1/x^2)
* S1(z) = degree 8 poly in z
*
* 4. For x in [1/0.35,28]
* erfc(x) = (1/x)*exp(-x*x-0.5625+R2/S2) if x > 0
* = 2.0 - (1/x)*exp(-x*x-0.5625+R2/S2) if -6<x<0
* = 2.0 - tiny (if x <= -6)
* erf(x) = sign(x)*(1.0 - erfc(x)) if x < 6, else
* erf(x) = sign(x)*(1.0 - tiny)
* where
* R2(z) = degree 6 poly in z, (z=1/x^2)
* S2(z) = degree 7 poly in z
*
* Note1:
* To compute exp(-x*x-0.5625+R/S), let s be a single
* precision number and s := x; then
* -x*x = -s*s + (s-x)*(s+x)
* exp(-x*x-0.5626+R/S) =
* exp(-s*s-0.5625)*exp((s-x)*(s+x)+R/S);
* Note2:
* Here 4 and 5 make use of the asymptotic series
* exp(-x*x)
* erfc(x) ~ ---------- * ( 1 + Poly(1/x^2) )
* x*sqrt(pi)
* We use rational approximation to approximate
* g(s)=f(1/x^2) = log(erfc(x)*x) - x*x + 0.5625
* Here is the error bound for R1/S1 and R2/S2
* |R1/S1 - f(x)| < 2**(-62.57)
* |R2/S2 - f(x)| < 2**(-61.52)
*
* 5. For inf > x >= 28
* erf(x) = sign(x) *(1 - tiny) (raise inexact)
* erfc(x) = tiny*tiny (raise underflow) if x > 0
* = 2 - tiny if x<0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
expm1 Returns exp(x)-1, the exponential of x minus 1
~~~~~
* Method
* 1. Argument reduction:
* Given x, find r and integer k such that
*
* x = k*ln2 + r, |r| <= 0.5*ln2 ~ 0.34658
*
* Here a correction term c will be computed to compensate
* the error in r when rounded to a floating-point number.
*
* 2. Approximating expm1(r) by a special rational function on
* the interval [0,0.34658]:
* Since
* r*(exp(r)+1)/(exp(r)-1) = 2+ r^2/6 - r^4/360 + ...
* we define R1(r*r) by
* r*(exp(r)+1)/(exp(r)-1) = 2+ r^2/6 * R1(r*r)
* That is,
* R1(r**2) = 6/r *((exp(r)+1)/(exp(r)-1) - 2/r)
* = 6/r * ( 1 + 2.0*(1/(exp(r)-1) - 1/r))
* = 1 - r^2/60 + r^4/2520 - r^6/100800 + ...
* We use a special Reme algorithm on [0,0.347] to generate
* a polynomial of degree 5 in r*r to approximate R1. The
* maximum error of this polynomial approximation is bounded
* by 2**-61. In other words,
* R1(z) ~ 1.0 + Q1*z + Q2*z**2 + Q3*z**3 + Q4*z**4 + Q5*z**5
* where Q1 = -1.6666666666666567384E-2,
* Q2 = 3.9682539681370365873E-4,
* Q3 = -9.9206344733435987357E-6,
* Q4 = 2.5051361420808517002E-7,
* Q5 = -6.2843505682382617102E-9;
* (where z=r*r, and the values of Q1 to Q5 are listed below)
* with error bounded by
* | 5 | -61
* | 1.0+Q1*z+...+Q5*z - R1(z) | <= 2
* | |
*
* expm1(r) = exp(r)-1 is then computed by the following
* specific way which minimize the accumulation rounding error:
* 2 3
* r r [ 3 - (R1 + R1*r/2) ]
* expm1(r) = r + --- + --- * [--------------------]
* 2 2 [ 6 - r*(3 - R1*r/2) ]
*
* To compensate the error in the argument reduction, we use
* expm1(r+c) = expm1(r) + c + expm1(r)*c
* ~ expm1(r) + c + r*c
* Thus c+r*c will be added in as the correction terms for
* expm1(r+c). Now rearrange the term to avoid optimization
* screw up:
* ( 2 2 )
* ({ ( r [ R1 - (3 - R1*r/2) ] ) } r )
* expm1(r+c)~r - ({r*(--- * [--------------------]-c)-c} - --- )
* ({ ( 2 [ 6 - r*(3 - R1*r/2) ] ) } 2 )
* ( )
*
* = r - E
* 3. Scale back to obtain expm1(x):
* From step 1, we have
* expm1(x) = either 2^k*[expm1(r)+1] - 1
* = or 2^k*[expm1(r) + (1-2^-k)]
* 4. Implementation notes:
* (A). To save one multiplication, we scale the coefficient Qi
* to Qi*2^i, and replace z by (x^2)/2.
* (B). To achieve maximum accuracy, we compute expm1(x) by
* (i) if x < -56*ln2, return -1.0, (raise inexact if x!=inf)
* (ii) if k=0, return r-E
* (iii) if k=-1, return 0.5*(r-E)-0.5
* (iv) if k=1 if r < -0.25, return 2*((r+0.5)- E)
* else return 1.0+2.0*(r-E);
* (v) if (k<-2||k>56) return 2^k(1-(E-r)) - 1 (or exp(x)-1)
* (vi) if k <= 20, return 2^k((1-2^-k)-(E-r)), else
* (vii) return 2^k(1-((E+2^-k)-r))
*
* Special cases:
* expm1(INF) is INF, expm1(NaN) is NaN;
* expm1(-INF) is -1, and
* for finite argument, only expm1(0)=0 is exact.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
log1p
~~~~~
* Method :
* 1. Argument Reduction: find k and f such that
* 1+x = 2^k * (1+f),
* where sqrt(2)/2 < 1+f < sqrt(2) .
*
* Note. If k=0, then f=x is exact. However, if k!=0, then f
* may not be representable exactly. In that case, a correction
* term is need. Let u=1+x rounded. Let c = (1+x)-u, then
* log(1+x) - log(u) ~ c/u. Thus, we proceed to compute log(u),
* and add back the correction term c/u.
* (Note: when x > 2**53, one can simply return log(x))
*
* 2. Approximation of log1p(f).
* Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s)
* = 2s + 2/3 s**3 + 2/5 s**5 + .....,
* = 2s + s*R
* We use a special Reme algorithm on [0,0.1716] to generate
* a polynomial of degree 14 to approximate R The maximum error
* of this polynomial approximation is bounded by 2**-58.45. In
* other words,
* 2 4 6 8 10 12 14
* R(z) ~ Lp1*s +Lp2*s +Lp3*s +Lp4*s +Lp5*s +Lp6*s +Lp7*s
* (the values of Lp1 to Lp7 are listed in the program)
* and
* | 2 14 | -58.45
* | Lp1*s +...+Lp7*s - R(z) | <= 2
* | |
* Note that 2s = f - s*f = f - hfsq + s*hfsq, where hfsq = f*f/2.
* In order to guarantee error in log below 1ulp, we compute log
* by
* log1p(f) = f - (hfsq - s*(hfsq+R)).
*
* 3. Finally, log1p(x) = k*ln2 + log1p(f).
* = k*ln2_hi+(f-(hfsq-(s*(hfsq+R)+k*ln2_lo)))
* Here ln2 is split into two floating point number:
* ln2_hi + ln2_lo,
* where n*ln2_hi is always exact for |n| < 2000.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+23 -11
View File
@@ -6,9 +6,9 @@ As of this release, the GNU C library is known to run on the following
configurations:
*-*-gnu GNU Hurd
i[3456]86-*-linux Linux-2.0 on Intel
m68k-*-linux Linux-2.0 on Motorola 680x0
alpha-*-linux Linux-2.0 on DEC Alpha
i[3456]86-*-linux-gnu Linux-2.0 on Intel
m68k-*-linux-gnu Linux-2.0 on Motorola 680x0
alpha-*-linux-gnu Linux-2.0 on DEC Alpha
Former releases of this library (version 1.09.1 and perhaps earlier
@@ -39,38 +39,50 @@ versions) used to run on the following configurations:
Whether this is still true for this release is unknown. Porting the
library is not hard. If you are interested in doing a port, please
get on the mailing list by sending electronic mail to
bug-glibc-request@prep.ai.mit.edu.
<bug-glibc-request@prep.ai.mit.edu>.
The GNU C library now includes Michael Glad's Ultra Fast Crypt, which
provides the Unix `crypt' function, plus some other entry points.
Because of the United States export restriction on DES implementations,
we are distributing this code separately from the rest of the C
library. There is an extra distribution tar file just for crypt; it is
called `glibc-VERSION-crypt.tar.gz'. You can just unpack the crypt
called `glibc-crypt-VERSION.tar.gz'. You can just unpack the crypt
distribution along with the rest of the C library and build; you can
also build the library without getting crypt. Users outside the USA
can get the crypt distribution via anonymous FTP from ftp.uni-c.dk
[129.142.6.74], or another archive site outside the USA. Archive
can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no
[129.240.64.21], or another archive site outside the USA. Archive
maintainers are encouraged to copy this distribution to their archives
outside the USA. Please get it from ftp.uni-c.dk; transferring this
outside the USA. Please get it from ftp.ifi.uio.no; transferring this
distribution from prep.ai.mit.edu (or any other site in the USA) to a
site outside the USA is in violation of US export laws.
Beside the separate crypt tar file there are some more add-ons which can be
used together with GNU libc. They are designed in a way to ease the
installation by integrating them in the libc source tree. Simply get the
add-ons you need and use the --enable-add-ons option of the `configure'
script to tell where the add-ons are found. Please read the FAQ file for
more details.
See the file INSTALL to find out how to configure, build, install, and port
the GNU C library.
the GNU C library. You might also consider reading the WWW pages for the
GNU libc at http://www.gnu.org/software/libc/libc.html.
The GNU C Library is completely documented by the Texinfo manual found
in the `manual/' subdirectory. The manual is still being updated and
contains some known errors and omissions; we regret that we do not have
the resources to work on the manual as much as we would like. Please
send comments on the manual to bug-glibc-manual@prep.ai.mit.edu, and
send comments on the manual to <bug-glibc-manual@prep.ai.mit.edu>, and
not to the library bug-reporting address.
The file NOTES contains a description of the feature-test macros used
in the GNU C library, explaining how you can tell the library what
facilities you want it to make available.
Send bug reports to bug-glibc@prep.ai.mit.edu.
We prefer to get bug reports sent using the `glibcbug' shell script which
is install together with the rest of the GNU libc to <bugs@gnu.ai.mit.edu>.
Simply run this shell script and fill in the information. Nevertheless
you can still send bug reports to <bug-glibc@prep.ai.mit.edu> as normal
electronic mails.
The GNU C Library is free software. See the file COPYING.LIB for copying
conditions.
+3 -2
View File
@@ -39,7 +39,8 @@ export subdir := $(subdir)
all: objs lib others
others: $(addprefix $(objpfx),$(extra-objs) \
$(install-lib) $(install-bin) $(install-sbin))
$(install-lib) $(install-bin) \
$(install-rootsbin) $(install-sbin))
ifneq "$(findstring env,$(origin headers))" ""
headers :=
@@ -77,7 +78,7 @@ $(common-objpfx)empty.c:
cp -f /dev/null $@
common-generated := $(common-generated) dummy.o dummy.c empty.c empty.o
# This makes all the auxilliary and test programs.
# This makes all the auxiliary and test programs.
.PHONY: others tests
others: $(addprefix $(objpfx),$(others) $(extra-objs))
-1
View File
@@ -1 +0,0 @@
#include <misc/a.out.h>
+1
View File
@@ -0,0 +1 @@
#include <inet/aliases.h>
+4 -4
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 1994 Free Software Foundation, Inc.
# Copyright (C) 1991, 1994, 1997 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Sub-makefile for assert portion of the library.
+16 -15
View File
@@ -1,20 +1,20 @@
/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
This file is part of the GNU C Library.
/* Copyright (C) 1994, 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <stdio.h>
@@ -38,6 +38,7 @@ __assert_perror_fail (int errnum,
const char *file, unsigned int line,
const char *function)
{
char errbuf[1024];
#ifdef FATAL_PREPARE
FATAL_PREPARE;
#endif
@@ -48,7 +49,7 @@ __assert_perror_fail (int errnum,
__assert_program_name ? ": " : "",
file, line,
function ? function : "", function ? ": " : "",
strerror (errnum));
__strerror_r (errnum, errbuf, sizeof errbuf));
(void) fflush (stderr);
abort ();
+18 -21
View File
@@ -1,29 +1,28 @@
/* Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
This file is part of the GNU C Library.
/* Copyright (C) 1991, 1994, 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <ansidecl.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <sysdep.h>
CONST char *__assert_program_name;
const char *__assert_program_name;
/* This function, when passed a string containing an asserted
expression, a filename, and a line number, prints a message
@@ -36,9 +35,8 @@ CONST char *__assert_program_name;
#endif
void
DEFUN(__assert_fail, (assertion, file, line, function),
CONST char *assertion AND
CONST char *file AND unsigned int line AND CONST char *function)
__assert_fail (const char *assertion, const char *file, unsigned int line,
const char *function)
{
#ifdef FATAL_PREPARE
FATAL_PREPARE;
@@ -61,8 +59,7 @@ DEFUN(__assert_fail, (assertion, file, line, function),
#include <string.h>
static void
DEFUN(set_progname, (argc, argv, envp),
int argc AND char **argv AND char **envp)
set_progname (int argc, char **argv, char **envp)
{
char *p;
+12 -13
View File
@@ -1,23 +1,22 @@
# Copyright (C) 1994 Free Software Foundation, Inc.
# Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil),
# On-Line Applications Research Corporation.
#
# Copyright (C) 1994, 1997 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
#
# Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil),
# On-Line Applications Research Corporation.
#
# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
#
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
#
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
subdir := bare
@@ -33,11 +32,11 @@ include ../Rules
#
# For bare targets, the $(config-vendor) is the name of the board.
# We will place the board dependent code ONLY in a library which
# is board dependent. This way many target boards can share a
# is board dependent. This way many target boards can share a
# single libc.a. To resolve all symbols and successfully link
# a program, the application must link against libc.a and libMY_TARGET.a.
# For example, the target specific library for the Motorola MVME135
# board will be named libmvme135.a. To link a program for the
# For example, the target specific library for the Motorola MVME135
# board will be named libmvme135.a. To link a program for the
# MVME135, one must link against -lc and -lmvme135.
#
+28 -17
View File
@@ -1,23 +1,24 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <alloca.h>
#include <errno.h>
#include <nl_types.h>
#include <stdlib.h>
#include <string.h>
@@ -45,6 +46,7 @@ catopen (const char *cat_name, int flag)
if (result->cat_name == NULL)
{
free (result);
__set_errno (ENOMEM);
return (nl_catd) -1;
}
@@ -76,6 +78,7 @@ catopen (const char *cat_name, int flag)
{
free ((void *) result->cat_name);
free ((void *) result);
__set_errno (ENOMEM);
return (nl_catd) -1;
}
@@ -89,6 +92,7 @@ catopen (const char *cat_name, int flag)
free ((void *) result->cat_name);
free ((void *) result->env_var);
free ((void *) result);
__set_errno (ENOMEM);
return (nl_catd) -1;
}
}
@@ -120,7 +124,10 @@ catgets (nl_catd catalog_desc, int set, int message, const char *string)
__open_catalog (catalog, 1);
if (catalog->status == nonexisting)
return (char *) string;
{
__set_errno (EBADF);
return (char *) string;
}
idx = ((set * message) % catalog->plane_size) * 3;
cnt = 0;
@@ -134,6 +141,7 @@ catgets (nl_catd catalog_desc, int set, int message, const char *string)
}
while (++cnt < catalog->plane_depth);
__set_errno (ENOMSG);
return (char *) string;
}
@@ -146,12 +154,15 @@ catclose (nl_catd catalog_desc)
catalog = (__nl_catd) catalog_desc;
if (catalog->status == mmaped)
if (catalog->status == mmapped)
munmap ((void *) catalog->file_ptr, catalog->file_size);
else if (catalog->status == malloced)
free ((void *) catalog->file_ptr);
else if (catalog->status != closed && catalog->status != nonexisting)
return -1;
{
__set_errno (EBADF);
return -1;
}
if (catalog->nlspath)
free ((void *) catalog->nlspath);
+15 -15
View File
@@ -1,21 +1,21 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sys/types.h>
@@ -34,7 +34,7 @@ struct catalog_obj
/* This structure will be filled after loading the catalog. */
typedef struct catalog_info
{
enum { closed, nonexisting, mmaped, malloced } status;
enum { closed, nonexisting, mmapped, malloced } status;
const char *cat_name;
const char *env_var;
+22 -21
View File
@@ -1,21 +1,21 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
@@ -141,7 +141,7 @@ main (int argc, char *argv[])
header_name = NULL;
result = NULL;
while ((opt = getopt_long (argc, argv, "hH:o:V", long_options, NULL)) != EOF)
while ((opt = getopt_long (argc, argv, "hH:o:V", long_options, NULL)) != -1)
switch (opt)
{
case '\0': /* Long option. */
@@ -170,7 +170,7 @@ main (int argc, char *argv[])
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
"), "1996");
"), "1996, 1997");
printf (_("Written by %s.\n"), "Ulrich Drepper");
exit (EXIT_SUCCESS);
@@ -221,7 +221,8 @@ Mandatory arguments to long options are mandatory for short options too.\n\
If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n\
is -, output is written to standard output.\n"),
program_invocation_name, program_invocation_name);
fputs (gettext ("Report bugs to <bug-glibc@prep.ai.mit.edu>.\n"),
fputs (gettext ("\
Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"),
stdout);
}
@@ -270,7 +271,7 @@ read_input_file (struct catalog *current, const char *fname)
current->last_set = 0;
current->current_set = find_set (current, NL_SETD);
#define obstack_chunk_alloc xmalloc
#define obstack_chunk_alloc malloc
#define obstack_chunk_free free
obstack_init (&current->mem_pool);
}
@@ -353,7 +354,7 @@ read_input_file (struct catalog *current, const char *fname)
}
else
{
/* We have found seomthing which looks like a
/* We have found seomthing that looks like a
correct identifier. */
struct set_list *runp;
@@ -980,7 +981,7 @@ read_old (struct catalog *catalog, const char *file_name)
/* Try to open catalog, but don't look through the NLSPATH. */
__open_catalog (&old_cat_obj, 0);
if (old_cat_obj.status != mmaped && old_cat_obj.status != malloced)
if (old_cat_obj.status != mmapped && old_cat_obj.status != malloced)
if (errno == ENOENT)
/* No problem, the catalog simply does not exist. */
return;
+16 -16
View File
@@ -1,20 +1,20 @@
/* Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _NL_TYPES_H
#define _NL_TYPES_H 1
@@ -26,12 +26,12 @@ Boston, MA 02111-1307, USA. */
/* Value for FLAG parameter of `catgets' to say we want XPG4 compliance. */
#define NL_CAT_LOCALE 1
/* Message catalog descriptor type. */
typedef void *nl_catd;
__BEGIN_DECLS
/* Message catalog descriptor type. */
typedef void *nl_catd;
/* Open message catalog for later use, returning descriptor. */
extern nl_catd catopen __P ((__const char *__cat_name, int __flag));
+16 -16
View File
@@ -1,21 +1,21 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <endian.h>
#include <fcntl.h>
@@ -185,7 +185,7 @@ __open_catalog (__nl_catd catalog, int with_path)
MAP_FILE|MAP_COPY|MAP_INHERIT, fd, 0);
if (catalog->file_ptr != (struct catalog_obj *) -1)
/* Tell the world we managed to mmap the file. */
catalog->status = mmaped;
catalog->status = mmapped;
else
{
/* mmap failed perhaps because the system call is not
@@ -229,7 +229,7 @@ __open_catalog (__nl_catd catalog, int with_path)
{
/* Illegal file. Free he resources and mark catalog as not
usable. */
if (catalog->status == mmaped)
if (catalog->status == mmapped)
__munmap ((void *) catalog->file_ptr, catalog->file_size);
else
free (catalog->file_ptr);
+119 -34
View File
@@ -1,6 +1,6 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
# Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -67,17 +67,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
amiga:NetBSD:*:*)
echo m68k-cbm-netbsd${UNAME_RELEASE}
exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-cbm-openbsd${UNAME_RELEASE}
exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
Pyramid*:OSx*:*:*)
SR2?01:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
exit 0;;
Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
fi
exit 0 ;;
sun4*:SunOS:5.*:*)
NILE:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
i86pc:SunOS:5.*:*)
@@ -101,15 +111,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
exit 0 ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit 0 ;;
atari*:NetBSD:*:*)
echo m68k-atari-netbsd${UNAME_RELEASE}
exit 0 ;;
atari*:OpenBSD:*:*)
echo m68k-atari-openbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:NetBSD:*:*)
echo m68k-sun-netbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:OpenBSD:*:*)
echo m68k-sun-openbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:NetBSD:*:*)
echo m68k-apple-netbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-apple-openbsd${UNAME_RELEASE}
exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit 0 ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
@@ -133,7 +161,8 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit (-1);
}
EOF
${CC-cc} dummy.c -o dummy && ./dummy "${UNAME_RELEASE}" \
${CC-cc} dummy.c -o dummy \
&& ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
&& rm dummy.c dummy && exit 0
rm -f dummy.c dummy
echo mips-mips-riscos${UNAME_RELEASE}
@@ -179,10 +208,10 @@ EOF
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
exit 0 ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i[34]86:AIX:*:*)
i?86:AIX:*:*)
echo i386-ibm-aix
exit 0 ;;
*:AIX:2:3)
@@ -293,6 +322,13 @@ EOF
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
exit 0 ;;
i?86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
exit 0 ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit 0 ;;
@@ -325,13 +361,27 @@ EOF
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
exit 0 ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE}
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
F300:UNIX_System_V:*:*)
FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
F301:UNIX_System_V:*:*)
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
exit 0 ;;
hp3[0-9][05]:NetBSD:*:*)
echo m68k-hp-netbsd${UNAME_RELEASE}
exit 0 ;;
i[34]86:BSD/386:*:* | *:BSD/OS:*:*)
hp3[0-9][05]:OpenBSD:*:*)
echo m68k-hp-openbsd${UNAME_RELEASE}
exit 0 ;;
i?86:BSD/386:*:* | *:BSD/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
@@ -340,6 +390,9 @@ EOF
*:NetBSD:*:*)
echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:CYGWIN*:*)
echo i386-pc-cygwin32
exit 0 ;;
@@ -350,17 +403,17 @@ EOF
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
*:GNU:*:*)
echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
echo `echo ${UNAME_MACHINE}|sed -e 's,-.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
*:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us.
ld_help_string=`ld --help 2>&1`
if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i[345]86"; then
if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then
echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86linux"; then
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then
echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86coff"; then
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then
echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0
@@ -372,6 +425,23 @@ EOF
echo alpha-unknown-linux-gnu ; exit 0
elif test "${UNAME_MACHINE}" = "sparc" ; then
echo sparc-unknown-linux-gnu ; exit 0
elif test "${UNAME_MACHINE}" = "mips" ; then
cat >dummy.c <<EOF
main(argc, argv)
int argc;
char *argv[];
{
#ifdef __MIPSEB__
printf ("%s-unknown-linux-gnu\n", argv[1]);
#endif
#ifdef __MIPSEL__
printf ("%sel-unknown-linux-gnu\n", argv[1]);
#endif
return 0;
}
EOF
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
else
# Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us
# useful --help. Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout.
@@ -396,17 +466,17 @@ EOF
fi ;;
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
# are messed up and put the nodename in both sysname and nodename.
i[34]86:DYNIX/ptx:4*:*)
i?86:DYNIX/ptx:4*:*)
echo i386-sequent-sysv4
exit 0 ;;
i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*)
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
fi
exit 0 ;;
i[34]86:*:3.2:*)
i?86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
@@ -437,34 +507,36 @@ EOF
# "miniframe"
echo m68010-convergent-sysv
exit 0 ;;
M680[234]0:*:R3V[567]*:*)
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
UNAME_REL=4.3
if test -f /etc/.relid; then
UNAME_REL=4.3.`awk '{ print $3 }' /etc/.relid`
fi
uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv$UNAME_REL && exit 0
uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& echo i586-ncr-sysv$UNAME_REL && exit 0 ;;
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4.3${OS_REL} && exit 0
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
uname -p 2>/dev/null | grep 86 >/dev/null \
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4 && exit 0 ;;
m680[234]0:LynxOS:2.[23]*:*)
echo m68k-lynx-lynxos${UNAME_RELEASE}
m68*:LynxOS:2.*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
i[34]86:LynxOS:2.[23]*:*)
echo i386-lynx-lynxos${UNAME_RELEASE}
i?86:LynxOS:2.*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
TSUNAMI:LynxOS:2.[23]*:*)
echo sparc-lynx-lynxos${UNAME_RELEASE}
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
rs6000:LynxOS:2.[23]*:*)
echo rs6000-lynx-lynxos${UNAME_RELEASE}
rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit 0 ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
@@ -477,10 +549,23 @@ EOF
echo ns32k-sni-sysv
fi
exit 0 ;;
PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit 0 ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
exit 0 ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
exit 0 ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
exit 0 ;;
R3000:*System_V*:*:*)
R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
@@ -530,7 +615,7 @@ main ()
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
printf ("%s-next-nextstep%s\n", __ARCHITECTURE__, version==2 ? "2" : "3");
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
+8
View File
@@ -35,6 +35,14 @@
This is defined by configure under --enable-libio. */
#undef USE_IN_LIBIO
/* Define if using ELF and the assembler supports the `.previous'
directive. */
#undef HAVE_ASM_PREVIOUS_DIRECTIVE
/* Define if using ELF and the assembler supports the `.popsection'
directive. */
#undef HAVE_ASM_POPSECTION_DIRECTIVE
/*
*/
+12
View File
@@ -3,8 +3,16 @@
# Don't edit this file. Put configuration parameters in configparms instead.
# Installation prefixes.
install_root =
prefix = @prefix@
exec_prefix = @exec_prefix@
slibdir = @libc_cv_slibdir@
sysconfdir = @libc_cv_sysconfdir@
rootsbindir = @libc_cv_rootsbindir@
# If ldconfig exists. This will go away as soon as `ldconfig' is available
# in GNU libc.
has-ldconfig = @has_ldconfig@
# System configuration.
config-machine = @host_cpu@
@@ -20,6 +28,8 @@ have-initfini = @libc_cv_have_initfini@
have-no-whole-archive = @libc_cv_ld_no_whole_archive@
have-no-exceptions = @libc_cv_gcc_no_exceptions@
have-bash2 = @libc_cv_have_bash2@
have-ksh = @libc_cv_have_ksh@
# Configuration options.
gnu-as = @gnu_as@
@@ -44,5 +54,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
LN_S = @LN_S@
MSGFMT = @MSGFMT@
BASH = @BASH@
KSH = @KSH@
# More variables may be inserted below by configure.
Vendored
+24 -9
View File
@@ -151,7 +151,7 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \
| arme[lb] | pyramid \
| tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \
| tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
| alpha | we32k | ns16k | clipper | i370 | sh \
| powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \
| pdp11 | mips64el | mips64orion | mips64orionel \
@@ -174,10 +174,10 @@ case $basic_machine in
| sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
| none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
| hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
| hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
| pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
| pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
| mips64el-* | mips64orion-* | mips64orionel-*)
| mips64el-* | mips64orion-* | mips64orionel-* | f301-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
@@ -389,6 +389,14 @@ case $basic_machine in
miniframe)
basic_machine=m68000-convergent
;;
mipsel*-linux*)
basic_machine=mipsel-unknown
os=-linux
;;
mips*-linux*)
basic_machine=mips-unknown
os=-linux
;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
@@ -577,6 +585,9 @@ case $basic_machine in
basic_machine=vax-dec
os=-vms
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
@@ -604,7 +615,11 @@ case $basic_machine in
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
mips)
basic_machine=mips-mips
if [ x$os = x-linux ]; then
basic_machine=mips-unknown
else
basic_machine=mips-mips
fi
;;
romp)
basic_machine=romp-ibm
@@ -681,12 +696,12 @@ case $os in
| -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -netbsd* | -freebsd* | -riscix* \
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -linux-gnu*)
| -linux-gnu* | -uxpv*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-linux*)
@@ -862,6 +877,9 @@ case $basic_machine in
*-masscomp)
os=-rtu
;;
f301-fujitsu)
os=-uxpv
;;
*)
os=-none
;;
@@ -880,9 +898,6 @@ case $basic_machine in
-sunos*)
vendor=sun
;;
-lynxos*)
vendor=lynx
;;
-aix*)
vendor=ibm
;;
Vendored
+331 -56
View File
@@ -2,7 +2,7 @@
# From configure.in CVSid
# Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf version 2.10
# Generated automatically using autoconf version 2.12
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This configure script is free software; the Free Software Foundation
@@ -17,7 +17,7 @@ ac_help="$ac_help
ac_help="$ac_help
--with-gettext=DIR find GNU gettext source code in DIR (not needed)"
ac_help="$ac_help
--with-fp if using floating-point hardware default=yes"
--with-fp if using floating-point hardware [default=yes]"
ac_help="$ac_help
--with-gnu-binutils if using GNU binutils (as and ld)"
ac_help="$ac_help
@@ -28,6 +28,9 @@ ac_help="$ac_help
--with-elf if using the ELF object format"
ac_help="$ac_help
--enable-libio build in GNU libio instead of GNU stdio"
ac_help="$ac_help
--disable-sanity-checks really do not use threads (should not be used
except in special situations) [default=yes]"
ac_help="$ac_help
--enable-shared build shared library [default=yes if GNU ld & ELF]"
ac_help="$ac_help
@@ -74,6 +77,8 @@ mandir='${prefix}/man'
# Initialize some other variables.
subdirs=
MFLAGS= MAKEFLAGS=
# Maximum number of lines to put in a shell here document.
ac_max_here_lines=12
ac_prev=
for ac_option
@@ -355,7 +360,7 @@ EOF
verbose=yes ;;
-version | --version | --versio | --versi | --vers)
echo "configure generated by autoconf version 2.10"
echo "configure generated by autoconf version 2.12"
exit 0 ;;
-with-* | --with-*)
@@ -457,11 +462,14 @@ do
done
# NLS nuisances.
# Only set LANG and LC_ALL to C if already set.
# These must not be set unconditionally because not all systems understand
# e.g. LANG=C (notably SCO).
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
# Only set these to C if already set. These must not be set unconditionally
# because not all systems understand e.g. LANG=C (notably SCO).
# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
# Non-C LC_CTYPE values break the ctype check.
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -rf conftest* confdefs.h
@@ -523,6 +531,7 @@ ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cc_cross
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
@@ -634,6 +643,15 @@ else
fi
# Check whether --enable-sanity-checks or --disable-sanity-checks was given.
if test "${enable_sanity_checks+set}" = set; then
enableval="$enable_sanity_checks"
enable_sanity=$enableval
else
enable_sanity=yes
fi
# Check whether --enable-shared or --disable-shared was given.
if test "${enable_shared+set}" = set; then
enableval="$enable_shared"
@@ -682,7 +700,6 @@ done
if test -z "$ac_aux_dir"; then
{ echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
fi
ac_config_mkinstalldirs=$ac_aux_dir/mkinstalldirs
ac_config_guess=$ac_aux_dir/config.guess
ac_config_sub=$ac_aux_dir/config.sub
ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
@@ -703,6 +720,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
echo "configure:724: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -722,6 +740,20 @@ host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
# tell. This doesn't get used much beyond that, so it's fairly safe.
case "$host_os" in
linux*)
;;
gnu*)
host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
;;
esac
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -768,6 +800,7 @@ esac
# This can take a while to compute.
sysdep_dir=$srcdir/sysdeps
echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6
echo "configure:804: checking sysdep dirs" >&5
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
@@ -968,11 +1001,12 @@ echo "$ac_t""sysdeps/generic sysdeps/stub" 1>&6
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:1005: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
# Account for people who put trailing slashes in PATH elements.
case "$ac_dir/" in
@@ -995,7 +1029,7 @@ else
;;
esac
done
IFS="$ac_save_ifs"
IFS="$ac_save_IFS"
fi
if test "${ac_cv_path_install+set}" = set; then
@@ -1010,21 +1044,18 @@ fi
fi
echo "$ac_t""$INSTALL" 1>&6
# The purpose of this command is only to make sure the auxiliary path
# is set and that the symbol AC_REQUIRE_AC_PROG_MKINSTALLDIRS is set.
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
if test "$INSTALL" = "${srcdir}/install-sh"; then
if test "$INSTALL" = "${srcdir}/install-sh -c"; then
# The makefiles need to use a different form to find it in $srcdir.
INSTALL='$(..)./install-sh'
INSTALL='$(..)./install-sh -c'
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
echo "configure:1059: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1049,6 +1080,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1084: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1079,6 +1111,7 @@ test -n "$MSGFMT" || MSGFMT=":"
echo $ac_n "checking build system type""... $ac_c" 1>&6
echo "configure:1115: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1104,6 +1137,7 @@ fi
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1141: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1135,6 +1169,7 @@ if test $host != $build; then
# Extract the first word of "gcc cc", so it can be a program name with args.
set dummy gcc cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1173: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1161,6 +1196,7 @@ fi
fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
echo "configure:1200: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1175,33 +1211,37 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
#line 1179 "configure"
#line 1215 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1185: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
:
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
#line 1194 "configure"
#line 1232 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1238: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
:
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
CPP=/lib/cpp
fi
@@ -1219,6 +1259,7 @@ echo "$ac_t""$CPP" 1>&6
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1263: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1249,6 +1290,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1294: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1279,6 +1321,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1325: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1310,7 +1353,93 @@ fi
fi
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1360: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
case "$BASH" in
/*)
ac_cv_path_BASH="$BASH" # Let the user override the test with a path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_path_BASH="$ac_dir/$ac_word"
break
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_path_BASH" && ac_cv_path_BASH="no"
;;
esac
fi
BASH="$ac_cv_path_BASH"
if test -n "$BASH"; then
echo "$ac_t""$BASH" 1>&6
else
echo "$ac_t""no" 1>&6
fi
if test "$BASH" != no &&
$BASH -c 'test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
libc_cv_have_bash2=yes
else
libc_cv_have_bash2=no
fi
if test "$BASH" = no; then
# Extract the first word of "ksh", so it can be a program name with args.
set dummy ksh; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1401: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
case "$KSH" in
/*)
ac_cv_path_KSH="$KSH" # Let the user override the test with a path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_path_KSH="$ac_dir/$ac_word"
break
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_path_KSH" && ac_cv_path_KSH="no"
;;
esac
fi
KSH="$ac_cv_path_KSH"
if test -n "$KSH"; then
echo "$ac_t""$KSH" 1>&6
else
echo "$ac_t""no" 1>&6
fi
if test "$KSH" = no; then
libc_cv_have_ksh=no
else
libc_cv_have_ksh=yes
fi
else
KSH="$BASH"
libc_cv_have_ksh=yes
fi
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
echo "configure:1443: checking for signed size_t type" >&5
if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1334,19 +1463,19 @@ EOF
fi
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
echo "configure:1467: checking for libc-friendly stddef.h" >&5
if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1342 "configure"
#line 1472 "configure"
#include "confdefs.h"
#define __need_size_t
#define __need_wchar_t
#include <stddef.h>
#define __need_NULL
#include <stddef.h>
int main() { return 0; }
int t() {
int main() {
size_t size; wchar_t wchar;
#ifdef offsetof
#error stddef.h ignored __need_*
@@ -1354,15 +1483,16 @@ size_t size; wchar_t wchar;
if (&size == NULL || &wchar == NULL) abort ();
; return 0; }
EOF
if { (eval echo configure:1358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libc_cv_friendly_stddef=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
libc_cv_friendly_stddef=no
fi
rm -f conftest*
fi
echo "$ac_t""$libc_cv_friendly_stddef" 1>&6
@@ -1372,6 +1502,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
fi
echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
echo "configure:1506: checking whether we need to use -P to assemble .S files" >&5
if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1394,6 +1525,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
echo "configure:1529: checking for assembler global-symbol directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1423,6 +1555,7 @@ EOF
fi
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
echo "configure:1559: checking for .set assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1455,31 +1588,84 @@ EOF
fi
if test $elf = yes; then
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
echo "configure:1594: checking for .previous assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.s <<EOF
.section foo_section
.previous
EOF
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:1602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_asm_previous_directive=yes
else
libc_cv_asm_previous_directive=no
fi
rm -f conftest*
fi
echo "$ac_t""$libc_cv_asm_previous_directive" 1>&6
if test $libc_cv_asm_previous_directive = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_ASM_PREVIOUS_DIRECTIVE 1
EOF
else
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
echo "configure:1618: checking for .popsection assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.s <<EOF
.pushsection foo_section
.popsection
EOF
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:1626: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_asm_popsection_directive=yes
else
libc_cv_asm_popsection_directive=no
fi
rm -f conftest*
fi
echo "$ac_t""$libc_cv_asm_popsection_directive" 1>&6
if test $libc_cv_asm_popsection_directive = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_ASM_POPSECTION_DIRECTIVE 1
EOF
fi
fi
fi
if test $elf != yes; then
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
echo "configure:1646: checking for .init and .fini sections" >&5
if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1465 "configure"
#line 1651 "configure"
#include "confdefs.h"
int main() { return 0; }
int t() {
int main() {
asm (".section .init");
asm (".section .fini");
asm (".text");
; return 0; }
EOF
if { (eval echo configure:1475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libc_cv_have_initfini=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
libc_cv_have_initfini=no
fi
rm -f conftest*
fi
echo "$ac_t""$libc_cv_have_initfini" 1>&6
@@ -1495,27 +1681,28 @@ if test $elf = yes; then
libc_cv_asm_underscores=no
else
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
echo "configure:1685: checking for _ prefix on C symbol names" >&5
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1503 "configure"
#line 1690 "configure"
#include "confdefs.h"
asm ("_glibc_foobar:");
int main() { return 0; }
int t() {
int main() {
glibc_foobar ();
; return 0; }
EOF
if { (eval echo configure:1511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
if { (eval echo configure:1697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
libc_cv_asm_underscores=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
libc_cv_asm_underscores=no
fi
rm -f conftest*
fi
echo "$ac_t""$libc_cv_asm_underscores" 1>&6
@@ -1533,6 +1720,7 @@ if test $elf = yes; then
libc_cv_asm_weakext_directive=no
else
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
echo "configure:1724: checking for assembler .weak directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1555,6 +1743,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
if test $libc_cv_asm_weak_directive = no; then
echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
echo "configure:1747: checking for assembler .weakext directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1591,6 +1780,7 @@ EOF
fi
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
echo "configure:1784: checking for ld --no-whole-archive" >&5
if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1601,7 +1791,7 @@ __throw () {}
EOF
if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -Wl,--no-whole-archive
-o conftest conftest.c'; { (eval echo configure:1605: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
-o conftest conftest.c'; { (eval echo configure:1795: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_ld_no_whole_archive=yes
else
libc_cv_ld_no_whole_archive=no
@@ -1612,6 +1802,7 @@ fi
echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6
echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6
echo "configure:1806: checking for gcc -fno-exceptions" >&5
if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1622,7 +1813,7 @@ __throw () {}
EOF
if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -fno-exceptions
-o conftest conftest.c'; { (eval echo configure:1626: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
-o conftest conftest.c'; { (eval echo configure:1817: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_gcc_no_exceptions=yes
else
libc_cv_gcc_no_exceptions=no
@@ -1674,6 +1865,7 @@ if test "$uname" = generic; then
fi
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
echo "configure:1869: checking OS release for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1695,6 +1887,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
uname_release="$libc_cv_uname_release"
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
echo "configure:1891: checking OS version for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1716,6 +1909,7 @@ else
fi
echo $ac_n "checking stdio selection""... $ac_c" 1>&6
echo "configure:1913: checking stdio selection" >&5
case $stdio in
libio) cat >> confdefs.h <<\EOF
@@ -1726,6 +1920,12 @@ default) stdio=stdio ;;
esac
echo "$ac_t""$stdio" 1>&6
if test $gnu_ld = yes; then
cat >> confdefs.h <<\EOF
@@ -1750,6 +1950,10 @@ fi
if test $shared = default; then
if test $gnu_ld = yes; then
shared=$elf
else
# For now we do not assume shared libs are available. In future more
# tests might become available.
shared=no
fi
fi
@@ -1763,6 +1967,9 @@ else
config_makefile=Makefile
fi
VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
trap '' 1 2 15
cat > confcache <<\EOF
# This file is a shell script that caches the results of configure
@@ -1780,11 +1987,25 @@ cat > confcache <<\EOF
# --recheck option to rerun configure.
#
EOF
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, don't put newlines in cache variables' values.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(set) 2>&1 |
sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
>> confcache
case `(ac_space=' '; set | grep ac_space) 2>&1` in
*ac_space=\ *)
# `set' does not quote correctly, so add quotes (double-quote substitution
# turns \\\\ into \\, and sed turns \\ into \).
sed -n \
-e "s/'/'\\\\''/g" \
-e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
;;
*)
# `set' quotes correctly as required by POSIX, so do not add quotes.
sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
;;
esac >> confcache
if cmp -s $cache_file confcache; then
:
else
@@ -1839,7 +2060,7 @@ do
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
echo "$CONFIG_STATUS generated by autoconf version 2.10"
echo "$CONFIG_STATUS generated by autoconf version 2.12"
exit 0 ;;
-help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;;
@@ -1850,7 +2071,7 @@ done
ac_given_srcdir=$srcdir
ac_given_INSTALL="$INSTALL"
trap 'rm -fr `echo "config.make ${config_makefile} ${config_uname} config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
trap 'rm -fr `echo "config.make glibcbug ${config_makefile} ${config_uname} config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -1902,6 +2123,10 @@ s%@BUILD_CC@%$BUILD_CC%g
s%@CPP@%$CPP%g
s%@AR@%$AR%g
s%@RANLIB@%$RANLIB%g
s%@BASH@%$BASH%g
s%@libc_cv_have_bash2@%$libc_cv_have_bash2%g
s%@KSH@%$KSH%g
s%@libc_cv_have_ksh@%$libc_cv_have_ksh%g
s%@libc_cv_have_initfini@%$libc_cv_have_initfini%g
s%@libc_cv_ld_no_whole_archive@%$libc_cv_ld_no_whole_archive%g
s%@libc_cv_gcc_no_exceptions@%$libc_cv_gcc_no_exceptions%g
@@ -1909,6 +2134,10 @@ s%@uname_sysname@%$uname_sysname%g
s%@uname_release@%$uname_release%g
s%@uname_version@%$uname_version%g
s%@stdio@%$stdio%g
s%@libc_cv_slibdir@%$libc_cv_slibdir%g
s%@libc_cv_sysconfdir@%$libc_cv_sysconfdir%g
s%@libc_cv_rootsbindir@%$libc_cv_rootsbindir%g
s%@has_ldconfig@%$has_ldconfig%g
s%@gnu_ld@%$gnu_ld%g
s%@gnu_as@%$gnu_as%g
s%@elf@%$elf%g
@@ -1916,23 +2145,60 @@ s%@shared@%$shared%g
s%@profile@%$profile%g
s%@omitfp@%$omitfp%g
s%@DEFINES@%$DEFINES%g
s%@VERSION@%$VERSION%g
CEOF
EOF
cat >> $CONFIG_STATUS <<\EOF
# Split the substitutions into bite-sized pieces for seds with
# small command number limits, like on Digital OSF/1 and HP-UX.
ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
ac_file=1 # Number of current file.
ac_beg=1 # First line for current file.
ac_end=$ac_max_sed_cmds # Line after last line for current file.
ac_more_lines=:
ac_sed_cmds=""
while $ac_more_lines; do
if test $ac_beg -gt 1; then
sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
else
sed "${ac_end}q" conftest.subs > conftest.s$ac_file
fi
if test ! -s conftest.s$ac_file; then
ac_more_lines=false
rm -f conftest.s$ac_file
else
if test -z "$ac_sed_cmds"; then
ac_sed_cmds="sed -f conftest.s$ac_file"
else
ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
fi
ac_file=`expr $ac_file + 1`
ac_beg=$ac_end
ac_end=`expr $ac_end + $ac_max_sed_cmds`
fi
done
if test -z "$ac_sed_cmds"; then
ac_sed_cmds=cat
fi
EOF
cat >> $CONFIG_STATUS <<EOF
CONFIG_FILES=\${CONFIG_FILES-"config.make ${config_makefile} ${config_uname}"}
CONFIG_FILES=\${CONFIG_FILES-"config.make glibcbug ${config_makefile} ${config_uname}"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
# Support "outfile[:infile]", defaulting infile="outfile.in".
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case "$ac_file" in
*:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
*:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
*) ac_file_in="${ac_file}.in" ;;
esac
# Adjust relative srcdir, etc. for subdirectories.
# Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
# Remove last slash and all that follows it. Not all systems have dirname.
ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
@@ -1960,6 +2226,7 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
[/$]*) INSTALL="$ac_given_INSTALL" ;;
*) INSTALL="$ac_dots$ac_given_INSTALL" ;;
esac
echo creating "$ac_file"
rm -f "$ac_file"
configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
@@ -1968,14 +2235,16 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
# $configure_input" ;;
*) ac_comsub= ;;
esac
ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
sed -e "$ac_comsub
s%@configure_input@%$configure_input%g
s%@srcdir@%$srcdir%g
s%@top_srcdir@%$top_srcdir%g
s%@INSTALL@%$INSTALL%g
" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
fi; done
rm -f conftest.subs
rm -f conftest.s*
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
# NAME is the cpp macro being defined and VALUE is the value it is being given.
@@ -1996,11 +2265,17 @@ ac_eB='$%\1#\2define\3'
ac_eC=' '
ac_eD='%g'
CONFIG_HEADERS=${CONFIG_HEADERS-"config.h"}
if test "${CONFIG_HEADERS+set}" != set; then
EOF
cat >> $CONFIG_STATUS <<EOF
CONFIG_HEADERS="config.h"
EOF
cat >> $CONFIG_STATUS <<\EOF
fi
for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
# Support "outfile[:infile]", defaulting infile="outfile.in".
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case "$ac_file" in
*:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
*:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
*) ac_file_in="${ac_file}.in" ;;
esac
@@ -2008,7 +2283,8 @@ for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
echo creating $ac_file
rm -f conftest.frag conftest.in conftest.out
cp $ac_given_srcdir/$ac_file_in conftest.in
ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
cat $ac_file_inputs > conftest.in
EOF
@@ -2036,8 +2312,6 @@ EOF
# Break up conftest.vals because some shells have a limit on
# the size of here documents, and old seds have small limits too.
# Maximum number of lines to put in a single here document.
ac_max_here_lines=12
rm -f conftest.tail
while :
@@ -2184,13 +2458,16 @@ if test "$no_recursion" != yes; then
ac_popdir=`pwd`
cd $ac_config_dir
# A "../" for each directory in /$ac_config_dir.
ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
case "$srcdir" in
.) # No --srcdir option. We are building in place.
ac_sub_srcdir=$srcdir ;;
/*) # Absolute path.
ac_sub_srcdir=$srcdir/$ac_config_dir ;;
*) # Relative path.
ac_sub_srcdir=../$srcdir/$ac_config_dir ;;
ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;;
esac
# Check for guested configure; otherwise get Cygnus style configure.
@@ -2207,8 +2484,6 @@ if test "$no_recursion" != yes; then
if test -n "$ac_sub_configure"; then
# Make the cache file name correct relative to the subdirectory.
# A "../" for each directory in /$ac_config_dir.
ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
case "$cache_file" in
/*) ac_sub_cache_file=$cache_file ;;
*) # Relative path.
+95 -5
View File
@@ -1,6 +1,6 @@
Dnl Process this file with autoconf to produce a configure script.
AC_REVISION([$CVSid$])
AC_PREREQ(2.10)dnl dnl Minimum Autoconf version required.
AC_PREREQ(2.11)dnl dnl Minimum Autoconf version required.
AC_INIT(features.h)
AC_CONFIG_HEADER(config.h)
@@ -34,7 +34,7 @@ esac
dnl Arguments to specify presence of other packages/features.
AC_ARG_WITH(fp, dnl
--with-fp if using floating-point hardware [default=yes],
[ --with-fp if using floating-point hardware [default=yes]],
with_fp=$withval, with_fp=yes)
AC_ARG_WITH(gnu-binutils, dnl
--with-gnu-binutils if using GNU binutils (as and ld),
@@ -59,6 +59,11 @@ AC_ARG_ENABLE(libio, dnl
fi],
stdio=default)
AC_ARG_ENABLE(sanity-checks, dnl
[ --disable-sanity-checks really do not use threads (should not be used
except in special situations) [default=yes]],
enable_sanity=$enableval, enable_sanity=yes)
dnl Arguments to enable or disable building the shared, profiled, and
dnl -fomit-frame-pointer libraries.
AC_ARG_ENABLE(shared, dnl
@@ -85,6 +90,20 @@ if test x"$add_ons" != x; then
fi
AC_CANONICAL_HOST
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
# tell. This doesn't get used much beyond that, so it's fairly safe.
case "$host_os" in
linux*)
;;
gnu*)
host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
;;
esac
# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make. Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
@@ -330,9 +349,9 @@ AC_MSG_RESULT(sysdeps/generic sysdeps/stub)
### Locate tools.
AC_PROG_INSTALL
if test "$INSTALL" = "${srcdir}/install-sh"; then
if test "$INSTALL" = "${srcdir}/install-sh -c"; then
# The makefiles need to use a different form to find it in $srcdir.
INSTALL='$(..)./install-sh'
INSTALL='$(..)./install-sh -c'
fi
AC_PROG_LN_S
AC_CHECK_PROGS(MSGFMT, msgfmt gmsgfmt, :)
@@ -345,6 +364,30 @@ AC_PROG_CPP
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_PATH_PROG(BASH, bash, no)
if test "$BASH" != no &&
$BASH -c 'test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
libc_cv_have_bash2=yes
else
libc_cv_have_bash2=no
fi
AC_SUBST(libc_cv_have_bash2)
dnl We need a ksh compatible shell for tzselect.
if test "$BASH" = no; then
AC_PATH_PROG(KSH, ksh, no)
if test "$KSH" = no; then
libc_cv_have_ksh=no
else
libc_cv_have_ksh=yes
fi
else
KSH="$BASH"
AC_SUBST(KSH)
libc_cv_have_ksh=yes
fi
AC_SUBST(libc_cv_have_ksh)
AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
echo '#include <stddef.h>
FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
@@ -443,6 +486,40 @@ if test $libc_cv_asm_set_directive = yes; then
AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
fi
if test $elf = yes; then
AC_CACHE_CHECK(for .previous assembler directive,
libc_cv_asm_previous_directive, [dnl
cat > conftest.s <<EOF
.section foo_section
.previous
EOF
if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
libc_cv_asm_previous_directive=yes
else
libc_cv_asm_previous_directive=no
fi
rm -f conftest*])
if test $libc_cv_asm_previous_directive = yes; then
AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
else
AC_CACHE_CHECK(for .popsection assembler directive,
libc_cv_asm_popsection_directive, [dnl
cat > conftest.s <<EOF
.pushsection foo_section
.popsection
EOF
if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
libc_cv_asm_popsection_directive=yes
else
libc_cv_asm_popsection_directive=no
fi
rm -f conftest*])
if test $libc_cv_asm_popsection_directive = yes; then
AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
fi
fi
fi
if test $elf != yes; then
AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
[AC_TRY_COMPILE(, [asm (".section .init");
@@ -649,6 +726,12 @@ default) stdio=stdio ;;
esac
AC_MSG_RESULT($stdio)
AC_SUBST(libc_cv_slibdir)
AC_SUBST(libc_cv_sysconfdir)
AC_SUBST(libc_cv_rootsbindir)
AC_SUBST(has_ldconfig)
AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
if test $gnu_ld = yes; then
AC_DEFINE(HAVE_GNU_LD)
@@ -664,6 +747,10 @@ AC_SUBST(shared)
if test $shared = default; then
if test $gnu_ld = yes; then
shared=$elf
else
# For now we do not assume shared libs are available. In future more
# tests might become available.
shared=no
fi
fi
AC_SUBST(profile)
@@ -677,5 +764,8 @@ else
config_makefile=Makefile
fi
AC_OUTPUT(config.make ${config_makefile} ${config_uname}, ,
VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
AC_SUBST(VERSION)
AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, ,
[echo '$config_vars' >> config.make])
+4 -5
View File
@@ -14,9 +14,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# This directory contains the C startup code (that which calls main). This
# consists of the startfile, built from start.c and installed as crt0.o
@@ -71,7 +71,7 @@ generated += $(crtstuff:=.s)
omit-deps += $(crtstuff)
# Compile initfini.c to assembly code, which contains embedded shell
# commands that prodice crti.s-new and crtn.s-new when run. We need to
# commands that produce crti.s-new and crtn.s-new when run. We need to
# disable emission of .size directives and debugging information, since
# they will get confused by the splitting of the output we do.
$(objpfx)cr%i.s $(objpfx)cr%n.s: initfini.c; $(initfini)
@@ -113,4 +113,3 @@ $(addprefix $(objpfx),$(filter-out $(start-installed-name),$(csu-dummies))):
cp /dev/null $(@:.o=.c)
$(COMPILE.c) $(@:.o=.c) $(OUTPUT_OPTION)
rm -f $(@:.o=.c)
+15 -15
View File
@@ -1,21 +1,21 @@
/* Code to enable profiling at program startup.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sys/types.h>
#include <sys/gmon.h>
@@ -52,7 +52,7 @@ __gmon_start__ (void)
/* Start keeping profiling records. */
monstartup ((u_long) &_start, (u_long) &etext);
/* Call _mcleanup before exitting; it will write out gmon.out from the
/* Call _mcleanup before exiting; it will write out gmon.out from the
collected data. */
atexit (&_mcleanup);
}
+23 -14
View File
@@ -1,21 +1,30 @@
/* Special .init and .fini section support.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it
and/or modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
In addition to the permissions in the GNU Library General Public
License, the Free Software Foundation gives you unlimited
permission to link the compiled version of this file with other
programs, and to distribute those programs without any restriction
coming from the use of this file. (The Library General Public
License restrictions do apply in other respects; for example, they
cover modification of the file, and distribution when not linked
into another program.)
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
The GNU C Library is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This file is compiled into assembly code which is then surrounded by the
lines `cat > crtcommon.tmp <<\EOF_common' and `EOF_common' and thus
+4 -4
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
# Copyright (C) 1991, 1992, 1993, 1997 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Sub-makefile for ctype portion of the library.
+5 -5
View File
@@ -78,8 +78,8 @@ extern __const int *__ctype_toupper; /* Case conversions. */
#define __isctype(c, type) \
(__ctype_b[(int) (c)] & (unsigned short int) type)
#define __isascii(c) (((c) & (1 << 7)) == 0) /* If high bit is set. */
#define __toascii(c) ((c) & 0x7f) /* Mask off high bit. */
#define __isascii(c) (((c) & ~0x7f) == 0) /* If C is a 7 bit value. */
#define __toascii(c) ((c) & 0x7f) /* Mask off high bits. */
#define __tolower(c) ((int) __ctype_tolower[(int) (c)])
#define __toupper(c) ((int) __ctype_toupper[(int) (c)])
@@ -114,7 +114,7 @@ extern int tolower __P ((int __c));
extern int toupper __P ((int __c));
#if defined(__USE_SVID) || defined(__USE_MISC)
#if defined(__USE_SVID) || defined(__USE_MISC) || defined(__USE_XOPEN)
/* Return nonzero iff C is in the ASCII set
(i.e., is no more than 7 bits wide). */
@@ -126,7 +126,7 @@ extern int toascii __P ((int __c));
#endif /* Use SVID or use misc. */
#ifdef __USE_SVID
#if defined(__USE_SVID) || defined(__USE_MISC) || defined(__USE_XOPEN)
/* These are the same as `toupper' and `tolower'. */
__exctype (_toupper);
__exctype (_tolower);
@@ -152,7 +152,7 @@ __exctype (_tolower);
#define tolower(c) __tolower(c)
#define toupper(c) __toupper(c)
#if defined(__USE_SVID) || defined(__USE_MISC)
#if defined(__USE_SVID) || defined(__USE_MISC) || defined(__USE_XOPEN)
#define isascii(c) __isascii(c)
#define toascii(c) __toascii(c)
#endif
+2 -2
View File
@@ -201,7 +201,7 @@ delete: if (__bt_dleaf(t, key, h, index) == RET_ERROR) {
* into the offset array, shift the pointers up.
*/
nbytes = NBLEAFDBT(key->size, data->size);
if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
if ((u_int32_t) (h->upper - h->lower) < nbytes + sizeof(indx_t)) {
if ((status = __bt_split(t, h, key,
data, dflags, nbytes, index)) != RET_SUCCESS)
return (status);
@@ -284,7 +284,7 @@ bt_fast(t, key, data, exactp)
* have to search to get split stack.
*/
nbytes = NBLEAFDBT(key->size, data->size);
if (h->upper - h->lower < nbytes + sizeof(indx_t))
if ((u_int32_t) (h->upper - h->lower) < nbytes + sizeof(indx_t))
goto miss;
if (t->bt_order == FORWARD) {
+2 -2
View File
@@ -92,7 +92,7 @@ __bt_seq(dbp, key, data, flags)
}
/*
* If scan unitialized as yet, or starting at a specific record, set
* If scan uninitialized as yet, or starting at a specific record, set
* the scan to a specific key. Both __bt_seqset and __bt_seqadv pin
* the page the cursor references if they're successful.
*/
@@ -364,7 +364,7 @@ __bt_first(t, key, erval, exactp)
*erval = *ep;
return (RET_SUCCESS);
}
/*
* Walk backwards, as long as the entry matches and there are
* keys left in the tree. Save a copy of each match in case
+2 -1
View File
@@ -215,7 +215,8 @@ __bt_split(t, sp, key, data, flags, ilen, argskip)
}
/* Split the parent page if necessary or shift the indices. */
if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
if ((u_int32_t) (h->upper - h->lower)
< nbytes + sizeof(indx_t)) {
sp = h;
h = h->pgno == P_ROOT ?
bt_root(t, h, &l, &r, &skip, nbytes) :
+1 -1
View File
@@ -76,7 +76,7 @@ __bt_ret(t, e, key, rkey, data, rdata, copy)
bl = GETBLEAF(e->page, e->index);
/*
* We must copy big keys/data to make them contigous. Otherwise,
* We must copy big keys/data to make them contiguous. Otherwise,
* leave the page pinned and don't copy unless the user specified
* concurrent access.
*/
+1 -1
View File
@@ -161,7 +161,7 @@ typedef struct _rinternal {
#define NRINTERNAL \
LALIGN(sizeof(recno_t) + sizeof(pgno_t))
/* Copy a RINTERAL entry to the page. */
/* Copy a RINTERNAL entry to the page. */
#define WR_RINTERNAL(p, nrecs, pgno) { \
*(recno_t *)p = nrecs; \
p += sizeof(recno_t); \
+4 -3
View File
@@ -157,7 +157,8 @@ __hash_open(file, flags, mode, info, dflags)
if (hashp->VERSION != HASHVERSION &&
hashp->VERSION != OLDHASHVERSION)
RETURN_ERROR(EFTYPE, error1);
if (hashp->hash(CHARKEY, sizeof(CHARKEY)) != hashp->H_CHARKEY)
if (hashp->hash(CHARKEY, sizeof(CHARKEY))
!= (u_int32_t) hashp->H_CHARKEY)
RETURN_ERROR(EFTYPE, error1);
/*
* Figure out how many segments we need. Max_Bucket is the
@@ -744,7 +745,7 @@ hash_seq(dbp, key, data, flag)
for (bp = NULL; !bp || !bp[0]; ) {
if (!(bufp = hashp->cpage)) {
for (bucket = hashp->cbucket;
bucket <= hashp->MAX_BUCKET;
bucket <= (u_int32_t) hashp->MAX_BUCKET;
bucket++, hashp->cndx = 1) {
bufp = __get_buf(hashp, bucket, NULL, 0);
if (!bufp)
@@ -848,7 +849,7 @@ __expand_table(hashp)
hashp->OVFL_POINT = spare_ndx;
}
if (new_bucket > hashp->HIGH_MASK) {
if (new_bucket > (u_int32_t) hashp->HIGH_MASK) {
/* Starting a new doubling */
hashp->LOW_MASK = hashp->HIGH_MASK;
hashp->HIGH_MASK = new_bucket | hashp->LOW_MASK;
+1 -1
View File
@@ -104,7 +104,7 @@ typedef struct htab { /* Memory resident data structure */
int cbucket; /* Current bucket */
int cndx; /* Index of next item on cpage */
int errnum; /* Error Number -- for DBM
* compatability */
* compatibility */
int new_file; /* Indicates if fd is backing store
* or no */
int save_file; /* Indicates whether we need to flush
+3 -3
View File
@@ -147,7 +147,7 @@ __big_insert(hashp, bufp, key, val)
* Here's the hack to make sure that if the data ends on the
* same page as the key ends, FREESPACE is at least one.
*/
if (space == val_size && val_size == val->size)
if ((int) space == val_size && (size_t) val_size == val->size)
move_bytes--;
off = OFFSET(p) - move_bytes;
memmove(cp + off, val_data, move_bytes);
@@ -431,7 +431,7 @@ __big_return(hashp, bufp, ndx, val, set_current)
}
val->size = collect_data(hashp, bufp, (int)len, set_current);
if (val->size == -1)
if (val->size == (size_t) -1)
return (-1);
if (save_p->addr != save_addr) {
/* We are pretty short on buffers. */
@@ -510,7 +510,7 @@ __big_keydata(hashp, bufp, key, val, set)
int set;
{
key->size = collect_key(hashp, bufp, 0, val, set);
if (key->size == -1)
if (key->size == (size_t) -1)
return (-1);
key->data = (u_char *)hashp->tmp_key;
return (0);
+19 -18
View File
@@ -1,22 +1,22 @@
/* makedb -- create simple DB database from textual input.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <db.h>
#include <ctype.h>
@@ -86,7 +86,7 @@ main (argc, argv)
be_quiet = 0;
output_name = NULL;
while ((opt = getopt_long (argc, argv, "fho:uV", long_options, NULL)) != EOF)
while ((opt = getopt_long (argc, argv, "fho:uV", long_options, NULL)) != -1)
switch (opt)
{
case '\0': /* Long option. */
@@ -121,7 +121,7 @@ main (argc, argv)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
"), "1996");
"), "1996, 1997");
printf (_("Written by %s.\n"), "Ulrich Drepper");
exit (EXIT_SUCCESS);
@@ -224,7 +224,8 @@ Mandatory arguments to long options are mandatory for short options too.\n\
If INPUT-FILE is -, input is read from standard input.\n"),
program_invocation_name, program_invocation_name,
program_invocation_name);
fputs (gettext ("Report bugs to <bug-glibc@prep.ai.mit.edu>.\n"),
fputs (gettext ("\
Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"),
stdout);
}
+6 -5
View File
@@ -109,7 +109,7 @@ mpool_filter(mp, pgin, pgout, pgcookie)
mp->pgout = pgout;
mp->pgcookie = pgcookie;
}
/*
* mpool_new --
* Get a new page of memory.
@@ -205,7 +205,8 @@ mpool_get(mp, pgno, flags)
off = mp->pagesize * pgno;
if (lseek(mp->fd, off, SEEK_SET) != off)
return (NULL);
if ((nr = read(mp->fd, bp->page, mp->pagesize)) != mp->pagesize) {
if ((u_long) (nr = read(mp->fd, bp->page, mp->pagesize))
!= mp->pagesize) {
if (nr >= 0)
errno = EFTYPE;
return (NULL);
@@ -380,7 +381,7 @@ mpool_write(mp, bp)
off = mp->pagesize * bp->pgno;
if (lseek(mp->fd, off, SEEK_SET) != off)
return (RET_ERROR);
if (write(mp->fd, bp->page, mp->pagesize) != mp->pagesize)
if ((u_long) write(mp->fd, bp->page, mp->pagesize) != mp->pagesize)
return (RET_ERROR);
bp->flags &= ~MPOOL_DIRTY;
@@ -436,7 +437,7 @@ mpool_stat(mp)
mp->pagealloc, mp->pageflush);
if (mp->cachehit + mp->cachemiss)
(void)fprintf(stderr,
"%.0f%% cache hit rate (%lu hits, %lu misses)\n",
"%.0f%% cache hit rate (%lu hits, %lu misses)\n",
((double)mp->cachehit / (mp->cachehit + mp->cachemiss))
* 100, mp->cachehit, mp->cachemiss);
(void)fprintf(stderr, "%lu page reads, %lu page writes\n",
@@ -456,7 +457,7 @@ mpool_stat(mp)
cnt = 0;
} else
sep = ", ";
}
(void)fprintf(stderr, "\n");
}
+2 -2
View File
@@ -150,7 +150,7 @@ __rec_sync(dbp, flags)
*/
status = (dbp->seq)(dbp, &key, &data, R_FIRST);
while (status == RET_SUCCESS) {
if (write(t->bt_rfd, data.data, data.size) != data.size)
if ((size_t) write(t->bt_rfd, data.data, data.size) != data.size)
return (RET_ERROR);
status = (dbp->seq)(dbp, &key, &data, R_NEXT);
}
@@ -162,7 +162,7 @@ __rec_sync(dbp, flags)
while (status == RET_SUCCESS) {
iov[0].iov_base = data.data;
iov[0].iov_len = data.size;
if (writev(t->bt_rfd, iov, 2) != data.size + 1)
if ((size_t) writev(t->bt_rfd, iov, 2) != data.size + 1)
return (RET_ERROR);
status = (dbp->seq)(dbp, &key, &data, R_NEXT);
}
+2 -2
View File
@@ -170,7 +170,7 @@ einval: errno = EINVAL;
if (flags == R_SETCURSOR)
t->bt_cursor.rcursor = nrec;
F_SET(t, R_MODIFIED);
return (__rec_ret(t, NULL, nrec, key, NULL));
}
@@ -256,7 +256,7 @@ __rec_iput(t, nrec, data, flags)
* the offset array, shift the pointers up.
*/
nbytes = NRLEAFDBT(data->size);
if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
if ((u_int32_t) (h->upper - h->lower) < nbytes + sizeof(indx_t)) {
status = __bt_split(t, h, NULL, data, dflags, nbytes, index);
if (status == RET_SUCCESS)
++t->bt_nrecs;
+1 -1
View File
@@ -90,7 +90,7 @@ dataonly:
return (RET_SUCCESS);
/*
* We must copy big keys/data to make them contigous. Otherwise,
* We must copy big keys/data to make them contiguous. Otherwise,
* leave the page pinned and don't copy unless the user specified
* concurrent access.
*/
+4 -4
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Sub-makefile for dirent portion of the library.
+61 -56
View File
@@ -1,20 +1,20 @@
/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
This file is part of the GNU C Library.
/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/*
* POSIX Standard: 5.1.2 Directory Operations <dirent.h>
@@ -39,12 +39,15 @@ __BEGIN_DECLS
It defines the macro `_DIRENT_HAVE_D_OFF' iff there is a `d_off'
member that gives the file offset of the next directory entry.
It defines the macro `_DIRENT_HAVE_D_TYPE' iff there is a `d_type'
member that gives the type of the file.
*/
#include <direntry.h>
#if (defined(__USE_BSD) || defined(__USE_MISC)) && !defined(d_fileno)
#define d_ino d_fileno /* Backward compatibility. */
#if (defined __USE_BSD || defined __USE_MISC) && !defined d_fileno
# define d_ino d_fileno /* Backward compatibility. */
#endif
/* These macros extract size information from a `struct dirent *'.
@@ -62,16 +65,16 @@ __BEGIN_DECLS
*/
#ifdef _DIRENT_HAVE_D_NAMLEN
#define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
#define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1)
# define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
# define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1)
#else
#define _D_EXACT_NAMLEN(d) (strlen ((d)->d_name))
#ifdef _DIRENT_HAVE_D_RECLEN
#define _D_ALLOC_NAMLEN(d) (((char *) (d) + (d)->d_reclen) - &(d)->d_name[0])
#else
#define _D_ALLOC_NAMLEN(d) (sizeof (d)->d_name > 1 ? sizeof (d)->d_name : \
_D_EXACT_NAMLEN (d) + 1)
#endif
# define _D_EXACT_NAMLEN(d) (strlen ((d)->d_name))
# ifdef _DIRENT_HAVE_D_RECLEN
# define _D_ALLOC_NAMLEN(d) (((char *) (d) + (d)->d_reclen) - &(d)->d_name[0])
# else
# define _D_ALLOC_NAMLEN(d) (sizeof (d)->d_name > 1 ? sizeof (d)->d_name : \
_D_EXACT_NAMLEN (d) + 1)
# endif
#endif
@@ -90,8 +93,8 @@ enum
};
/* Convert between stat structure types and directory types. */
#define IFTODT(mode) (((mode) & 0170000) >> 12)
#define DTTOIF(dirtype) ((dirtype) << 12)
# define IFTODT(mode) (((mode) & 0170000) >> 12)
# define DTTOIF(dirtype) ((dirtype) << 12)
#endif
@@ -106,64 +109,66 @@ extern DIR *opendir __P ((__const char *__name));
/* Close the directory stream DIRP.
Return 0 if successful, -1 if not. */
extern int __closedir __P ((DIR * __dirp));
extern int closedir __P ((DIR * __dirp));
extern int __closedir __P ((DIR *__dirp));
extern int closedir __P ((DIR *__dirp));
/* Read a directory entry from DIRP.
Return a pointer to a `struct dirent' describing the entry,
or NULL for EOF or error. The storage returned may be overwritten
by a later readdir call on the same DIR stream. */
extern struct dirent *__readdir __P ((DIR * __dirp));
extern struct dirent *readdir __P ((DIR * __dirp));
extern struct dirent *__readdir __P ((DIR *__dirp));
extern struct dirent *readdir __P ((DIR *__dirp));
#ifdef __USE_REENTRANT
/* Reentrant versio of `readdir'. Return in RESULT a pointer to the
#if defined __USE_POSIX || defined __USE_MISC
/* Reentrant version of `readdir'. Return in RESULT a pointer to the
next entry. */
extern int readdir_r __P ((DIR *__dirp, struct dirent *entry,
struct dirent **result));
#endif
extern int __readdir_r __P ((DIR *__dirp, struct dirent *__entry,
struct dirent **__result));
extern int readdir_r __P ((DIR *__dirp, struct dirent *__entry,
struct dirent **__result));
#endif /* POSIX or misc */
/* Rewind DIRP to the beginning of the directory. */
extern void rewinddir __P ((DIR * __dirp));
extern void rewinddir __P ((DIR *__dirp));
#if defined(__USE_BSD) || defined(__USE_MISC)
#if defined __USE_BSD || defined __USE_MISC
/* Return the file descriptor used by DIRP. */
extern int dirfd __P ((DIR *__dirp));
#if defined (__OPTIMIZE__) && defined (_DIR_dirfd)
#define dirfd(dirp) _DIR_dirfd (dirp)
#endif
# if defined __OPTIMIZE__ && defined _DIR_dirfd
# define dirfd(dirp) _DIR_dirfd (dirp)
# endif
#ifndef MAXNAMLEN
# ifndef MAXNAMLEN
/* Get the definitions of the POSIX.1 limits. */
#include <posix1_lim.h>
# include <posix1_lim.h>
/* `MAXNAMLEN' is the BSD name for what POSIX calls `NAME_MAX'. */
#ifdef NAME_MAX
#define MAXNAMLEN NAME_MAX
#else
#define MAXNAMLEN 255
#endif
#endif
# ifdef NAME_MAX
# define MAXNAMLEN NAME_MAX
# else
# define MAXNAMLEN 255
# endif
# endif
#include <gnu/types.h>
#define __need_size_t
#include <stddef.h>
# include <gnu/types.h>
# define __need_size_t
# include <stddef.h>
/* Seek to position POS on DIRP. */
extern void seekdir __P ((DIR * __dirp, __off_t __pos));
extern void seekdir __P ((DIR *__dirp, __off_t __pos));
/* Return the current position of DIRP. */
extern __off_t telldir __P ((DIR * __dirp));
extern __off_t telldir __P ((DIR *__dirp));
/* Scan the directory DIR, calling SELECT on each directory entry.
/* Scan the directory DIR, calling SELECTOR on each directory entry.
Entries for which SELECT returns nonzero are individually malloc'd,
sorted using qsort with CMP, and collected in a malloc'd array in
*NAMELIST. Returns the number of entries selected, or -1 on error. */
extern int scandir __P ((__const char *__dir,
struct dirent ***__namelist,
int (*__select) __P ((struct dirent *)),
int (*__selector) __P ((struct dirent *)),
int (*__cmp) __P ((__const __ptr_t,
__const __ptr_t))));
+14 -14
View File
@@ -1,20 +1,20 @@
/* Copyright (C) 1992, 1993, 1994, 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <dirent.h>
#include <stdlib.h>
@@ -41,7 +41,7 @@ scandir (dir, namelist, select, cmp)
__set_errno (0);
i = 0;
while ((d = readdir (dp)) != NULL)
while ((d = __readdir (dp)) != NULL)
if (select == NULL || (*select) (d))
{
size_t dsize;
+54 -10
View File
@@ -1,6 +1,6 @@
# Makefile for elf subdirectory of GNU C Library.
# Copyright (C) 1995, 1996 Free Software Foundation, Inc.
# Copyright (C) 1995, 1996, 1997 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
@@ -14,9 +14,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
subdir := elf
@@ -41,6 +41,8 @@ extra-libs = libdl
extra-libs-others = $(extra-libs)
libdl-routines := dlopen dlclose dlsym dlerror dladdr
before-compile = $(objpfx)trusted-dirs.h
all: # Make this the default target; it will be defined in Rules.
@@ -49,14 +51,26 @@ include ../Makeconfig
ifeq (yes,$(build-shared))
extra-objs = $(rtld-routines:=.so) soinit.so sofini.so eval.so
generated = librtld.so dl-allobjs.so
install-others = $(slibdir)/$(rtld-installed-name)
install-others = $(inst_slibdir)/$(rtld-installed-name)
install-bin = ldd
endif
ifeq (yes,$(has-ldconfig))
extra-objs = ldconfig.o
install-rootsbin = ldconfig
$(objpfx)ldconfig: $(objpfx)ldconfig.o
$(CC) -nostdlib -nostartfiles -o $@ $(sysdep-LDFLAGS) -static \
$(addprefix $(csu-objpfx),start.o) $(+preinit) \
$(filter-out $(addprefix $(csu-objpfx),start.o) $(+preinit) \
$(link-extra-libs) $(common-objpfx)libc% $(+postinit),$^) \
$(link-extra-libs) $(common-objpfx)libc.a $(gnulib) $(+postinit)
endif
include ../Rules
ifeq (yes, $(build-shared))
ifeq (yes,$(build-shared))
# Make sure these things are built in the `make lib' pass so they can be used
# to run programs during the `make others' pass.
lib-noranlib: $(objpfx)$(rtld-installed-name) \
@@ -84,26 +98,56 @@ endef
# The dl code in the static libc needs a default library path.
CFLAGS-dl-support.c = -D'DEFAULT_RPATH="$(default-rpath)"'
ifneq (ld.so, $(rtld-installed-name))
# Make sure ld-gnu.so.1 exists in the build directory so we can link
ifneq (ld.so,$(rtld-installed-name))
# Make sure ld.so.1 exists in the build directory so we can link
# against it.
$(objpfx)$(rtld-installed-name): $(objpfx)ld.so
rm -f $@
ln -s $(<F) $@
endif
# Build a file mentioning all trustworthy directories to look for shared
# libraries when using LD_LIBRARY_PATH in a setuid program. The user can
# add directories to the list by defining $(user-defined-trusted-dirs)
# before starting make.
$(objpfx)trusted-dirs.h: Makefile
$(make-target-directory)
(for dir in `echo "$(default-rpath) $(user-defined-trusted-dirs)" | \
sed 's/:/ /g'`; do \
echo " \"$$dir\","; \
done;) > $@T
mv -f $@T $@
CPPFLAGS-dl-load.c = -I$(objdir)/$(subdir)
CFLAGS-dl-load.c += -Wno-uninitialized
# Specify the dependencies of libdl.so; its commands come from the generic
# rule to build a shared library.
$(objpfx)libdl.so: $(objpfx)libdl_pic.a $(common-objpfx)libc.so $(objpfx)ld.so
$(slibdir)/$(rtld-installed-name): $(objpfx)ld.so; $(do-install-program)
$(inst_slibdir)/$(rtld-version-installed-name): $(objpfx)ld.so
$(do-install-program)
$(objpfx)ldd: ldd.sh.in Makefile
$(inst_slibdir)/$(rtld-installed-name): \
$(inst_slibdir)/$(rtld-version-installed-name)
$(make-shlib-link)
ifneq ($(have-bash2),yes)
$(objpfx)ldd: ldd.sh.in $(common-objpfx)version.mk \
$(common-objpfx)soversions.mk $(common-objpfx)config.make
sed -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \
-e 's%@VERSION@%$(version)%g' < $< > $@.new
chmod 555 $@.new
mv -f $@.new $@
else
$(objpfx)ldd: ldd.bash.in $(common-objpfx)version.mk \
$(common-objpfx)soversions.mk $(common-objpfx)config.make
sed -e 's%@BASH@%$(BASH)%g' \
-e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \
-e 's%@VERSION@%$(version)%g' \
-e 's%@TEXTDOMAINDIR@%$(localedir)%g' < $< > $@.new
chmod 555 $@.new
mv -f $@.new $@
endif
# muwahaha
+14 -14
View File
@@ -1,21 +1,21 @@
/* _dl_close -- Close a shared object opened by `_dl_open'.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <dlfcn.h>
+14 -14
View File
@@ -1,21 +1,21 @@
/* Communicate dynamic linker state to the debugger at runtime.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
+113 -30
View File
@@ -1,21 +1,21 @@
/* Load the dependencies of a mapped object.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996, 1997 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <errno.h>
@@ -32,29 +32,91 @@ _dl_map_object_deps (struct link_map *map,
struct link_map *map;
struct list *next;
};
struct list head[1 + npreloads], *tailp, *scanp;
unsigned int nlist;
/* Start the search list with one element: MAP itself. */
head[0].map = map;
/* Add the preloaded items after MAP but before any of its dependencies. */
for (nlist = 0; nlist < npreloads; ++nlist)
struct list *head, *tailp, *scanp;
struct list duphead, *duptailp;
unsigned int nduplist;
unsigned int nlist, naux, i;
inline void preload (struct link_map *map)
{
head[nlist].next = &head[nlist + 1];
head[nlist + 1].map = preloads[nlist];
head[nlist++].map = map;
/* We use `l_reserved' as a mark bit to detect objects we have
already put in the search list and avoid adding duplicate
elements later in the list. */
map->l_reserved = 1;
}
/* Terminate the list. */
head[nlist].next = NULL;
naux = nlist = 0;
/* XXX The AUXILIARY implementation isn't correct in the moment. XXX
XXX The problem is that we currently do not handle auxiliary XXX
XXX entries in the loaded objects. XXX */
#define AUXTAG (DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM \
+ DT_EXTRATAGIDX (DT_AUXILIARY))
/* First determine the number of auxiliary objects we have to load. */
if (map->l_info[AUXTAG])
{
ElfW(Dyn) *d;
for (d = map->l_ld; d->d_tag != DT_NULL; ++d)
if (d->d_tag == DT_AUXILIARY)
++naux;
}
/* Now we can allocate the array for the linker maps. */
head = (struct list *) alloca (sizeof (struct list)
* (naux + npreloads + 2));
/* Load the auxiliary objects, even before the object itself. */
if (map->l_info[AUXTAG])
{
/* There is at least one auxiliary library specified. We try to
load it, and if we can, use its symbols in preference to our
own. But if we can't load it, we just silently ignore it. */
const char *strtab
= ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
ElfW(Dyn) *d;
for (d = map->l_ld; d->d_tag != DT_NULL; ++d)
if (d->d_tag == DT_AUXILIARY)
{
struct link_map *aux;
void openaux (void)
{
aux = _dl_map_object (map, strtab + d->d_un.d_val,
(map->l_type == lt_executable
? lt_library : map->l_type),
trace_mode);
}
char *errstring;
const char *objname;
if (! _dl_catch_error (&errstring, &objname, openaux))
/* The auxiliary object is actually there. Use it as
the first search element, even before MAP itself. */
preload (aux);
}
}
/* Next load MAP itself. */
preload (map);
/* Add the preloaded items after MAP but before any of its dependencies. */
for (i = 0; i < npreloads; ++i)
preload (preloads[i]);
/* Terminate the lists. */
head[nlist - 1].next = NULL;
duphead.next = NULL;
/* Start here for adding dependencies to the list. */
tailp = &head[nlist++];
tailp = &head[nlist - 1];
/* We use `l_reserved' as a mark bit to detect objects we have already
put in the search list and avoid adding duplicate elements later in
the list. */
map->l_reserved = 1;
/* Until now we have the same number of libraries in the normal and
the list with duplicates. */
nduplist = nlist;
duptailp = &duphead;
/* Process each element of the search list, loading each of its immediate
dependencies and appending them to the list as we step through it.
@@ -94,6 +156,13 @@ _dl_map_object_deps (struct link_map *map,
/* Set the mark bit that says it's already in the list. */
dep->l_reserved = 1;
}
/* In any case append DEP to the duplicates search list. */
duptailp->next = alloca (sizeof *duptailp);
duptailp = duptailp->next;
duptailp->map = dep;
duptailp->next = NULL;
++nduplist;
}
}
}
@@ -101,6 +170,9 @@ _dl_map_object_deps (struct link_map *map,
/* Store the search list we built in the object. It will be used for
searches in the scope of this object. */
map->l_searchlist = malloc (nlist * sizeof (struct link_map *));
if (map->l_searchlist == NULL)
_dl_signal_error (ENOMEM, map->l_name,
"cannot allocate symbol search list");
map->l_nsearchlist = nlist;
nlist = 0;
@@ -112,4 +184,15 @@ _dl_map_object_deps (struct link_map *map,
to avoid duplicates, so the next call starts fresh. */
scanp->map->l_reserved = 0;
}
map->l_dupsearchlist = malloc (nduplist * sizeof (struct link_map *));
if (map->l_dupsearchlist == NULL)
_dl_signal_error (ENOMEM, map->l_name,
"cannot allocate symbol search list");
map->l_ndupsearchlist = nduplist;
for (nlist = 0; nlist < naux + 1 + npreloads; ++nlist)
map->l_dupsearchlist[nlist] = head[nlist].map;
for (scanp = duphead.next; scanp; scanp = scanp->next)
map->l_dupsearchlist[nlist++] = scanp->map;
}
+51 -16
View File
@@ -1,21 +1,21 @@
/* Error handling for runtime dynamic linker.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996, 1997 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stddef.h>
#include <link.h>
@@ -37,6 +37,11 @@ struct catch
this is null. */
static struct catch *catch;
/* This points to a function which is called when an error is
received. Unlike the handling of `catch' this function may return.
The arguments will be the `errstring' and `objname'. */
static receiver_fct receiver;
void
_dl_signal_error (int errcode,
@@ -58,6 +63,13 @@ _dl_signal_error (int errcode,
catch->objname = objname;
longjmp (catch->env, errcode ?: -1);
}
else if (receiver)
{
/* We are inside _dl_receive_error. Call the user supplied
handler and resume the work. The receiver will still
installed. */
(*receiver) (errstring, objname);
}
else
{
/* Lossage while resolving the program's own symbols is always fatal. */
@@ -76,21 +88,44 @@ _dl_catch_error (char **errstring,
void (*operate) (void))
{
int errcode;
struct catch c = { errstring: NULL, objname: NULL };
struct catch *old, c = { errstring: NULL, objname: NULL };
/* We need not handle `receiver' since setting a `catch' is handle
before it. */
old = catch;
errcode = setjmp (c.env);
if (errcode == 0)
{
catch = &c;
(*operate) ();
catch = NULL;
catch = old;
*errstring = NULL;
*objname = NULL;
return 0;
}
/* We get here only if we longjmp'd out of OPERATE. */
catch = old;
*errstring = c.errstring;
*objname = c.objname;
return errcode == -1 ? 0 : errcode;
}
void
_dl_receive_error (receiver_fct fct, void (*operate) (void))
{
struct catch *old_catch;
receiver_fct old_receiver;
old_catch = catch;
old_receiver = receiver;
/* Set the new values. */
catch = NULL;
receiver = fct;
(*operate) ();
catch = old_catch;
receiver = old_receiver;
}
+14 -14
View File
@@ -1,21 +1,21 @@
/* Call the termination functions of loaded shared objects.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
+14 -14
View File
@@ -1,21 +1,21 @@
/* Return the next shared object initializer function not yet run.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stddef.h>
#include <link.h>
+71 -27
View File
@@ -1,21 +1,21 @@
/* _dl_map_object -- Map in a shared object's segments from the file.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996, 1997 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <sys/types.h>
@@ -409,7 +409,8 @@ _dl_map_object_from_fd (char *name, int fd, char *realname,
static int
open_path (const char *name, size_t namelen,
const char *dirpath,
char **realname)
char **realname,
const char *trusted_dirs[])
{
char *buf;
const char *p;
@@ -426,13 +427,42 @@ open_path (const char *name, size_t namelen,
do
{
size_t buflen;
size_t this_len;
dirpath = p;
p = strpbrk (dirpath, ":;");
if (p == NULL)
p = strchr (dirpath, '\0');
if (p == dirpath)
this_len = p - dirpath;
/* When we run a setuid program we do not accept any directory. */
if (__libc_enable_secure)
{
/* All trusted directory must be complete name. */
if (dirpath[0] != '/')
continue;
/* If we got a list of trusted directories only accept one
of these. */
if (trusted_dirs != NULL)
{
const char **trust = trusted_dirs;
while (*trust != NULL)
if (memcmp (dirpath, *trust, this_len) == 0
&& (*trust)[this_len] == '\0')
break;
else
++trust;
/* If directory is not trusted, ignore this directory. */
if (*trust == NULL)
continue;
}
}
if (this_len == 0)
{
/* Two adjacent colons, or a colon at the beginning or the end of
the path means to search the current directory. */
@@ -442,10 +472,10 @@ open_path (const char *name, size_t namelen,
else
{
/* Construct the pathname to try. */
(void) memcpy (buf, dirpath, p - dirpath);
buf[p - dirpath] = '/';
(void) memcpy (&buf[(p - dirpath) + 1], name, namelen);
buflen = p - dirpath + 1 + namelen;
(void) memcpy (buf, dirpath, this_len);
buf[this_len] = '/';
(void) memcpy (&buf[this_len + 1], name, namelen);
buflen = this_len + 1 + namelen;
}
fd = __open (buf, O_RDONLY);
@@ -508,9 +538,9 @@ _dl_map_object (struct link_map *loader, const char *name, int type,
size_t namelen = strlen (name) + 1;
inline void trypath (const char *dirpath)
inline void trypath (const char *dirpath, const char *trusted[])
{
fd = open_path (name, namelen, dirpath, &realname);
fd = open_path (name, namelen, dirpath, &realname, trusted);
}
fd = -1;
@@ -521,16 +551,24 @@ _dl_map_object (struct link_map *loader, const char *name, int type,
if (l && l->l_info[DT_RPATH])
trypath ((const char *) (l->l_addr +
l->l_info[DT_STRTAB]->d_un.d_ptr +
l->l_info[DT_RPATH]->d_un.d_val));
l->l_info[DT_RPATH]->d_un.d_val), NULL);
/* If dynamically linked, try the DT_RPATH of the executable itself. */
l = _dl_loaded;
if (fd == -1 && l && l->l_type != lt_loaded && l->l_info[DT_RPATH])
trypath ((const char *) (l->l_addr +
l->l_info[DT_STRTAB]->d_un.d_ptr +
l->l_info[DT_RPATH]->d_un.d_val));
l->l_info[DT_RPATH]->d_un.d_val), NULL);
/* Try an environment variable (unless setuid). */
if (fd == -1 && ! __libc_enable_secure)
trypath (getenv ("LD_LIBRARY_PATH"));
{
static const char *trusted_dirs[] =
{
#include "trusted-dirs.h"
NULL
};
trypath (getenv ("LD_LIBRARY_PATH"), trusted_dirs);
}
if (fd == -1)
{
/* Check the list of libraries in the file /etc/ld.so.cache,
@@ -555,7 +593,7 @@ _dl_map_object (struct link_map *loader, const char *name, int type,
if (fd == -1)
{
extern const char *_dl_rpath; /* Set in rtld.c. */
trypath (_dl_rpath);
trypath (_dl_rpath, NULL);
}
}
else
@@ -589,7 +627,8 @@ _dl_map_object (struct link_map *loader, const char *name, int type,
/* We haven't found an appropriate library. But since we
are only interested in the list of libraries this isn't
so severe. Fake an entry with all the information we
have (in fact only the name). */
have. */
static const ElfW(Symndx) dummy_bucket = STN_UNDEF;
/* Enter the new object in the list of loaded objects. */
if ((name_copy = local_strdup (name)) == NULL
@@ -599,6 +638,11 @@ _dl_map_object (struct link_map *loader, const char *name, int type,
/* We use an opencount of 0 as a sign for the faked entry. */
l->l_opencount = 0;
l->l_reserved = 0;
l->l_buckets = &dummy_bucket;
l->l_nbuckets = 1;
l->l_relocated = 1;
return l;
}
else
_dl_signal_error (errno, name, "cannot open shared object file");
+150 -88
View File
@@ -1,21 +1,21 @@
/* Look up a symbol in the loaded objects.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stddef.h>
#include <link.h>
@@ -23,6 +23,13 @@ Cambridge, MA 02139, USA. */
#include <string.h>
struct sym_val
{
ElfW(Addr) a;
const ElfW(Sym) *s;
};
/* This is the hashing function specified by the ELF ABI. */
static inline unsigned
_dl_elf_hash (const char *name)
@@ -44,6 +51,90 @@ _dl_elf_hash (const char *name)
return hash;
}
/* Inner part of the lookup functions. */
static inline ElfW(Addr)
do_lookup (const char *undef_name, unsigned long int hash,
const ElfW(Sym) **ref, struct sym_val *result,
struct link_map *list[], size_t i, size_t n,
const char *reference_name, struct link_map *skip, int flags)
{
struct link_map *map;
for (; i < n; ++i)
{
const ElfW(Sym) *symtab;
const char *strtab;
ElfW(Symndx) symidx;
map = list[i];
/* Here come the extra test needed for `_dl_lookup_symbol_skip'. */
if (skip != NULL && map == skip)
continue;
/* Don't search the executable when resolving a copy reloc. */
if (flags & DL_LOOKUP_NOEXEC && map->l_type == lt_executable)
continue;
symtab = ((void *) map->l_addr + map->l_info[DT_SYMTAB]->d_un.d_ptr);
strtab = ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
/* Search the appropriate hash bucket in this object's symbol table
for a definition for the same symbol name. */
for (symidx = map->l_buckets[hash % map->l_nbuckets];
symidx != STN_UNDEF;
symidx = map->l_chain[symidx])
{
const ElfW(Sym) *sym = &symtab[symidx];
if (sym->st_value == 0 || /* No value. */
((flags & DL_LOOKUP_NOPLT) != 0 /* Reject PLT entry. */
&& sym->st_shndx == SHN_UNDEF))
continue;
switch (ELFW(ST_TYPE) (sym->st_info))
{
case STT_NOTYPE:
case STT_FUNC:
case STT_OBJECT:
break;
default:
/* Not a code/data definition. */
continue;
}
if (sym != *ref && strcmp (strtab + sym->st_name, undef_name))
/* Not the symbol we are looking for. */
continue;
switch (ELFW(ST_BIND) (sym->st_info))
{
case STB_GLOBAL:
/* Global definition. Just what we need. */
result->s = sym;
result->a = map->l_addr;
return 1;
case STB_WEAK:
/* Weak definition. Use this value if we don't find
another. */
if (! result->s)
{
result->s = sym;
result->a = map->l_addr;
}
break;
default:
/* Local symbols are ignored. */
break;
}
}
}
/* We have not found anything until now. */
return 0;
}
/* Search loaded objects' symbol tables for a definition of the symbol
UNDEF_NAME. FLAGS is a set of flags. If DL_LOOKUP_NOEXEC is set,
then don't search the executable for a definition; this used for
@@ -57,82 +148,17 @@ _dl_lookup_symbol (const char *undef_name, const ElfW(Sym) **ref,
int flags)
{
const unsigned long int hash = _dl_elf_hash (undef_name);
struct
{
ElfW(Addr) a;
const ElfW(Sym) *s;
} weak_value = { 0, NULL };
size_t i;
struct link_map **scope, *map;
struct sym_val current_value = { 0, NULL };
struct link_map **scope;
/* Search the relevant loaded objects for a definition. */
for (scope = symbol_scope; *scope; ++scope)
for (i = 0; i < (*scope)->l_nsearchlist; ++i)
{
const ElfW(Sym) *symtab;
const char *strtab;
ElfW(Symndx) symidx;
if (do_lookup (undef_name, hash, ref, &current_value,
(*scope)->l_searchlist, 0, (*scope)->l_nsearchlist,
reference_name, NULL, flags))
break;
map = (*scope)->l_searchlist[i];
/* Don't search the executable when resolving a copy reloc. */
if (flags & DL_LOOKUP_NOEXEC && map->l_type == lt_executable)
continue;
symtab = ((void *) map->l_addr + map->l_info[DT_SYMTAB]->d_un.d_ptr);
strtab = ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
/* Search the appropriate hash bucket in this object's symbol table
for a definition for the same symbol name. */
for (symidx = map->l_buckets[hash % map->l_nbuckets];
symidx != STN_UNDEF;
symidx = map->l_chain[symidx])
{
const ElfW(Sym) *sym = &symtab[symidx];
if (sym->st_value == 0 || /* No value. */
((flags & DL_LOOKUP_NOPLT) != 0 /* Reject PLT entry. */
&& sym->st_shndx == SHN_UNDEF))
continue;
switch (ELFW(ST_TYPE) (sym->st_info))
{
case STT_NOTYPE:
case STT_FUNC:
case STT_OBJECT:
break;
default:
/* Not a code/data definition. */
continue;
}
if (sym != *ref && strcmp (strtab + sym->st_name, undef_name))
/* Not the symbol we are looking for. */
continue;
switch (ELFW(ST_BIND) (sym->st_info))
{
case STB_GLOBAL:
/* Global definition. Just what we need. */
*ref = sym;
return map->l_addr;
case STB_WEAK:
/* Weak definition. Use this value if we don't find
another. */
if (! weak_value.s)
{
weak_value.s = sym;
weak_value.a = map->l_addr;
}
break;
default:
/* Local symbols are ignored. */
break;
}
}
}
if (weak_value.s == NULL &&
if (current_value.s == NULL &&
(*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK))
{
/* We could find no value for a strong reference. */
@@ -144,8 +170,44 @@ _dl_lookup_symbol (const char *undef_name, const ElfW(Sym) **ref,
_dl_signal_error (0, reference_name, buf);
}
*ref = weak_value.s;
return weak_value.a;
*ref = current_value.s;
return current_value.a;
}
/* This function is nearly the same as `_dl_lookup_symbol' but it
skips in the first list all objects until SKIP_MAP is found. I.e.,
it only considers objects which were loaded after the described
object. If there are more search lists the object described by
SKIP_MAP is only skipped. */
ElfW(Addr)
_dl_lookup_symbol_skip (const char *undef_name, const ElfW(Sym) **ref,
struct link_map *symbol_scope[],
const char *reference_name,
struct link_map *skip_map,
int flags)
{
const unsigned long int hash = _dl_elf_hash (undef_name);
struct sym_val current_value = { 0, NULL };
struct link_map **scope;
size_t i;
/* Search the relevant loaded objects for a definition. */
scope = symbol_scope;
for (i = 0; (*scope)->l_dupsearchlist[i] != skip_map; ++i)
assert (i < (*scope)->l_ndupsearchlist);
if (! do_lookup (undef_name, hash, ref, &current_value,
(*scope)->l_dupsearchlist, i, (*scope)->l_ndupsearchlist,
reference_name, skip_map, flags))
while (*++scope)
if (do_lookup (undef_name, hash, ref, &current_value,
(*scope)->l_dupsearchlist, 0, (*scope)->l_ndupsearchlist,
reference_name, skip_map, flags))
break;
*ref = current_value.s;
return current_value.a;
}
+14 -14
View File
@@ -1,21 +1,21 @@
/* Minimal replacements for basic facilities used in the dynamic linker.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sys/types.h>
#include <sys/mman.h>
+14 -14
View File
@@ -1,21 +1,21 @@
/* Storage management for the chain of loaded shared objects.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <assert.h>
+14 -14
View File
@@ -1,21 +1,21 @@
/* Load a shared object at runtime, relocate it, and run its initializer.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <dlfcn.h>
+14 -14
View File
@@ -1,21 +1,21 @@
/* Relocate a shared object and resolve its references to other loaded objects.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <sys/types.h>
+14 -14
View File
@@ -1,21 +1,21 @@
/* On-demand PLT fixup for shared objects.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <stddef.h>
+16 -14
View File
@@ -1,21 +1,21 @@
/* Support for dynamic linking code in static libc.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <fcntl.h>
@@ -33,6 +33,7 @@ char **_dl_argv = &__progname; /* This is checked for some error messages. */
For the dynamic linker it is set by -rpath when linking. */
const char *_dl_rpath = DEFAULT_RPATH;
#ifndef MAP_ANON
/* This is the only dl-sysdep.c function that is actually needed at run-time
by _dl_map_object. */
@@ -41,6 +42,7 @@ _dl_sysdep_open_zero_fill (void)
{
return __open ("/dev/zero", O_RDONLY);
}
#endif
/* This should never be called. */
void
+14 -14
View File
@@ -1,21 +1,21 @@
/* Look up a symbol's run-time value in the scope of a loaded object.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stddef.h>
#include <link.h>
+14 -15
View File
@@ -1,21 +1,21 @@
/* dladdr -- Locate the shared object symbol nearest a given address.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stddef.h>
#include <link.h>
@@ -83,4 +83,3 @@ dladdr (void *address, Dl_info *info)
return 1;
}
+14 -15
View File
@@ -1,21 +1,21 @@
/* dlclose -- Close a handle opened by `dlopen'.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <dlfcn.h>
@@ -30,4 +30,3 @@ dlclose (void *handle)
return _dlerror_run (doit) ? -1 : 0;
}
+14 -14
View File
@@ -1,21 +1,21 @@
/* dlerror -- Return error detail for failing <dlfcn.h> functions.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <dlfcn.h>
+10
View File
@@ -32,6 +32,14 @@
visible as if the object were linked directly into the program. */
#define RTLD_GLOBAL 0x100
/* If the first argument of `dlsym' is set to RTLD_NEXT the run-time
address of the symbol called NAME in the next shared object is
returned. The "next" relation is defined by the order the shared
objects were loaded. */
#define RTLD_NEXT ((void *) -1l)
__BEGIN_DECLS
/* Open the shared object FILE and map it in; return a handle that can be
passed to `dlsym' to get symbol values from it. */
extern void *dlopen __P ((__const char *__file, int __mode));
@@ -60,4 +68,6 @@ typedef struct
} Dl_info;
extern int dladdr __P ((void *__address, Dl_info *__info));
__END_DECLS
#endif /* dlfcn.h */
+14 -14
View File
@@ -1,21 +1,21 @@
/* dlopen -- Load a shared object at run time.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stddef.h>
#include <link.h>
+42 -24
View File
@@ -1,21 +1,21 @@
/* dlsym -- Look up a symbol in a shared object loaded by `dlopen'.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stddef.h>
#include <link.h>
@@ -26,25 +26,43 @@ Cambridge, MA 02139, USA. */
void *
dlsym (void *handle, const char *name)
{
ElfW(Addr) caller = (ElfW(Addr)) __builtin_return_address (0);
ElfW(Addr) loadbase;
const ElfW(Sym) *ref = NULL;
void doit (void)
{
struct link_map *map = handle, **scope, *mapscope[2] = { map, NULL };
const char *owner;
if (map)
if (handle == NULL)
/* Search the global scope. */
loadbase = _dl_lookup_symbol
(name, &ref, &(_dl_global_scope ?: _dl_default_scope)[2], NULL, 0);
else if (handle == RTLD_NEXT)
{
/* Search the scope of the given object. */
scope = mapscope;
owner = map->l_name;
struct link_map *l, *match;
/* Find the highest-addressed object that CALLER is not below. */
match = NULL;
for (l = _dl_loaded; l; l = l->l_next)
if (caller >= l->l_addr && (!match || match->l_addr < l->l_addr))
match = l;
if (! match)
_dl_signal_error (0, NULL, _("\
RTLD_NEXT used in code not dynamically loaded"));
l = match;
while (l->l_loader)
l = l->l_loader;
loadbase = _dl_lookup_symbol_skip
(name, &ref, &_dl_loaded, NULL, l, 0);
}
else
{
scope = &(_dl_global_scope ?: _dl_default_scope)[2];
owner = NULL;
/* Search the scope of the given object. */
struct link_map *map = handle;
struct link_map *mapscope[2] = { map, NULL };
loadbase = _dl_lookup_symbol (name, &ref, mapscope, map->l_name, 0);
}
loadbase = _dl_lookup_symbol (name, &ref, scope, owner, 0);
}
return _dlerror_run (doit) ? NULL : (void *) (loadbase + ref->st_value);
+14 -14
View File
@@ -1,21 +1,21 @@
/* Do relocations for ELF dynamic linking.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This file may be included twice, to define both
`elf_dynamic_do_rel' and `elf_dynamic_do_rela'. */
+23 -16
View File
@@ -1,21 +1,21 @@
/* Inline functions for dynamic linking.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996, 1997 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <elf.h>
#include <dl-machine.h>
@@ -25,11 +25,13 @@ Cambridge, MA 02139, USA. */
/* Read the dynamic section at DYN and fill in INFO with indices DT_*. */
static inline void __attribute__ ((unused))
elf_get_dynamic_info (ElfW(Dyn) *dyn, ElfW(Dyn) *info[DT_NUM + DT_PROCNUM])
elf_get_dynamic_info (ElfW(Dyn) *dyn,
ElfW(Dyn) *info[DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM
+ DT_EXTRANUM])
{
unsigned int i;
for (i = 0; i < DT_NUM + DT_PROCNUM; ++i)
for (i = 0; i < DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM + DT_EXTRANUM; ++i)
info[i] = NULL;
if (! dyn)
@@ -42,6 +44,11 @@ elf_get_dynamic_info (ElfW(Dyn) *dyn, ElfW(Dyn) *info[DT_NUM + DT_PROCNUM])
else if (dyn->d_tag >= DT_LOPROC &&
dyn->d_tag < DT_LOPROC + DT_PROCNUM)
info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn;
else if ((Elf32_Word) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM)
info[DT_VERSIONTAGIDX (dyn->d_tag) + DT_NUM + DT_PROCNUM] = dyn;
else if ((Elf32_Word) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM)
info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_PROCNUM
+ DT_VERSIONTAGNUM] = dyn;
else
assert (! "bad dynamic tag");
dyn++;
+112 -17
View File
@@ -1,27 +1,29 @@
/* This file defines standard ELF types, structures, and macros.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
Contributed by Ian Lance Taylor (ian@cygnus.com).
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ian Lance Taylor <ian@cygnus.com>.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _ELF_H
#define _ELF_H 1
#define _ELF_H 1
#include <sys/cdefs.h>
__BEGIN_DECLS
/* Standard ELF types. Using __attribute__ mode ensures that GCC
will choose the right number of bits for these types. */
@@ -230,6 +232,11 @@ typedef struct
#define SHT_SHLIB 10 /* Reserved */
#define SHT_DYNSYM 11 /* Dynamic linker symbol table */
#define SHT_NUM 12 /* Number of defined types. */
#define SHT_LOSUNW 0x6ffffffd /* Sun-specific low bound. */
#define SHT_GNU_verdef 0x6ffffffd /* Version definition section. */
#define SHT_GNU_verneed 0x6ffffffe /* Version needs section. */
#define SHT_GNU_versym 0x6fffffff /* Version symbol table. */
#define SHT_HISUNW 0x6fffffff /* Sun-specific high bound. */
#define SHT_LOPROC 0x70000000 /* Start of processor-specific */
#define SHT_HIPROC 0x7fffffff /* End of processor-specific */
#define SHT_LOUSER 0x80000000 /* Start of application-specific */
@@ -462,6 +469,93 @@ typedef struct
#define DT_HIPROC 0x7fffffff /* End of processor-specific */
#define DT_PROCNUM DT_MIPS_NUM /* Most used by any processor */
/* The versioning entry types. The next are defined as part of the
GNU extension. */
#define DT_VERSYM 0x6ffffff0
/* These were chosen by Sun. */
#define DT_VERDEF 0x6ffffffc /* Address of version definition
table */
#define DT_VERDEFNUM 0x6ffffffd /* Number of version definitions */
#define DT_VERNEED 0x6ffffffe /* Address of table with needed
versions */
#define DT_VERNEEDNUM 0x6fffffff /* Number of needed versions */
#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */
#define DT_VERSIONTAGNUM 16
/* Sun added these machine-independent extensions in the "processor-specific"
range. Be compatible. */
#define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */
#define DT_FILTER 0x7fffffff /* Shared object to get values from */
#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
#define DT_EXTRANUM 3
/* Version definition sections. */
typedef struct
{
Elf32_Half vd_version; /* Version revision */
Elf32_Half vd_flags; /* Version information */
Elf32_Half vd_ndx; /* Version Index */
Elf32_Half vd_cnt; /* Number of associated aux entries */
Elf32_Word vd_hash; /* Version name hash value */
Elf32_Word vd_aux; /* Offset in bytes to verdaux array */
Elf32_Word vd_next; /* Offset in bytes to next verdef
entry */
} Elf32_Verdef;
/* Legal values for vd_version (version revision). */
#define VER_DEF_NONE 0 /* No version */
#define VER_DEF_CURRENT 1 /* Current version */
#define VER_DEF_NUM 2 /* Given version number */
/* Legal values for vd_flags (version information flags). */
#define VER_FLG_BASE 0x1 /* Version definition of file itself */
#define VER_FLG_WEAK 0x2 /* Weak version identifier */
/* Auxialiary version information. */
typedef struct
{
Elf32_Addr vda_name; /* Version or dependency names */
Elf32_Word vda_next; /* Offset in bytes to next verdaux
entry */
} Elf32_Verdaux;
/* Version dependency section. */
typedef struct
{
Elf32_Half vn_version; /* Version of structure */
Elf32_Half vn_cnt; /* Number of associated aux entries */
Elf32_Addr vn_file; /* Offset of filename for this
dependency */
Elf32_Word vn_aux; /* Offset in bytes to vernaux array */
Elf32_Word vn_next; /* Offset in bytes to next verneed
entry */
} Elf32_Verneed;
/* Legal values for vn_version (version revision). */
#define VER_NEED_NONE 0 /* No version */
#define VER_NEED_CURRENT 1 /* Current version */
#define VER_NEED_NUM 2 /* Given version number */
/* Auxiliary needed version information. */
typedef struct
{
Elf32_Word vna_hash; /* Hash value of dependency name */
Elf32_Half vna_flags; /* Dependency specific information */
Elf32_Half vna_other; /* Unused */
Elf32_Addr vna_name; /* Dependency name string offset */
Elf32_Word vna_next; /* Offset in bytes to next vernaux
entry */
} Elf32_Vernaux;
/* Legal values for vna_flags. */
#define VER_FLG_WEAK 0x2 /* Weak verison identifier */
/* Auxiliary vector. */
/* This vector is normally only used by the program interpreter. The
@@ -773,5 +867,6 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */
#define R_ALPHA_RELATIVE 27 /* Adjust by program base */
__END_DECLS
#endif /* elf.h */
+15 -15
View File
@@ -1,21 +1,21 @@
/* You don't really want to know what this hack is for.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stdio.h>
#include <ctype.h>
@@ -128,7 +128,7 @@ _start (void)
char *buf = NULL;
size_t bufsz = 0;
while (getline (&buf, &bufsz, stdin) > 0)
while (__getline (&buf, &bufsz, stdin) > 0)
{
char *p = buf;
eval (&p);
+78 -21
View File
@@ -1,25 +1,67 @@
#! @BASH@
# Copyright (C) 1996, 1997 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
# modify it under the terms of the GNU Library General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# This is the `ldd' command, which lists what shared libraries are
# used by given dynamically-linked executables. It works by invoking the
# run-time dynamic linker as a command and setting the environment
# variable LD_TRACE_LOADED_OBJECTS to a non-empty value.
# We should be able to find the translation right at the beginning.
TEXTDOMAIN=libc
TEXTDOMAINDIR=@TEXTDOMAINDIR@
RTLD=@RTLD@
usage=$"\
ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
Report bugs to <bug-glibc@prep.ai.mit.edu>."
RELOCS=
while test $# -gt 0; do
case "$1" in
--v*)
echo 'ldd (GNU libc) @VERSION@'; exit 0 ;;
--h*)
echo "$usage"; exit 0 ;;
--) # Stop option prcessing
--v | --ve | --ver | --vers | --versi | --versio | --version)
echo $"ldd (GNU libc) @VERSION@
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
exit 0 ;;
--h | --he | --hel | --help)
echo $"ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
-d, --data-relocs process data relocations
-r, --function-relocs process data and function relocations
Report bugs using the \`glibcbug' script to <bugs@gnu.ai.mit.edu>."
exit 0 ;;
-d | --d | --da | --dat | --data | --data- | --data-r | --data-re | \
--data-rel | --data-relo | --data-reloc | --data-relocs)
RELOCS='--data-relocs'
shift ;;
-r | --f | --fu | --fun | --func | --funct | --functi | --functio | \
--function | --function- | --function-r | --function-re | --function-rel | \
--function-relo | --function-reloc | --function-relocs)
RELOCS='--function-relocs'
shift ;;
--) # Stop option processing.
shift; break ;;
-*)
echo >&2 $"ldd: unrecognized option" "\`$1'"
echo >&2 $"Try \`ldd --help' for more information."
exit 1 ;;
*)
break ;;
esac
@@ -27,9 +69,8 @@ done
case $# in
0)
echo >&2 $"\
ldd: missing file arguments
Try \`ldd --help' for more information."
echo >&2 $"ldd: missing file arguments"
echo >&2 $"Try \`ldd --help' for more information."
exit 1 ;;
1)
# We don't list the file name when there is only one.
@@ -39,14 +80,21 @@ Try \`ldd --help' for more information."
esac
if test ! -f "$file"; then
echo "${file}:" $"no such file"
elif ${RTLD} --verify "$file"; then
LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} "$file" && exit 1
exit 1
else
echo $" not a dynamic executable"
test -x "$file" ||
echo $"warning: you do not have execution permission for" "\`$file'"
if ${RTLD} --verify "$file"; then
LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} ${RELOCS} "$file" || exit 1
else
echo $" not a dynamic executable"
exit 1
fi
fi
exit ;;
*)
set -e # Bail out immediately if ${RTLD} loses on any argument.
result=0
for file; do
echo "${file}:"
case "$file" in
@@ -54,13 +102,22 @@ Try \`ldd --help' for more information."
*) file="./$file" ;;
esac
if test ! -f "$file"; then
echo "$file:" $"no such file"
elif ${RTLD} --verify "$file"; then
LD_TRACE_LOADED_OBJECTS=1 ${RTLD} "$file"
echo "${file}:" $"no such file"
result=1
else
echo $" not a dynamic executable"
test -x "$file" ||
echo $"warning: you do not have execution permission for" "\`$file'"
if ${RTLD} --verify "$file"; then
LD_TRACE_LOADED_OBJECTS=1 ${RTLD} ${RELOCS} "$file" || result=1
else
echo $" not a dynamic executable"
result=1
fi
fi
done
esac
exit 0
exit $result
# Local Variables:
# mode:ksh
# End:
+70 -18
View File
@@ -1,25 +1,64 @@
#! /bin/sh
# Copyright (C) 1996, 1997 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
# modify it under the terms of the GNU Library General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# This is the `ldd' command, which lists what shared libraries are
# used by given dynamically-linked executables. It works by invoking the
# run-time dynamic linker as a command and setting the environment
# variable LD_TRACE_LOADED_OBJECTS to a non-empty value.
RTLD=@RTLD@
usage="\
ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
Report bugs to <bug-glibc@prep.ai.mit.edu>."
RELOCS=
while test $# -gt 0; do
case "$1" in
--v*)
echo 'ldd (GNU libc) @VERSION@'; exit 0 ;;
--h*)
echo "$usage"; exit 0 ;;
--) # Stop option prcessing
--v | --ve | --ver | --vers | --versi | --versio | --version)
echo 'ldd (GNU libc) @VERSION@
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.'
exit 0 ;;
--h | --he | --hel | --help)
echo "ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
-d, --data-relocs process data relocations
-r, --function-relocs process data and function relocations
Report bugs using the \`glibcbug' script to <bugs@gnu.ai.mit.edu>."
exit 0 ;;
-d | --d | --da | --dat | --data | --data- | --data-r | --data-re | \
--data-rel | --data-relo | --data-reloc | --data-relocs)
RELOCS='--data-relocs'
shift ;;
-r | --f | --fu | --fun | --func | --funct | --functi | --functio | \
--function | --function- | --function-r | --function-re | --function-rel | \
--function-relo | --function-reloc | --function-relocs)
RELOCS='--function-relocs'
shift ;;
--) # Stop option processing.
shift; break ;;
-*)
echo >&2 "\
ldd: unrecognized option \`$1'
Try \`ldd --help' for more information."
exit 1 ;;
*)
break ;;
esac
@@ -39,14 +78,21 @@ Try \`ldd --help' for more information."
esac
if test ! -f "$file"; then
echo "${file}: no such file"
elif ${RTLD} --verify "$file"; then
LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} "$file" && exit 1
exit 1
else
echo ' not a dynamic executable'
test -x "$file" ||
echo "warning: you do not have execution permission for \`$file'"
if ${RTLD} --verify "$file"; then
LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} ${RELOCS} "$file" || exit 1
else
echo ' not a dynamic executable'
exit 1
fi
fi
exit ;;
*)
set -e # Bail out immediately if ${RTLD} loses on any argument.
result=0
for file; do
echo "${file}:"
case "$file" in
@@ -54,13 +100,19 @@ Try \`ldd --help' for more information."
*) file="./$file" ;;
esac
if test ! -f "$file"; then
echo "$file: no such file"
elif ${RTLD} --verify "$file"; then
LD_TRACE_LOADED_OBJECTS=1 ${RTLD} "$file"
echo "${file}: no such file"
result=1
else
echo ' not a dynamic executable'
test -x "$file" ||
echo "warning: you do not have execution permission for \`$file'"
if ${RTLD} --verify "$file"; then
LD_TRACE_LOADED_OBJECTS=1 ${RTLD} ${RELOCS} "$file" || result=1
else
echo ' not a dynamic executable'
result=1
fi
fi
done
esac
exit 0
exit $result
+52 -19
View File
@@ -1,21 +1,21 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996, 1997 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _LINK_H
#define _LINK_H 1
@@ -97,8 +97,14 @@ struct link_map
const char *l_libname; /* Name requested (before search). */
/* Indexed pointers to dynamic section.
[0,DT_NUM) are indexed by the processor-independent tags.
[DT_NUM,DT_NUM+DT_PROCNUM] are indexed by the tag minus DT_LOPROC. */
ElfW(Dyn) *l_info[DT_NUM + DT_PROCNUM];
[DT_NUM,DT_NUM+DT_PROCNUM) are indexed by the tag minus DT_LOPROC.
[DT_NUM+DT_PROCNUM,DT_NUM+DT_PROCNUM+DT_EXTRANUM) are indexed
by DT_EXTRATAGIDX(tagvalue) and
[DT_NUM+DT_PROCNUM+DT_VERSIONTAGNUM,
DT_NUM+DT_PROCNUM+DT_VERSIONTAGNUM+DT_EXTRANUM)
are indexed by DT_EXTRATAGIDX(tagvalue) (see <elf.h>). */
ElfW(Dyn) *l_info[DT_NUM + DT_PROCNUM + DT_VERSIONTAGNUM + DT_EXTRANUM];
const ElfW(Phdr) *l_phdr; /* Pointer to program header table in core. */
ElfW(Addr) l_entry; /* Entry point location. */
ElfW(Half) l_phnum; /* Number of program header entries. */
@@ -109,6 +115,11 @@ struct link_map
struct link_map **l_searchlist;
unsigned int l_nsearchlist;
/* We keep another list in which we keep duplicates. This is
needed in _dl_lookup_symbol_skip to implemented RTLD_NEXT. */
struct link_map **l_dupsearchlist;
unsigned int l_ndupsearchlist;
/* Dependent object that first caused this object to be loaded. */
struct link_map *l_loader;
@@ -129,6 +140,12 @@ struct link_map
unsigned int l_global:1; /* Nonzero if object in _dl_global_scope. */
unsigned int l_reserved:2; /* Reserved for internal use. */
};
/* Function used as argument for `_dl_receive_error' function. The
arguments are the error string and the objname the error occurred
in. */
typedef void (*receiver_fct) (const char *, const char *);
/* Internal functions of the run-time dynamic linker.
These can be accessed if you link again the dynamic linker
@@ -153,6 +170,11 @@ extern int _dl_sysdep_open_zero_fill (void); /* dl-sysdep.c */
are concatenated to form the message to print. */
extern void _dl_sysdep_message (const char *string, ...);
/* OS-dependent function to write a message on the standard error.
All arguments are `const char *'; args until a null pointer
are concatenated to form the message to print. */
extern void _dl_sysdep_error (const char *string, ...);
/* OS-dependent function to give a fatal error message and exit
when the dynamic linker fails before the program is fully linked.
All arguments are `const char *'; args until a null pointer
@@ -169,11 +191,9 @@ extern int _dl_secure;
zero; OBJECT is the name of the problematical shared object, or null if
it is a general problem; ERRSTRING is a string describing the specific
problem. */
extern void _dl_signal_error (int errcode,
const char *object,
const char *errstring)
__attribute__ ((__noreturn__));
const char *errstring);
/* Call OPERATE, catching errors from `dl_signal_error'. If there is no
error, *ERRSTRING is set to null. If there is an error, *ERRSTRING and
@@ -184,6 +204,11 @@ extern int _dl_catch_error (char **errstring,
const char **object,
void (*operate) (void));
/* Call OPERATE, receiving errors from `dl_signal_error'. Unlike
`_dl_catch_error' the operation is resumed after the OPERATE
function returns. */
extern void _dl_receive_error (receiver_fct fct, void (*operate) (void));
/* Helper function for <dlfcn.h> functions. Runs the OPERATE function via
_dl_catch_error. Returns zero for success, nonzero for failure; and
@@ -239,6 +264,14 @@ extern ElfW(Addr) _dl_lookup_symbol (const char *undef,
const char *reference_name,
int flags);
/* For handling RTLD_NEXT we must be able to skip shared objects. */
extern ElfW(Addr) _dl_lookup_symbol_skip (const char *undef,
const ElfW(Sym) **sym,
struct link_map *symbol_scope[],
const char *reference_name,
struct link_map *skip_this,
int flags);
/* Look up symbol NAME in MAP's scope and return its run-time address. */
extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name);
+110 -49
View File
@@ -1,21 +1,21 @@
/* Run time dynamic linker.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996, 1997 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <link.h>
#include <stddef.h>
@@ -44,6 +44,10 @@ extern void *_dl_sysdep_read_whole_file (const char *filename,
size_t *filesize_ptr,
int mmap_prot);
/* Helper function to handle errors while resolving symbols. */
static void print_unresolved (const char *errstring, const char *objname);
int _dl_argc;
char **_dl_argv;
const char *_dl_rpath;
@@ -83,10 +87,8 @@ _dl_start (void *arg)
/* Figure out the run-time load address of the dynamic linker itself. */
bootstrap_map.l_addr = elf_machine_load_address ();
/* Read our own dynamic section and fill in the info array.
Conveniently, the first element of the GOT contains the
offset of _DYNAMIC relative to the run-time load address. */
bootstrap_map.l_ld = (void *) bootstrap_map.l_addr + *elf_machine_got ();
/* Read our own dynamic section and fill in the info array. */
bootstrap_map.l_ld = (void *) bootstrap_map.l_addr + elf_machine_dynamic ();
elf_get_dynamic_info (bootstrap_map.l_ld, bootstrap_map.l_info);
#ifdef ELF_MACHINE_BEFORE_RTLD_RELOC
@@ -144,11 +146,19 @@ dl_main (const ElfW(Phdr) *phdr,
enum { normal, list, verify, trace } mode;
struct link_map **preloads;
unsigned int npreloads;
const char *preloadlist;
size_t file_size;
char *file;
mode = getenv ("LD_TRACE_LOADED_OBJECTS") != NULL ? trace : normal;
/* LAZY is determined by the parameters --datadeps and --function-deps
if we trace the binary. */
if (mode == trace)
lazy = -1;
else
lazy = !__libc_enable_secure && *(getenv ("LD_BIND_NOW") ?: "") == '\0';
/* Set up a flag which tells we are just starting. */
_dl_starting_up = 1;
@@ -188,22 +198,44 @@ of this helper program; chances are you did not intend to run this program.\n",
/* Note the place where the dynamic linker actually came from. */
_dl_rtld_map.l_name = _dl_argv[0];
if (! strcmp (_dl_argv[1], "--list"))
{
mode = list;
while (_dl_argc > 1)
if (! strcmp (_dl_argv[1], "--list"))
{
mode = list;
lazy = -1; /* This means do no dependency analysis. */
++_dl_skip_args;
--_dl_argc;
++_dl_argv;
}
else if (! strcmp (_dl_argv[1], "--verify"))
{
mode = verify;
++_dl_skip_args;
--_dl_argc;
++_dl_argv;
}
else if (! strcmp (_dl_argv[1], "--verify"))
{
mode = verify;
++_dl_skip_args;
--_dl_argc;
++_dl_argv;
}
++_dl_skip_args;
--_dl_argc;
++_dl_argv;
}
else if (! strcmp (_dl_argv[1], "--data-relocs"))
{
mode = trace;
lazy = 1; /* This means do only data relocation analysis. */
++_dl_skip_args;
--_dl_argc;
++_dl_argv;
}
else if (! strcmp (_dl_argv[1], "--function-relocs"))
{
mode = trace;
lazy = 0; /* This means do also function relocation analysis. */
++_dl_skip_args;
--_dl_argc;
++_dl_argv;
}
else
break;
++_dl_skip_args;
--_dl_argc;
@@ -238,6 +270,8 @@ of this helper program; chances are you did not intend to run this program.\n",
/* Create a link_map for the executable itself.
This will be what dlopen on "" returns. */
l = _dl_new_object ((char *) "", "", lt_executable);
if (l == NULL)
_dl_sysdep_fatal ("cannot allocate memory for link map", NULL);
l->l_phdr = phdr;
l->l_phnum = phent;
l->l_entry = *user_entry;
@@ -311,22 +345,22 @@ of this helper program; chances are you did not intend to run this program.\n",
preloads = NULL;
npreloads = 0;
if (! __libc_enable_secure)
preloadlist = getenv ("LD_PRELOAD");
if (preloadlist)
{
const char *preloadlist = getenv ("LD_PRELOAD");
if (preloadlist)
{
/* The LD_PRELOAD environment variable gives a colon-separated
list of libraries that are loaded before the executable's
dependencies and prepended to the global scope list. */
char *list = strdupa (preloadlist);
char *p;
while ((p = strsep (&list, ":")) != NULL)
{
(void) _dl_map_object (NULL, p, lt_library, 0);
++npreloads;
}
}
/* The LD_PRELOAD environment variable gives a white space
separated list of libraries that are loaded before the
executable's dependencies and prepended to the global scope
list. If the binary is running setuid all elements
containing a '/' are ignored since it is insecure. */
char *list = strdupa (preloadlist);
char *p;
while ((p = strsep (&list, " ")) != NULL)
if (! __libc_enable_secure || strchr (p, '/') == NULL)
{
(void) _dl_map_object (NULL, p, lt_library, 0);
++npreloads;
}
}
/* Read the contents of the file. */
@@ -495,12 +529,31 @@ of this helper program; chances are you did not intend to run this program.\n",
*--bp = '0';
_dl_sysdep_message (" in object at 0x", bp, "\n", NULL);
}
else if (lazy >= 0)
{
/* We have to do symbol dependency testing. */
void doit (void)
{
_dl_relocate_object (l, _dl_object_relocation_scope (l), lazy);
}
l = _dl_loaded;
while (l->l_next)
l = l->l_next;
do
{
if (l != &_dl_rtld_map && l->l_opencount > 0)
{
_dl_receive_error (print_unresolved, doit);
*_dl_global_scope_end = NULL;
}
l = l->l_prev;
} while (l);
}
_exit (0);
}
lazy = !__libc_enable_secure && *(getenv ("LD_BIND_NOW") ?: "") == '\0';
{
/* Now we have all the objects loaded. Relocate them all except for
the dynamic linker itself. We do this in reverse order so that copy
@@ -572,3 +625,11 @@ of this helper program; chances are you did not intend to run this program.\n",
/* Once we return, _dl_sysdep_start will invoke
the DT_INIT functions and then *USER_ENTRY. */
}
/* This is a little helper function for resolving symbols while
tracing the binary. */
static void
print_unresolved (const char *errstring, const char *objname)
{
_dl_sysdep_error (errstring, " (", objname, ")\n", NULL);
}
+75 -41
View File
@@ -1,20 +1,20 @@
/* Copyright (C) 1991, 92, 93, 95, 96 Free Software Foundation, Inc.
This file is part of the GNU C Library.
/* Copyright (C) 1991, 92, 93, 95, 96, 97 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _FEATURES_H
@@ -23,11 +23,14 @@ Cambridge, MA 02139, USA. */
/* These are defined by the user (or the compiler)
to specify the desired environment:
__STRICT_ANSI__ ANSI Standard C.
__STRICT_ANSI__ ISO Standard C.
_POSIX_SOURCE IEEE Std 1003.1.
_POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if ==2 add IEEE Std 1003.2.
_BSD_SOURCE ANSI, POSIX, and 4.3BSD things.
_SVID_SOURCE ANSI, POSIX, and SVID things.
_POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
if >=199309L, add IEEE Std 1003.1b-1993
_XOPEN_SOURCE Includes POSIX and XPG things.
_XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
_BSD_SOURCE ISO C, POSIX, and 4.3BSD things.
_SVID_SOURCE ISO C, POSIX, and SVID things.
_GNU_SOURCE All of the above, plus GNU extensions.
_REENTRANT Select additionally reentrant object.
_THREAD_SAFE Same as _REENTRANT, often used by other systems.
@@ -36,13 +39,16 @@ Cambridge, MA 02139, USA. */
If none of these are defined, the default is all but _GNU_SOURCE.
If more than one of these are defined, they accumulate.
For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE
together give you ANSI C, 1003.1, and 1003.2, but nothing else.
together give you ISO C, 1003.1, and 1003.2, but nothing else.
These are defined by this file and are used by the
header files to decide what to declare or define:
__USE_POSIX Define IEEE Std 1003.1 things.
__USE_POSIX2 Define IEEE Std 1003.2 things.
__USE_POSIX199309 Define IEEE Std 1003.1b things.
__USE_XOPEN Define XPG things.
__USE_XOPEN_EXTENDED Define X/Open Unix things.
__USE_BSD Define 4.3BSD things.
__USE_SVID Define SVID things.
__USE_MISC Define things common to BSD and System V Unix.
@@ -50,7 +56,10 @@ Cambridge, MA 02139, USA. */
__USE_REENTRANT Define reentrant/thread-safe *_r functions.
__FAVOR_BSD Favor 4.3BSD things in cases of conflict.
The macro `__GNU_LIBRARY__' is defined by this file unconditionally.
The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
defined by this file unconditionally. `__GNU_LIBRARY__' is provided
only for compatibility. All new code should use the other symbols
to test for features.
All macros listed above as possibly being defined by this file are
explicitly undefined if they are not explicitly defined.
@@ -62,6 +71,9 @@ Cambridge, MA 02139, USA. */
/* Undefine everything, so we get a clean slate. */
#undef __USE_POSIX
#undef __USE_POSIX2
#undef __USE_POSIX199309
#undef __USE_XOPEN
#undef __USE_XOPEN_EXTENDED
#undef __USE_BSD
#undef __USE_SVID
#undef __USE_MISC
@@ -71,20 +83,21 @@ Cambridge, MA 02139, USA. */
#undef __KERNEL_STRICT_NAMES
/* Suppress kernel-name space pollution unless user expressedly asks
for it: */
for it. */
#ifndef _LOOSE_KERNEL_NAMES
# define __KERNEL_STRICT_NAMES
#endif
/* Always use ANSI things. */
/* Always use ISO C things. */
#define __USE_ANSI 1
/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */
#if defined (_BSD_SOURCE) && \
!(defined (_POSIX_SOURCE) || defined (_POSIX_C_SOURCE) || \
defined (_GNU_SOURCE) || defined (_SVID_SOURCE))
#define __FAVOR_BSD 1
#if defined _BSD_SOURCE && \
!(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \
defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \
defined _GNU_SOURCE || defined _SVID_SOURCE)
# define __FAVOR_BSD 1
#endif
/* If _GNU_SOURCE was defined by the user, turn on all the other features. */
@@ -92,7 +105,11 @@ Cambridge, MA 02139, USA. */
#undef _POSIX_SOURCE
#define _POSIX_SOURCE 1
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 2
#define _POSIX_C_SOURCE 199309L
#undef _XOPEN_SOURCE
#define _XOPEN_SOURCE 1
#undef _XOPEN_SOURCE_EXTENDED
#define _XOPEN_SOURCE_EXTENDED 1
#undef _BSD_SOURCE
#define _BSD_SOURCE 1
#undef _SVID_SOURCE
@@ -101,29 +118,46 @@ Cambridge, MA 02139, USA. */
/* If nothing (other than _GNU_SOURCE) is defined,
define _BSD_SOURCE and _SVID_SOURCE. */
#if (!defined (__STRICT_ANSI__) && !defined (_POSIX_SOURCE) && \
!defined (_POSIX_C_SOURCE) && !defined (_BSD_SOURCE) && \
!defined (_SVID_SOURCE))
#if (!defined __STRICT_ANSI__ && !defined _POSIX_SOURCE && \
!defined _POSIX_C_SOURCE && !defined _XOPEN_SOURCE && \
!defined _XOPEN_SOURCE_EXTENDED && !defined _BSD_SOURCE && \
!defined _SVID_SOURCE)
#define _BSD_SOURCE 1
#define _SVID_SOURCE 1
#endif
/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2. */
#if (!defined (__STRICT_ANSI__) && !defined (_POSIX_SOURCE) && \
!defined (_POSIX_C_SOURCE))
/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2
(and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */
#if (!defined __STRICT_ANSI__ && !defined _POSIX_SOURCE && \
!defined _POSIX_C_SOURCE)
#define _POSIX_SOURCE 1
#ifdef _XOPEN_SOURCE
#define _POSIX_C_SOURCE 2
#else
#define _POSIX_C_SOURCE 199309L
#endif
#endif
#if defined (_POSIX_SOURCE) || _POSIX_C_SOURCE >= 1
#if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE
#define __USE_POSIX 1
#endif
#if defined (_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 2
#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE
#define __USE_POSIX2 1
#endif
#if defined (_BSD_SOURCE) || defined (_SVID_SOURCE)
#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 199309L
#define __USE_POSIX199309 1
#endif
#ifdef _XOPEN_SOURCE
#define __USE_XOPEN 1
#ifdef _XOPEN_SOURCE_EXTENDED
#define __USE_XOPEN_EXTENDED 1
#endif
#endif
#if defined _BSD_SOURCE || defined _SVID_SOURCE
#define __USE_MISC 1
#endif
@@ -139,7 +173,7 @@ Cambridge, MA 02139, USA. */
#define __USE_GNU 1
#endif
#if defined (_REENTRANT) || defined (_THREAD_SAFE)
#if defined _REENTRANT || defined _THREAD_SAFE
#define __USE_REENTRANT 1
#endif
@@ -159,7 +193,7 @@ Cambridge, MA 02139, USA. */
#define __GLIBC_MINOR__ 0
#if !defined (__GNUC__) || __GNUC__ < 2
#if !defined __GNUC__ || __GNUC__ < 2
/* In GCC version 2, (__extension__ EXPR) will not complain
about GCC extensions used in EXPR under -ansi or -pedantic. */
#define __extension__
@@ -174,15 +208,15 @@ Cambridge, MA 02139, USA. */
/* This is here only because every header file already includes this one. */
#ifndef _LIBC
/* Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
<stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
<gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
which will always return failure (and set errno to ENOSYS).
We avoid including <stubs.h> when compiling the C library itself to
We avoid including <gnu/stubs.h> when compiling the C library itself to
avoid a dependency loop. stubs.h depends on every object file. If
this #include were done for the library source code, then every object
file would depend on stubs.h. */
#include <stubs.h>
#include <gnu/stubs.h>
#endif
#endif /* features.h */
+244
View File
@@ -0,0 +1,244 @@
#! /bin/sh
#
# glibcbug - create a bug report and mail it to the bug address.
#
# configuration section:
# these variables are filled in by configure
#
VERSION="@VERSION@"
BUGGLIBC="bugs@gnu.ai.mit.edu"
ADDONS="@subdirs@"
PATH=/bin:/usr/bin:/usr/local/bin:$PATH
export PATH
TEMP=/tmp/glibcbug.$$
BUGADDR=${1-$BUGGLIBC}
ENVIRONMENT=`uname -a`
: ${EDITOR=emacs}
: ${USER=${LOGNAME-`whoami`}}
trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15
trap 'rm -f $TEMP $TEMP.x' 0
# How to read the passwd database.
PASSWD="cat /etc/passwd"
if [ -f /usr/lib/sendmail ] ; then
MAIL_AGENT="/usr/lib/sendmail -oi -t"
elif [ -f /usr/sbin/sendmail ] ; then
MAIL_AGENT="/usr/sbin/sendmail -oi -t"
else
MAIL_AGENT=rmail
fi
# Figure out how to echo a string without a trailing newline
N=`echo 'hi there\c'`
case "$N" in
*c) ECHON1='echo -n' ECHON2= ;;
*) ECHON1=echo ECHON2='\c' ;;
esac
# Find out the name of the originator of this PR.
if [ -n "$NAME" ]; then
ORIGINATOR="$NAME"
elif [ -f $HOME/.fullname ]; then
ORIGINATOR="`sed -e '1q' $HOME/.fullname`"
else
# Must use temp file due to incompatibilities in quoting behavior
# and to protect shell metacharacters in the expansion of $LOGNAME
$PASSWD | grep "^$LOGNAME:" | awk -F: '{print $5}' | sed -e 's/,.*//' > $TEMP
ORIGINATOR="`cat $TEMP`"
rm -f $TEMP
fi
if [ -n "$ORGANIZATION" ]; then
if [ -f "$ORGANIZATION" ]; then
ORGANIZATION="`cat $ORGANIZATION`"
fi
else
if [ -f $HOME/.organization ]; then
ORGANIZATION="`cat $HOME/.organization`"
elif [ -f $HOME/.signature ]; then
ORGANIZATION=`sed -e "s/^/ /" $HOME/.signature; echo ">"`
fi
fi
# If they don't have a preferred editor set, then use
if [ -z "$VISUAL" ]; then
if [ -z "$EDITOR" ]; then
EDIT=vi
else
EDIT="$EDITOR"
fi
else
EDIT="$VISUAL"
fi
# Find out some information.
SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \
( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""`
ARCH=`[ -f /bin/arch ] && /bin/arch`
MACHINE=`[ -f /bin/machine ] && /bin/machine`
ORGANIZATION_C='<organization of PR author (multiple lines)>'
SYNOPSIS_C='<synopsis of the problem (one line)>'
SEVERITY_C='<[ non-critical | serious | critical ] (one line)>'
PRIORITY_C='<[ low | medium | high ] (one line)>'
CLASS_C='<[ sw-bug | doc-bug | change-request | support ] (one line)>'
RELEASE_C='<release number or tag (one line)>'
ENVIRONMENT_C='<machine, os, target, libraries (multiple lines)>'
DESCRIPTION_C='<precise description of the problem (multiple lines)>'
HOW_TO_REPEAT_C='<code/input/activities to reproduce the problem (multiple lines)>'
FIX_C='<how to correct or work around the problem, if known (multiple lines)>'
cat > $TEMP <<EOF
SEND-PR: -*- send-pr -*-
SEND-PR: Lines starting with \`SEND-PR' will be removed automatically, as
SEND-PR: will all comments (text enclosed in \`<' and \`>').
SEND-PR:
From: ${USER}
To: ${BUGADDR}
Subject: [50 character or so descriptive subject here (for reference)]
>Submitter-Id: net
>Originator: ${ORIGINATOR}
>Organization:
${ORGANIZATION- $ORGANIZATION_C}
>Confidential: no
>Synopsis: $SYNOPSIS_C
>Severity: $SEVERITY_C
>Priority: $PRIORITY_C
>Category: libc
>Class: $CLASS_C
>Release: libc-${VERSION}
>Environment:
$ENVIRONMENT_C
`[ -n "$SYSTEM" ] && echo System: $SYSTEM`
`[ -n "$ARCH" ] && echo Architecture: $ARCH`
`[ -n "$MACHINE" ] && echo Machine: $MACHINE`
`[ -n "$ADDONS" ] && echo Addons: $ADDONS`
>Description:
$DESCRIPTION_C
>How-To-Repeat:
$HOW_TO_REPEAT_C
>Fix:
$FIX_C
EOF
chmod u+w $TEMP
cp $TEMP $TEMP.x
eval $EDIT $TEMP
if cmp -s $TEMP $TEMP.x; then
echo "File not changed, no bug report submitted."
exit 1
fi
#
# Check the enumeration fields
# This is a "sed-subroutine" with one keyword parameter
# (with workaround for Sun sed bug)
#
SED_CMD='
/$PATTERN/{
s|||
s|<.*>||
s|^[ ]*||
s|[ ]*$||
p
q
}'
while :; do
CNT=0
#
# 1) Severity
#
PATTERN=">Severity:"
SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
case "$SEVERITY" in
""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;;
*) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'."
esac
#
# 2) Priority
#
PATTERN=">Priority:"
PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
case "$PRIORITY" in
""|low|medium|high) CNT=`expr $CNT + 1` ;;
*) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'."
esac
#
# 3) Class
#
PATTERN=">Class:"
CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
case "$CLASS" in
""|sw-bug|doc-bug|change-request|support) CNT=`expr $CNT + 1` ;;
*) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'."
esac
[ $CNT -lt 3 ] &&
echo "Errors were found with the problem report."
while :; do
$ECHON1 "a)bort, e)dit or s)end? $ECHON2"
read input
case "$input" in
a*)
echo "$COMMAND: problem report saved in $HOME/dead.glibcbug."
cat $TEMP >> $HOME/dead.glibcbug
xs=1; exit
;;
e*)
eval $EDIT $TEMP
continue 2
;;
s*)
break 2
;;
esac
done
done
#
# Remove comments and send the problem report
# (we have to use patterns, where the comment contains regex chars)
#
# /^>Originator:/s;$ORIGINATOR;;
sed -e "
/^SEND-PR:/d
/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
/^>Confidential:/s;<.*>;;
/^>Synopsis:/s;$SYNOPSIS_C;;
/^>Severity:/s;<.*>;;
/^>Priority:/s;<.*>;;
/^>Class:/s;<.*>;;
/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
" $TEMP > $TEMP.x
if $MAIL_AGENT $BUGGLIBC < $TEMP.x; then
echo "$COMMAND: problem report sent"
xs=0; exit
else
echo "$COMMAND: mysterious mail failure, report not sent."
echo "$COMMAND: problem report saved in $HOME/dead.glibcbug."
cat $TEMP >> $HOME/dead.glibcbug
fi
exit 0
+5 -5
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1995, 1996 Free Software Foundation, Inc.
# Copyright (C) 1995, 1996, 1997 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Sub-makefile for gmon portion of the library.
@@ -31,7 +31,7 @@ include ../Rules
CFLAGS-mcount.c := -fno-omit-frame-pointer
# We cannot compile mcount.c with -pg because that would
# create resursive calls. Just copy the normal static object.
# create recursive calls. Just copy the normal static object.
# On systems where `profil' is not a system call, the same
# problem exists for the internal functions in profil.c.
+28 -23
View File
@@ -1,37 +1,40 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
Contributed by David Mosberger (davidm@cs.arizona.edu).
This file is part of the GNU C Library.
Contributed by David Mosberger <davidm@cs.arizona.edu>.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This file specifies the format of gmon.out files. It should have
as few external dependencies as possible as it is going to be included
in many different programs. That is, minimize the number of #include's.
as few external dependencies as possible as it is going to be included
in many different programs. That is, minimize the number of #include's.
A gmon.out file consists of a header (defined by gmon_hdr) followed by
a sequence of records. Each record starts with a one-byte tag
identifying the type of records, followed by records specific data. */
A gmon.out file consists of a header (defined by gmon_hdr) followed by
a sequence of records. Each record starts with a one-byte tag
identifying the type of records, followed by records specific data. */
#ifndef _SYS_GMON_OUT_H_
#define _SYS_GMON_OUT_H_
#ifndef _SYS_GMON_OUT_H
#define _SYS_GMON_OUT_H 1
#include <features.h>
#define GMON_MAGIC "gmon" /* magic cookie */
#define GMON_VERSION 1 /* version number */
__BEGIN_DECLS
/*
* Raw header as it appears on file (without padding). This header
* always comes first in gmon.out and is then followed by a series
@@ -63,4 +66,6 @@ struct gmon_cg_arc_record {
int count; /* number of arc traversals */
};
#endif /* !_SYS_GMON_OUT_H_ */
__END_DECLS
#endif /* _SYS_GMON_OUT_H */
+16 -14
View File
@@ -1,21 +1,21 @@
/* Header with interface version macros for library pieces copied elsewhere.
Copyright (C) 1995 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1995, 1996, 1997 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _GNU_VERSIONS_H
#define _GNU_VERSIONS_H 1
@@ -47,5 +47,7 @@ Cambridge, MA 02139, USA. */
#define _GNU_OBSTACK_INTERFACE_VERSION 1 /* vs malloc/obstack.c */
#define _GNU_REGEX_INTERFACE_VERSION 1 /* vs posix/regex.c */
#define _GNU_GLOB_INTERFACE_VERSION 1 /* vs posix/glob.c */
#define _GNU_GETOPT_INTERFACE_VERSION 2 /* vs posix/getopt.c and
posix/getopt1.c */
#endif /* gnu-versions.h */
+4 -4
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991 Free Software Foundation, Inc.
# Copyright (C) 1991, 1997 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
subdir := gnulib
+4 -4
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
# Copyright (C) 1991, 1992, 1996, 1997 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# Sub-makefile for grp portion of the library.
+26 -17
View File
@@ -1,20 +1,20 @@
/* Copyright (C) 1991, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <ctype.h>
#include <grp.h>
@@ -33,11 +33,20 @@ struct grent_data {};
LINE_PARSER
(,
STRING_FIELD (result->gr_name, ISCOLON, 0);
STRING_FIELD (result->gr_passwd, ISCOLON, 0);
if (result->gr_name[0] == '+' || result->gr_name[0] == '-')
INT_FIELD_MAYBE_NULL (result->gr_gid, ISCOLON, 0, 10, , 0)
if (line[0] == '\0'
&& (result->gr_name[0] == '+' || result->gr_name[0] == '-'))
{
result->gr_passwd = NULL;
result->gr_gid = 0;
}
else
INT_FIELD (result->gr_gid, ISCOLON, 0, 10,)
{
STRING_FIELD (result->gr_passwd, ISCOLON, 0);
if (result->gr_name[0] == '+' || result->gr_name[0] == '-')
INT_FIELD_MAYBE_NULL (result->gr_gid, ISCOLON, 0, 10, , 0)
else
INT_FIELD (result->gr_gid, ISCOLON, 0, 10,)
}
)
+36 -21
View File
@@ -1,20 +1,20 @@
/* Copyright (C) 1991, 1992, 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
/* Copyright (C) 1991, 1992, 1995, 1996, 1997 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/*
* POSIX Standard: 9.2.1 Group Database Access <grp.h>
@@ -29,6 +29,12 @@ __BEGIN_DECLS
#include <gnu/types.h>
#define __need_size_t
#include <stddef.h>
#define __need_size_t
#include <stddef.h>
/* The group structure. */
struct group
@@ -63,7 +69,7 @@ extern struct group *__grpscan __P ((__ptr_t *__p,
#endif
#if defined(__USE_SVID) || defined(__USE_MISC) || defined (__USE_BSD)
#if defined(__USE_SVID) || defined (__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
/* Rewind the group-file stream. */
extern void setgrent __P ((void));
@@ -85,17 +91,25 @@ extern struct group *getgrgid __P ((__gid_t __gid));
/* Search for an entry with a matching group name. */
extern struct group *getgrnam __P ((__const char *__name));
#ifdef __USE_REENTRANT
#if defined __USE_POSIX || defined __USE_MISC
#ifdef __USE_MISC
/* Reasonable value for the buffer sized used in the reentrant
functions below. But better use `sysconf'. */
#define NSS_BUFLEN_GROUP 1024
#endif
/* Reentrant versions of some of the functions above.
PLEASE NOTE: these functions are not yet standardized. The interface
may change in later versions of this library. */
PLEASE NOTE: the `getgrent_r' function is not (yet) standardized.
The interface may change in later versions of this library. But
the interface is designed following the principals used for the
other reentrant functions so the chances are good this is what the
POSIX people would choose. */
#if defined(__USE_SVID) || defined(__USE_MISC) || defined (__USE_BSD)
#if defined(__USE_SVID) || defined (__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
extern int __getgrent_r __P ((struct group *__resultbuf, char *buffer,
size_t __buflen, struct group **__result));
extern int getgrent_r __P ((struct group *__resultbuf, char *buffer,
size_t __buflen, struct group **__result));
#endif
@@ -111,7 +125,8 @@ extern int getgrnam_r __P ((__const char *__name, struct group *__resultbuf,
struct group **__result));
#ifdef __USE_SVID
/* Read a group entry from STREAM. */
/* Read a group entry from STREAM. This function is not standardized
an probably never will. */
extern int __fgetgrent_r __P ((FILE * __stream, struct group *__resultbuf,
char *buffer, size_t __buflen,
struct group **__result));
@@ -120,7 +135,7 @@ extern int fgetgrent_r __P ((FILE * __stream, struct group *__resultbuf,
struct group **__result));
#endif
#endif /* reentrant */
#endif /* POSIX or reentrant */
#ifdef __USE_BSD
+18 -15
View File
@@ -1,20 +1,20 @@
/* Copyright (C) 1989, 1991, 1993, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <alloca.h>
#include <unistd.h>
@@ -39,7 +39,9 @@ initgroups (user, group)
#else
struct group *g;
struct group grpbuf, *g;
size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX);
char *tmpbuf;
register size_t n;
size_t ngroups;
gid_t *groups;
@@ -58,13 +60,14 @@ initgroups (user, group)
#endif
groups = __alloca (ngroups * sizeof *groups);
tmpbuf = __alloca (buflen);
setgrent ();
n = 0;
groups[n++] = group;
while ((g = getgrent ()) != NULL)
while (__getgrent_r (&grpbuf, tmpbuf, buflen, &g) >= 0)
if (g->gr_gid != group)
{
register char **m;
+7 -6
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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
@@ -12,9 +12,9 @@
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# License along with the GNU C Library; see the file COPYING.LIB. If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
subdir := hurd
@@ -74,9 +74,10 @@ include ../Rules
# to get installed.
sunrpc-headers = netdb.h pmap_prot.h xdr.h types.h auth.h \
rpc_msg.h auth_unix.h
installed-sunrpc-headers = $(addprefix $(includedir)/rpc/,$(sunrpc-headers))
installed-sunrpc-headers = $(addprefix $(inst_includedir)/rpc/, \
$(sunrpc-headers))
install-headers-nosubdir: $(installed-sunrpc-headers)
$(installed-sunrpc-headers): $(includedir)/%: $(..)sunrpc/%
$(installed-sunrpc-headers): $(inst_includedir)/%: $(..)sunrpc/%
$(do-install)
+35 -36
View File
@@ -1,21 +1,21 @@
/* Convenience function to catch expected signals during an operation.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <hurd/signal.h>
#include <hurd/sigpreempt.h>
@@ -25,14 +25,14 @@ Cambridge, MA 02139, USA. */
error_t
hurd_catch_signal (sigset_t sigset,
unsigned long int first, unsigned long int last,
error_t (*operate) (struct hurd_signal_preempter *),
error_t (*operate) (struct hurd_signal_preemptor *),
sighandler_t handler)
{
jmp_buf buf;
void throw (int signo, long int sigcode, struct sigcontext *scp)
{ longjmp (buf, scp->sc_error ?: EGRATUITOUS); }
struct hurd_signal_preempter preempter =
struct hurd_signal_preemptor preemptor =
{
sigset, first, last,
NULL, handler == SIG_ERR ? (sighandler_t) &throw : handler,
@@ -50,23 +50,23 @@ hurd_catch_signal (sigset_t sigset,
if (error == 0)
{
/* Install a signal preempter for the thread. */
/* Install a signal preemptor for the thread. */
__spin_lock (&ss->lock);
preempter.next = ss->preempters;
ss->preempters = &preempter;
preemptor.next = ss->preemptors;
ss->preemptors = &preemptor;
__spin_unlock (&ss->lock);
/* Try the operation that might crash. */
(*operate) (&preempter);
(*operate) (&preemptor);
}
/* Either FUNCTION completed happily and ERROR is still zero, or it hit
an expected signal and `throw' made setjmp return the signal error
code in ERROR. Now we can remove the preempter and return. */
code in ERROR. Now we can remove the preemptor and return. */
__spin_lock (&ss->lock);
assert (ss->preempters == &preempter);
ss->preempters = preempter.next;
assert (ss->preemptors == &preemptor);
ss->preemptors = preemptor.next;
__spin_unlock (&ss->lock);
return error;
@@ -76,7 +76,7 @@ hurd_catch_signal (sigset_t sigset,
error_t
hurd_safe_memset (void *dest, int byte, size_t nbytes)
{
error_t operate (struct hurd_signal_preempter *preempter)
error_t operate (struct hurd_signal_preemptor *preemptor)
{
memset (dest, byte, nbytes);
return 0;
@@ -90,7 +90,7 @@ hurd_safe_memset (void *dest, int byte, size_t nbytes)
error_t
hurd_safe_copyout (void *dest, const void *src, size_t nbytes)
{
error_t operate (struct hurd_signal_preempter *preempter)
error_t operate (struct hurd_signal_preemptor *preemptor)
{
memcpy (dest, src, nbytes);
return 0;
@@ -103,7 +103,7 @@ hurd_safe_copyout (void *dest, const void *src, size_t nbytes)
error_t
hurd_safe_copyin (void *dest, const void *src, size_t nbytes)
{
error_t operate (struct hurd_signal_preempter *preempter)
error_t operate (struct hurd_signal_preemptor *preemptor)
{
memcpy (dest, src, nbytes);
return 0;
@@ -120,18 +120,18 @@ hurd_safe_memmove (void *dest, const void *src, size_t nbytes)
void throw (int signo, long int sigcode, struct sigcontext *scp)
{ longjmp (buf, scp->sc_error ?: EGRATUITOUS); }
struct hurd_signal_preempter src_preempter =
struct hurd_signal_preemptor src_preemptor =
{
sigmask (SIGBUS) | sigmask (SIGSEGV),
(vm_address_t) src, (vm_address_t) src + nbytes,
NULL, (sighandler_t) &throw,
};
struct hurd_signal_preempter dest_preempter =
struct hurd_signal_preemptor dest_preemptor =
{
sigmask (SIGBUS) | sigmask (SIGSEGV),
(vm_address_t) dest, (vm_address_t) dest + nbytes,
NULL, (sighandler_t) &throw,
&src_preempter
&src_preemptor
};
struct hurd_sigstate *const ss = _hurd_self_sigstate ();
@@ -142,10 +142,10 @@ hurd_safe_memmove (void *dest, const void *src, size_t nbytes)
if (error == 0)
{
/* Install a signal preempter for the thread. */
/* Install a signal preemptor for the thread. */
__spin_lock (&ss->lock);
src_preempter.next = ss->preempters;
ss->preempters = &dest_preempter;
src_preemptor.next = ss->preemptors;
ss->preemptors = &dest_preemptor;
__spin_unlock (&ss->lock);
/* Do the copy; it might fault. */
@@ -154,13 +154,12 @@ hurd_safe_memmove (void *dest, const void *src, size_t nbytes)
/* Either memmove completed happily and ERROR is still zero, or it hit
an expected signal and `throw' made setjmp return the signal error
code in ERROR. Now we can remove the preempter and return. */
code in ERROR. Now we can remove the preemptor and return. */
__spin_lock (&ss->lock);
assert (ss->preempters == &dest_preempter);
ss->preempters = src_preempter.next;
assert (ss->preemptors == &dest_preemptor);
ss->preemptors = src_preemptor.next;
__spin_unlock (&ss->lock);
return error;
}
+1 -1
View File
@@ -222,7 +222,7 @@ extern error_t _hurd_exec (task_t task,
char *const envp[]);
/* Inform the proc server we have exitted with STATUS, and kill the
/* Inform the proc server we have exited with STATUS, and kill the
task thoroughly. This function never returns, no matter what. */
extern void _hurd_exit (int status) __attribute__ ((noreturn));
+1 -1
View File
@@ -143,7 +143,7 @@ error_t file_name_path_scan (const char *file_name, const char *path,
/* Lookup FILE_NAME and return the node opened with FLAGS & MODE in result
(see hurd_file_name_lookup for details), but a simple filename (without
any directory prefixes) will be consectutively prefixed with the pathnames
any directory prefixes) will be consecutively prefixed with the pathnames
in the `:' separated list PATH until one succeeds in a successful lookup.
If none succeed, then the first error that wasn't ENOENT is returned, or
ENOENT if no other errors were returned. If PREFIXED_NAME is non-NULL,
+17 -17
View File
@@ -1,21 +1,21 @@
/* Implementing POSIX.1 signals under the Hurd.
Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1993, 1994, 1995, 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _HURD_SIGNAL_H
@@ -40,7 +40,7 @@ Cambridge, MA 02139, USA. */
#include <cthreads.h> /* For `struct mutex'. */
#include <spin-lock.h>
#include <hurd/threadvar.h> /* We cache sigstate in a threadvar. */
struct hurd_signal_preempter; /* <hurd/sigpreempt.h> */
struct hurd_signal_preemptor; /* <hurd/sigpreempt.h> */
/* Full details of a signal. */
@@ -71,11 +71,11 @@ struct hurd_sigstate
struct sigaction actions[NSIG];
struct sigaltstack sigaltstack;
/* Chain of thread-local signal preempters; see <hurd/sigpreempt.h>.
/* Chain of thread-local signal preemptors; see <hurd/sigpreempt.h>.
Each element of this chain is in local stack storage, and the chain
parallels the stack: the head of this chain is in the innermost
stack frame, and each next element in an outermore frame. */
struct hurd_signal_preempter *preempters;
struct hurd_signal_preemptor *preemptors;
/* For each signal that may be pending, the details to deliver it with. */
struct hurd_signal_detail pending_data[NSIG];
+32 -32
View File
@@ -1,21 +1,21 @@
/* Preemption of Hurd signals before POSIX.1 semantics take over.
Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _HURD_SIGPREEMPT_H
@@ -25,7 +25,7 @@ Cambridge, MA 02139, USA. */
struct hurd_sigstate; /* <hurd/signal.h> */
struct hurd_signal_detail; /* <hurd/signal.h> */
struct hurd_signal_preempter
struct hurd_signal_preemptor
{
/* These members select which signals this structure will apply to.
The rest of the structure is only consulted if these match. */
@@ -34,35 +34,35 @@ struct hurd_signal_preempter
/* This function will be called (with SS->lock held) to decide what to
do with the signal described. It may modify the codes of the signal
passed. If the return value is SIG_ERR, the next matching preempter
passed. If the return value is SIG_ERR, the next matching preemptor
is tried, or the normal handling is done for the signal (which may
have been changed by the preempter function). Otherwise, the signal
have been changed by the preemptor function). Otherwise, the signal
is processed as if the return value were its handler setting. */
sighandler_t (*preempter) (struct hurd_signal_preempter *preempter,
sighandler_t (*preemptor) (struct hurd_signal_preemptor *preemptor,
struct hurd_sigstate *ss,
int *signo, struct hurd_signal_detail *detail);
/* If PREEMPTER is null, act as if it returned HANDLER. */
/* If PREEMPTOR is null, act as if it returned HANDLER. */
sighandler_t handler;
struct hurd_signal_preempter *next; /* List structure. */
struct hurd_signal_preemptor *next; /* List structure. */
};
#define HURD_PREEMPT_SIGNAL_P(preempter, signo, sigcode) \
(((preempter)->signals & sigmask (signo)) && \
(sigcode) >= (preempter)->first && (sigcode) <= (preempter)->last)
#define HURD_PREEMPT_SIGNAL_P(preemptor, signo, sigcode) \
(((preemptor)->signals & sigmask (signo)) && \
(sigcode) >= (preemptor)->first && (sigcode) <= (preemptor)->last)
/* Signal preempters applying to all threads; locked by _hurd_siglock. */
extern struct hurd_signal_preempter *_hurdsig_preempters;
/* Signal preemptors applying to all threads; locked by _hurd_siglock. */
extern struct hurd_signal_preemptor *_hurdsig_preemptors;
extern sigset_t _hurdsig_preempted_set;
/* The caller must initialize all members of *PREEMPTER except `next'.
The preempter is registered on the global list. */
void hurd_preempt_signals (struct hurd_signal_preempter *preempter);
/* The caller must initialize all members of *PREEMPTOR except `next'.
The preemptor is registered on the global list. */
void hurd_preempt_signals (struct hurd_signal_preemptor *preemptor);
/* Remove a preempter registered with hurd_preempt_signals. */
void hurd_unpreempt_signals (struct hurd_signal_preempter *preempter);
/* Remove a preemptor registered with hurd_preempt_signals. */
void hurd_unpreempt_signals (struct hurd_signal_preemptor *preemptor);
/* Call *OPERATE and return its value. If a signal in SIGSET with a sigcode
@@ -72,13 +72,13 @@ void hurd_unpreempt_signals (struct hurd_signal_preempter *preempter);
hurd_catch_signal returns the sc_error value from the signal (or
EGRATUITOUS if that is zero).
The preempter structure is passed to *OPERATE, which may modify its
The preemptor structure is passed to *OPERATE, which may modify its
sigcode range or functions at any time during which it is guaranteed no
signal in SIGSET will arrive. */
error_t hurd_catch_signal (sigset_t sigset,
unsigned long int first, unsigned long int last,
error_t (*operate) (struct hurd_signal_preempter *),
error_t (*operate) (struct hurd_signal_preemptor *),
sighandler_t handler);

Some files were not shown because too many files have changed in this diff Show More