2004-12-01 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (process_envvars): Don't consider LD_SHOW_AUXV
and LD_DYNAMIC_WEAK if __libc_enable_secure.
If __libc_enable_secure, /etc/suid-debug doesn't exist and
program will be actually run, turn off all debugging.
* sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add LD_DEBUG,
LD_DYNAMIC_WEAK and LD_SHOW_AUXV.
2004-11-27 Ulrich Drepper <drepper@redhat.com>
* posix/getconf.c (vars): Add support for _SC_IPV6 and
_SC_RAW_SOCKETS.
* sysdeps/posix/sysconf.c (__sysconf): Add support for _SC_IPV6
and _SC_RAW_SOCKETS.
* sysdeps/generic/bits/confname.h: Define _SC_IPV6 and
_SC_RAW_SOCKETS.
* posix/Makefile (install-others): Add $(inst_libexecdir)/getconf.
(CFLAGS-sysconf.c): Add -D_GETCONF_DIR.
(CFLAGS-getconf.c): New.
($(inst_libexecdir)/getconf): New.
* posix/confstr.c (confstr): Use __sysconf to query specifications
that don't have _POSIX_V6_* macros defined. Use __*_{C,LD}FLAGS
macros defined in bits/environments.h.
* sysdeps/posix/sysconf.c: Include stdlib.h, string.h and
sys/stat.h.
(__sysconf_check_spec): New routine.
(__sysconf): Use it.
* posix/getconf.c (specs): Change into structure array.
(main): If -v is not given, try to get default from
$(libexecdir)/getconf/default. If specification is not
supported by this getconf, try to execute
$(libexecdir)/getconf/$(specification).
* sysdeps/unix/bsd/bsd4.4/freebsd/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/s390/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/environments.h: New file.
* sysdeps/unix/sysv/linux/x86_64/bits/environments.h: New file.
* sysdeps/generic/bits/environments.h (__ILP32_OFFBIG_CFLAGS):
Define.
2004-11-26 Jakub Jelinek <jakub@redhat.com>
2004-11-11 Simon Josefsson <jas@extundo.com>
[BZ #542]
* sysdeps/generic/strtok_r.c [HAVE_CONFIG_H]: Include config.h.
[!_LIBC]: Include strtok_r.h (in gnulib), map __strtok_r to
strtok_r and __rawmemchr to strch.
(__strtok_r): Use C89 prototype.
[weak_alias]: Move calls to libc_hidden_def and weak_alias into
this #ifdef.
_dl_sysinfo_dso under [NEED_DL_SYSINFO_DSO] as well.
* elf/rtld.c (dl_main): Set up GLRO(dl_sysinfo_dso) under
[NEED_DL_SYSINFO_DSO] as well.
* sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Always include
AT_SYSINFO and AT_SYSINFO_EHDR in name table.
(_dl_sysdep_start) [NEED_DL_SYSINFO_DSO]: Match AT_SYSINFO_EHDR.
* elf/dl-support.c (_dl_sysinfo_dso): Define also under
[NEED_DL_SYSINFO_DSO].
(_dl_aux_init) [NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO]:
Match AT_SYSINFO_EHDR and set GL(dl_sysinfo_dso).
2004-11-05 Roland McGrath <roland@redhat.com>
2004-10-27 Jakub Jelinek <jakub@redhat.com>
* sysdeps/generic/glob.c (globfree): Clear gl_pathv after freeing it.
* posix/Makefile: Add rules to build and run bug-glob2 test.
* posix/bug-glob2.c: New test.
Update.
Add support for namespaces in the dynamic linker.
* dlfcn/Makefile (libdl-routines): Add dlmopen.
* dlfcn/Versions [libdl, GLIBC_2.3.4]: Add dlmopen.
* dlfcn/dlfcn.h: Define Lmid_t, LM_ID_BASE, and LM_ID_NEWLM.
Declare dlmopen. Document RTLD_DI_LMID.
* dlfcn/dlinfo.c: Handle RTLD_DI_LMID.
* dlfcn/dlmopen.c: New file.
* dlfcn/dlopen.c: Pass new parameter to _dl_open.
* dlfcn/dlopenold.c: Likewise.
* elf/dl-addr.c: Adjust for removal of GL(dl_loaded).
* elf/dl-caller.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-conflict.c: Likewise.
* elf/dl-debug.c: Likewise.
* elf/dl-lookup.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-version.c: Likewise.
* elf/do-lookup.h: Likewise.
* elf/rtld.c: Likewise.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h: Likewise.
* elf/dl-depsc: Likewise. Add new parameter to _dl_map_object.
* elf/dl-fini.c: Call destructors in all namespaces.
* elf/dl-iteratephdr.c: Compute total nloaded. Adjust for removal of
GL(dl_loaded).
* elf/dl-libc.c: Pass new parameter to _dl_open. Adjust for removal
of GL(dl_loaded).
* elf/dl-load.c (_dl_map_object_from_fd): Don't load ld.so a second
time. Reuse the one from the main namespace in all others.
Pass new parameter to _dl_new_object.
Adjust for removal of GL(dl_loaded).
* elf/dl-object.c: Take new parameter. Use it to initialize l_ns.
Adjust for removal of GL(dl_loaded).
* elf/dl-open.c (_dl_open): Take new parameter.
Adjust for removal of GL(dl_loaded).
* elf/dl-support.c: Replace global _dl_loaded etc variables with
_dl_ns variable.
* include/dlfcn.h: Adjust prototype of _dl_open.
Define __LM_ID_CALLER.
* include/link.h: Add l_real, l_ns, and l_direct_opencount elements.
* sysdeps/generic/dl-tls.c: Bump TLS_STATIC_SURPLUS. Since libc is
using TLS we need memory appropriate to the number of namespaces.
* sysdeps/generic/ldsodefs.h (struct rtld_global): Replace _dl_loaded,
_dl_nloaded, _dl_global_scope, _dl_main_searchlist, and
_dl_global_scope_alloc with _dl_ns element. Define DL_NNS.
Adjust prototypes of _dl_map_object and member in rtld_global_ro.
* malloc/malloc.c: Include <dlfcn.h>.
* malloc/arena.c (ptmalloc_init): If libc is not in primary namespace,
never use brk.
* elf/Makefile: Add rules to build and run tst-dlmopen1 and
tst-dlmopen2.
* elf/tst-dlmopen1.c: New file.
* elf/tst-dlmopen1mod.c: New file.
* elf/tst-dlmopen2.c: New file.
* elf/dl-close.c: Improve reference counting by tracking direct loads.
* elf/dl-lookup.c (add_dependency): Likewise.
* elf/dl-open.c (dl_open_worker): Likewise.
* elf/rtld.c (dl_main): Likewise.
2004-09-09 GOTO Masanori <gotom@debian.or.jp>
[BZ #77]
* elf/dl-close.c: Count down l_opencount to check not only for
l_reldeps, but also l_initfini.
2004-10-13 Ulrich Drepper <drepper@redhat.com>
to rtld_errno.
* sysdeps/generic/errno.c [RTLD_PRIVATE_ERRNO] (rtld_errno): Define it,
and don't define any other errno names.
* sysdeps/unix/alpha/sysdep.h [RTLD_PRIVATE_ERRNO]: Use rtld_errno in
place of errno.
* sysdeps/unix/i386/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
* sysdeps/unix/x86_64/sysdep.S: Likewise.
* sysdeps/generic/errno.c [! USE___THREAD] (errno): Use `nocommon'
attribute instead of `section'.
are handled by one thread which then hands off the descriptors for the
2004-10-02 Simon Josefsson <jas@extundo.com>
[BZ #420]
* sysdeps/generic/memmem.c [!_LIBC]: Define __builtin_expect, to
make the file usable inside gnulib.
2004-09-29 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/glob.c (glob_in_dir): Don't blindly trust
readdir results; for symlinks or files of unknown type check using
stat whether the file exists.
* posix/tst-gnuglob.c (find_file): Handle leading "./". Fix
recognition of files.
* posix/sys/wait.h [__WIFCONTINUED] (WIFCONTINUED): New macro.
* stdlib/stdlib.h [__WIFCONTINUED] (WIFCONTINUED): New macro.
* sysdeps/generic/bits/waitstatus.h (__W_CONTINUED): New macro.
[WCONTINUED] (__WIFCONTINUED): New macro.
(__WIFSIGNALED): Rewritten to exclude __W_CONTINUED value, and have no
branches.
2004-09-23 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/bits/dlfcn.h: Add RTLD_DEEPBIND.
* elf/dl-object.c (_dl_new_object): Add new parameter mode. If mode
has RTLD_DEEPBIND set add local searchlist before global scope.
* sysdeps/generic/ldsodefs.h (_dl_new_object): Adjust prototype.
* elf/rtld.c: Adjust callers of _dl_new_object.
* elf/dl-load.c: Likewise.
(_dl_map_object_from_fd): If RTLD_DEEPBIND is used, don't do anything
for DF_SYMBOLIC.
* elf/dl-open.c (dl_open_writer): Pass RTLD_DEEPBIND flag on to
_dl_map_object_deps.
* elf/tst-deep1.c: New file.
* elf/tst-deep1mod1.c: New file.
* elf/tst-deep1mod2.c: New file.
* elf/tst-deep1mod3.c: New file.
* elf/Makefile: Add rules to build and run new tests.
* elf/dl-deps.c: Pretty printing.
2004-09-17 Ulrich Drepper <drepper@redhat.com>
* include/link.h (struct link_map): Add l_used element.
* sysdeps/generic/ldsodefs.h: Define DL_DEBUG_UNUSED.
* elf/rtld.c (process_dl_debug): Recognize unused.
(dl_main): When unused debug flag is set check for unused direct
dependencies.
When printing dependencies and SONAME starts with /, omit the SONAME =>
part.
* elf/dl-lookup.c (_dl_lookup_symbol_x): Mark object in which the
symbol has been found as used.
* elf/ldd.bash.in: Add -u option.
2004-07-10 Ulrich Drepper <drepper@redhat.com>
* elf/ldconfig.c: Define PROCINFO_CLASS as static before including
ldsodefs.h.
* sysdeps/generic/ldsodefs.h: Only define PROCINFO_CLASS if it is not
already defined.
* sysdeps/i386/dl-procinfo.c: Define PROCINFO_CALLS only if not
already defined.
* elf/rtld.c (print_statistics): Mark with noinline attribute.
* sysdeps/i386/dl-machine.h (elf_machine_rel): Mark with always_inline
attribute.
(elf_machine_rel_relative): Likewise.
* include/string.h: Add libc_hidden_proto for __strtok_r and
__strsep_g.
* sysdeps/generic/strsep.c: Add libc_hidden_def.
* sysdeps/generic/strtok_r.c: Likewise.
* sysdeps/i386/strtok_r.S: Add alias for internal symbol.
* sysdeps/i386/i686/strtok_r.S: Likewise.
* sysdeps/x86_64/strtok_r.S: Likewise.
2004-07-09 Alexandre Oliva <aoliva@redhat.com>
* inet/getnetgrent_r.c (internal_setnetgrent): Make it hidden
instead of internal-linkage, such that we can alias to it.
(internal_endnetgrent, internal_getnetgrent_r): Likewise.
2004-07-05 Ulrich Drepper <drepper@redhat.com>
* elf/dl-init.c: Don't define and use _dl_starting_up if
HAVE_INLINED_SYSCALLS is defined and the variable is not used.
* elf/dl-support.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-misc.c (_dl_debug_vdprintf): Use writev syscall directly
if HAVE_INLINED_SYSCALLS is defined.
* sysdeps/powerpc/powerpc64/dl-machine.h: Don't rest _dl_starting_up
here.
* sysdeps/powerpc/powerpc32/dl-start.S: Likewise.
* sysdeps/unix/sysv/linux/configure.in: Define HAVE_INLINED_SYSCALLS.
* config.h.in: Add entry for HAVE_INLINED_SYSCALLS.
* sysdeps/posix/profil.c: If compiled for ld.so, omit code which
is needed to stop profiling.
* elf/dl-open.c (dl_open_worker): If a newly opened object is to be
profile make sure it cannot be unloaded.
* sysdeps/unix/sysv/linux/dl-origin.c: Inline readlink syscall.
* sysdeps/unix/sysv/linux/fcntl.c: If compiled without cancellation
support, make sure the helper function is inlined.
* sysdeps/unix/sysv/linux/pread.c: Likewise.
* sysdeps/unix/sysv/linux/pwrite.c: Likewise.
* sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise.
2004-06-30 Ulrich Drepper <drepper@redhat.com>
* include/net/if.h: Handle if_nameindex and if_freenameindex with
libc_proto_hidden.
* sysdeps/unix/sysv/linux/netlinkaccess.h: New file.
* sysdeps/unix/sysv/linux/ifaddrs.c: Export netlink handling functions.
* sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Implement using
netlink if possible. Fall back on ioctl method if necessary.
* include/unistd.h: Declare __truncate.
* sysdeps/generic/truncate.c: Also define __truncate.
* sysdeps/mach/hurd/truncate.c: Likewise.
* sysdeps/unix/common/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/truncate64.c: Use __truncate, not truncate.
NULL, "" or contains '=' character in it. Reported by
Michael T Kerrisk <mtk-lists@gmx.net>.
* stdlib/tst-environ.c: Include errno.h.
(main): Add tests for these arguments to setenv/unsetenv.
* sysdeps/generic/bits/in.h
(IMPLINK_IP, IMPLINK_LOWEXPER, IMPLINK_HIGHEXPER): Macros removed.
These are long obsolete in BSD systems where they originated.
* conform/data/netinet/in.h-data: Remove `allow IMPLINK_*'