reference since this is as secure as using the object with the
dependency.
(_dl_dst_count): Change strings in first two strncmp calls to allow reuse.
(_dl_dst_substitute): Likewise.
VALID_ELF_OSABI, VALID_ELF_ABIVERSION to decide whether an
object's header and ABI values are acceptable.
(VALID_ELF_HEADER): New macro; provide default definition.
(VALID_ELF_OSABI): New macro; provide default definition.
(VALID_ELF_ABIVERSION): New macro; provide default definition.
occurence of the aux object start with the current list entry, not
the new one. Adjust tail pointer in the unique list. Explain how
the meaning of the variables changes.
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.
* elf/link.h (struct link_map): New field l_phdr_allocated.
* elf/dl-load.c (_dl_map_object_from_fd): Don't depend on having
the program header being part of any loaded segment. If it is not
allocate memory and set l_phdr_allocated flag.
* elf/dl-close.c (_dl_close): Free l_phdr if necessary.
* 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.
* elf/Makefile (trusted-dirs.st): Use gen-trusted-dirs.awk.
* elf/gen-trusted-dirs.awk: New file.
* elf/dl-load.c (systems_dirs): Moved into file scope. Initialize
from SYSTEM_DIRS macro.
(system_dirs_len): New variable. Contains lengths of system_dirs
strings.
(fillin_rpath): Rewrite for systems_dirs being a simple string.
Improve string comparisons. Change parameter trusted to be a flag.
Change all callers.
(_dt_init_paths): Improve using new format for system_dirs.
1999-05-02 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* sunrpc/Makefile: Generate dependencies for all flavors of
librpcsvc objects.
(rpcgen-cmd): Pass -Y flag here and remove it from the macro
invocations.
1999-05-02 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* elf/dlopenold.c: Move #if down after includes to get
dependencies right.
1999-05-01 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* sysdeps/generic/bzero.c: Undefine __bzero.
1999-04-12 Philip Blundell <philb@gnu.org>
* elf/elf.h: Update ARM definitions to match current gas2.
* sysdeps/arm/bits/endian.h: Support big endian operation.
* sysdeps/unix/sysv/linux/arm/ioperm.c (_outw, _outb, _outl):
Don't bother range checking the port number.
* sysdeps/unix/sysv/linux/arm/vfork.S: New file.
* sysdeps/unix/sysv/linux/arm/sysdep.h (INLINE_SYSCALL): Include
the syscall name in assembler output for ease of debugging.
* sysdeps/unix/sysv/linux/arm/sigaction.c: Don't rely on undefined
compiler behaviour.
* sysdeps/unix/sysv/linux/arm/sigrestorer.S: New file.
* sysdeps/unix/sysv/linux/arm/Makefile [$(subdir) = signal]
(sysdep_routines): Add sigrestorer.
* string/tester.c (test_strcpy): Add new tests for unaligned
arguments.
* sysdeps/arm/bits/string.h: Delete inline implementations of
strcpy and stpcpy.
1999-04-02 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* elf/Makefile (CFLAGS-multiload.c): Change to allow building in
the source directory. Fixes PR libc/1059.
* sysdeps/unix/sysv/linux/ttyname.c (ttyname): Terminate the string.
1999-03-29 Ulrich Drepper <drepper@cygnus.com>
* elf/rtld.c (process_envvars): Do not automatically prevent lazy
relocation for SUID binaries.
* misc/regexp.h (compile): Cast some pointers to (char *) to avoid
$(inst_slibdir)/$(rtld-installed-name), ldso_install): Disable
targets if not building shared libraries.
1999-03-22 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* elf/Makefile ($(inst_slibdir)/$(rtld-version-installed-name),
$(inst_slibdir)/$(rtld-installed-name), ldso_install): Disable
targets if not building shared libraries.
install-info. Remove autoconf bug workaround and require autoconf
2.13.
Mon Mar 22 15:48:06 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* configure.in: Also look in $PATH when searching for
install-info. Remove autoconf bug workaround and require autoconf
2.13.
1999-02-25 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* manual/libc.texinfo: Wrap @top node inside @ifnottex instead of
@ifinfo.
1999-02-25 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* iconvdata/Makefile: Always include iconv-rules, but disable rule
to regenerate it if avoid-generated.
* Makeconfig: Always include sys-dirs, but disable rule to
regenerate it when avoid-generated.
* sysdeps/unix/Makefile: Put `ifndef avoid-generated' only around
rule to generate sysd-syscalls.
* elf/Makefile (generated): Remove $(objpfx) from names.
1999-02-23 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* malloc/malloc.c (mALLOC_SET_STATe): Handle the case where a
non-checked heap is restored when malloc checking was requested by
the user.
(struct malloc_state): Add using_malloc_checking.
(MALLOC_STATE_VERSION): Increment minor.
(using_malloc_checking, disallow_malloc_check): New variables.
(__malloc_check_init): Use them.
(mALLOC_GET_STATe): Use mALLOc to allocate the malloc_state, so
that it can the chunk is properly instrumented when malloc
checking is enabled. Set the new using_malloc_checking field.
(malloc_hook_ini): Correct signature when _LIBC is not defined.
1999-02-23 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* sysdeps/unix/sysv/linux/i386/dl-librecon.h
(DISTINGUISH_LIB_VERSIONS): Don't relocate DT_STRTAB a second
time.
* elf/rtld.c (dl_main): Rename paths_initialized to rtld_is_main.
Don't call elf_get_dynamic_info and _dl_setup_hash a second time
if ld.so is the main program.
* stdio-common/vfprintf.c (vfprintf): If precision or width is too
* elf/dl-deps.c (_dl_map_object_deps): Don't add dummy objects created
for tracing to the scope lists.
* elf/do-lookup.h: Remove test for l_opencount == 0 after above change.
DT_SYMTAB is always available according to ELF spec.
* elf/dl-lookup.c (_dl_lookup_symbol_skip): Before first do_lookup
call test whether there is any scope left.
(_dl_lookup_versioned_symbol_skip): Likewise.
* elf/Makefile (distribute): Add do-lookup.h.
* elf/do-lookup.h: New file. Split out from dl-lookup.c.
* elf/dl-lookup.c: Move do_lookup function in separate file and
include the file twice, for handling versioning and without it.
* elf/dynamic-link.h (elf_get_dynamic_info): Take new argument with
load address. Relocate d_ptr in DT_DTRTAB, DT_SYMTAB, DT_RELA, DT_REL,
DT_JMPREL, DT_PLTGOT, and DT_VERSYM l_info entry.
(_ELF_DYNAMIC_DO_RELOC): Take extra argument which specifies whether
rel and rela relocations can both happen and skip one test if this
is not possible.
(ELF_DYNAMIC_DO_RELA, ELF_DYNAMIC_DO_REL): Call _ELF_DYNAMIC_DO_RELOC
appropriately.
* elf/dl-addr.c (_dl_addr): DT_SYMTAB and DT_STRTAB entries are
already relocated.
* elf/dl-deps.c (_dl_map_object_deps): DT_STRTAB entry is already
relocated.
* elf/dl-load.c (_dl_init_paths): DT_STRTAB entry is already relocated.
(_dl_map_object_from_fd): Call elf_get_dynamic_info with new argument.
(_dl_map_object): DT_STRTAB entry is already relocated.
* elf/dl-lookup.c (do_lookup): DT_STRTAB and DT_SYMTAB entries are
already relocated.
* elf/dl-reloc.c (_dl_relocate_object): DT_STRTAB entry is already
relocated.
* elf/dl-runtime.c (fixup): DT_SYMTAB, DT_STRTAB, DT_JMPREL, and
DT_VERSYM entries are already relocated.
(profile_fixup): Likewise.
* elf/dl-version.c: Rename VERSTAG macro into VERSYMIDX. Replace
all users.
(match_symbol): DT_STRTAB entry is already relocated.
(_dl_check_map_versions): Likewise. Also fo DT_VERSYM.
* elf/do-rel.h (elf_dynamic_do_rel): reladdr is now assumed to be
relocated already. DT_SYMTAB and DT_VERSYM entries are also relocated.
* elf/rtld.c (_dl_start): Pass extra argument to elf_get_dynamic_info.
(find_needed): DT_STRTAB entry is already relocated.
(dl_main): Pass extra argument to elf_get_dynamic_info.
DT_STRTAB entry is already relocated.
* sysdeps/alpha/dl-machine.h (elf_machine_fixup_plt): DT_JMPREL and
DT_PLTGOT entries are already relocated.
(elf_machine_rela): Likewise for DT_SYMTAB.
* sysdeps/arm/dl-machine.h (elf_machine_rel): DT_STRTAB is already
relocated.
* sysdeps/i386/dl-machine.h (elf_machine_rel): Likewise.
* sysdeps/m68k/dl-machine.h (elf_machine_rela): Likewise.
* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Likewise.
* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise.
* sysdeps/powerpc/dl-machine.c (__process_machine_rela): Likewise.
* sysdeps/mips/dl-machine.h (elf_machine_got_rel): Likewise.
(elf_machine_got_rel): Likewise for DT_SYMTAB and DT_STRTAB.
* grp/initgroups.c (initgroups): If function in current module was
successful don't stop but continue to process to get all the groups.
1999-02-20 Ulrich Drepper <drepper@cygnus.com>
* elf/dynamic-link.h (elf_get_dynamic_info): Use memset instead of
loop to clear `info'.
* sysdeps/i386/i486/bits/string.h: If fill byte is constant let gcc
do the work and don't use inline assembler.
1999-02-19 Ulrich Drepper <drepper@cygnus.com>
* elf/ldsodefs.h (_dl_signal_error): Mark as __noreturn__.
* elf/dl-load.c (lose): Make it a function at the toplevel, mark as
noreturn, and prevent it from being inlined.
Define LOSE appropriately.
(_dl_map_object_from_fd): Compare all bytes in e_ident at once.
Optimize decoding of p_flags for certain platforms.
* elf/link.h (link_map): Add l_dev and l_ino.
* elf/dl-load.c (_dl_map_object_from_fd): Test dev/ino of newly
loaded shared object with all laoded objects. Initialize l_ino
and l_dev in case it's new.
* elf/rtld.c (dl_main): Explain situation is l_dev/l_ino with main
object.
* elf/Makefile: Compile and run new test.
* elf/multiload.c: New file.