Commit Graph

72 Commits

Author SHA1 Message Date
Ulrich Drepper
35fc382add Update.
* sysdeps/arm/dl-machine.h: Likewise.
	* sysdeps/hppa/dl-machine.h: Likewise.
	* sysdeps/m68k/dl-machine.h: Likewise.
	* sysdeps/powerpc/dl-machine.h: Likewise.
	* sysdeps/s390/dl-machine.h: Likewise.
	* sysdeps/sh/dl-machine.h: Likewise.
2001-02-28 06:36:10 +00:00
Ulrich Drepper
62dcee574f Replace _dl_debug_* variables with _dl_debug_mask. 2001-02-27 09:34:31 +00:00
Andreas Jaeger
2e47aff5ac * posix/fnmatch_loop.c (FCT): Remove signed warnings.
* posix/wordexp.c (do_parse_glob): Likewise. 
* sysdeps/posix/sigblock.c (__sigblock): Likewise. 
* sysdeps/posix/sigsetmask.c (__sigsetmask): Likewise. 
* elf/dl-open.c (_dl_open): Likewise. 
* elf/dl-close.c (_dl_close): Likewise. 
* elf/dl-load.c (_dl_map_object): Likewise. 
* iconv/iconv_prog.c (process_fd): Likewise.
2001-01-12 17:03:52 +00:00
Ulrich Drepper
7e36861e77 Update.
2001-01-11  H.J. Lu  <hjl@gnu.org>

	* elf/dl-libc.c (do_dlopen): Move DL_STATIC_INIT to ...
	* elf/dl-open.c (_dl_open): Here.
	* sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_lock):
	Make it static.
	(_dl_static_init): Initialize the variables every time when possible.
	* sysdeps/unix/sysv/linux/ia64/ldsodefs.h (DL_STATIC_INIT):
	Undefine it first.
2001-01-11 19:42:21 +00:00
Ulrich Drepper
09f5e1635a Update.
2000-12-28  Wolfram Gloger  <wg@malloc.de>

	* malloc/malloc.c (MALLOC_COPY): Handle case if source and
	destination overlap.  Assume dest is always below source if
	overlapping.
2000-12-31 07:39:50 +00:00
Ulrich Drepper
c77a447822 Update.
2000-12-30  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-close.c (_dl_close): We can ignore the NODELETE flag if the
	object was not yet initialized.

2000-12-28  H.J. Lu  <hjl@gnu.org>

	* elf/dl-deps.c (_dl_map_object_deps): Make sure the DSO state
	is always consistent even if its dependency is failed.

	* elf/dl-open.c (_dl_open): Increment the open count before
	calling _dl_close () in case of failure.

	* elf/neededtest4.c: New file.
	* elf/neededobj5.c: New file.
	* elf/neededobj6.c: New file.

	* elf/Makefile (distribute): Add neededobj5.c and neededobj6.c.
	(tests): Add neededtest4.
	(modules-names): Add neededobj5 and neededobj6.
	($(objpfx)neededobj6.so): New target.
	($(objpfx)neededtest4): New target.
	($(objpfx)neededtest4.out): New target.
2000-12-31 06:09:08 +00:00
Ulrich Drepper
7231f6f940 Update.
2000-12-27  Ben Collins  <bcollins@debian.org>

	* elf/dl-open.c (_dl_open): Correctly set the new objname pointer
	when reallocating the error strings.
	Reported by Kalle Olavi Niemitalo <kon@iki.fi>
2000-12-28 04:19:14 +00:00
Ulrich Drepper
7b70fef6ae Update.
2000-12-08  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-open.c (_dl_open): If objname points right after errstring,
	allocate it together with errstring using alloca.
	* elf/dl-error.c (_dl_signal_error): If malloc failed, set objname
	to "", because it might point to local stack.
2000-12-09 00:02:12 +00:00
Ulrich Drepper
e30f2b9828 Update.
* elf/dl-lookup.c (add_dependency): Fix test to check whether
	dependency already exists.
	* elf/Makefile: Add testobj1 and testobj2 as dependencies of testobj6.
	* elf/loadtest.c (main): Add test at the end that everything is
	unloaded.

	* elf/dl-open.c (dl_open_worker): Fix typo in comment.
2000-10-25 04:00:08 +00:00
Ulrich Drepper
42c4f32a44 Update.
2000-10-24  Ulrich Drepper  <drepper@redhat.com>

	Complete revamp of the reference counter handling.
	* include/link.h (struct link_map): Add l_idx field.
	* elf/dl-close.c: Handle decrementing of reference counters more
	correctly. If necessary decrement reference counters of dependencies
	of dependencies.
	* elf/dl-lookup.c (add_dependency): Only increment reference counter
	of the object itself and not also its dependencies.
	* elf/dl-open.c: Increment reference counters here.
	* elf/dl-deps.c: Remove reference counter handling here.
	* elf/dl-load.c: Likewise.
	* elf/rtld.c: Adjust for _dl_map_deps not handling reference counters.

	* elf/loadtest.c: Print loaded objects at the beginning.
2000-10-24 07:36:55 +00:00
Ulrich Drepper
d785c36692 Update.
2000-10-21  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-open.c (add_to_global): New function.  Split out from
	dl_open_worker.
	(dl_open_worker): Call add_to_global not only for new objects, also for
	previously loaded objects when (mode & RTLD_GLOBAL) and the object
	was not yet in the global scope.
	* elf/Makefile: Add rules to build and run lateglobal.
	* elf/lateglobal.c: New file.
	* elf/ltglobmod1.c: New file.
	* elf/ltglobmod2.c: New file.
2000-10-21 07:16:18 +00:00
Ulrich Drepper
f55727ca53 Update.
* sysdeps/generic/ldsodefs.h: Add declaration for _dl_all_dirs and
	_dl_all_init_dirs.
	* include/link.h (struct r_search_path_struct): New.
	(struct link_map): Use it for l_rpath_dirs and l_runpath_dirs.
	* elf/Versions [ld] (GLIBC_2.2): Add _dl_all_dirs and
	_dl_all_init_dirs.
	* elf/dl-close.c (_dl_close): Free l_rpath_dirs and l_runpath_dirs.
	* elf/dl-libc.c (free_mem): Free _dl_all_dirs list except elements
	added at startup time.
	* elf/dl-load.c: Fix memory handling.  r_search_path_struct
	contains element to remember fact that we can free memory.
	(all_dirs): Renamed to _dl_all_dirs.  Made global.
	(_dl_init_all_dirs): New variable.
	(fillin_rpath): Save one malloc call.
	(decompose_rpath): Change interface.  New first parameter points to
	r_search_path_struct.
	(_dl_init_paths): Adjust for changes.  Mark all memory as not
	deletable.  Set _dl_init_all_paths value.
	(open_path): Remove may_free_dirs parameter.  r_search_path_elem ***
	parameter replaced with r_search_path_struct *.  Information about
	freeing now contained in r_search_path_struct.
	(_dl_map_object): Adjust for above changes.

	* elf/dl-open.c (dl_open_worker): Change format of debug info a bit.
2000-08-31 02:27:07 +00:00
Ulrich Drepper
b35e21f43f Update.
* elf/Versions [ld] (GLIBC_2.2): Export _dl_debug_files.
	* elf/dl-close.c (_dl_close): Print debug message if object is not
	unloaded.
	* elf/dl-open.c (dl_open_worked): Print message about opencount before
	returning to caller.
2000-08-28 08:32:23 +00:00
Ulrich Drepper
752a2a50d4 Update.
2000-08-19  Ulrich Drepper  <drepper@redhat.com>

	* elf/Versions [ld] (GLIBC_2.2): Export _dl_check_map_versions.
	* elf/dl-deps.c (_dl_map_object_deps): If object was dependency of
	a dynamically loaded object remove old l_initfini list.
	* elf/dl-libc.c (free_mem): Used as __libc_subfreeres callback to
	remove some dynamically allocated memory blocks in the dynamic
	loading data structures.
	* elf/dl-load.c (add_name_to_object): Initialize dont_free to 0.
	* elf/dl-open.c (dl_open_workder): Don't call _dl_check_all_versions.
	Instead call _dl_check_map_versions only for the dependencies.
	* elf/rtld.c: Avoid unneccessary initializations.  Mark l_libname
	information of initial objects as not free-able.
	* sysdeps/generic/ldsodefs.h (struct libname_list): Add dont_free
	element.

	* elf/filter.c: Call mtrace.
	* elf/restest1.c: Likewise.  Close the objects.
	* elf/loadtest.c: Call mtrace.  Check result of dlclose.  Print more
	debug information.

	* elf/constload1.c: Add comment explaining not freed memory.
