* elf/dl-close.c (_dl_close): Don't free memory for global scope
list immediately when empty. Move code to...
(free_mem): ...here. Called as part of __libc_subfreeres list.
* elf/dl-deps.c (_dl_map_object_deps): Put l_initfini array before
r_list array in allocated memory.
* elf/dl-close.c (_dl_close): Optimize access to l_initfini list
and remove use of r_list.
2000-10-24 Ulrich Drepper <drepper@redhat.com>
* elf/dl-close.c (_dl_close): Use correct list (l_initfini) when
computing new opencounts.
* elf/Makefile: Add rules to build and run neededtest3.
* neededtest3.c: New file.
* neededobj4.c: New file.
* elf/neededtest.c (main): Correct tests for failing dlopen.
* malloc/obstack.c (_obstack_newchunk): Correctly align first returned
block.
* malloc/tst-obstack.c: New file.
Patch and test case by Alexandre Duret-Lutz <duret_g@epita.fr>.
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.
* include/link.h (struct link_map): New bit field l_faked.
* elf/dl-deps.c: Use l_faked field in struct link_map instead of
the magic l_opencount==0.
* elf/dl-load.c: Likewise.
* elf/dl-version.c: Likewise.
* elf/rtld.c: Likewise.
2000-10-23 Jim Meyering <meyering@ascend.com>
Allow this code to be used outside of glibc.
* sysdeps/generic/memrchr.c: Undef __memrchr, too.
[!weak_alias]: Define __memrchr to memrchr.
Guard weak_alias use with `#ifdef weak_alias'.
* elf/unload.c: Generate more debugging output.
* elf/neededtest.c: Make it more complicated.
* elf/neededtest2.c: New file.
* elf/Makefile: Add rules to build and run neededtest2.
* sysdeps/unix/sysv/linux/ia64/bits/resource.h (RLIMIT_LOCKS): Added.
(RLIMIT_NLIMITS): Sync with kernel definition.
(PRIO_PROCESS, PRIO_PGRP, PRIO_USER): Also define as macros.
2000-10-23 Andreas Schwab <schwab@suse.de>
2000-10-22 Bruno Haible <haible@clisp.cons.org>
* iconvdata/big5hkscs.c (big5hkscs_to_ucs): Add irreversible mappings
for 0x8BF8, 0xA27E..0xA2A7.
* iconvdata/BIG5HKSCS.irreversible: New file.
2000-10-23 Jakub Jelinek <jakub@redhat.com>
* timezone/zdump.c (main): setlocale LC_CTYPE as well as LC_MESSAGES.
* timezone/zic.c (main): Likewise.
2000-10-23 Thorsten Kukuk <kukuk@suse.de>
* nscd/connections.c (invalidate_cache): Don't invalidate a cache
if it is not enabled.
* elf/dl-load.c (_dl_map_object_from_fd): Split out ELF file
verification in open_verify.
(open_verify): New function. Called instead of open. Ignores valid
files for other architectures.
(open_path): Call open_verify instead of open.
(_dl_map_object): Likewise.
Somewhat based on a patch by Don Dugger <n0ano@valinux.com>.
* io/pwd.c (main): The output was missing a newline.
* posix/fnmatch_loop.c: Make FNM_LEADING_DIR behave as GNU tar
expects it. Patch by Colin Watson <riva.ucam.org>.
* posix/tst-fnmatch.input: Add test cases for FNM_LEADING_DIR.
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.
* include/link.h (struct link_map): Add l_soname_added bitfield.
* elf/dl-load.c (_dl_map_object): Remember when we added the
SONAME to the l_libname list and don't try it again.
* elf/dl-close.c: Decrement opencount for all dependencies which can
be removed even if the object is not yet unloaded.
* elf/dl-deps.c (_dl_map_object_deps): If dependency is already in
the list decrement opencount of all dependencies.
* elf/dl-load.c (_dl_map_object_from_fd): Increment object of object
and all dependencies.
(_dl_map_object): Likewise.
* elf/dl-lookup.c (add_dependency): Likewise.
* elf/loadtest.c: Add debug when with more output.
2000-10-19 H.J. Lu <hjl@gnu.org>
* elf/Makefile (distribute): Add neededtest.c, neededobj1.c,
neededobj2.c and neededobj3.c.
(tests): Add neededtest.
(modules-names): Add neededobj1, neededobj2 and neededobj3.
($(objpfx)neededobj1.so): New target.
($(objpfx)neededobj2.so): Likewise.
($(objpfx)neededobj3.so): Likewise.
($(objpfx)neededtest): Likewise.
($(objpfx)neededtest.out): Likewise.
* elf/neededtest.c: New. Based on the bug report from
Allen Bauer <kylix_rd@hotmail.com>.
* elf/neededobj1.c: Likewise.
* elf/neededobj2.c: Likewise.
* elf/neededobj3.c: Likewise.
2000-10-20 Ulrich Drepper <drepper@redhat.com>
* elf/dl-close.c (_dl_close): Decrement reference counter for all
dependencies even if the DSO does not get unloaded.
* elf/dl-load.c (_dl_map_object_from_fd): Pass pointer to ELF header
to elf_machine_matches_host.
* sysdeps/alpha/dl-machine.h (elf_machine_matches_host): Parameter
is now pointer to ELF header.
* sysdeps/arm/dl-machine.h: Likewise.
* sysdeps/generic/dl-machine.h: Likewise.
* sysdeps/hppa/dl-machine.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/ia64/dl-machine.h: Likewise.
* sysdeps/m68k/dl-machine.h: Likewise.
* sysdeps/mips/dl-machine.h: Likewise.
* sysdeps/mips/mips64/dl-machine.h: Likewise.
* sysdeps/powerpc/dl-machine.h: Likewise.
* sysdeps/s390/dl-machine.h: Likewise.
* sysdeps/sh/dl-machine.h: Likewise.
* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
Patch by Martin Schwidefsksy <schwidefsky@de.ibm.com>.
2000-10-20 Jakub Jelinek <jakub@redhat.com>
* include/limits.h: Include bits/wordsize.h, use #if __WORDSIZE == 64
check instead of #ifdef __alpha__.
* include/bits/xopen_lim.h (WORD_BIT, LONG_BIT): Don't count on
INT_MAX, __INT_MAX__, LONG_MAX or __LONG_MAX__ being defined when
this is included.
* posix/wordexp-tst.sh (testout): Place output file in build
directory. Patch by Joseph S. Myers <jsm28@cam.ac.uk>.
2000-10-20 Ulrich Drepper <drepper@redhat.com>
* sysdeps/powerpc/fpu/bits/mathinline.h: Pretty print.
2000-10-19 Ulrich Drepper <drepper@redhat.com>
* hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn):
Correctly handle numeric group member information.
Patch by tomasw@cs.huji.ac.il.
* hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn):
Complete test for strtol overflow.
2000-10-19 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Pass union
semun as 4th argument to semctl syscall, not address of it.
2000-10-18 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add fcntl64() syscall.
2000-10-17 Andreas Schwab <schwab@suse.de>
* string/string.h: Remove declaration of __strcasecmp and __strcasestr.
* include/string.h: Declare them here.