2000-08-19 07:17:09 +00:00
Ulrich Drepper
2f54c82dac Update.
* elf/Makefile (tests): Add nodlopen.  Add rules to generate nodlopen.
	* include/dlfcn.h: Define __RTLD_DLOPEN.
	* elf/dl-load.c (_dl_map_object_from_fd): If DF_1_NOOPEN is set
	and this is a dlopen() call, do not load the binary.
	* dlfcn/dlopen.c: Add __RTLD_DLOPEN to mode passed down to _dl_open.
	* dlfcn/dlopenold.c: Likewise.
	* configure.in: Add test for -z nodelete option.
	* config.make.in: Define have-z-nodelete with libc_cv_z_nodelete.

2000-07-20  Mark Kettenis  <kettenis@gnu.org>

	Make Hesiod NSS module thread-safe.

	* hesiod/README.hesiod: Update.

	* hesiod/Versions [GLIBC_2.2]: Add _nss_hesiod_getservbyport_r,
	_nss_hesiod_setprotoent, _nss_hesiod_endprotoent,
	_nss_hesiod_getprotobyname_r, and _nss_hesiod_getprotobynumber_r.
	* hesiod/Makefile (libnss_hesiod-routines): Add hesiod-init and
	hesiod-proto.
	* hesiod/nss_hesiod/hesiod-init.c: New file.
	* hesiod/nss_hesiod/hesiod-pwd.c: Rewritten for thread-safeness.
	* hesiod/nss_hesiod/hesiod-grp.c: Likewise.
	* hesiod/nss_hesiod/nss_hesiod.h: New file.
	* hesiod/nss_hesiod/hesiod-service.c
	(_nss_hesiod_getservbyport_r): New function.  Provide support for
	looking up services by port number.
	* hesiod/nss_hesiod/hesiod-proto.c: New file.

	* hesiod/hesiod.c: Update from BIND 8.2.3-T5B.
	* hesiod/hesiod.h: Likewise.
	* hesiod/hesiod_p.h: Likewise.

2000-07-20  Mark Kettenis  <kettenis@gnu.org>

	Fix problems with `struct __res_state' getting too big.
	* resolv/resolv.h (struct __sockaddr_in): New definition.
	(struct __res_state): Use __sockaddr_in instead of sockaddr_in in
	the private parts of the structure to save some space.
	* resolv/res_send.c (res_nsend): Cast &EXT(statp).nsaddrs[ns] to
	(struct sockaddr_in *) in call to sock_eq.
	Use memcpy to copy statp->nsaddr_list[ns] to &EXT(statp).nsaddrs[ns].

2000-07-20  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/mach/hurd/dl-sysdep.c: Likewise.
2000-07-21 04:12:25 +00:00
Ulrich Drepper
bf8b3e74bf Update.
* elf/elf.h: Add various DF_1_*, DTF_1_*, and DF_P1_* entries.
	* elf/dl-close.c (_dl_close): Don't close an object if it is marked
	with nodelete.
	* elf/dl-open.c (dl_open_worker): Pass RTLD_NOLOAD as new parameter
	to _dl_map_object.  Return immediately if no object loaded.
	Set DF_1_NODELETE bit in l_flags_1 if RTLD_NODELETE was passed.
	* elf/dynamic-link.h (elf_get_dynamic_info): Copy DT_FLAGS_1 entry
	if it exists into l_flags_1 word.
	* elf/dl-load.c (_dl_map_object_from_fd): Take no parameter and use
	it to determine whether loading is wanted or not.
	(_dl_map_object): Likewise.
	Call _dl_map_object_from_fd with new parameter.
	* sysdeps/generic/ldsodefs.h: Update prototype.
	* elf/dl-deps.c: Add new parameter to _dl_map_object calls.
	* elf/rtld.c: Likewise.
	* elf/Makefile (tests): Add noload.  Add rules to generate noload.
	* elf/noload.c: New file.
	* include/link.h (struct link_map): Add l_feature_1 and l_flags_1.
	* sysdeps/generic/bits/dlfcn.h: Define RTLD_NOLOAD and RTLD_NODELETE.
	* sysdeps/mips/bits/dlfcn.h: Likewise.
2000-07-20 22:53:54 +00:00
Ulrich Drepper
ca3c013564 Update.
* elf/Versions (ld): Export _dl_out_of_memory for GLIBC_2.2.
	* dlfcn/dlerror.c (dlerror): Don't free the error string if it is the
	report that we are out of memory.
	* elf/dl-deps.c (_dl_map_object_deps): Likewise.
	* elf/dl-libc.c (dlerror_run): Likewise.
	* elf/dl-open.c (_dl_open): Likewise.
	* elf/rtld.c (dl_main): Likewise.
	* elf/dl-error.c: Define _dl_out_of_memory.
	(_dl_signal_error): Return _dl_signal_error if we cannot duplicate
	the error string.
	* sysdeps/generic/ldsodefs.h: Declare _dl_out_of_memory.

	* dlfcn/dlerror.c (free_key_mem): Also free error string.

	* iconv/loop.c: Fix comment.
2000-07-13 19:46:27 +00:00
Greg McGary
ebdf53a7fc * elf/dl-open.c (_dl_sysdep_start): Wrap weak_extern decl in BP_SYM ().
* include/libc-symbols.h (weak_extern): Add extra level of expansion. 
(symbol_version, default_symbol_version): Factor redundant 
definitions out of conditional. 
* linuxthreads/sysdeps/pthread/bits/libc-lock.h: 
Wrap BP_SYM () around weak extern declarations of pthread 
functions that have pointers in their return+arg signatures.
2000-06-27  Greg McGary  <greg@mcgary.org>

	* elf/dl-open.c (_dl_sysdep_start): Wrap weak_extern decl in BP_SYM ().
	* include/libc-symbols.h (weak_extern): Add extra level of expansion.
	(symbol_version, default_symbol_version): Factor redundant
	definitions out of conditional.
	* linuxthreads/sysdeps/pthread/bits/libc-lock.h:
	Wrap BP_SYM () around weak extern declarations of pthread
	functions that have pointers in their return+arg signatures.
2000-06-27 17:05:42 +00:00
Ulrich Drepper
8e17ea5817 Update.
2000-06-09  Ulrich Drepper  <drepper@redhat.com>

	Rewrite error message handling.
	* elf/dl-deps.c (_dl_map_object_deps): Pass new parameter to
	_dl_catch_error.
	* elf/dl-error (struct catch): Add objname member.
	(_dl_signal_error): Take new parameter with object name.  When
	passing message on simply store object name and duplicate error
	message.
	(_dl_catch_error): Take new parameter.  Store object name in the
	place pointed to.
	* include/dlfcn.h: Adjust _dl_catch_error prototype.
	* sysdeps/generic/ldsodefs.h: Adjust _dl_signal_error prototype.
	* elf/dl-libc.c (dlerror_run): Pass new parameter to _dl_catch_error.
	* elf/dl-open.c (_dl_open): Likewise.
	* elf/rtld.c (dl_main): Likewise.
	* elf/dl-close.c: Mark error messages with N_().
	* elf/dl-deps.c: Likewise.
	* elf/dl-error.c: Likewise.
	* elf/dl-load.c: Likewise.
	* elf/dl-open.c: Likewise.
	* elf/dl-reloc.c: Likewise.
	* elf/dl-support.c: Likewise.
	* elf/dl-sym.c: Likewise.
	* elf/dl-version.c: Likewise.
	* elf/dl-lookup.c: Add comments about problems with error message
	translations.
	* elf/dl-reloc.c: Likewise.
	* elf/dl-version.c: Likewise.
2000-06-10 04:01:36 +00:00
Ulrich Drepper
28760b3d01 (dl_open_worker): Use l_map_start and l_map_end to test for pointer in range of DSO address space. 2000-05-04 15:47:12 +00:00
Ulrich Drepper
145b84138f Update.
* elf/dl-version.c (_dl_check_map_versions): New argument trace_mode.
	Before testing versions check that we actually loaded the object
	and whether we are in trace mode.  If not loaded during tracing don't
	test versions in this object.
	(_dl_check_all_versions): Take new parameter and pass to
	_dl_check_map_versions.
	* sysdeps/generic/ldsodefs.h: Update prototypes for
	_dl_check_all_versions and _dl_check_map_versions.
	* elf/rtld.c (struct version_check_args): Add dotrace.
	(version_check_doit): Pass args->dotrace to _dl_check_all_versions.
	(dl_main): Pass info about trace mode to version_check_doit.
	* elf/dl-open.c (dl_open_worker): Pass zero as new argument to
	_dl_check_all_versions.

	* manual/users.texi (XPG Functions): Document utmpxname, getutmp,
	and getutmpx.
	Patch by Bryan Henderson <bryanh@giraffe-data.com>.
2000-04-15 22:26:34 +00:00
Ulrich Drepper
cf197e41e7 Update.
2000-04-02  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-fini.c (_dl_fini): Increment j counter after swapping in
	element at this position.

	* elf/Versions [ld.so] (GLIBC_2.2): Export _dl_load_lock.
	* elf/link.h (struct link_map): Add l_reldepsmax, l_reldepsact, and
	l_reldeps elements.
	* elf/dl-lookup.c (add_dependency): New function.
	(_dl_lookup_symbol): Use it whenever symbol was found in a global,
	dynamically loaded object.
	(_dl_lookup_symbol_skip): Likewise.
	(_dl_lookup_versioned_symbol): Likewise.
	(_dl_lookup_versioned_symbol_skip): Likewise.
	* elf/dl-open.c: Don't define _dl_load_lock here...
	* elf/rtld.c: ...but here...
	* elf/dl-support.c: ...and here.
	* elf/dl-close.c (_dl_close): Close also dependent objects introduce
	through relocation.
	* elf/dl-fini.c (_dl_fini): Also take dependencies introduced through
	relocations.
	* dlfcn/Makefile (glrefmain.out): Test is not expected to fail
	anymore.
	* dlfcn/glrefmain.c: Add one more debug message.

	* Makeconfig (preprocess-versions): Don't add $(CPPFLAGS) to compiler
	command line.
	* Makerules (sysd-versions): Use ( ) instead of { }.

	* elf/dl-load.c: Use __builtin_expect to signal that compiler should
	optimize for the non-debugging case.
	* elf/dl-lookup.c: Likewise.
	* sysdeps/generic/libc-start.c: Likewise.
2000-04-03 03:51:04 +00:00
Ulrich Drepper
b5567b2af6 Update.
2000-03-29  Jes Sorensen  <jes@pcatls01.cern.ch>

	* malloc/malloc.c: Declare bit flags UL so that they will not
	default to int size when being inverted.

2000-03-29  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/arm/errlist.c: Use shlib-compat macros.
	* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.

2000-03-29  Andreas Jaeger  <aj@suse.de>,
            Ralf Baechle <ralf@uni-koblenz.de>

	* Makeconfig: Introduce new variable SHARED to mark code used in
	the shared library.
	* elf/dl-close.c: Use it instead of PIC.
	* elf/dl-load.c: Likewise.
	* elf/dl-open.c: Likewise.
	* hurd/geteuids.c: Likewise.
	* include/libc-symbols.h: Likewise.
	* include/shlib-compat.h: Likewise.
	* libio/freopen.c: Likewise.
	* linuxthreads/cancel.c: Likewise.
	* linuxthreads/pthread.c: Likewise.
	* linuxthreads/wrapsyscall.c: Likewise.
	* nss/nsswitch.c: Likewise.
	* stdio-common/vfprintf.c: Likewise.
	* sysdeps/arm/init-first.c: Likewise.
	* sysdeps/i386/init-first.c: Likewise
	* sysdeps/generic/init-first.c: Likewise.
	* sysdeps/generic/libc-start.c: Likewise.
	* sysdeps/mips/init-first.c: Likewise.
	* sysdeps/powerpc/elf/libc-start.c: Likewise.
	* sysdeps/unix/sysv/linux/init-first.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/errlist.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/chown.c: Likewise.

	* sysdeps/mips/machine-gmon.h (asm): Use __PIC__ as check.
2000-03-31 05:50:02 +00:00
Ulrich Drepper
dacc8ffa42 Update.
2000-03-30  Ulrich Drepper  <drepper@redhat.com>

	Implement dynamic determination of constructor/destructor order in
	the dynamic linker.
	* elf/Versions [ld.so] (GLIBC_2.0): Remove _dl_init_next.
	(GLIBC_2.2): Add _dl_init.
	* elf/dl-close.c: Also call all destructors in FINI_ARRAY.
	r_duplist is not anymore allocated separately.  l_initfini is and
	therefore free it if necessary.
	* elf/dl-deps.c: If a searchlist has to be allocated, put all in one
	malloc block.  Otherwise allocate l_initfini list only.
	Put dependencies for the object in l_initfini list.
	Sort dependencies for the object to be loaded topologically.
	* elf/dl-fini.c: Before running the destructors sort the topologically.
	* elf/dl-init.c (_dl_init): Renamed from _dl_init_next.  Rewrite to
	call constructors instead of iterating over the pointers.  Get list of
	objects for which to run constructors from l_initfini element. Accept
	argc, argv, and env as parameters and pass them to the constructors.
	* elf/ld-load.c (_dl_map_object_from_fd): Initialize l_ldnum member
	with size of dynamic section.
	* elf/dl-open.c (dl_open_worker): Only call _dl_init instead of
	_dl_init_next and calling constructors ourself.
	* elf/dl-preinit.c (_dl_preinit): Renamed from _dl_preinit_next.
	Take argc, argv, and env as parameters and pass them to the
	constructors.  Rewrite to call all constructors and not iterate over
	the pointers.
	* elf/dynamic-link.h: Don't relocate DT_FINI_ARRAY entry.  Don't
	precompute l_initcount and l_preinitcount.
	* elf/link.h (struct link_map): Add l_ldnum member.
	Make l_phdr_allocated part of the bitfield.  Remove l_runcount,
	l_initcount, and l_preinitcount.  Add l_initfini.
	* sysdeps/generic/ldsodefs.h: Replace _dl_init_next prototype with
	one for _dl_init.
	* sysdeps/i386/dl-machine (RTLD_START): Rewrite to match new init
	function interface.
	* sysdeps/unix/sysv/linux/init-first.h: Removed.
	* sysdeps/unix/sysv/linux/Dist: Delete file here as well.
	* sysdeps/unix/sysv/linux/init-first.c [PIC]: Don't use
	SYSDEP_CALL_INIT.  Make _init a strong alias of init.  The calling
	conventions now match.

	* sysdeps/generic/libc-start.c: Calling __libc_init_first has no
	effect for shared objects.  Don't emit message and call only for
	static library.
2000-03-30 16:30:49 +00:00
Ulrich Drepper
a42195dbe4 Update.
2000-03-23  Andreas Jaeger  <aj@suse.de>

	* elf/dl-addr.c: Adjust include paths for ldsodefs location
	change.
	* 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-preinit.c: Likewise.
	* elf/dl-profile.c: Likewise.
	* elf/dl-profstub.c: Likewise.
	* elf/dl-reloc.c: Likewise.
	* elf/dl-runtime.c: Likewise.
	* elf/dl-support.c: Likewise.
	* elf/dl-symbol.c: Likewise.
	* elf/dl-version.c: Likewise.
	* elf/rtld.c: Likewise.
	* elf/sprof.c: Likewise.
	* sysdeps/generic/dl-cache.c: Likewise.
	* sysdeps/generic/dl-origin.c: Likewise.
	* sysdeps/generic/dl-sysdep.c: Likewise.
	* sysdeps/generic/elf/backtracesyms.c: Likewise.
	* sysdeps/generic/elf/backtracesymsfd.c: Likewise.
	* sysdeps/generic/libc-start.c: Likewise.
	* sysdeps/mach/hurd/dl-sysdep.c: Likewise.
	* sysdeps/powerpc/dl-machine.c: Likewise.
	* sysdeps/powerpc/elf/libc-start.c: Likewise.
	* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
	* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
	* sysdeps/unix/sysv/linux/dl-origin.c: Likewise.

	* elf/ldsodefs.h: Move file to ...
	* sysdeps/generic/ldsodefs.h: ... here.

	* sysdeps/generic/ldsodefs.h: Add definition for D_PTR.
	
	* sysdeps/mips/elf/ldsodefs.h: New file.

	* elf/dl-version.c (match_symbol): Use D_PTR to access relocated
	entries in l_info.
	(_dl_check_map_versions): Likewise.
	* elf/dl-reloc.c (_dl_relocate_object): Likewise.
	* elf/dl-load.c (_dl_init_paths): Likewise.
	(_dl_map_object): Likewise.
	* elf/dynamic-link.h (_ELF_DYNAMIC_DO_RELOC): Likewise.
	(elf_get_dynamic_info): Likewise.
	* elf/do-lookup.h (FCT): Likewise.
	* elf/do-rel.h (elf_dynamic_do_rel): Likewise.
	* elf/dl-deps.c (_dl_map_object_deps): Likewise.
	* elf/dl-addr.c (_dl_addr): Likewise.
	* elf/dl-runtime.c (profile_fixup): Likewise.
	(fixup): Likewise.
	* elf/dl-init.c (_dl_init_next): Likewise.
	* sysdeps/generic/dl-machine.h (elf_machine_runtime_setup): Likewise.
	* sysdeps/unix/sysv/linux/i386/dl-librecon.h
	(DISTINGUISH_LIB_VERSIONS): Likewise.
	* sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Likewise.
	(elf_machine_rel): Likewise.

	* elf/dynamic-link.h (elf_get_dynamic_info): Only change l_info
	for writable dynamic section.
2000-03-23 20:31:46 +00:00
Ulrich Drepper
d9cb1a7dad Update.
* elf/dl-deps.c (_dl_map_object_deps): Change return type and remove
	last parameter.  Move code to add map to global scope from here...
	* elf/dl-open.c (dl_open_worker): ...here.
	* elf/ldsodefs.h: Adjust declaration of _dl_map_object_deps.
	* elf/rtld.c: Adjust call to _dl_map_object_deps.
2000-03-15 05:32:11 +00:00
Ulrich Drepper
49c091e523 Update.
2000-02-22  Ulrich Drepper  <drepper@redhat.com>

	* locales/mk_MK: New file.
	Contributed by Damjan Georgievski <gdamjan@freemail.org.mk>
	* SUPPORTED: Add mk_MK ISO-8859-1.
2000-02-22 09:00:35 +00:00
Ulrich Drepper
06535ae948 Update.
* posix/unistd.h: Move declaration of __libc_enable_secure to...
	* include/unistd.h: ...here.

	* elf/dl-open.c (dl_open_worker): If DST is used in SUID program punt.
	* elf/dl-deps.c (expand_dst): Likewise.

	* elf/dynamic-link.h: Set DT_SYMBOLIC, DT_TEXTREL, and DT_BIND_NOW
	based on DT_FLAGS value.

	* elf/do-lookup.h: Remove reference_name parameter, add undef_map.
	Add test for symbols marked STV_HIDDEN.
	* elf/dl-lookup.c (_dl_lookup_symbol): Remove reference_name parameter,
	add undef_map.  Compute reference_name locally.  Update call to
	do_lookup.
	(_dl_lookup_symbol_skip): Likewise.
	(_dl_lookup_versioned_symbol): Likewise.
	(_dl_lookup_versioned_symbol_skip): Likewise.
	* elf/dl-libc.c: Update call to _dl_lookup_*symbol.
	* elf/dl-runtime.c: Likewise.
	* elf/dl-sym.c: Likewise.
	* elf/dl-symbol.c: Likewise.
	* elf/ldsodefs.h: Adjust prototypes.

	* elf/dl-reloc.c (RESOLV): Add test for STV_PROTECTED flag set and
	handle appropriately.  Add comment about DT_TEXTREL.
	* elf/dl-runtime.c: Likewise.
1999-07-23 22:58:50 +00:00
Ulrich Drepper
94e365c612 Update.
* sysdeps/gnu/Makefile (libdl-routines): Add eval.

1999-07-06  Zack Weinberg  <zack@rabi.columbia.edu>

	* dlfcn: New directory.  Move the following files from elf:
	dladdr.c, dlclose.c, dlerror.c, dlfcn.h, dlopen.c,
	dlopenold.c, dlsym.c, dlvsym.c.
	* dlfcn/Makefile: New file.
	* dlfcn/Versions: New file.
	* dlfcn/dlsym.c: All ELF-specific code split out to new
	function _dl_sym.
	* dlfcn/dlvsym.c: All ELF-specific code split out to new
	function _dl_vsym.
	* elf/dl-sym.c: New file.  _dl_sym and _dl_vsym are
	implemented here.

	* dlfcn/dladdr.c: Remove all references to ELF data structures
	or headers.
	* dlfcn/dlclose.c: Likewise.
	* dlfcn/dlerror.c: Likewise.
	* dlfcn/dlopen.c: Likewise.
	* dlfcn/dlopenold.c: Likewise.

	* Makeconfig (dlfcn): New variable - set to `dlfcn' if elf is
	yes, empty otherwise.
	(libdl): Set to dlfcn/libdl.so or libdl.a if elf is yes,
	depending on build-shared.
	(subdirs): Add $(dlfcn).
	(rpath-dirs): Add dlfcn.
	* elf/Makefile: Remove all references to libdl or its
	components, except the ones relating to the test cases.
	(routines): Add dl-sym.
	* elf/Versions (libc): Add _dl_sym and _dl_vsym for GLIBC_2.2.
	(libdl): Delete.

	* elf/dl-close.c (_dl_close): Change argument to void *.
	* elf/dl-open.c (_dl_open): Change return type to void *.
	* elf/eval.c: Removed.
	* elf/ldsodefs.h: Move prototypes of _dl_catch_error,
	_dlerror_run, _dl_open, _dl_close, _dl_addr, and
	_dl_mcount_wrapper_check to include/dlfcn.h.  Delete
	_CALL_DL_FCT macro.
	* include/dlfcn.h: Also prototype _dl_sym and _dl_vsym here.
	Include real header from dlfcn directory.
	* include/ldsodefs.h: Removed.

	* grp/initgroups.c: Use DL_CALL_FCT not _CALL_DL_FCT.
	* nss/getXXbyYY_r.c: Likewise.
	* nss/getXXent_r.c: Likewise.
	* iconv/gconv.c: Likewise.  Don't include ldsodefs.h.
	* iconv/gconv_db.c: Likewise.  Don't include ldsodefs.h.
	* iconv/skeleton.c: Don't include ldsodefs.h.
	* nss/nsswitch.h: Don't include ldsodefs.h.  Include dlfcn.h.

1999-07-07  Ulrich Drepper  <drepper@cygnus.com>
1999-07-07 18:39:33 +00:00
Ulrich Drepper
b3fc5f84d1 Update.
* sysdeps/libm-ieee754/e_gamma_r.c: Initialize *signgamp for NaN
	returns.
	* sysdeps/libm-ieee754/e_gammaf_r.c: Likewise.
	* sysdeps/libm-ieee754/e_gammal_r.c: Likewise.
	Reported by John Reiser <jreiser@BitWagon.com> [PR libc/1185].

	* elf/dl-dst.h: Fix typo.
	* elf/dl-open.c: Likewise.

1999-06-26  Zack Weinberg  <zack@rabi.columbia.edu>

	* elf/dl-libc.c: New file, provides three functions:
	__libc_dlopen, __libc_dlclose, __libc_dlsym.
	* include/dlfcn.h: Prototype them.  Prototype _dl_addr.
	* elf/Makefile (routines): Add dl-libc.c.
	* elf/dl-profstub.c (_dl_mcount_wrapper): Change type of
	argument to void *.
	* elf/ldsodefs.h: Change proto and use of _dl_mcount_wrapper to match.

	* iconv/gconv.c: Include dlfcn.h.
	* iconv/gconv_db.c: Likewise.
	* malloc/mtrace.c: Likewise.  Don't include ldsodefs.h.

	* iconv/gconv_int.h (struct __gconv_loaded_object): Change
	`handle' to a void *.
	(__gconv_find_func): Delete prototype.

	* iconv/gconv_dl.c: Don't include ldsodefs.h.  Remove
	dlerror_run and related functions and structs.  Use
	__libc_dlopen, __libc_dlsym, __libc_dlclose.
	* nss/nsswitch.c: Likewise.

1999-06-28  Ulrich Drepper  <drepper@cygnus.com>
1999-06-28 15:52:36 +00:00
Ulrich Drepper
4360eafdd2 Update.
1999-06-18  Zack Weinberg  <zack@rabi.columbia.edu>

	* include/features.h: Define new macros __GNUC_PREREQ and
	__GLIBC_PREREQ which can be used to test the version of gcc
	and glibc respectively.

	* assert/assert.h: Use __GNUC_PREREQ.
	* intl/libintl.h: Likewise.
	* math/complex.h: Likewise.
	* math/tgmath.h: Likewise.
	* misc/sys/cdefs.h: Likewise.
	* posix/sys/types.h: Likewise.
	* socket/sys/socket.h: Likewise.
	* string/bits/string2.h: Likewise.
	* sysdeps/alpha/fpu/bits/mathinline.h: Likewise.
	* sysdeps/i386/fpu/bits/mathinline.h: Likewise.

1999-06-18  Zack Weinberg  <zack@rabi.columbia.edu>

	* include/libintl.h: Declare _libc_intl_domainname here.
	Define _ and N_ here.
	* include/libc-symbols.h: Don't include <libintl.h>.  Don't
	define _ and N_.  Don't declare _libc_intl_domainname.
	* Makeconfig (CPPFLAGS): Use -imacros to read libc-symbols.h.

	* db2/config.h: Don't include sys/stat.h or define
	HAVE_ST_BLKSIZE here...
	* db2/compat.h: ...do it here.

	* linuxthreads/internals.h: Include bits/libc-tsd.h after all
	other headers.
	* linuxthreads/no-tsd.c: Include sys/cdefs.h for __P.
	* iconv/iconv.c: Include stddef.h for NULL.
	* malloc/malloc.h: Include features.h.
	* sysdeps/generic/morecore.c: Use __malloc_ptr_t not __ptr_t.

	* sysdeps/unix/make_errlist.c: Write an "#include <libintl.h>"
	into the generated file.
	* sysdeps/gnu/errlist.awk: Likewise.
	* sysdeps/gnu/errlist.c: Rebuilt.

	* assert/assert-perr.c: Include libintl.h.
	* assert/assert.c: Likewise.
	* elf/dl-open.c: Likewise.
	* elf/dlsym.c: Likewise.
	* elf/dlvsym.c: Likewise.
	* iconv/iconv_prog.c: Likewise.
	* inet/rcmd.c: Likewise.
	* inet/ruserpass.c: Likewise.
	* locale/programs/charset.c: Likewise.
	* locale/programs/ld-collate.c: Likewise.
	* locale/programs/ld-ctype.c: Likewise.
	* locale/programs/ld-messages.c: Likewise.
	* locale/programs/ld-monetary.c: Likewise.
	* locale/programs/ld-numeric.c: Likewise.
	* locale/programs/ld-time.c: Likewise.
	* locale/programs/locfile.c: Likewise.
	* locale/programs/repertoire.c: Likewise.
	* login/programs/database.c: Likewise.
	* login/programs/request.c: Likewise.
	* malloc/mcheck.c: Likewise.
	* misc/error.c: Likewise.
	* nis/nis_call.c: Likewise.
	* nis/nis_callback.c: Likewise.
	* nis/nis_error.c: Likewise.
	* nis/nis_local_names.c: Likewise.
	* nis/nis_print.c: Likewise.
	* nis/nis_print_group_entry.c: Likewise.
	* nis/ypclnt.c: Likewise.
	* nis/nss_nisplus/nisplus-publickey.c: Likewise.
	* nscd/cache.c: Likewise.
	* nscd/connections.c: Likewise.
	* nscd/grpcache.c: Likewise.
	* nscd/hstcache.c: Likewise.
	* nscd/nscd_conf.c: Likewise.
	* nscd/nscd_stat.c: Likewise.
	* nscd/pwdcache.c: Likewise.
	* posix/id.c: Likewise.
	* resolv/herror.c: Likewise.
	* stdio-common/psignal.c: Likewise.
	* string/strsignal.c: Likewise.
	* sunrpc/auth_unix.c: Likewise.
	* sunrpc/clnt_perr.c: Likewise.
	* sunrpc/clnt_raw.c: Likewise.
	* sunrpc/clnt_tcp.c: Likewise.
	* sunrpc/clnt_udp.c: Likewise.
	* sunrpc/clnt_unix.c: Likewise.
	* sunrpc/get_myaddr.c: Likewise.
	* sunrpc/pm_getmaps.c: Likewise.
	* sunrpc/pmap_clnt.c: Likewise.
	* sunrpc/pmap_rmt.c: Likewise.
	* sunrpc/rpc_main.c: Likewise.
	* sunrpc/rpc_scan.c: Likewise.
	* sunrpc/svc_run.c: Likewise.
	* sunrpc/svc_simple.c: Likewise.
	* sunrpc/svc_tcp.c: Likewise.
	* sunrpc/svc_udp.c: Likewise.
	* sunrpc/svc_unix.c: Likewise.
	* sunrpc/xdr_rec.c: Likewise.
	* sunrpc/xdr_ref.c: Likewise.
	* sysdeps/mach/hurd/mips/dl-machine.c: Likewise.
	* sysdeps/posix/gai_strerror.c: Likewise.
	* sysdeps/unix/siglist.c: Likewise.
	* sysdeps/unix/sysv/linux/siglist.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c: Likewise.
	* timezone/zic.c: Likewise.
1999-06-19 09:58:37 +00:00
Ulrich Drepper
12b5b6b7f7 Update.
1999-05-11  Ulrich Drepper  <drepper@cygnus.com>

	* elf/Versions (ld.so) [GLIBC_2.1.1]: Add _dl_lazy.
	* elf/dl-open.c (_dl_open_worker): Only relocate newly loaded objects
	lazily if LD_BIND_NOW is not set.
	* elf/dl-support.c (_dl_lazy): New variable.
	(non_dynamic_init): Set _dl_lazy according to LD_BIND_NOW envvar.
	* elf/rtld.c (_dl_lazy): new global variable.
	( dl_main): Remove lazy, replace it by _dl_lazy.

1999-05-06  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* locale/setlocale.c (new_composite_name): Check also whether the
	first category name differs.

1999-05-11  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/ftime.c: Use the bsd implementation, not
	the generic one.

1999-05-11  Philip Blundell  <pb@nexus.co.uk>

	* sysdeps/generic/bits/socket.h (struct sockaddr_storage): New
	structure; storage suitable for any socket address.
	* sysdeps/unix/sysv/linux/bits/socket.h (struct sockaddr_storage):
	Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/socket.h (struct
	sockaddr_storage): Likewise.

	* inet/netinet/in.h: Use ULONG_MAX not ~0 to test for a 64-bit
	platform.
1999-05-11 13:00:20 +00:00
Ulrich Drepper
dc5efe83c0 Update.
* Versions.def (ld.so): Add GLIBC_2.1.1.
	* elf/Makefile (routines): Add dl-origin.
	(tests): Add origtest.  Add dependencies for the program.
	* elf/Versions (ld.so) [GLIBC_2.1.1]: Add _dl_origin_path,
	_dl_platformlen, _dl_dst_count and _dl_dst_substitute.
	* elf/dl-deps.c (expand_dst): New macro.  Expand DSTs in filename.
	(_dl_map_object_deps): Use expand_dst to expand DSTs in DT_NEEDED,
	DT_AUXILIARY, and DT_FILTER filenames.
	* elf/dl-load.c (expand_dynamic_string_token): Explode into
	two functions and three macros.
	(_dl_dst_count, _dl_dst_substitute): New functions.
	* elf/dl-dst.h: New file.
	* elf/dl-open.c (_dl_open): Take extra parameter with address of
	caller.  Pass address in args structure.
	(dl_open_worker): Recognize and expand DSTs in filename.
	* elf/ldsodefs.h (_dl_open): Adapt prototype.
	* elf/dlopen.c (dlopen_doit): Pass caller address to _dl_open.
	(__dlopen_check): Pass caller address to dlopen_doit in args.
	* elf/dlopendoit.c: Likewise.
	* iconv/gconv_dl.c: Adapt call of _dl_open.
	* nss/nsswitch.c: Likewise.
	* elf/origtest.c: New file.
	* sysdeps/generic/dl-origin.h: Moved to...
	* sysdeps/generic/dl-origin.c: ...here.
	* sysdeps/unix/sysv/linux/dl-origin.h: Moved to...
	* sysdeps/unix/sysv/linux/dl-origin.c: ...here.
1999-05-05 23:29:18 +00:00
Ulrich Drepper
50b65db1ee Update.
1999-01-21  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-close.c: Rewrite the way adding to the global scope works
	to handle error cases better than the last change.
	The l_global flag is now only set when the object is actually
	counted in the global scope list.
	* elf/dl-deps.c: Likewise.
	* elf/dl-open.c: Likewise.
1999-01-21 14:17:43 +00:00
Ulrich Drepper
482eec0d11 Update.
1999-01-16  Ulrich Drepper  <drepper@cygnus.com>

	* elf/Makefile (tests): Add loadtest.
	Add rules to generate test modules.
	* Makeconfig (+link): Add $(LDFLAGS-$(@F)) to command line.
	* elf/loadtest.c: New file.
	* elf/testobj1.c: New file.
	* elf/testobj2.c: New file.
	* elf/testobj3.c: New file.

	* elf/dl-close.c: Correct removing module from global list.

	* elf/dl-open.c: Add debugging code.

	* include/string.h: Add __rawmemchr prototype.
	* string/Makefile (routines): Add rawmemchr.
	* string/Versions [GLIBC_2.1]: Add __rawmemchr and rawmemchr.
	* string/string.h: Add prototype for rawmemchr.
	* string/bits/string2.h: Optimize strchr with rawmemchr.
	* sysdeps/generic/rawmemchr.c: New file.
	* sysdeps/i386/rawmemchr.c: New file.
	* sysdeps/i386/i486/bits/string.h: Add rawmemchr inline code.
	Optimize strchr with rawmemchr.

	* sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _LFS_LARGEFILE,
	_LFS64_LARGEFILE, and _LFS64_STDIO for Unix98.

1999-01-14  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* nis/nis_error.c (nis_errlist): Fix capitilasation.
1999-01-16 17:09:04 +00:00
Ulrich Drepper
e254df14d5 Update.
* elf/Makefile (libdl-routines): Add dlopenold.
	* elf/Versions [libdl, GLIBC_2.1]: Add dlopen.
	* elf/dl-open.c (_dl_open): Check whether RTLD_LAZY or RTLD_GLOBAL
	is set and bounce otherwise.
	* elf/dlopen.c: Rename function to __dlopen_check and make version
	named dlopen.
	* elf/dlopenold.c: New file.

1998-11-02  Ulrich Drepper  <drepper@cygnus.com>
1998-11-02 22:26:02 +00:00
Ulrich Drepper
e3e35cfc95 Update.
* elf/Versions [libc, GLIBC_2.01]: Add _dl_global_scope_alloc.
	* elf/dl-open.c (_dl_global_scope_alloc): Move definition to
	* elf/dl-deps.c: ...here.
	* elf/dl-open.c (dl_open_worker): Call _dl_map_object_deps with
	new parameter and expect result.  Remove code handling RTLD_GLOBAL.
	Add return value of _dl_map_object_deps to
	_dl_main_searchlist->r_nlist.
	* elf/dl-deps.c (_dl_map_object_deps): Change to return value.
	If we parameter GLOBAL is nonzero add object and dependencies to
	the global scope.
	* elf/ldsodefs.h: Adapt prototype for _dl_map_object_deps.
	* elf/rtld.c (dl_main): Call _dl_map_object_deps with new parameter.
	Mark all objects as in global scope.
	* elf/dl-object.c (_dl_new_object): Initialize l_global to zero.

	* sysdeps/unix/sysv/linux/bits/sockunion.h: Add Econet support.

	* sysdeps/unix/sysv/linux/i386/sysdep.h: Add .L prefix to symbols
	used in macro magic.

1998-11-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de> 
 
        * sysdeps/unix/sysv/linux/netatalk/at.h: Include <linux/atalk.h> 
        before <sys/socket.h> to make sockaddr_at available to 
        <sys/socket.h>. 

	* posix/glob.h: Remove __P from parameter lists of declarations.
 
1998-11-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de> 
 
	* time/tzset.c (tz_compute): Remove unused parameter timer. 
	Change caller. 
 
1998-11-02  Mark Kettenis  <kettenis@phys.uva.nl> 
 
	* sysdeps/generic/bits/types.h (__ipc_pid_t): New typedef. 
 
1998-11-02  Ulrich Drepper  <drepper@cygnus.com>
1998-11-02 21:48:45 +00:00
Ulrich Drepper
604510f717 Update.
1998-10-07  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-open.c (_dl_global_scope_alloc): Make global.
	(dl_open_worker): Use realloc, not malloc to resize array.
	* elf/rtld.c (_dl_initial_searchlist): New variable.
	(_dl_main): Copy content of _dl_main_searchlist to
	_dl_initial_searchlist.
	* elf/ldsodefs.h: Add declarations for _dl_initial_searchlist and
	_dl_global_scope_alloc.
	* elf/Versions [libc, GLIBC_2.1]: Add _dl_initial_searchlist.
	* elf/dl-close.c (_dl_close): When removing object with global
	scope remove allocated searchlist if no dynamically loaded object
	is on it anymore.
	* elf/dl-support.c (_dl_initial_searchlist): Renamed from fake_scope.
	(_dl_global_scope, _dl_main_searchlist): Use _dl_initial_searchlist.

	* malloc/mtrace.c (tr_where): Don't print space in location string,
	print it afterwards.  Print better symbol name information.
1998-10-07 13:40:55 +00:00
Ulrich Drepper
6e4c40baac Update.
1998-09-09 09:32  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Make function
	inline.

1998-09-07  Paul Eggert  <eggert@twinsun.com>

	* time/mktime.c (__EXTENSIONS__): Define if not defined.
	(_REENTRANT): Remove.  It has undesirable consequences in
	Solaris 2.6 (e.g. it turns off the putc macro).  Defining
	__EXTENSIONS__ makes localtime_r and gmtime_r visible, which
	is what we want.
	* time/strftime.c: Likewise.

1998-09-08  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/dl-error.c: Fix spelling.

1998-09-08  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* stdlib/strfmon.c: Quiet -Wparentheses warnings.
	* stdio-common/_itoa.c: Likewise.
	* stdio-common/printf_fp.c: Likewise.
	* stdio-common/vfscanf.c: Likewise.
	* wcsmbs/wcstok.c: Likewise.
	* sysdeps/generic/glob.c: Likewise.
	* posix/getopt.c: Likewise.
	* sysdeps/posix/getaddrinfo.c: Likewise.
	* posix/wordexp.c: Likewise.
	* io/ftw.c: Likewise.
	* io/fts.c: Likewise.
	* misc/getpass.c: Likewise.
	* iconv/gconv_conf.c: Likewise.
	* argp/argp-fmtstream.c: Likewise.
	* argp/argp-help.c: Likewise.
	* elf/dl-load.c: Likewise.
	* locale/programs/stringtrans.c: Likewise.
	* catgets/gencat.c: Likewise.
	* posix/getconf.c: Likewise.
	* iconv/gconv_conf.c: Likewise.
	* iconv/iconv_prog.c: Likewise.

	* string/strcoll.c: Optimize a few expressions.
	* string/strxfrm.c: Likewise.

1998-09-08  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/dl-open.c (dl_open_worker): Move decl of new_global up one
	level to avoid uninit variable warning.

1998-09-09 10:34  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
	instead of _dl_default_scope[2] as argument to _dl_init_next.
	Fix compatibility problems introduced in last change.
1998-09-09 11:53:19 +00:00
Ulrich Drepper
6796bc807a Update.
1998-09-06 09:53 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* Makeconfig (+gccwarn): Remove -Wno-parentheses.

	* elf/dl-open.c: Quiet -Wparentheses warnings.
	* iconvdata/johab.c: Likewise.
	* iconvdata/uhc.c: Likewise.
	* inet/inet_net.c: Likewise.
	* io/fts.c: Likewise.
	* locale/newlocale.c: Likewise.
	* misc/getttyent.c: Likewise.
	* misc/mntent_r.c: Likewise.
	* misc/ttyslot.c: Likewise.
	* nscd/nscd_conf.c: Likewise.
	* nss/nsswitch.c: Likewise.
	* resolv/gethnamaddr.c: Likewise.
	* resolv/nsap_addr.c: Likewise.
	* resolv/res_debug.c: Likewise.
	* stdio-common/_itoa.c: Likewise.
	* stdlib/strtod.c: Likewise.
	* string/strverscmp.c: Likewise.
	* sunrpc/svc.c: Likewise.
	* sysdeps/libm-ieee754/e_cosh.c: Likewise.
	* sysdeps/libm-ieee754/e_gamma_r.c: Likewise.
	* sysdeps/libm-ieee754/e_sinh.c: Likewise.
	* sysdeps/posix/getaddrinfo.c: Likewise.

	* include/dlfcn.h: Likewise.
	* elf/dlfcn.h: Declare dladdr only for __USE_GNU.
	Define RTLD_DEFAULT.
1998-09-06 23:45:24 +00:00
Ulrich Drepper
be93561004 Update.
1998-09-06 09:00  Ulrich Drepper  <drepper@cygnus.com>

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

	Rewrite runtime linker to be truly thread-safe.  There is now no
	global variable specifying the scope.  We create all needed
	scopes at the time the link maps are created.
	* elf/Versions [GLIBC_2.1]: Add _dl_loaded and _dl_main_searchlist.
	* elf/link.h: Add struct r_scope_elem and use this for l_searchlist,
	l_symbolic_searchlist, l_scope, and l_local_scope elements in
	struct link_map.
	* elf/dl-close.c: Rewritten accordingly.
	* elf/dl-deps.c: Likewise.
	* elf/dl-error.c: Likewise.
	* elf/dl-init.c: Likewise.
	* elf/dl-load.c: Likewise.
	* elf/dl-lookup.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/dl-version.c: Likewise.
	* elf/dlfcn.h: Likewise.
	* elf/dlsym.c: Likewise.
	* elf/dlvsym.c: Likewise.
	* elf/ldsodefs.h: Likewise.
	* elf/rtld.c: Likewise.
	* iconv/gconv_dl.c: Likewise.
	* nss/nsswitch.c: Likewise.
	* sysdeps/i386/dl-machine.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/dl-librecon.h: Likewise.
1998-09-06 09:16:53 +00:00
Ulrich Drepper
6075607b9a Update.
1998-08-26 17:48  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-close.c (_dl_close): Move map->l_nsearchlist value into local
	variable so that map can be freed.
	Reported by Philippe Troin <phil@fifi.org>.

	* elf/dl-open.c (dl_open_worker): Correct test for extending global
	scope array.
	Patch by Philippe Troin <phil@fifi.org>.

1998-08-26  Geoff Keating  <geoffk@ozemail.com.au>

	* sysdeps/powerpc/register-dump.h: Rewrite.  Much nicer this way.
	Don't call writev() with a 100-element vector.
	* sysdeps/generic/segfault.c (catch_segfault): Skip top-level NULL
	return address.

	* sysdeps/powerpc/elf/libc-start.c: Sync up with generic version.
	In particular, set __libc_stack_end.
	* sysdeps/powerpc/elf/start.S: Allow _init and _fini to be
	undefined.  Fix copyright notice.

1998-08-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* math/Makefile (gmp-objs): New variable.
	($(objpfx)atest-exp, $(objpfx)atest-sincos, $(objpfx)atest-exp2):
	Depend on it.
	(tests): Add atest-exp atest-sincos atest-exp2.
	(tests-static): Remove atest-exp atest-sincos atest-exp2.

	* elf/rtld.c (dl_main): Unload map file before jumping to user code.
1998-08-26 18:03:49 +00:00
Ulrich Drepper
08cac4ac19 Update.
1998-08-25  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/dl-cache.c: Move static variable cache and cachesize
	to toplevel.
	(_dl_unload_cache): New function.
	* elf/Versions [libc GLIBC_2.1]: Add _dl_unload_cache.
	* elf/dl-open.c (_dl_open): Unload map file before freeing the lock.
	* elf/rtld (dl_main): Unload map file before jumping to user code.

	* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Define O_DIRECT.
	Correct comment for O_LARGEFILE.
	* sysdeps/unix/sysv/linux/bits/fcntl.h: Define O_DIRECT.
	Change O_LARGEFILE to correct value.

1998-08-25 14:34  Ulrich Drepper  <drepper@cygnus.com>

	* libio/iogetline.c (_IO_getline_info): Don't read anything for
	N == 0.  Patch by HJ Lu.
1998-08-26 00:07:26 +00:00
Ulrich Drepper
7a68c94a5b Update.
1998-07-10 18:14 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* manual/Makefile: Overhauled.  Generate libc.texinfo from the
	chapter files.  Exorcise the chapters, chapters-incl mess.
	Support inserting doc chapters from add-on modules.
	(chapters): New variable.
	(add-chapters): New variable.
	(appendices): New variable.
	(libc.texinfo): New target.
	(clean): Fix bugs.
	(realclean): Fix bugs.

	* manual/texis.awk: New file.
	* manual/libc-texinfo.sh: New file.
	* manual/libc-texinfo.in: New file.

	* manual/conf.texi (top @node): Remove next pointer.
	* manual/lang.texi (top @node): Remove prev pointer.

	* manual/job.texi (top @node): Add explicit pointers.
	* manual/message.texi (top @node): Add explicit pointers.
	* manual/nss.texi (top @node): Add explicit pointers.
	* manual/process.texi (top @node): Add explicit pointers.
	* manual/startup.texi (top @node): Add explicit pointers.
	* manual/terminal.texi (top @node): Add explicit pointers.
	* manual/users.texi (top @node): Add explicit pointers.

	* manual/arith.texi: Add %MENU% tag.
	* manual/conf.texi: Add %MENU% tag.
	* manual/contrib.texi: Add %MENU% tag.
	* manual/ctype.texi: Add %MENU% tag.
	* manual/errno.texi: Add %MENU% tag.
	* manual/filesys.texi: Add %MENU% tag.
	* manual/header.texi: Add %MENU% tag.
	* manual/install.texi: Add %MENU% tag.
	* manual/intro.texi: Add %MENU% tag.
	* manual/io.texi: Add %MENU% tag.
	* manual/job.texi: Add %MENU% tag.
	* manual/lang.texi: Add %MENU% tag.
	* manual/llio.texi: Add %MENU% tag.
	* manual/locale.texi: Add %MENU% tag.
	* manual/maint.texi: Add %MENU% tag.
	* manual/math.texi: Add %MENU% tag.
	* manual/mbyte.texi: Add %MENU% tag.
	* manual/memory.texi: Add %MENU% tag.
	* manual/message.texi: Add %MENU% tag.
	* manual/nss.texi: Add %MENU% tag.
	* manual/pattern.texi: Add %MENU% tag.
	* manual/pipe.texi: Add %MENU% tag.
	* manual/process.texi: Add %MENU% tag.
	* manual/search.texi: Add %MENU% tag.
	* manual/setjmp.texi: Add %MENU% tag.
	* manual/signal.texi: Add %MENU% tag.
	* manual/socket.texi: Add %MENU% tag.
	* manual/startup.texi: Add %MENU% tag.
	* manual/stdio.texi: Add %MENU% tag.
	* manual/string.texi: Add %MENU% tag.
	* manual/sysinfo.texi: Add %MENU% tag.
	* manual/terminal.texi: Add %MENU% tag.
	* manual/time.texi: Add %MENU% tag.
	* manual/users.texi: Add %MENU% tag.

1998-07-13  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/i386/dl-procinfo.h (x86_cap_flags):
	Update.

1998-07-11  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/unix/sysv/linux/recvmsg.c (__libc_recvmsg): Use ANSI
	style declaration to avoid warning.
	* sysdeps/unix/sysv/linux/sendmsg.c (__libc_sendmsg): Likewise.

1998-07-04  Mark Kettenis  <kettenis@phys.uva.nl>

	* elf/rtld.c (process_dl_debug): Add missing continue.

1998-07-12  Mark Kettenis  <kettenis@phys.uva.nl>

	* elf/rtld.c (_dl_skip_args): Make global because the Hurd startup
	code needs it.

1998-07-10  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makeconfig ($(common-objpfx)sysd-dirs): Write out definition of
	sysd-dirs-done.
	* Makerules: Don't generate version maps too early.
	($(common-objpfx)sysd-versions): Force regeneration if the list of
	subdirs has changed.

1998-07-10  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/dlfcn.h (DL_CALL_FCT): Use portable comma expression.

1998-07-11  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* iconv/gconv_db.c (gen_steps): Always set *handle and *nsteps.
	* iconv/gconv_dl.c (__gconv_find_shlib): Correct use of tfind
	return value.

1998-07-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/dl-open.c (dl_open_worker): New function.
	(_dl_open): Call it to do the actual work while catching errors.
	* elf/dl-close.c (_dl_close): Only call termination function if
	the initialisation function was called.

1998-07-13  Ulrich Drepper  <drepper@cygnus.com>

	* libio/libioP.h (_IO_cleanup_registration_needed): Use __PMT.
	Reported by Felix von Leitner <leitner@amdiv.de>.

1998-07-13 10:28  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
	* elf/rtld.c (process_dl_debug): Add missing continue.

1998-06-23  Mark Kettenis  <kettenis@phys.uva.nl>
1998-07-13 12:29:13 +00:00
Ulrich Drepper
5ad49c0707 Update.
1998-06-18 16:40  Ulrich Drepper  <drepper@cygnus.com>

	* libc.map: Add _dl_profile_map, _dl_profile_output, _dl_start_profile,
	_dl_mcount, _dl_mcount_wrapper.
	* elf/Makefile (routines): Add dl-profstub.
	* elf/dl-profstub.c: New file.
	* elf/dl-support.c: Don't define _dl_profile_map.
	* elf/rtld.c: Likewise.
	* elf/dlfcn.h: Define DL_CALL_FCT macro.
	* elf/ldsodefs.h: Declare _dl_profile_output, _dl_mcount_wrapper.
	Define _CALL_DL_FCT.
	* iconv/gconv.c: Use _CALL_DL_FCT to call function from dynamically
	loaded object.
	* iconv/gconv_db.c: Likewise.
	* iconv/skeleton.c: Likewise.
	* nss/getXXbyYY_r.c: Likewise.
	* nss/getXXent_r.c: Likewise.
	* nss/nsswitch.c: Likewise.
1998-06-18 16:51:12 +00:00
Ulrich Drepper
c0fb8a563c Update.
1998-06-07 13:32  Ulrich Drepper  <drepper@cygnus.com>

	* libc.map: Add _dl_profile.
	* elf/dl-reloc.c (_dl_relocate_object): Take extra argument, pass
	this to ELF_DYNAMIC_RELOCATE.
	Always allocate array for relocation result if LD_PROFILE is defined.
	* elf/ldsodefs.h: Adjust prototypes.
	* elf/dl-open.c (_dl_open): Call relocation function with extra
	argument.
	* elf/rtld.c: Likewise.
	* elf/dl-profile.c (_dl_mcount): Don't mark as internal function.
	Correct loop condition.
	* elf/dynamic-link.h: Don't examine _dl_profile variable, pass
	consider_profile to runtime setup function.
	* sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Use
	_dl_runtime_profile for all shared objects if LD_PROFILE is defined.

	* elf/dl-support.c: Define __libc_stack_end.
	* elf/rtld.c: Likewise.
	* sysdeps/generic/libc-start.c: Store last stack address in
	__libc_stack_end.
	* sysdeps/i386/dl-machine.h (_dl_start_user): Store stack address.
	* sysdeps/i386/elf/start.s: Call __libc_start_main with extra argument.

	* elf/elf.h: Include <features.h>, not <sys/cdefs.h>.
	Include <stdint.h>, not <inttypes.h>.

	* elf/sprof.c: Implement flat profiling.

	* libio/fgetc.c: Call _IO_cleanup_region_end with 0 and call
	_IO_funlockfile explicitly.
	* libio/fileops.c: Likewise.
	* libio/fputc.c: Likewise.
	* libio/freopen.c: Likewise.
	* libio/freopen64.c: Likewise.
	* libio/fseek.c: Likewise.
	* libio/fseeko.c: Likewise.
	* libio/fseeko64.c: Likewise.
	* libio/ftello.c: Likewise.
	* libio/ftello64.c: Likewise.
	* libio/getc.c: Likewise.
	* libio/getchar.c: Likewise.
	* libio/iofclose.c: Likewise.
	* libio/iofflush.c: Likewise.
	* libio/iofgetpos.c: Likewise.
	* libio/iofgetpos64.c: Likewise.
	* libio/iofgets.c: Likewise.
	* libio/iofputs.c: Likewise.
	* libio/iofread.c: Likewise.
	* libio/iofsetpos.c: Likewise.
	* libio/iofsetpos64.c: Likewise.
	* libio/ioftell.c: Likewise.
	* libio/iofwrite.c: Likewise.
	* libio/iogetdelim.c: Likewise.
	* libio/iogets.c: Likewise.
	* libio/ioputs.c: Likewise.
	* libio/ioseekoff.c: Likewise.
	* libio/ioseekpos.c: Likewise.
	* libio/iosetbuffer.c: Likewise.
	* libio/iosetvbuf.c: Likewise.
	* libio/ioungetc.c: Likewise.
	* libio/iovsprintf.c: Likewise.
	* libio/iovsscanf.c: Likewise.
	* libio/oldfileops.c: Likewise.
	* libio/oldiofclose.c: Likewise.
	* libio/peekc.c: Likewise.
	* libio/putc.c: Likewise.
	* libio/putchar.c: Likewise.
	* libio/rewind.c: Likewise.

	* malloc/mtrace.c: Pretty print.

	* misc/mntent.h (struct mentent): Make string elements const char *.

	* nis/nis_printf.c: Optimize I/O a little bit.

	* signal/Makefile (distribute): Add sigset-cvt-mask.h.
	* sysdeps/generic/sigset-cvt-mask.h: New file.
	* sysdeps/unix/sysv/linux/sigset-cvt-mask.h: New file.
	* sysdeps/unix/sysv/sysv4/sigset-cvt-mask.h: New file.
	* sysdeps/posix/sigvec.c: Rewrite the use definitions from
	sigset-cvt-mask.h to do the dirty work.
	Patches by Joe Keane.

	* sysdeps/posix/mkstemp.c: Save one precious byte of rodata.

	* sysdeps/unix/sysv/linux/i386/sysdep.h: Rewrite PSEUDO etc to make
	syscall_error label in case of PIC anonymous.
	* sysdeps/unix/sysv/linux/i386/i686/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/clone.S: Adapt for this change.
	* sysdeps/unix/sysv/linux/i386/mmap.S: Adapt for this change.
	* sysdeps/unix/sysv/linux/i386/s_pread64.S: Adapt for this change.
	* sysdeps/unix/sysv/linux/i386/s_pwrite64.S: Adapt for this change.
	* sysdeps/unix/sysv/linux/i386/socket.S: Adapt for this change.
	* sysdeps/unix/sysv/linux/i386/syscall.S: Adapt for this change.
1998-06-07 14:06:56 +00:00
Ulrich Drepper
d0fc4041fe Update.
* intl/finddomain.c: Likewise.
	* intl/gettextP.h: Likewise.
	* intl/loadmsgcat.c: Likewise.
1998-04-02 13:11:24 +00:00
Ulrich Drepper
e8e0bee5dd Update.
1998-03-30  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): New
	function.

	* sysdeps/generic/dl-procinfo.h (HWCAP_IMPORTANT): New definition.

	* sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_dl_hwcap_string):
	New function.
	(HWCAP_IMPORTANT): New definition.

1998-03-30 17:26  H.J. Lu  <hjl@gnu.org>

	* elf/dl-open.c (_dl_open): Fix a typo.
	(_dl_global_scope_alloc): Make it static.

	* nss/getXXent_r.c (REENTRANT_GETNAME): Avoid endless loop.
1998-03-30 18:45:41 +00:00
Ulrich Drepper
a853022cc3 Update.
1998-03-24  Ulrich Drepper  <drepper@cygnus.com>

	* elf/ldsodesf.h: New file.
	* elf/Makefile (distribute): Add ldsodefs.h.
	* elf/link.h: Separate internal information in exter header.
	* elf/rtld.c: Include elf/ldsodefs.h not link.h.
	* elf/dl-minimal.c: Likewise.
	* sysdeps/generic/dl-sysdep.c: Likewise.
	* elf/sprof.c: Likewise.
	* elf/dlsym.c: Likewise.
	* elf/dlvsym.c: Likewise.
	* elf/dlerror.c: Likewise.
	* elf/dladdr.c: Likewise.
	* elf/dlclose.c: Likewise.
	* elf/dlopen.c: Likewise.
	* elf/dl-addr.c: 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-object.c: Likewise.
	* elf/dl-open.c: Likewise.
	* elf/dl-profile.c: Likewise.
	* elf/dl-reloc.c: Likewise.
	* elf/dl-runtime.c: Likewise.
	* elf/dl-support.c: Likewise.
	* elf/dl-symbol.c: Likewise.
	* elf/dl-version.c: Likewise.
	* sysdeps/generic/dl-cache.c: Likewise.
	* sysdeps/generic/libc-start.c: Likewise.
	* iconv/gconv_dl.c: Likewise.
	* nss/nsswitch.c: Likewise.
1998-03-24 00:39:45 +00:00
Ulrich Drepper
ae828bc6f9 Update.
1998-03-02 17:55  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/add_n.S: Change to use ENTRY and END macro.
	* sysdeps/i386/addmul_1.S: Likewise.
	* sysdeps/i386/lshift.S: Likewise.
	* sysdeps/i386/mul_1.S: Likewise.
	* sysdeps/i386/rshift.S: Likewise.
	* sysdeps/i386/sub_n.S: Likewise.
	* sysdeps/i386/submul_1.S: Likewise.
	* sysdeps/i386/i586/add_n.S: Likewise.
	* sysdeps/i386/i586/addmul_1.S: Likewise.
	* sysdeps/i386/i586/lshift.S: Likewise.
	* sysdeps/i386/i586/mul_1.S: Likewise.
	* sysdeps/i386/i586/rshift.S: Likewise.
	* sysdeps/i386/i586/sub_n.S: Likewise.
	* sysdeps/i386/i586/submul_1.S: Likewise.

	* sysdeps/i386/sysdep.h: Extend last change.

	* sysdeps/unix/sysv/linux/i386/sysdep.h: Follow Intel's advice
	to have only one exit point for functions.

1998-03-02  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Fix msgfmt test.  Fix handling of //s in sysdeps
	search.

1998-03-02 13:28  Ulrich Drepper  <drepper@cygnus.com>

	* Makerules: Generate libc.so with absolute paths for the used
	shared objects.

	* config.make.in: Add MAKEINFO definition.

1998-03-02  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/sysdep.h (ASM_SIZE_DIRECTIVE): Add ; at the end.
	(ENTRY): Use STABS_FUN.
	(END): Use STABS_FUN_END.
	(STABS_FUN, STABS_FUN2, STABS_FUN_END): New macro to emit stabs info.

	* elf/Makefile: Add rules to build sprof program.
	* elf/sprof.c: New file.

1998-02-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* misc/syslog.c (openlog_internal): Insert missing closing brace.

1998-02-06  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* configure.in: Check for working msgfmt version (from GNU gettext
	0.10 or later).

1998-03-02  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Avoid //s in sysdirs.
	Patch by Roland McGrath.

	* stdlib/a64l.c (a64l): Rewrite by Joe Keane <jgk@jgk.org>.

1998-03-02 07:17  H.J. Lu  <hjl@gnu.org>

	* elf/dl-open.c (_dl_open): Update _dl_global_scope_end when
	setting _dl_global_scope for RTLD_GLOBAL.

1998-02-27  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/make-syscalls.sh: Fix last change so that all
	possible lists of object-suffixes are taken care of.

1998-03-02 10:16  Ulrich Drepper  <drepper@cygnus.com>

	* timezone/private.h: Update from tzcode1998c.
	* timezone/zic.c: Likewise.
	* timezone/antarctica: Updated from tzdata1998c.
	* timezone/asia: Likewise.
	* timezone/australasia: Likewise.
	* timezone/europe: Likewise.
	* timezone/southamerica: Likewise.

1998-03-02  Ulrich Drepper  <drepper@cygnus.com>

	* posix/glob.c (glob_in_dir): Add support for cases insensitive
	VMS.  Patch by John W. Eaton <jwe@bevo.che.wisc.edu>.
1998-03-02 18:02:11 +00:00