1997-07-26 10:33:30 +08:00
|
|
|
|
/* Map in a shared object's segments from the file.
|
2017-01-01 08:14:16 +08:00
|
|
|
|
Copyright (C) 1995-2017 Free Software Foundation, Inc.
|
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 11:15:52 +08:00
|
|
|
|
This file is part of the GNU C Library.
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
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 11:15:52 +08:00
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 12:58:11 +08:00
|
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
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 11:15:52 +08:00
|
|
|
|
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
|
2001-07-06 12:58:11 +08:00
|
|
|
|
Lesser General Public License for more details.
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
2001-07-06 12:58:11 +08:00
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-10 07:18:22 +08:00
|
|
|
|
License along with the GNU C Library; if not, see
|
|
|
|
|
<http://www.gnu.org/licenses/>. */
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
1998-02-24 23:22:29 +08:00
|
|
|
|
#include <elf.h>
|
1997-07-26 10:33:30 +08:00
|
|
|
|
#include <errno.h>
|
|
|
|
|
#include <fcntl.h>
|
2000-06-10 12:01:36 +08:00
|
|
|
|
#include <libintl.h>
|
2002-02-02 17:49:35 +08:00
|
|
|
|
#include <stdbool.h>
|
1997-07-26 10:33:30 +08:00
|
|
|
|
#include <stdlib.h>
|
1995-05-02 14:35:55 +08:00
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <unistd.h>
|
2000-03-24 04:31:46 +08:00
|
|
|
|
#include <ldsodefs.h>
|
2003-03-04 03:08:31 +08:00
|
|
|
|
#include <bits/wordsize.h>
|
1997-07-26 10:33:30 +08:00
|
|
|
|
#include <sys/mman.h>
|
1998-04-24 23:33:23 +08:00
|
|
|
|
#include <sys/param.h>
|
1997-07-26 10:33:30 +08:00
|
|
|
|
#include <sys/stat.h>
|
|
|
|
|
#include <sys/types.h>
|
1995-05-02 14:35:55 +08:00
|
|
|
|
#include "dynamic-link.h"
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
#include <abi-tag.h>
|
2004-09-20 23:08:26 +08:00
|
|
|
|
#include <stackinfo.h>
|
2004-09-20 23:15:23 +08:00
|
|
|
|
#include <caller.h>
|
2005-02-08 16:25:22 +08:00
|
|
|
|
#include <sysdep.h>
|
2012-07-26 18:03:35 +08:00
|
|
|
|
#include <stap-probe.h>
|
Narrowing the visibility of libc-internal.h even further.
posix/wordexp-test.c used libc-internal.h for PTR_ALIGN_DOWN; similar
to what was done with libc-diag.h, I have split the definitions of
cast_to_integer, ALIGN_UP, ALIGN_DOWN, PTR_ALIGN_UP, and PTR_ALIGN_DOWN
to a new header, libc-pointer-arith.h.
It then occurred to me that the remaining declarations in libc-internal.h
are mostly to do with early initialization, and probably most of the
files including it, even in the core code, don't need it anymore. Indeed,
only 19 files actually need what remains of libc-internal.h. 23 others
need libc-diag.h instead, and 12 need libc-pointer-arith.h instead.
No file needs more than one of them, and 16 don't need any of them!
So, with this patch, libc-internal.h stops including libc-diag.h as
well as losing the pointer arithmetic macros, and all including files
are adjusted.
* include/libc-pointer-arith.h: New file. Define
cast_to_integer, ALIGN_UP, ALIGN_DOWN, PTR_ALIGN_UP, and
PTR_ALIGN_DOWN here.
* include/libc-internal.h: Definitions of above macros
moved from here. Don't include libc-diag.h anymore either.
* posix/wordexp-test.c: Include stdint.h and libc-pointer-arith.h.
Don't include libc-internal.h.
* debug/pcprofile.c, elf/dl-tunables.c, elf/soinit.c, io/openat.c
* io/openat64.c, misc/ptrace.c, nptl/pthread_clock_gettime.c
* nptl/pthread_clock_settime.c, nptl/pthread_cond_common.c
* string/strcoll_l.c, sysdeps/nacl/brk.c
* sysdeps/unix/clock_settime.c
* sysdeps/unix/sysv/linux/i386/get_clockfreq.c
* sysdeps/unix/sysv/linux/ia64/get_clockfreq.c
* sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
* sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c:
Don't include libc-internal.h.
* elf/get-dynamic-info.h, iconv/loop.c
* iconvdata/iso-2022-cn-ext.c, locale/weight.h, locale/weightwc.h
* misc/reboot.c, nis/nis_table.c, nptl_db/thread_dbP.h
* nscd/connections.c, resolv/res_send.c, soft-fp/fmadf4.c
* soft-fp/fmasf4.c, soft-fp/fmatf4.c, stdio-common/vfscanf.c
* sysdeps/ieee754/dbl-64/e_lgamma_r.c
* sysdeps/ieee754/dbl-64/k_rem_pio2.c
* sysdeps/ieee754/flt-32/e_lgammaf_r.c
* sysdeps/ieee754/flt-32/k_rem_pio2f.c
* sysdeps/ieee754/ldbl-128/k_tanl.c
* sysdeps/ieee754/ldbl-128ibm/k_tanl.c
* sysdeps/ieee754/ldbl-96/e_lgammal_r.c
* sysdeps/ieee754/ldbl-96/k_tanl.c, sysdeps/nptl/futex-internal.h:
Include libc-diag.h instead of libc-internal.h.
* elf/dl-load.c, elf/dl-reloc.c, locale/programs/locarchive.c
* nptl/nptl-init.c, string/strcspn.c, string/strspn.c
* malloc/malloc.c, sysdeps/i386/nptl/tls.h
* sysdeps/nacl/dl-map-segments.h, sysdeps/x86_64/atomic-machine.h
* sysdeps/unix/sysv/linux/spawni.c
* sysdeps/x86_64/nptl/tls.h:
Include libc-pointer-arith.h instead of libc-internal.h.
* elf/get-dynamic-info.h, sysdeps/nacl/dl-map-segments.h
* sysdeps/x86_64/atomic-machine.h:
Add multiple include guard.
2017-02-27 09:17:52 +08:00
|
|
|
|
#include <libc-pointer-arith.h>
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
1999-05-06 07:29:18 +08:00
|
|
|
|
#include <dl-dst.h>
|
2014-04-04 01:47:14 +08:00
|
|
|
|
#include <dl-load.h>
|
|
|
|
|
#include <dl-map-segments.h>
|
|
|
|
|
#include <dl-unmap-segments.h>
|
2014-10-02 00:08:51 +08:00
|
|
|
|
#include <dl-machine-reject-phdr.h>
|
2015-11-11 11:44:48 +08:00
|
|
|
|
#include <dl-sysdep-open.h>
|
Update.
1997-07-13 01:18 Ulrich Drepper <drepper@cygnus.com>
* setjmp/setjmp.h: Define _setjmp and _longjmp also if __USE_XOPEN.
* sysdeps/unix/sysv/linux/bits/ipc.h: Fix comment.
* sysdeps/unix/sysv/linux/bits/msq.h: Likewise.
* sysdeps/unix/sysv/linux/bits/sem.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* time/Makefile (routines): Add getdate.
* time/time.h: Add prototype for getdate and getdate_r.
* time/getdate.c: New file.
Provided by Mark Kettenis <kettenis@phys.uva.nl>.
1997-06-30 14:49 H.J. Lu <hjl@gnu.ai.mit.edu>
From Ralf Baechle <ralf@informatik.uni-koblenz.de> on
Sat Jun 21 18:11:21 1997:
* sysdeps/unix/sysv/linux/syscalls.list (swapon): Add __swapon alias.
(swapoff): New.
* elf/Makefile: Add linker script support.
(headers): Add bits/dlfcn.h.
* elf/dl-load.c (MAP_BASE_ADDR): New.
* elf/dlfcn.h: Include <bits/dlfcn.h>.
* elf/elf.h: Add MIPS support.
* sysdeps/generic/Dist: Add entry.h.
* sysdeps/generic/entry.h: New, define the entry symbol.
* elf/rtld.c (_start): Include <entry.h>. Change to ENTRY_POINT.
* sysdeps/generic/dl-sysdep.c (_start): Likewise.
* mips/elf/start.S (_start): Likewise.
* sysdeps/mips/bsd-_setjmp.S: Fix PIC.
* sysdeps/mips/bsd-setjmp.S: Likewise.
* sysdeps/mips/setjmp.S: Likewise.
* mips/elf/start.S: Likewise.
* sysdeps/unix/mips/brk.S: Likewise.
* sysdeps/unix/mips/sysdep.S: Likewise.
* sysdeps/unix/mips/sysdep.h: Likewise.
* sysdeps/unix/mips/wait.S: Likewise.
* sysdeps/mips/dl-machine.h: Update for Linux/MIPS.
* sysdeps/mips/fpu_control.h: Likewise.
* sysdeps/generic/bits/dlfcn.h: New file.
* sysdeps/mips/rtld-ldscript.in: New for Linux/MIPS.
* sysdeps/mips/rtld-parms: Likewise.
* sysdeps/mips/bits/dlfcn.h: Likewise.
* sysdeps/mips/mips64/rtld-parms: Likewise.
* sysdeps/mips/mipsel/rtld-parms: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Makefile: Likewise.
* sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
* sysdeps/unix/sysv/linux/mips/entry.h: Likewise.
* sysdeps/unix/sysv/linux/mips/fpregdef.h: Likewise.
* sysdeps/unix/sysv/linux/mips/fxstat.c: Likewise.
* sysdeps/unix/sysv/linux/mips/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise.
* sysdeps/unix/sysv/linux/mips/kernel_termios.h: Likewise.
* sysdeps/unix/sysv/linux/mips/lxstat.c: Likewise.
* sysdeps/unix/sysv/linux/mips/regdef.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sgidefs.h: Likewise.
* sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/mips/ustat.c: Likewise.
* sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise.
* sysdeps/unix/sysv/linux/mips/xstat.c: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/endian.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h:
* sysdeps/unix/sysv/linux/mips/bits/ipc.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/signum.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/statfs.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/termios.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/time.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sys/acct.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sys/asm.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sys/cachectl.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sys/procfs.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sys/regdef.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sys/syscall.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sys/sysmips.h: Likewise.
1997-04-09 19:05 H.J. Lu (hjl@gnu.ai.mit.edu)
* isomac.c (xstrndup): New, use it instead of strndup ().
1997-07-02 08:55 H.J. Lu <hjl@gnu.ai.mit.edu>
* sysdeps/i386/dl-machine.h (elf_machine_rel): Print
the program name for different sizes.
1997-07-10 15:47 Fila Kolodny <fila@ibi.com>
* nis/ypclnt.c: Change references to MAXHOSTNAMELEN to NIS_MAXNAMELEN.
Add include of rpcsvc/nis.h.
* inet/getnameinfo.c: Delete references to MAXHOSTNAMELEN.
* sysdeps/posix/getaddrinfo.c: Likewise.
Change size of variable buffer to be big enough to hold an IPv6
address in printable format.
1997-07-12 18:47 Ulrich Drepper <drepper@cygnus.com>
* assert/assert.h [!NDEBUG] (assert, assert_perror): Don't use ||
and && in tests to allow use in C++ code which overloads these
operators. Reported by Istvan Marko <istvan@cmdmail.amd.com>.
* configure.in: Move mips64* recognition before mips*.
Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.
1997-07-03 20:44 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makerules (lib%.so, $(common-objpfx)libc.so): Don't use
automatic variables in dependency lists.
(build-shlib): Always filter out the version script file.
* extra-lib.mk ($(objpfx)$(lib).so): Depend on version script.
1997-07-12 17:56 Ulrich Drepper <drepper@cygnus.com>
* login/login.c (tty_name): Test return value of ttyname_r for !=
0, not < 0.
* misc/ttyslot.c (ttyslot): Test return value of ttyname_r for ==
0, not >= 0.
* sysdeps/unix/getlogin.c (getlogin): Test return value of
ttyname_r for != 0.
* sysdeps/unix/getlogin_r.c (getlogin_r): Likewise.
1997-07-10 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* login/utmp_file.c (getutline_r_file): Fix type: compare with
*result.
1997-07-11 00:21 Mark Kettenis <kettenis@phys.uva.nl>
* login/Makefile (headers): Add utmpx.h and bits/utmpx.h.
1997-07-09 19:21 Mark Kettenis <kettenis@phys.uva.nl>
* login/programs/utmpd.c, login/programs/database.c,
login/programs/request.c: Prepare messages for
internationalization.
* login/programs/utmpd.c:
(main): Change handling of errors in opening the database.
* login/programs/database.c:
(open_database, synchronize_dtatabase, initialize_database):
Properly handle errors.
(get_mtime): Use fstat instead of stat. All callers changed.
* login/getutent_r.c: Make setutxent a weak alias for __setutxent.
* login/getutent.c: Rename getutent to __getutent and make
getutent a weak alias.
Make getutxent a weak alias for __getutent.
* login/utmpx.h: New file.
* sysdeps/gnu/bits/utmp.h: Cleanup. Added comments.
* sysdeps/gnu/bits/utmpx.h: New file.
* stdio-common/strops.c: Partialy undo last change. Will need
more investigation.
1997-07-13 07:35:19 +08:00
|
|
|
|
|
1995-12-12 09:07:35 +08:00
|
|
|
|
|
1995-05-02 14:35:55 +08:00
|
|
|
|
#include <endian.h>
|
|
|
|
|
#if BYTE_ORDER == BIG_ENDIAN
|
1999-07-25 03:45:13 +08:00
|
|
|
|
# define byteorder ELFDATA2MSB
|
1995-05-02 14:35:55 +08:00
|
|
|
|
#elif BYTE_ORDER == LITTLE_ENDIAN
|
1999-07-25 03:45:13 +08:00
|
|
|
|
# define byteorder ELFDATA2LSB
|
1995-05-02 14:35:55 +08:00
|
|
|
|
#else
|
1999-07-25 03:45:13 +08:00
|
|
|
|
# error "Unknown BYTE_ORDER " BYTE_ORDER
|
|
|
|
|
# define byteorder ELFDATANONE
|
1995-05-02 14:35:55 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
1998-02-24 23:22:29 +08:00
|
|
|
|
#define STRING(x) __STRING (x)
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
2004-09-19 10:48:59 +08:00
|
|
|
|
|
2004-09-20 23:08:26 +08:00
|
|
|
|
int __stack_prot attribute_hidden attribute_relro
|
2004-09-21 04:56:03 +08:00
|
|
|
|
#if _STACK_GROWS_DOWN && defined PROT_GROWSDOWN
|
2005-02-08 07:52:23 +08:00
|
|
|
|
= PROT_GROWSDOWN;
|
2004-09-21 04:56:03 +08:00
|
|
|
|
#elif _STACK_GROWS_UP && defined PROT_GROWSUP
|
2005-02-08 07:52:23 +08:00
|
|
|
|
= PROT_GROWSUP;
|
2005-03-02 04:55:00 +08:00
|
|
|
|
#else
|
|
|
|
|
= 0;
|
2004-09-20 23:08:26 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
2004-09-19 10:48:59 +08:00
|
|
|
|
|
2000-10-22 01:08:18 +08:00
|
|
|
|
/* Type for the buffer we put the ELF header and hopefully the program
|
|
|
|
|
header. This buffer does not really have to be too large. In most
|
|
|
|
|
cases the program header follows the ELF header directly. If this
|
2003-03-04 08:10:34 +08:00
|
|
|
|
is not the case all bets are off and we can make the header
|
|
|
|
|
arbitrarily large and still won't get it read. This means the only
|
|
|
|
|
question is how large are the ELF and program header combined. The
|
|
|
|
|
ELF header 32-bit files is 52 bytes long and in 64-bit files is 64
|
|
|
|
|
bytes long. Each program header entry is again 32 and 56 bytes
|
2005-07-31 05:15:22 +08:00
|
|
|
|
long respectively. I.e., even with a file which has 10 program
|
|
|
|
|
header entries we only have to read 372B/624B respectively. Add to
|
|
|
|
|
this a bit of margin for program notes and reading 512B and 832B
|
|
|
|
|
for 32-bit and 64-bit files respecitvely is enough. If this
|
|
|
|
|
heuristic should really fail for some file the code in
|
|
|
|
|
`_dl_map_object_from_fd' knows how to recover. */
|
2000-10-22 01:08:18 +08:00
|
|
|
|
struct filebuf
|
|
|
|
|
{
|
|
|
|
|
ssize_t len;
|
2003-03-04 05:23:04 +08:00
|
|
|
|
#if __WORDSIZE == 32
|
2003-03-04 03:08:31 +08:00
|
|
|
|
# define FILEBUF_SIZE 512
|
|
|
|
|
#else
|
2005-07-31 05:15:22 +08:00
|
|
|
|
# define FILEBUF_SIZE 832
|
2003-03-04 03:08:31 +08:00
|
|
|
|
#endif
|
2003-03-04 08:10:34 +08:00
|
|
|
|
char buf[FILEBUF_SIZE] __attribute__ ((aligned (__alignof (ElfW(Ehdr)))));
|
2000-10-22 01:08:18 +08:00
|
|
|
|
};
|
|
|
|
|
|
1998-09-14 19:43:26 +08:00
|
|
|
|
/* This is the decomposed LD_LIBRARY_PATH search path. */
|
Update.
2004-01-14 Ulrich Drepper <drepper@redhat.com>
* configure.in: Define HAVE_Z_RELRO if the linker supports -z relro.
* config.h.in: Add entry for HAVE_Z_RELRO.
* include/libc-symbols.h: Define attribute_relro.
* elf/dl-load.c: Add attribute_relro to env_path_list, capstr, ncapstr,
max_capstrlen, and max_dirnamelen definitions.
* elf/rtld.c: Add attribute_relro to _dl_argc, _dl_argv, _dl_skip_args,
load_time, start_time, library_path, preloadlist, version_info,
any_debug.
Remove rtld_total_time. Make it a local variable. Pass pointer to
it to print_statistics. Change print_statistics accordingly.
* sysdeps/generic/dl-sysdep.c: Add attribute_relro to _dl_auxv. Use
attribute_relro instead of explicitly assigning variable to the
.data.rel.ro section for __libc_enable_secure and __libc_stack_end.
* sysdeps/generic/ldsodefs.h: Declare __libc_stack_end, _dl_argc,
_dl_argv, _dl_argv_internal with attribute_relro.
2004-01-15 14:38:27 +08:00
|
|
|
|
static struct r_search_path_struct env_path_list attribute_relro;
|
1997-08-20 11:53:21 +08:00
|
|
|
|
|
1998-04-01 02:24:48 +08:00
|
|
|
|
/* List of the hardware capabilities we might end up using. */
|
Update.
2004-01-14 Ulrich Drepper <drepper@redhat.com>
* configure.in: Define HAVE_Z_RELRO if the linker supports -z relro.
* config.h.in: Add entry for HAVE_Z_RELRO.
* include/libc-symbols.h: Define attribute_relro.
* elf/dl-load.c: Add attribute_relro to env_path_list, capstr, ncapstr,
max_capstrlen, and max_dirnamelen definitions.
* elf/rtld.c: Add attribute_relro to _dl_argc, _dl_argv, _dl_skip_args,
load_time, start_time, library_path, preloadlist, version_info,
any_debug.
Remove rtld_total_time. Make it a local variable. Pass pointer to
it to print_statistics. Change print_statistics accordingly.
* sysdeps/generic/dl-sysdep.c: Add attribute_relro to _dl_auxv. Use
attribute_relro instead of explicitly assigning variable to the
.data.rel.ro section for __libc_enable_secure and __libc_stack_end.
* sysdeps/generic/ldsodefs.h: Declare __libc_stack_end, _dl_argc,
_dl_argv, _dl_argv_internal with attribute_relro.
2004-01-15 14:38:27 +08:00
|
|
|
|
static const struct r_strlenpair *capstr attribute_relro;
|
|
|
|
|
static size_t ncapstr attribute_relro;
|
|
|
|
|
static size_t max_capstrlen attribute_relro;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
|
1997-08-20 11:53:21 +08:00
|
|
|
|
|
1999-05-04 05:59:35 +08:00
|
|
|
|
/* Get the generated information about the trusted directories. */
|
|
|
|
|
#include "trusted-dirs.h"
|
|
|
|
|
|
|
|
|
|
static const char system_dirs[] = SYSTEM_DIRS;
|
|
|
|
|
static const size_t system_dirs_len[] =
|
|
|
|
|
{
|
|
|
|
|
SYSTEM_DIRS_LEN
|
|
|
|
|
};
|
2000-08-31 08:20:09 +08:00
|
|
|
|
#define nsystem_dirs_len \
|
|
|
|
|
(sizeof (system_dirs_len) / sizeof (system_dirs_len[0]))
|
1999-05-04 05:59:35 +08:00
|
|
|
|
|
1998-05-21 23:30:48 +08:00
|
|
|
|
|
2011-05-07 23:44:26 +08:00
|
|
|
|
static bool
|
|
|
|
|
is_trusted_path (const char *path, size_t len)
|
|
|
|
|
{
|
|
|
|
|
const char *trun = system_dirs;
|
|
|
|
|
|
|
|
|
|
for (size_t idx = 0; idx < nsystem_dirs_len; ++idx)
|
|
|
|
|
{
|
|
|
|
|
if (len == system_dirs_len[idx] && memcmp (trun, path, len) == 0)
|
|
|
|
|
/* Found it. */
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
trun += system_dirs_len[idx] + 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static bool
|
|
|
|
|
is_trusted_path_normalize (const char *path, size_t len)
|
|
|
|
|
{
|
2011-05-11 12:15:38 +08:00
|
|
|
|
if (len == 0)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
if (*path == ':')
|
|
|
|
|
{
|
|
|
|
|
++path;
|
|
|
|
|
--len;
|
|
|
|
|
}
|
|
|
|
|
|
2011-05-07 23:44:26 +08:00
|
|
|
|
char *npath = (char *) alloca (len + 2);
|
|
|
|
|
char *wnp = npath;
|
|
|
|
|
while (*path != '\0')
|
|
|
|
|
{
|
|
|
|
|
if (path[0] == '/')
|
|
|
|
|
{
|
|
|
|
|
if (path[1] == '.')
|
|
|
|
|
{
|
|
|
|
|
if (path[2] == '.' && (path[3] == '/' || path[3] == '\0'))
|
|
|
|
|
{
|
|
|
|
|
while (wnp > npath && *--wnp != '/')
|
|
|
|
|
;
|
|
|
|
|
path += 3;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else if (path[2] == '/' || path[2] == '\0')
|
|
|
|
|
{
|
|
|
|
|
path += 2;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (wnp > npath && wnp[-1] == '/')
|
|
|
|
|
{
|
|
|
|
|
++path;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*wnp++ = *path++;
|
|
|
|
|
}
|
2011-05-11 12:15:38 +08:00
|
|
|
|
|
|
|
|
|
if (wnp == npath || wnp[-1] != '/')
|
2011-05-07 23:44:26 +08:00
|
|
|
|
*wnp++ = '/';
|
|
|
|
|
|
2011-05-11 12:15:38 +08:00
|
|
|
|
const char *trun = system_dirs;
|
|
|
|
|
|
|
|
|
|
for (size_t idx = 0; idx < nsystem_dirs_len; ++idx)
|
|
|
|
|
{
|
|
|
|
|
if (wnp - npath >= system_dirs_len[idx]
|
|
|
|
|
&& memcmp (trun, npath, system_dirs_len[idx]) == 0)
|
|
|
|
|
/* Found it. */
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
trun += system_dirs_len[idx] + 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
2011-05-07 23:44:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2001-11-10 11:28:35 +08:00
|
|
|
|
static size_t
|
2002-02-02 17:49:35 +08:00
|
|
|
|
is_dst (const char *start, const char *name, const char *str,
|
2001-11-10 14:00:37 +08:00
|
|
|
|
int is_path, int secure)
|
2001-11-10 11:28:35 +08:00
|
|
|
|
{
|
|
|
|
|
size_t len;
|
2002-02-02 17:49:35 +08:00
|
|
|
|
bool is_curly = false;
|
2001-11-10 11:28:35 +08:00
|
|
|
|
|
2002-02-02 17:49:35 +08:00
|
|
|
|
if (name[0] == '{')
|
|
|
|
|
{
|
|
|
|
|
is_curly = true;
|
|
|
|
|
++name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
len = 0;
|
|
|
|
|
while (name[len] == str[len] && name[len] != '\0')
|
|
|
|
|
++len;
|
|
|
|
|
|
|
|
|
|
if (is_curly)
|
|
|
|
|
{
|
|
|
|
|
if (name[len] != '}')
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
/* Point again at the beginning of the name. */
|
|
|
|
|
--name;
|
|
|
|
|
/* Skip over closing curly brace and adjust for the --name. */
|
|
|
|
|
len += 2;
|
|
|
|
|
}
|
|
|
|
|
else if (name[len] != '\0' && name[len] != '/'
|
|
|
|
|
&& (!is_path || name[len] != ':'))
|
2001-11-10 11:28:35 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (secure)
|
2011-05-11 12:15:38 +08:00
|
|
|
|
&& ((name[len] != '\0' && name[len] != '/'
|
|
|
|
|
&& (!is_path || name[len] != ':'))
|
2001-11-10 11:28:35 +08:00
|
|
|
|
|| (name != start + 1 && (!is_path || name[-2] != ':'))))
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
return len;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
1999-05-06 07:29:18 +08:00
|
|
|
|
size_t
|
|
|
|
|
_dl_dst_count (const char *name, int is_path)
|
1998-08-28 04:08:32 +08:00
|
|
|
|
{
|
1999-11-10 10:42:49 +08:00
|
|
|
|
const char *const start = name;
|
1998-08-28 04:08:32 +08:00
|
|
|
|
size_t cnt = 0;
|
|
|
|
|
|
1999-05-06 07:29:18 +08:00
|
|
|
|
do
|
1998-08-28 04:08:32 +08:00
|
|
|
|
{
|
2002-02-02 17:49:35 +08:00
|
|
|
|
size_t len;
|
1998-08-28 04:08:32 +08:00
|
|
|
|
|
2001-07-23 09:13:01 +08:00
|
|
|
|
/* $ORIGIN is not expanded for SUID/GUID programs (except if it
|
2002-02-02 17:49:35 +08:00
|
|
|
|
is $ORIGIN alone) and it must always appear first in path. */
|
|
|
|
|
++name;
|
|
|
|
|
if ((len = is_dst (start, name, "ORIGIN", is_path,
|
2014-10-10 19:13:11 +08:00
|
|
|
|
__libc_enable_secure)) != 0
|
2002-10-14 09:06:59 +08:00
|
|
|
|
|| (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0
|
|
|
|
|
|| (len = is_dst (start, name, "LIB", is_path, 0)) != 0)
|
1998-08-28 04:08:32 +08:00
|
|
|
|
++cnt;
|
|
|
|
|
|
1999-05-06 07:29:18 +08:00
|
|
|
|
name = strchr (name + len, '$');
|
1998-08-28 04:08:32 +08:00
|
|
|
|
}
|
1999-05-06 07:29:18 +08:00
|
|
|
|
while (name != NULL);
|
1998-08-28 04:08:32 +08:00
|
|
|
|
|
1999-05-06 07:29:18 +08:00
|
|
|
|
return cnt;
|
|
|
|
|
}
|
1998-08-28 04:08:32 +08:00
|
|
|
|
|
|
|
|
|
|
1999-05-06 07:29:18 +08:00
|
|
|
|
char *
|
|
|
|
|
_dl_dst_substitute (struct link_map *l, const char *name, char *result,
|
|
|
|
|
int is_path)
|
|
|
|
|
{
|
1999-11-10 10:42:49 +08:00
|
|
|
|
const char *const start = name;
|
1998-08-28 04:08:32 +08:00
|
|
|
|
|
|
|
|
|
/* Now fill the result path. While copying over the string we keep
|
2013-08-22 01:48:48 +08:00
|
|
|
|
track of the start of the last path element. When we come across
|
1998-08-28 04:08:32 +08:00
|
|
|
|
a DST we copy over the value or (if the value is not available)
|
|
|
|
|
leave the entire path element out. */
|
2011-05-07 23:44:26 +08:00
|
|
|
|
char *wp = result;
|
|
|
|
|
char *last_elem = result;
|
|
|
|
|
bool check_for_trusted = false;
|
1999-05-06 07:29:18 +08:00
|
|
|
|
|
1998-08-28 04:08:32 +08:00
|
|
|
|
do
|
|
|
|
|
{
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (*name == '$'))
|
1998-08-28 04:08:32 +08:00
|
|
|
|
{
|
2001-03-20 14:52:36 +08:00
|
|
|
|
const char *repl = NULL;
|
2002-02-02 17:49:35 +08:00
|
|
|
|
size_t len;
|
2001-03-20 14:52:36 +08:00
|
|
|
|
|
2002-02-02 17:49:35 +08:00
|
|
|
|
++name;
|
|
|
|
|
if ((len = is_dst (start, name, "ORIGIN", is_path,
|
2014-10-10 19:13:11 +08:00
|
|
|
|
__libc_enable_secure)) != 0)
|
2006-05-10 08:03:41 +08:00
|
|
|
|
{
|
2013-06-28 23:20:26 +08:00
|
|
|
|
repl = l->l_origin;
|
2014-10-10 19:13:11 +08:00
|
|
|
|
check_for_trusted = (__libc_enable_secure
|
2011-05-07 23:44:26 +08:00
|
|
|
|
&& l->l_type == lt_executable);
|
2006-05-10 08:03:41 +08:00
|
|
|
|
}
|
2002-10-14 09:06:59 +08:00
|
|
|
|
else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0)
|
2004-03-05 18:29:47 +08:00
|
|
|
|
repl = GLRO(dl_platform);
|
2002-10-14 09:06:59 +08:00
|
|
|
|
else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0)
|
|
|
|
|
repl = DL_DST_LIB;
|
2001-03-20 14:52:36 +08:00
|
|
|
|
|
|
|
|
|
if (repl != NULL && repl != (const char *) -1)
|
|
|
|
|
{
|
|
|
|
|
wp = __stpcpy (wp, repl);
|
|
|
|
|
name += len;
|
|
|
|
|
}
|
|
|
|
|
else if (len > 1)
|
1998-08-28 04:08:32 +08:00
|
|
|
|
{
|
2001-03-20 14:52:36 +08:00
|
|
|
|
/* We cannot use this path element, the value of the
|
|
|
|
|
replacement is unknown. */
|
|
|
|
|
wp = last_elem;
|
|
|
|
|
name += len;
|
|
|
|
|
while (*name != '\0' && (!is_path || *name != ':'))
|
|
|
|
|
++name;
|
2011-04-10 02:55:26 +08:00
|
|
|
|
/* Also skip following colon if this is the first rpath
|
|
|
|
|
element, but keep an empty element at the end. */
|
|
|
|
|
if (wp == result && is_path && *name == ':' && name[1] != '\0')
|
|
|
|
|
++name;
|
1998-08-28 04:08:32 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
1999-05-04 09:48:08 +08:00
|
|
|
|
/* No DST we recognize. */
|
2002-02-02 17:49:35 +08:00
|
|
|
|
*wp++ = '$';
|
1998-08-28 04:08:32 +08:00
|
|
|
|
}
|
2001-03-20 14:52:36 +08:00
|
|
|
|
else
|
1998-08-28 04:08:32 +08:00
|
|
|
|
{
|
1999-05-06 07:29:18 +08:00
|
|
|
|
*wp++ = *name++;
|
2001-03-20 14:52:36 +08:00
|
|
|
|
if (is_path && *name == ':')
|
2011-05-07 23:44:26 +08:00
|
|
|
|
{
|
|
|
|
|
/* In SUID/SGID programs, after $ORIGIN expansion the
|
|
|
|
|
normalized path must be rooted in one of the trusted
|
|
|
|
|
directories. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (check_for_trusted)
|
2011-05-11 12:15:38 +08:00
|
|
|
|
&& !is_trusted_path_normalize (last_elem, wp - last_elem))
|
|
|
|
|
wp = last_elem;
|
2011-05-07 23:44:26 +08:00
|
|
|
|
else
|
|
|
|
|
last_elem = wp;
|
2011-05-11 12:15:38 +08:00
|
|
|
|
|
|
|
|
|
check_for_trusted = false;
|
2011-05-07 23:44:26 +08:00
|
|
|
|
}
|
1998-08-28 04:08:32 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
1999-05-06 07:29:18 +08:00
|
|
|
|
while (*name != '\0');
|
1998-08-28 04:08:32 +08:00
|
|
|
|
|
2011-05-07 23:44:26 +08:00
|
|
|
|
/* In SUID/SGID programs, after $ORIGIN expansion the normalized
|
|
|
|
|
path must be rooted in one of the trusted directories. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (check_for_trusted)
|
2011-05-11 12:15:38 +08:00
|
|
|
|
&& !is_trusted_path_normalize (last_elem, wp - last_elem))
|
2011-05-07 23:44:26 +08:00
|
|
|
|
wp = last_elem;
|
|
|
|
|
|
1998-08-28 04:08:32 +08:00
|
|
|
|
*wp = '\0';
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
1999-05-06 07:29:18 +08:00
|
|
|
|
|
|
|
|
|
/* Return copy of argument with all recognized dynamic string tokens
|
|
|
|
|
($ORIGIN and $PLATFORM for now) replaced. On some platforms it
|
|
|
|
|
might not be possible to determine the path from which the object
|
|
|
|
|
belonging to the map is loaded. In this case the path element
|
|
|
|
|
containing $ORIGIN is left out. */
|
|
|
|
|
static char *
|
2011-04-10 02:55:26 +08:00
|
|
|
|
expand_dynamic_string_token (struct link_map *l, const char *s, int is_path)
|
1999-05-06 07:29:18 +08:00
|
|
|
|
{
|
|
|
|
|
/* We make two runs over the string. First we determine how large the
|
2010-02-25 11:27:24 +08:00
|
|
|
|
resulting string is and then we copy it over. Since this is no
|
1999-05-06 07:29:18 +08:00
|
|
|
|
frequently executed operation we are looking here not for performance
|
|
|
|
|
but rather for code size. */
|
|
|
|
|
size_t cnt;
|
|
|
|
|
size_t total;
|
|
|
|
|
char *result;
|
|
|
|
|
|
1999-11-10 10:42:49 +08:00
|
|
|
|
/* Determine the number of DST elements. */
|
2011-04-10 02:55:26 +08:00
|
|
|
|
cnt = DL_DST_COUNT (s, is_path);
|
1999-05-06 07:29:18 +08:00
|
|
|
|
|
|
|
|
|
/* If we do not have to replace anything simply copy the string. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_likely (cnt == 0))
|
2014-10-29 07:37:07 +08:00
|
|
|
|
return __strdup (s);
|
1999-05-06 07:29:18 +08:00
|
|
|
|
|
|
|
|
|
/* Determine the length of the substituted string. */
|
|
|
|
|
total = DL_DST_REQUIRED (l, s, strlen (s), cnt);
|
|
|
|
|
|
|
|
|
|
/* Allocate the necessary memory. */
|
|
|
|
|
result = (char *) malloc (total + 1);
|
|
|
|
|
if (result == NULL)
|
|
|
|
|
return NULL;
|
|
|
|
|
|
2011-04-10 02:55:26 +08:00
|
|
|
|
return _dl_dst_substitute (l, s, result, is_path);
|
1999-05-06 07:29:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
/* Add `name' to the list of names for a particular shared object.
|
|
|
|
|
`name' is expected to have been allocated with malloc and will
|
|
|
|
|
be freed if the shared object already has this name.
|
|
|
|
|
Returns false if the object already had this name. */
|
1998-09-02 01:58:59 +08:00
|
|
|
|
static void
|
|
|
|
|
add_name_to_object (struct link_map *l, const char *name)
|
1997-07-26 10:33:30 +08:00
|
|
|
|
{
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
struct libname_list *lnp, *lastp;
|
|
|
|
|
struct libname_list *newname;
|
1998-09-02 01:58:59 +08:00
|
|
|
|
size_t name_len;
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
|
|
|
|
|
lastp = NULL;
|
|
|
|
|
for (lnp = l->l_libname; lnp != NULL; lastp = lnp, lnp = lnp->next)
|
|
|
|
|
if (strcmp (name, lnp->name) == 0)
|
1998-09-02 01:58:59 +08:00
|
|
|
|
return;
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
|
1998-09-02 01:58:59 +08:00
|
|
|
|
name_len = strlen (name) + 1;
|
2000-04-04 06:25:08 +08:00
|
|
|
|
newname = (struct libname_list *) malloc (sizeof *newname + name_len);
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
if (newname == NULL)
|
1998-02-18 19:00:24 +08:00
|
|
|
|
{
|
|
|
|
|
/* No more memory. */
|
2004-03-06 16:19:29 +08:00
|
|
|
|
_dl_signal_error (ENOMEM, name, NULL, N_("cannot allocate name record"));
|
1998-09-02 01:58:59 +08:00
|
|
|
|
return;
|
1998-02-18 19:00:24 +08:00
|
|
|
|
}
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
/* The object should have a libname set from _dl_new_object. */
|
|
|
|
|
assert (lastp != NULL);
|
|
|
|
|
|
1998-09-02 01:58:59 +08:00
|
|
|
|
newname->name = memcpy (newname + 1, name, name_len);
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
newname->next = NULL;
|
2000-08-19 15:17:09 +08:00
|
|
|
|
newname->dont_free = 0;
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
lastp->next = newname;
|
|
|
|
|
}
|
|
|
|
|
|
1998-04-01 02:24:48 +08:00
|
|
|
|
/* Standard search directories. */
|
Update.
2004-01-14 Ulrich Drepper <drepper@redhat.com>
* configure.in: Define HAVE_Z_RELRO if the linker supports -z relro.
* config.h.in: Add entry for HAVE_Z_RELRO.
* include/libc-symbols.h: Define attribute_relro.
* elf/dl-load.c: Add attribute_relro to env_path_list, capstr, ncapstr,
max_capstrlen, and max_dirnamelen definitions.
* elf/rtld.c: Add attribute_relro to _dl_argc, _dl_argv, _dl_skip_args,
load_time, start_time, library_path, preloadlist, version_info,
any_debug.
Remove rtld_total_time. Make it a local variable. Pass pointer to
it to print_statistics. Change print_statistics accordingly.
* sysdeps/generic/dl-sysdep.c: Add attribute_relro to _dl_auxv. Use
attribute_relro instead of explicitly assigning variable to the
.data.rel.ro section for __libc_enable_secure and __libc_stack_end.
* sysdeps/generic/ldsodefs.h: Declare __libc_stack_end, _dl_argc,
_dl_argv, _dl_argv_internal with attribute_relro.
2004-01-15 14:38:27 +08:00
|
|
|
|
static struct r_search_path_struct rtld_search_dirs attribute_relro;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
2004-01-21 07:25:27 +08:00
|
|
|
|
static size_t max_dirnamelen;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
2003-06-12 05:57:23 +08:00
|
|
|
|
static struct r_search_path_elem **
|
1997-07-26 10:33:30 +08:00
|
|
|
|
fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
|
2013-12-02 21:53:14 +08:00
|
|
|
|
int check_trusted, const char *what, const char *where,
|
|
|
|
|
struct link_map *l)
|
1997-07-26 10:33:30 +08:00
|
|
|
|
{
|
|
|
|
|
char *cp;
|
|
|
|
|
size_t nelems = 0;
|
2013-12-02 21:53:14 +08:00
|
|
|
|
char *to_free;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
|
|
|
|
while ((cp = __strsep (&rpath, sep)) != NULL)
|
|
|
|
|
{
|
|
|
|
|
struct r_search_path_elem *dirp;
|
2013-12-02 21:53:14 +08:00
|
|
|
|
|
|
|
|
|
to_free = cp = expand_dynamic_string_token (l, cp, 1);
|
|
|
|
|
|
1997-07-26 10:33:30 +08:00
|
|
|
|
size_t len = strlen (cp);
|
1998-04-01 02:24:48 +08:00
|
|
|
|
|
1998-04-24 06:45:20 +08:00
|
|
|
|
/* `strsep' can pass an empty string. This has to be
|
2010-02-25 11:27:24 +08:00
|
|
|
|
interpreted as `use the current directory'. */
|
1998-04-01 02:24:48 +08:00
|
|
|
|
if (len == 0)
|
1998-04-24 06:45:20 +08:00
|
|
|
|
{
|
1999-05-04 05:59:35 +08:00
|
|
|
|
static const char curwd[] = "./";
|
|
|
|
|
cp = (char *) curwd;
|
1998-04-24 06:45:20 +08:00
|
|
|
|
}
|
1998-04-01 02:24:48 +08:00
|
|
|
|
|
1998-09-02 20:58:42 +08:00
|
|
|
|
/* Remove trailing slashes (except for "/"). */
|
1997-07-26 10:33:30 +08:00
|
|
|
|
while (len > 1 && cp[len - 1] == '/')
|
|
|
|
|
--len;
|
|
|
|
|
|
1999-05-04 05:59:35 +08:00
|
|
|
|
/* Now add one if there is none so far. */
|
|
|
|
|
if (len > 0 && cp[len - 1] != '/')
|
|
|
|
|
cp[len++] = '/';
|
|
|
|
|
|
2001-08-11 10:42:19 +08:00
|
|
|
|
/* Make sure we don't use untrusted directories if we run SUID. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (check_trusted) && !is_trusted_path (cp, len))
|
2013-12-02 21:53:14 +08:00
|
|
|
|
{
|
|
|
|
|
free (to_free);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
2001-08-11 10:42:19 +08:00
|
|
|
|
|
1997-07-26 10:33:30 +08:00
|
|
|
|
/* See if this directory is already known. */
|
2002-01-31 11:41:25 +08:00
|
|
|
|
for (dirp = GL(dl_all_dirs); dirp != NULL; dirp = dirp->next)
|
1998-04-01 02:24:48 +08:00
|
|
|
|
if (dirp->dirnamelen == len && memcmp (cp, dirp->dirname, len) == 0)
|
1997-07-26 10:33:30 +08:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
if (dirp != NULL)
|
|
|
|
|
{
|
1998-04-01 02:24:48 +08:00
|
|
|
|
/* It is available, see whether it's on our own list. */
|
1997-07-26 10:33:30 +08:00
|
|
|
|
size_t cnt;
|
|
|
|
|
for (cnt = 0; cnt < nelems; ++cnt)
|
|
|
|
|
if (result[cnt] == dirp)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
if (cnt == nelems)
|
|
|
|
|
result[nelems++] = dirp;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
1998-04-01 02:24:48 +08:00
|
|
|
|
size_t cnt;
|
2000-04-04 06:25:08 +08:00
|
|
|
|
enum r_dir_status init_val;
|
2000-08-31 08:20:09 +08:00
|
|
|
|
size_t where_len = where ? strlen (where) + 1 : 0;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
|
1997-07-26 10:33:30 +08:00
|
|
|
|
/* It's a new directory. Create an entry and add it. */
|
1998-04-01 02:24:48 +08:00
|
|
|
|
dirp = (struct r_search_path_elem *)
|
2000-08-31 07:42:45 +08:00
|
|
|
|
malloc (sizeof (*dirp) + ncapstr * sizeof (enum r_dir_status)
|
2000-08-31 10:27:07 +08:00
|
|
|
|
+ where_len + len + 1);
|
1997-07-26 10:33:30 +08:00
|
|
|
|
if (dirp == NULL)
|
2004-03-06 16:19:29 +08:00
|
|
|
|
_dl_signal_error (ENOMEM, NULL, NULL,
|
|
|
|
|
N_("cannot create cache for search path"));
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
2000-08-31 10:27:07 +08:00
|
|
|
|
dirp->dirname = ((char *) dirp + sizeof (*dirp)
|
|
|
|
|
+ ncapstr * sizeof (enum r_dir_status));
|
2000-12-09 01:27:11 +08:00
|
|
|
|
*((char *) __mempcpy ((char *) dirp->dirname, cp, len)) = '\0';
|
1997-07-26 10:33:30 +08:00
|
|
|
|
dirp->dirnamelen = len;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
|
|
|
|
|
if (len > max_dirnamelen)
|
|
|
|
|
max_dirnamelen = len;
|
|
|
|
|
|
2001-08-11 10:42:19 +08:00
|
|
|
|
/* We have to make sure all the relative directories are
|
|
|
|
|
never ignored. The current directory might change and
|
|
|
|
|
all our saved information would be void. */
|
|
|
|
|
init_val = cp[0] != '/' ? existing : unknown;
|
2000-04-04 06:25:08 +08:00
|
|
|
|
for (cnt = 0; cnt < ncapstr; ++cnt)
|
|
|
|
|
dirp->status[cnt] = init_val;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
1998-03-06 00:42:56 +08:00
|
|
|
|
dirp->what = what;
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_likely (where != NULL))
|
2000-08-31 10:27:07 +08:00
|
|
|
|
dirp->where = memcpy ((char *) dirp + sizeof (*dirp) + len + 1
|
2002-01-31 11:41:25 +08:00
|
|
|
|
+ (ncapstr * sizeof (enum r_dir_status)),
|
2000-08-31 08:20:09 +08:00
|
|
|
|
where, where_len);
|
|
|
|
|
else
|
|
|
|
|
dirp->where = NULL;
|
1998-03-06 00:42:56 +08:00
|
|
|
|
|
2002-01-31 11:41:25 +08:00
|
|
|
|
dirp->next = GL(dl_all_dirs);
|
|
|
|
|
GL(dl_all_dirs) = dirp;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
|
|
|
|
/* Put it in the result array. */
|
|
|
|
|
result[nelems++] = dirp;
|
|
|
|
|
}
|
2013-12-02 21:53:14 +08:00
|
|
|
|
free (to_free);
|
1997-07-26 10:33:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Terminate the array. */
|
|
|
|
|
result[nelems] = NULL;
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2006-11-10 00:12:22 +08:00
|
|
|
|
static bool
|
2000-08-31 10:27:07 +08:00
|
|
|
|
decompose_rpath (struct r_search_path_struct *sps,
|
|
|
|
|
const char *rpath, struct link_map *l, const char *what)
|
1997-07-26 10:33:30 +08:00
|
|
|
|
{
|
|
|
|
|
/* Make a copy we can work with. */
|
1998-08-28 04:08:32 +08:00
|
|
|
|
const char *where = l->l_name;
|
1998-05-20 07:18:44 +08:00
|
|
|
|
char *copy;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
char *cp;
|
|
|
|
|
struct r_search_path_elem **result;
|
1998-05-20 07:18:44 +08:00
|
|
|
|
size_t nelems;
|
2001-11-07 08:31:36 +08:00
|
|
|
|
/* Initialize to please the compiler. */
|
|
|
|
|
const char *errstring = NULL;
|
1998-05-20 07:18:44 +08:00
|
|
|
|
|
1999-07-25 03:45:13 +08:00
|
|
|
|
/* First see whether we must forget the RUNPATH and RPATH from this
|
|
|
|
|
object. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_inhibit_rpath) != NULL)
|
2014-10-10 19:13:11 +08:00
|
|
|
|
&& !__libc_enable_secure)
|
1998-05-20 07:18:44 +08:00
|
|
|
|
{
|
2004-03-05 18:29:47 +08:00
|
|
|
|
const char *inhp = GLRO(dl_inhibit_rpath);
|
2002-02-04 03:39:52 +08:00
|
|
|
|
|
|
|
|
|
do
|
1998-05-20 07:18:44 +08:00
|
|
|
|
{
|
2002-02-04 03:39:52 +08:00
|
|
|
|
const char *wp = where;
|
|
|
|
|
|
|
|
|
|
while (*inhp == *wp && *wp != '\0')
|
|
|
|
|
{
|
|
|
|
|
++inhp;
|
|
|
|
|
++wp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (*wp == '\0' && (*inhp == '\0' || *inhp == ':'))
|
1998-05-20 07:18:44 +08:00
|
|
|
|
{
|
1999-07-25 03:45:13 +08:00
|
|
|
|
/* This object is on the list of objects for which the
|
|
|
|
|
RUNPATH and RPATH must not be used. */
|
2006-11-10 00:12:22 +08:00
|
|
|
|
sps->dirs = (void *) -1;
|
|
|
|
|
return false;
|
1998-05-20 07:18:44 +08:00
|
|
|
|
}
|
2002-02-04 03:39:52 +08:00
|
|
|
|
|
|
|
|
|
while (*inhp != '\0')
|
|
|
|
|
if (*inhp++ == ':')
|
|
|
|
|
break;
|
1998-05-20 07:18:44 +08:00
|
|
|
|
}
|
2002-02-04 03:39:52 +08:00
|
|
|
|
while (*inhp != '\0');
|
1998-05-20 07:18:44 +08:00
|
|
|
|
}
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
2013-12-02 21:53:14 +08:00
|
|
|
|
/* Make a writable copy. */
|
2014-10-29 07:37:07 +08:00
|
|
|
|
copy = __strdup (rpath);
|
1998-08-28 04:08:32 +08:00
|
|
|
|
if (copy == NULL)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot create RUNPATH/RPATH copy");
|
|
|
|
|
goto signal_error;
|
|
|
|
|
}
|
1998-08-28 04:08:32 +08:00
|
|
|
|
|
2011-04-10 02:55:26 +08:00
|
|
|
|
/* Ignore empty rpaths. */
|
|
|
|
|
if (*copy == 0)
|
|
|
|
|
{
|
|
|
|
|
free (copy);
|
2011-05-11 12:15:38 +08:00
|
|
|
|
sps->dirs = (struct r_search_path_elem **) -1;
|
2011-04-10 02:55:26 +08:00
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
1998-05-20 07:18:44 +08:00
|
|
|
|
/* Count the number of necessary elements in the result array. */
|
|
|
|
|
nelems = 0;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
for (cp = copy; *cp != '\0'; ++cp)
|
|
|
|
|
if (*cp == ':')
|
|
|
|
|
++nelems;
|
|
|
|
|
|
1998-09-14 19:43:26 +08:00
|
|
|
|
/* Allocate room for the result. NELEMS + 1 is an upper limit for the
|
|
|
|
|
number of necessary entries. */
|
|
|
|
|
result = (struct r_search_path_elem **) malloc ((nelems + 1 + 1)
|
1997-07-26 10:33:30 +08:00
|
|
|
|
* sizeof (*result));
|
|
|
|
|
if (result == NULL)
|
2006-11-10 00:12:22 +08:00
|
|
|
|
{
|
2007-08-03 23:50:30 +08:00
|
|
|
|
free (copy);
|
2006-11-10 00:12:22 +08:00
|
|
|
|
errstring = N_("cannot create cache for search path");
|
|
|
|
|
signal_error:
|
|
|
|
|
_dl_signal_error (ENOMEM, NULL, NULL, errstring);
|
|
|
|
|
}
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
2013-12-02 21:53:14 +08:00
|
|
|
|
fillin_rpath (copy, result, ":", 0, what, where, l);
|
2000-08-31 10:27:07 +08:00
|
|
|
|
|
|
|
|
|
/* Free the copied RPATH string. `fillin_rpath' make own copies if
|
|
|
|
|
necessary. */
|
|
|
|
|
free (copy);
|
|
|
|
|
|
|
|
|
|
sps->dirs = result;
|
|
|
|
|
/* The caller will change this value if we haven't used a real malloc. */
|
|
|
|
|
sps->malloced = 1;
|
2006-11-10 00:12:22 +08:00
|
|
|
|
return true;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
2003-03-16 07:16:22 +08:00
|
|
|
|
/* Make sure cached path information is stored in *SP
|
|
|
|
|
and return true if there are any paths to search there. */
|
2003-06-14 05:05:42 +08:00
|
|
|
|
static bool
|
2003-03-16 07:16:22 +08:00
|
|
|
|
cache_rpath (struct link_map *l,
|
|
|
|
|
struct r_search_path_struct *sp,
|
|
|
|
|
int tag,
|
|
|
|
|
const char *what)
|
|
|
|
|
{
|
|
|
|
|
if (sp->dirs == (void *) -1)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
if (sp->dirs != NULL)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
if (l->l_info[tag] == NULL)
|
|
|
|
|
{
|
|
|
|
|
/* There is no path. */
|
|
|
|
|
sp->dirs = (void *) -1;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Make sure the cache information is available. */
|
2006-11-10 00:12:22 +08:00
|
|
|
|
return decompose_rpath (sp, (const char *) (D_PTR (l, l_info[DT_STRTAB])
|
|
|
|
|
+ l->l_info[tag]->d_un.d_val),
|
|
|
|
|
l, what);
|
2003-03-16 07:16:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
|
|
|
|
void
|
Update.
1998-02-16 17:33 Ulrich Drepper <drepper@cygnus.com>
* elf/rtld.c (dl_main): Recognize --library-path parameter and
pass value (or NULL) to _dl_init_paths.
* elf/dl-load.c (_dl_init_paths): Change to take one parameter,
replacing local variable llp. If llp is NULL examine LD_LIBRARY_PATH
environment variable.
* elf/link.h: Change prototype for _dl_init_paths.
* elf/dl-support.c: Pass NULL in _dl_init_paths call.
* localedata/Makefile (distribute): Add test files.
1998-02-17 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* localedata/tests/{test1.cm, test2.cm, test3.cm, test4.cm,
test1.def, test2.def, test3.def, test4.def}: Simple input files
for localedef. Contributed by Yung-Ching Hsiao
<yhsiao@cae.wisc.edu>.
* localedata/Makefile (tests): Call tst-locale.sh.
* localedata/tst-locale.sh: New file, regression tests for some
localedef problems.
1998-02-15 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nss_nisplus/nisplus-alias.c: Use __stpncpy.
* nis/nss_nisplus/nisplus-hosts.c: Make sure buffer is always NUL
terminated.
* nis/nss_nisplus/nisplus-network.c: Likewise.
* nis/nss_nisplus/nisplus-proto.c: Likewise.
* nis/nss_nisplus/nisplus-rpc.c: Likewise.
* nis/nss_nisplus/nisplus-service.c: Likewise.
Add more changes from TI-RPC 2.3 for rpcgen to fix include/C++ bug
and support generating thread safe RPC code.
* sunrpc/rpc_main.c: Add changes.
* sunrpc/rpc_clntout.c: Likewise.
* sunrpc/rpc_cout.c: Likewise.
* sunrpc/rpc_hout.c: Likewise.
* sunrpc/rpc_parse.c: Likewise.
* sunrpc/rpc_sample.c: Likewise.
* sunrpc/rpc_scan.c: Likewise.
* sunrpc/rpc_svcout.c: Likewise.
* sunrpc/rpc_util.c: Likewise.
* sunrpc/rpc_util.h: Add new structs and prototypes.
* sunrpc/proto.h: Remove prototypes for static functions.
1998-02-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* locale/programs/ld-messages.c (messages_finish): Don't skip
error checking when being quiet.
* locale/programs/ld-ctype.c (ctype_finish): Likewise.
(set_class_defaults): Likewise.
* locale/programs/charmap.c (parse_charmap): Likewise.
* locale/programs/ld-collate.c (collate_finish): Likewise.
* locale/programs/ld-monetary.c (monetary_finish): Likewise.
* locale/programs/ld-time.c (time_finish): Likewise.
* locale/programs/locfile.c (write_locale_data): Likewise.
* locale/programs/ld-ctype.c (ctype_class_to): Silently ignore
unknown characters and empty ranges.
* locale/programs/ld-collate.c (collate_order_elem): When
processing an ellipsis properly form a linked list in the result
table, fix typo when allocating ordering array.
[PR libc/419]
1998-02-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/Makefile (ld-map): Define.
(rtld-ldscript): Define. Change all `$(objpfx)rtld-ldscript' to
`$(rtld-ldscript)'.
($(objpfx)ld.so): Combine the two versions of this rule. Depend
on $(ld-map).
(rtld-link): Combine the two versions of this definition. Fixed
to make it work when no symbol versioning is used.
1998-02-16 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig (build-program-cmd): Use --library-path parameter to
ld.so instead of environment variable.
* sunrpc/Makefile (rpcgen-cmd): Don't use -$ parameter.
* sunrpc/rpc_main.c: Remove support for -$$ option again.
1998-02-16 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* Make-dist: Respect with-cvs setting.
* MakeTAGS (all-pot): Likewise.
* sysdeps/sparc/sparc32/Makefile: Likewise.
* sysdeps/mach/hurd/Makefile: Likewise.
* stdlib/Makefile: Likewise.
* posix/Makefile: Likewise.
* intl/Makefile: Likewise.
* po/Makefile (linguas): Likewise
1998-02-17 01:42:46 +08:00
|
|
|
|
_dl_init_paths (const char *llp)
|
1997-07-26 10:33:30 +08:00
|
|
|
|
{
|
1999-05-04 05:59:35 +08:00
|
|
|
|
size_t idx;
|
|
|
|
|
const char *strp;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
struct r_search_path_elem *pelem, **aelem;
|
|
|
|
|
size_t round_size;
|
2013-12-02 21:53:14 +08:00
|
|
|
|
struct link_map __attribute__ ((unused)) *l = NULL;
|
2001-11-07 08:31:36 +08:00
|
|
|
|
/* Initialize to please the compiler. */
|
|
|
|
|
const char *errstring = NULL;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
1998-09-14 19:43:26 +08:00
|
|
|
|
/* Fill in the information about the application's RPATH and the
|
|
|
|
|
directories addressed by the LD_LIBRARY_PATH environment variable. */
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
1998-03-31 16:36:05 +08:00
|
|
|
|
/* Get the capabilities. */
|
2004-03-05 18:29:47 +08:00
|
|
|
|
capstr = _dl_important_hwcaps (GLRO(dl_platform), GLRO(dl_platformlen),
|
1998-04-01 02:24:48 +08:00
|
|
|
|
&ncapstr, &max_capstrlen);
|
|
|
|
|
|
|
|
|
|
/* First set up the rest of the default search directory entries. */
|
2000-08-31 10:27:07 +08:00
|
|
|
|
aelem = rtld_search_dirs.dirs = (struct r_search_path_elem **)
|
2000-08-31 08:20:09 +08:00
|
|
|
|
malloc ((nsystem_dirs_len + 1) * sizeof (struct r_search_path_elem *));
|
2000-08-31 10:27:07 +08:00
|
|
|
|
if (rtld_search_dirs.dirs == NULL)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot create search path array");
|
|
|
|
|
signal_error:
|
2004-03-06 16:19:29 +08:00
|
|
|
|
_dl_signal_error (ENOMEM, NULL, NULL, errstring);
|
2001-11-07 08:31:36 +08:00
|
|
|
|
}
|
1998-04-01 02:24:48 +08:00
|
|
|
|
|
|
|
|
|
round_size = ((2 * sizeof (struct r_search_path_elem) - 1
|
|
|
|
|
+ ncapstr * sizeof (enum r_dir_status))
|
|
|
|
|
/ sizeof (struct r_search_path_elem));
|
|
|
|
|
|
2000-08-31 10:27:07 +08:00
|
|
|
|
rtld_search_dirs.dirs[0] = (struct r_search_path_elem *)
|
1999-11-20 10:25:52 +08:00
|
|
|
|
malloc ((sizeof (system_dirs) / sizeof (system_dirs[0]))
|
1998-04-01 02:24:48 +08:00
|
|
|
|
* round_size * sizeof (struct r_search_path_elem));
|
2000-08-31 10:27:07 +08:00
|
|
|
|
if (rtld_search_dirs.dirs[0] == NULL)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot create cache for search path");
|
|
|
|
|
goto signal_error;
|
|
|
|
|
}
|
1998-04-01 02:24:48 +08:00
|
|
|
|
|
2000-08-31 10:27:07 +08:00
|
|
|
|
rtld_search_dirs.malloced = 0;
|
2002-01-31 11:41:25 +08:00
|
|
|
|
pelem = GL(dl_all_dirs) = rtld_search_dirs.dirs[0];
|
1999-05-04 05:59:35 +08:00
|
|
|
|
strp = system_dirs;
|
|
|
|
|
idx = 0;
|
|
|
|
|
|
|
|
|
|
do
|
1998-04-01 02:24:48 +08:00
|
|
|
|
{
|
|
|
|
|
size_t cnt;
|
|
|
|
|
|
|
|
|
|
*aelem++ = pelem;
|
|
|
|
|
|
|
|
|
|
pelem->what = "system search path";
|
|
|
|
|
pelem->where = NULL;
|
|
|
|
|
|
1999-05-04 05:59:35 +08:00
|
|
|
|
pelem->dirname = strp;
|
|
|
|
|
pelem->dirnamelen = system_dirs_len[idx];
|
|
|
|
|
strp += system_dirs_len[idx] + 1;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
|
2000-08-31 10:27:07 +08:00
|
|
|
|
/* System paths must be absolute. */
|
|
|
|
|
assert (pelem->dirname[0] == '/');
|
|
|
|
|
for (cnt = 0; cnt < ncapstr; ++cnt)
|
|
|
|
|
pelem->status[cnt] = unknown;
|
1999-05-04 05:59:35 +08:00
|
|
|
|
|
2000-08-31 08:20:09 +08:00
|
|
|
|
pelem->next = (++idx == nsystem_dirs_len ? NULL : (pelem + round_size));
|
1999-05-04 05:59:35 +08:00
|
|
|
|
|
|
|
|
|
pelem += round_size;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
}
|
2000-08-31 08:20:09 +08:00
|
|
|
|
while (idx < nsystem_dirs_len);
|
1999-05-04 05:59:35 +08:00
|
|
|
|
|
|
|
|
|
max_dirnamelen = SYSTEM_DIRS_MAX_LEN;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
*aelem = NULL;
|
1998-03-31 16:36:05 +08:00
|
|
|
|
|
2000-03-31 13:50:02 +08:00
|
|
|
|
#ifdef SHARED
|
1998-09-12 01:48:44 +08:00
|
|
|
|
/* This points to the map of the main object. */
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
l = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
|
1998-09-12 05:33:55 +08:00
|
|
|
|
if (l != NULL)
|
|
|
|
|
{
|
|
|
|
|
assert (l->l_type != lt_loaded);
|
1997-08-20 11:53:21 +08:00
|
|
|
|
|
1999-07-25 03:45:13 +08:00
|
|
|
|
if (l->l_info[DT_RUNPATH])
|
|
|
|
|
{
|
|
|
|
|
/* Allocate room for the search path and fill in information
|
|
|
|
|
from RUNPATH. */
|
2000-08-31 10:27:07 +08:00
|
|
|
|
decompose_rpath (&l->l_runpath_dirs,
|
|
|
|
|
(const void *) (D_PTR (l, l_info[DT_STRTAB])
|
|
|
|
|
+ l->l_info[DT_RUNPATH]->d_un.d_val),
|
|
|
|
|
l, "RUNPATH");
|
2013-01-15 23:39:07 +08:00
|
|
|
|
/* During rtld init the memory is allocated by the stub malloc,
|
|
|
|
|
prevent any attempt to free it by the normal malloc. */
|
|
|
|
|
l->l_runpath_dirs.malloced = 0;
|
1999-07-25 03:45:13 +08:00
|
|
|
|
|
|
|
|
|
/* The RPATH is ignored. */
|
2000-08-31 10:27:07 +08:00
|
|
|
|
l->l_rpath_dirs.dirs = (void *) -1;
|
1999-07-25 03:45:13 +08:00
|
|
|
|
}
|
1998-09-12 05:33:55 +08:00
|
|
|
|
else
|
1999-07-25 03:45:13 +08:00
|
|
|
|
{
|
2000-08-31 10:27:07 +08:00
|
|
|
|
l->l_runpath_dirs.dirs = (void *) -1;
|
1999-07-25 03:45:13 +08:00
|
|
|
|
|
|
|
|
|
if (l->l_info[DT_RPATH])
|
2000-08-31 10:27:07 +08:00
|
|
|
|
{
|
|
|
|
|
/* Allocate room for the search path and fill in information
|
|
|
|
|
from RPATH. */
|
|
|
|
|
decompose_rpath (&l->l_rpath_dirs,
|
|
|
|
|
(const void *) (D_PTR (l, l_info[DT_STRTAB])
|
1999-07-25 03:45:13 +08:00
|
|
|
|
+ l->l_info[DT_RPATH]->d_un.d_val),
|
|
|
|
|
l, "RPATH");
|
2013-01-15 23:39:07 +08:00
|
|
|
|
/* During rtld init the memory is allocated by the stub
|
|
|
|
|
malloc, prevent any attempt to free it by the normal
|
|
|
|
|
malloc. */
|
2000-08-31 10:27:07 +08:00
|
|
|
|
l->l_rpath_dirs.malloced = 0;
|
|
|
|
|
}
|
1999-07-25 03:45:13 +08:00
|
|
|
|
else
|
2000-08-31 10:27:07 +08:00
|
|
|
|
l->l_rpath_dirs.dirs = (void *) -1;
|
1999-07-25 03:45:13 +08:00
|
|
|
|
}
|
1997-07-26 10:33:30 +08:00
|
|
|
|
}
|
2000-03-31 13:50:02 +08:00
|
|
|
|
#endif /* SHARED */
|
1998-09-14 19:43:26 +08:00
|
|
|
|
|
|
|
|
|
if (llp != NULL && *llp != '\0')
|
1997-07-26 10:33:30 +08:00
|
|
|
|
{
|
1998-09-14 19:43:26 +08:00
|
|
|
|
size_t nllp;
|
|
|
|
|
const char *cp = llp;
|
2006-08-29 09:44:27 +08:00
|
|
|
|
char *llp_tmp;
|
|
|
|
|
|
|
|
|
|
#ifdef SHARED
|
|
|
|
|
/* Expand DSTs. */
|
|
|
|
|
size_t cnt = DL_DST_COUNT (llp, 1);
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_likely (cnt == 0))
|
2006-08-29 09:44:27 +08:00
|
|
|
|
llp_tmp = strdupa (llp);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
/* Determine the length of the substituted string. */
|
|
|
|
|
size_t total = DL_DST_REQUIRED (l, llp, strlen (llp), cnt);
|
|
|
|
|
|
|
|
|
|
/* Allocate the necessary memory. */
|
|
|
|
|
llp_tmp = (char *) alloca (total + 1);
|
|
|
|
|
llp_tmp = _dl_dst_substitute (l, llp, llp_tmp, 1);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
llp_tmp = strdupa (llp);
|
|
|
|
|
#endif
|
1998-09-12 05:33:55 +08:00
|
|
|
|
|
1998-09-14 19:43:26 +08:00
|
|
|
|
/* Decompose the LD_LIBRARY_PATH contents. First determine how many
|
|
|
|
|
elements it has. */
|
|
|
|
|
nllp = 1;
|
|
|
|
|
while (*cp)
|
1997-07-26 10:33:30 +08:00
|
|
|
|
{
|
1998-09-14 19:43:26 +08:00
|
|
|
|
if (*cp == ':' || *cp == ';')
|
|
|
|
|
++nllp;
|
|
|
|
|
++cp;
|
1998-09-12 05:33:55 +08:00
|
|
|
|
}
|
1998-09-14 19:43:26 +08:00
|
|
|
|
|
2000-08-31 10:27:07 +08:00
|
|
|
|
env_path_list.dirs = (struct r_search_path_elem **)
|
1998-09-14 19:43:26 +08:00
|
|
|
|
malloc ((nllp + 1) * sizeof (struct r_search_path_elem *));
|
2000-08-31 10:27:07 +08:00
|
|
|
|
if (env_path_list.dirs == NULL)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot create cache for search path");
|
|
|
|
|
goto signal_error;
|
|
|
|
|
}
|
1998-09-14 19:43:26 +08:00
|
|
|
|
|
2001-01-23 17:29:53 +08:00
|
|
|
|
(void) fillin_rpath (llp_tmp, env_path_list.dirs, ":;",
|
2014-10-10 19:13:11 +08:00
|
|
|
|
__libc_enable_secure, "LD_LIBRARY_PATH",
|
2013-12-02 21:53:14 +08:00
|
|
|
|
NULL, l);
|
2000-05-23 00:45:42 +08:00
|
|
|
|
|
2000-08-31 10:27:07 +08:00
|
|
|
|
if (env_path_list.dirs[0] == NULL)
|
2000-05-23 00:45:42 +08:00
|
|
|
|
{
|
2000-08-31 10:27:07 +08:00
|
|
|
|
free (env_path_list.dirs);
|
|
|
|
|
env_path_list.dirs = (void *) -1;
|
2000-05-23 00:45:42 +08:00
|
|
|
|
}
|
2000-08-31 10:27:07 +08:00
|
|
|
|
|
|
|
|
|
env_path_list.malloced = 0;
|
1998-09-12 01:48:44 +08:00
|
|
|
|
}
|
2000-04-03 18:44:36 +08:00
|
|
|
|
else
|
2000-08-31 10:27:07 +08:00
|
|
|
|
env_path_list.dirs = (void *) -1;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
1999-03-03 15:40:30 +08:00
|
|
|
|
static void
|
2004-02-09 15:10:19 +08:00
|
|
|
|
__attribute__ ((noreturn, noinline))
|
1999-02-20 04:37:20 +08:00
|
|
|
|
lose (int code, int fd, const char *name, char *realname, struct link_map *l,
|
2012-07-26 18:03:35 +08:00
|
|
|
|
const char *msg, struct r_debug *r, Lmid_t nsid)
|
1999-02-20 04:37:20 +08:00
|
|
|
|
{
|
2001-11-07 15:44:06 +08:00
|
|
|
|
/* The file might already be closed. */
|
2004-02-09 15:10:19 +08:00
|
|
|
|
if (fd != -1)
|
|
|
|
|
(void) __close (fd);
|
2011-09-08 18:02:26 +08:00
|
|
|
|
if (l != NULL && l->l_origin != (char *) -1l)
|
2011-10-07 23:00:13 +08:00
|
|
|
|
free ((char *) l->l_origin);
|
2010-10-26 12:23:14 +08:00
|
|
|
|
free (l);
|
1999-02-20 04:37:20 +08:00
|
|
|
|
free (realname);
|
2006-05-01 07:47:30 +08:00
|
|
|
|
|
|
|
|
|
if (r != NULL)
|
|
|
|
|
{
|
|
|
|
|
r->r_state = RT_CONSISTENT;
|
|
|
|
|
_dl_debug_state ();
|
2012-07-26 18:03:35 +08:00
|
|
|
|
LIBC_PROBE (map_failed, 2, nsid, r);
|
2006-05-01 07:47:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
2004-03-06 16:19:29 +08:00
|
|
|
|
_dl_signal_error (code, name, NULL, msg);
|
1999-02-20 04:37:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
1995-09-27 14:49:48 +08:00
|
|
|
|
/* Map in the shared object NAME, actually located in REALNAME, and already
|
|
|
|
|
opened on FD. */
|
|
|
|
|
|
1998-08-28 04:08:32 +08:00
|
|
|
|
#ifndef EXTERNAL_MAP_FROM_FD
|
|
|
|
|
static
|
|
|
|
|
#endif
|
1995-09-27 14:49:48 +08:00
|
|
|
|
struct link_map *
|
2015-11-09 23:52:31 +08:00
|
|
|
|
_dl_map_object_from_fd (const char *name, const char *origname, int fd,
|
|
|
|
|
struct filebuf *fbp, char *realname,
|
|
|
|
|
struct link_map *loader, int l_type, int mode,
|
|
|
|
|
void **stack_endp, Lmid_t nsid)
|
1995-09-27 14:49:48 +08:00
|
|
|
|
{
|
1996-06-26 02:22:06 +08:00
|
|
|
|
struct link_map *l = NULL;
|
Mon Jun 10 06:14:03 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* sysdeps/mach/hurd/dl-sysdep.c (__open): Define this instead of open.
(__close, __mmap): Likewise define with __ names now.
Mon Jun 10 05:13:18 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/dl-support.c: New file.
* elf/Makefile (CFLAGS-dl-support.c): New variable.
(routines, elide-routines.so): Add dl-support.
* elf/dl-minimal.c (_dl_pagesize): Remove common defn.
* elf/dl-load.c (_dl_pagesize): Define it here.
(_dl_map_object_from_fd): Initialize it if zero.
* elf/link.h (_dl_pagesize): Remove const.
Sun Jun 9 04:04:26 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/Makefile (routines): Add dl-symbol.
* elf/dl-lookup.c (_dl_symbol_value): Moved to ...
* elf/dl-symbol.c: New file.
* elf/elf.h (Elf32_Xword, Elf32_Sxword): New types.
(Elf32_Section, Elf64_Section): New types, 16 bits.
(Elf32_Sym, Elf64_Sym): Use it.
* elf/dl-deps.c (_dl_open): Moved to ...
* elf/dl-open.c: New file.
* Makefile (routines): Add dl-open.
* elf/Makefile (dl-routines): New variable.
(routines): Add $(dl-routines).
(elide-routines.so): New variable, set to $(dl-routines).
(libdl-inhibit-o): Variable removed; build all flavors of -ldl.
(rtld-routines): All but rtld, dl-sysdep, and dl-minimal moved to
$(dl-routines).
* elf/dl-lookup.c (_dl_lookup_symbol): Remove magic symbol grokage.
* elf/dladdr.c: Use ELFW(ST_BIND) in place of ELF32_ST_BIND.
* elf/dl-load.c (open_path): Use __ names for open and close. Avoid
using strdup.
(_dl_map_object): Likewise.
(_dl_map_object_from_fd): Use __ names for mmap, munmap, and mprotect.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-reloc.c (_dl_relocate_object): Likewise.
* elf/dl-minimal.c (_dl_pagesize): New variable.
(malloc): Use that instead of a static variable.
* elf/dl-reloc.c (_dl_relocate_object): Use _dl_pagesize instead of
calling getpagesize.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/link.h: Declare _dl_pagesize.
* elf/rtld.c (dl_r_debug): Renamed to _dl_r_debug.
* elf/link.h (struct link_map): Use Half for l_phnum instead of Word.
* elf/rtld.c (dl_main): Use Half for phdr count arg.
(_dl_sysdep_start): Update prototype of DL_MAIN function ptr arg.
* elf/dl-load.c (_dl_map_object_from_fd): Use explicit Elf32_Word to
extract 4-byte magic number, not ElfW(Word). Match EI_CLASS against
native wordsize, either 32 or 64.
* elf/elf.h (Elf64_Byte, Elf64_Section): Typedefs removed. In C a
char is always a byte, no need for a typedef. Section indices are
16-bit quantities in elf64, which already have a typedef Elf64_Half.
Remove partial -lelf implementation. There is now a
separately-distributed `libelf' package that implements it.
* elf/dl-lookup.c: Don't #include <libelf.h> any more.
(_dl_elf_hash): New function, moved from
libelf.h:elf_hash.
(_dl_lookup_symbol): Use it instead of elf_hash.
* elf/libelf.h: File removed.
* elf/elf_hash.c: File removed.
* elf/Makefile (headers): Remove libelf.h.
(extra-libs): Remove libelf.
(libelf-routines): Variable removed.
* elf/Makefile (libdl.so): Remove commands from this target. The
implicit rule commands are correct, this explicit rule just serves to
add some dependencies.
* elf/dl-lookup.c (_dl_lookup_symbol): Use ELFW(ST_TYPE) in place of
ELF32_ST_TYPE. Likewise ST_BIND.
* elf/do-rel.h (elf_dynamic_do_rel): Likewise R_SYM.
* elf/link.h (ElfW): New macro for wordsize-independent ElfXX_* type
naming.
(ELFW): New macro, likewise for ELFXX_* macro naming.
(_ElfW, _ElfW_1): New macros, subroutines of ElfW and ELF.
Sat Jun 8 20:52:38 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/link.h, elf/do-rel.h, elf/dynamic-link.h, elf/dl-deps.c,
elf/dl-init.c, elf/dl-load.c, elf/dl-lookup.c, elf/dl-reloc.c,
elf/dl-runtime.c, elf/dladdr.c, elf/dlclose.c, elf/dlsym.c,
elf/linux-compat.c, elf/rtld.c: Change all uses of `Elf32_XXX' to
`ElfW(XXX)' for wordsize-independence.
Sat Jun 8 20:50:42 1996 Richard Henderson <rth@tamu.edu>
* elf/elf.h: Move Elf64_* types in parity with Elf32 counterparts.
(Elf64_auxv_t): New type.
(EM_ALPHA, R_ALPHA_*): New macros for elf64-alpha format.
1996-06-10 18:18:47 +08:00
|
|
|
|
const ElfW(Ehdr) *header;
|
|
|
|
|
const ElfW(Phdr) *phdr;
|
|
|
|
|
const ElfW(Phdr) *ph;
|
1998-03-11 02:04:16 +08:00
|
|
|
|
size_t maplength;
|
1995-10-09 15:06:29 +08:00
|
|
|
|
int type;
|
2001-11-07 08:31:36 +08:00
|
|
|
|
/* Initialize to keep the compiler happy. */
|
|
|
|
|
const char *errstring = NULL;
|
|
|
|
|
int errval = 0;
|
2005-01-09 16:29:25 +08:00
|
|
|
|
struct r_debug *r = _dl_debug_initialize (0, nsid);
|
2005-01-07 06:40:27 +08:00
|
|
|
|
bool make_consistent = false;
|
1999-02-19 08:00:05 +08:00
|
|
|
|
|
|
|
|
|
/* Get file information. */
|
2015-07-15 04:15:26 +08:00
|
|
|
|
struct r_file_id id;
|
|
|
|
|
if (__glibc_unlikely (!_dl_get_file_id (fd, &id)))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot stat shared object");
|
|
|
|
|
call_lose_errno:
|
|
|
|
|
errval = errno;
|
|
|
|
|
call_lose:
|
2006-05-01 07:47:30 +08:00
|
|
|
|
lose (errval, fd, name, realname, l, errstring,
|
2012-07-26 18:03:35 +08:00
|
|
|
|
make_consistent ? r : NULL, nsid);
|
2001-11-07 08:31:36 +08:00
|
|
|
|
}
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
|
|
|
|
/* Look again to see if the real name matched another already loaded. */
|
2015-07-15 04:15:26 +08:00
|
|
|
|
for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next)
|
|
|
|
|
if (!l->l_removed && _dl_file_id_match_p (&l->l_file_id, &id))
|
1995-05-02 14:35:55 +08:00
|
|
|
|
{
|
|
|
|
|
/* The object is already loaded.
|
|
|
|
|
Just bump its reference count and return it. */
|
Mon Jun 10 06:14:03 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* sysdeps/mach/hurd/dl-sysdep.c (__open): Define this instead of open.
(__close, __mmap): Likewise define with __ names now.
Mon Jun 10 05:13:18 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/dl-support.c: New file.
* elf/Makefile (CFLAGS-dl-support.c): New variable.
(routines, elide-routines.so): Add dl-support.
* elf/dl-minimal.c (_dl_pagesize): Remove common defn.
* elf/dl-load.c (_dl_pagesize): Define it here.
(_dl_map_object_from_fd): Initialize it if zero.
* elf/link.h (_dl_pagesize): Remove const.
Sun Jun 9 04:04:26 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/Makefile (routines): Add dl-symbol.
* elf/dl-lookup.c (_dl_symbol_value): Moved to ...
* elf/dl-symbol.c: New file.
* elf/elf.h (Elf32_Xword, Elf32_Sxword): New types.
(Elf32_Section, Elf64_Section): New types, 16 bits.
(Elf32_Sym, Elf64_Sym): Use it.
* elf/dl-deps.c (_dl_open): Moved to ...
* elf/dl-open.c: New file.
* Makefile (routines): Add dl-open.
* elf/Makefile (dl-routines): New variable.
(routines): Add $(dl-routines).
(elide-routines.so): New variable, set to $(dl-routines).
(libdl-inhibit-o): Variable removed; build all flavors of -ldl.
(rtld-routines): All but rtld, dl-sysdep, and dl-minimal moved to
$(dl-routines).
* elf/dl-lookup.c (_dl_lookup_symbol): Remove magic symbol grokage.
* elf/dladdr.c: Use ELFW(ST_BIND) in place of ELF32_ST_BIND.
* elf/dl-load.c (open_path): Use __ names for open and close. Avoid
using strdup.
(_dl_map_object): Likewise.
(_dl_map_object_from_fd): Use __ names for mmap, munmap, and mprotect.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-reloc.c (_dl_relocate_object): Likewise.
* elf/dl-minimal.c (_dl_pagesize): New variable.
(malloc): Use that instead of a static variable.
* elf/dl-reloc.c (_dl_relocate_object): Use _dl_pagesize instead of
calling getpagesize.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/link.h: Declare _dl_pagesize.
* elf/rtld.c (dl_r_debug): Renamed to _dl_r_debug.
* elf/link.h (struct link_map): Use Half for l_phnum instead of Word.
* elf/rtld.c (dl_main): Use Half for phdr count arg.
(_dl_sysdep_start): Update prototype of DL_MAIN function ptr arg.
* elf/dl-load.c (_dl_map_object_from_fd): Use explicit Elf32_Word to
extract 4-byte magic number, not ElfW(Word). Match EI_CLASS against
native wordsize, either 32 or 64.
* elf/elf.h (Elf64_Byte, Elf64_Section): Typedefs removed. In C a
char is always a byte, no need for a typedef. Section indices are
16-bit quantities in elf64, which already have a typedef Elf64_Half.
Remove partial -lelf implementation. There is now a
separately-distributed `libelf' package that implements it.
* elf/dl-lookup.c: Don't #include <libelf.h> any more.
(_dl_elf_hash): New function, moved from
libelf.h:elf_hash.
(_dl_lookup_symbol): Use it instead of elf_hash.
* elf/libelf.h: File removed.
* elf/elf_hash.c: File removed.
* elf/Makefile (headers): Remove libelf.h.
(extra-libs): Remove libelf.
(libelf-routines): Variable removed.
* elf/Makefile (libdl.so): Remove commands from this target. The
implicit rule commands are correct, this explicit rule just serves to
add some dependencies.
* elf/dl-lookup.c (_dl_lookup_symbol): Use ELFW(ST_TYPE) in place of
ELF32_ST_TYPE. Likewise ST_BIND.
* elf/do-rel.h (elf_dynamic_do_rel): Likewise R_SYM.
* elf/link.h (ElfW): New macro for wordsize-independent ElfXX_* type
naming.
(ELFW): New macro, likewise for ELFXX_* macro naming.
(_ElfW, _ElfW_1): New macros, subroutines of ElfW and ELF.
Sat Jun 8 20:52:38 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/link.h, elf/do-rel.h, elf/dynamic-link.h, elf/dl-deps.c,
elf/dl-init.c, elf/dl-load.c, elf/dl-lookup.c, elf/dl-reloc.c,
elf/dl-runtime.c, elf/dladdr.c, elf/dlclose.c, elf/dlsym.c,
elf/linux-compat.c, elf/rtld.c: Change all uses of `Elf32_XXX' to
`ElfW(XXX)' for wordsize-independence.
Sat Jun 8 20:50:42 1996 Richard Henderson <rth@tamu.edu>
* elf/elf.h: Move Elf64_* types in parity with Elf32 counterparts.
(Elf64_auxv_t): New type.
(EM_ALPHA, R_ALPHA_*): New macros for elf64-alpha format.
1996-06-10 18:18:47 +08:00
|
|
|
|
__close (fd);
|
1997-02-15 12:31:36 +08:00
|
|
|
|
|
|
|
|
|
/* If the name is not in the list of names for this object add
|
|
|
|
|
it. */
|
1995-09-27 14:49:48 +08:00
|
|
|
|
free (realname);
|
Update.
1997-08-10 18:48 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Define build-programs to no if not set and $(config-os)
is none.
* Makerules (+depfiles): Don't add $(others) if not build-programs.
* Rules (others): Don't depend on $(install-bin), $(install-rootbin)
and $(install-sbin) if not build-programs.
* Makefile (subdirs): Remove login.
* sysdeps/mach/hurd/Subdirs: Add login.
* sysdeps/unix/Subdirs: Add login.
* sysdeps/generic/sys/mman.h: Test feature macros before defining
non-POSIX things. Add MAP_FAILED.
* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sys/mman.h: Rewrite to not use kernel header
but bits/mman.h. Test feature macros before definitions non-POSIX
functions.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/sparc64/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/alpha/Dist: Add bits/mman.h.
* sysdeps/unix/sysv/linux/i386/Dist: Likewise.
* sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file. Likewise.
* catgets/open_catalog.c (__open_catalog): Compare result of mmap
with MAP_FAILED and not -1.
* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
* elf/dl-minimal.c (malloc): Likewise.
* elf/dl-misc.c (_dl_sysdep_read_whole_file): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* locale/programs/localedef.c: Likewise.
* malloc/malloc.c (mmap_chunk): Likewise.
(new_heap): Likewise.
* string/stratcliff.c: Likewise.
* string/tester.c: Add tests for stpcpy.
* gmon/gmon.c (__monstartup): Use calloc instead of malloc+memset.
* gmon/sys/gmon.h: Add prototype for write_profiling.
* elf/dl-profile.c: Add decsriptions and implement reading of
existing data in profiling file.
* gmon/sys/gmon_out.h (GMON_SHOBJ_VERSION): New macro for shared
lib profiling data.
* sysdeps/stub/bits/libc-lock.h (__libc_once_define): Add new first
parameter for class.
* inet/inet_ntoa.c: Make once control variable static.
Correctly handle case where key cannot be retrieved.
* inet/Makefile (tests): Add tst-ntoa.
* inet/tst-ntoa.c: New file.
* manual/time.texi: Document localtime_r, gmtime_r, asctime_r, and
ctime_r.
Mention that tzname values must not be changed.
* manual/users.texi: Document UTMP/WTMP handling functions.
Mainly written by Mark Kettenis.
* math/libm-test.c (cbrt_test): Add test for number with aboslute
value < 1.0.
* nss/nss_files/files-XXX.c (internal_setent): If opening of file
failed with EGAIN return NSS_STATUS_TRYAGAIN.
* nss/nss_files/files-alias.c (internal_setent): Likewise.
* sysdeps/generic/bits/utmp.h: Pretty print.
* sysdeps/i386/i586/strcpy.S: New file. Much faster implementation.
* sysdeps/i386/i586/stpcpy.S: New file.
* sysdeps/i386/i686/Implies: Don't fall back on i586 versions since
these are less efficient than i486/i386 versions.
* sysdeps/libm-i387/e_rem_pio2.c: Add empty file to prevent the
version from libm-ieee754 be compiled since the later is not needed.
* sysdeps/libm-i387/e_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/e_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2f.c: Likewise.
* sysdeps/libm-i387/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/libm-i387/s_cbrt.S: Fix several bugs.
* sysdeps/libm-i387/s_cbrtf.S: Likewise.
* sysdeps/libm-i387/s_cbrtl.S: Likewise.
* sysdeps/unix/sysv/linux/if_index.c (if_indextoname): Correct
little bug.
* sysdeps/unix/sysv/linux/bits/socket.h (struct msghdr): Make field
msg_iovlen of type int.
* time/tzfile.c: Change return type of __tzstring to char *.
* time/tzset.c: Likewise. Change definition of __tzstring.
* time/tzset.c: Interpret no DST information in user provided time
zone specification as it is meant: no DST.
Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-20 03:01 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/elf/dl-load.c (add_name_to_object): New procedure.
(_dl_map_object_from_fd): Use add_name_to_object.
(_dl_map_object): If an object's SONAME is used to resolve a
dependency, add it to the list of the object's names.
* inet/getnameinfo.c: Make `domain' non-const.
* sysdeps/unix/sysv/linux/powerpc/kernel_termios.c: Clean up.
* math/test-fenv.c (feenv_nomask_test): Don't execute if
FE_NOMASK_ENV is not defined, or if fesetenv(FE_NOMASK_ENV)
sets errno to ENOSYS.
* sysdeps/powerpc/dl-machine.h: Print proper error message on
unknown reloc type (rather than using assert).
* sysdeps/unix/sysv/linux/powerpc/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Deleted.
1997-07-16 12:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/bits/fenv.h (feraiseexcept): New optimising macro.
(feclearexcept): New optimising macro.
(FE_NOMASK_ENV): Change to procedure so it can enable exceptions.
(FE_ENABLED_ENV): Add.
(FE_NONIEEE_ENV): Add.
* sysdeps/powerpc/bits/fenv_const.c: Add __fe_enabled_env,
__fe_nonieee_env; delete __fe_nomask_env.
* sysdeps/powerpc/bits/fe_nomask.c: New file (stub warning until it
gets implemented in the kernel).
* sysdeps/powerpc/fraiseenv.c: Deal with chips that don't have
FE_INVALID_SOFTWARE implemented. Use macros for bit names for clarity.
* sysdeps/powerpc/fsetexcptflag.c: Likewise.
* io/ftw.c: Don't compare holes in structures.
* sysdeps/unix/sysv/linux/sys/sysmacros.h: Cast the result of the
macros to `int', because otherwise it might be `long long' which
the calling code is probably not expecting.
* sysdeps/libm-ieee754/s_lround.c [NO_LONG_DOUBLE]: Fix a few bugs,
document the existence of some more.
* sysdeps/powerpc/s_llrint.c: New file.
* sysdeps/powerpc/s_lrint.c: New file.
* sysdeps/powerpc/s_llround.c: New file.
* sysdeps/powerpc/s_lround.c: New file.
* sysdeps/powerpc/s_sqrt.c: New file.
* sysdeps/powerpc/s_sqrtf.c: New file.
* sysdeps/powerpc/w_sqrt.s: New empty file.
* sysdeps/powerpc/w_sqrtf.s: New empty file.
* sysdeps/powerpc/t_sqrt.c: New file.
* sysdeps/powerpc/test-arithf.c: New file.
* sysdeps/powerpc/Makefile [subdir=math]: Add t_sqrt to support
routines. Add test-arithf to test programs.
* sysdeps/powerpc/bits/mathdef.h: Add FP_ILOGB0, FP_ILOGBNAN.
* sysdeps/powerpc/strcmp.s: Simplify drastically. Now much neater,
and possibly faster (or possibly slower, depending on input).
1997-06-08 22:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenvbits.h: Correct FE_DFL_ENV and FE_NOMASK_ENV
macros.
* sysdeps/powerpc/s_rint.c: New file.
1997-05-22 08:47 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/Makefile [subdir=math]: Add q_* routines.
* sysdeps/powerpc/Dist: Add quad_float.h.
* sysdeps/powerpc/q_dtoq.c: New file.
* sysdeps/powerpc/q_itoq.c: New file.
* sysdeps/powerpc/q_lltoq.c: New file.
* sysdeps/powerpc/q_neg.c: New file.
* sysdeps/powerpc/q_qtoi.c: New file.
* sysdeps/powerpc/q_qtoll.c: New file.
* sysdeps/powerpc/q_qtos.c: New file.
* sysdeps/powerpc/q_qtou.c: New file.
* sysdeps/powerpc/q_qtoull.c: New file.
* sysdeps/powerpc/q_stoq.c: New file.
* sysdeps/powerpc/q_ulltoq.c: New file.
* sysdeps/powerpc/q_utoq.c: New file.
* sysdeps/powerpc/quad_float.h: New file.
* sysdeps/powerpc/test-arith.c: New file.
* sysdeps/powerpc/fpu_control.h: Fix _FPU_GETCW.
* sysdeps/powerpc/fegetround.c: Use mcrfs to be faster and not
require a stack frame.
* sysdeps/powerpc/bits/fenv.h: Include inline macro for fegetround.
1997-05-18 05:55 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/fenv_libc.h (fegetenv_register,
fesetenv_register): Add 'volatile'.
(set_fpscr_bit, reset_fpscr_bit): New macros, FPSCR_*
constants to use with them.
* sysdeps/powerpc/s_copysign.S: New file.
* sysdeps/powerpc/s_copysignf.s: New file.
* sysdeps/powerpc/s_fabs.S: New file.
* sysdeps/powerpc/s_fabsf.s: New file.
* sysdeps/powerpc/s_isnan.c: New file.
* sysdeps/powerpc/s_isnanf.s: New file.
* sysdeps/powerpc/s_rintf.c: New file.
* sysdeps/powerpc/fenvbits.h: Make FE_INVALID the summary
bit in the FPSCR, not the enable bit.
* sysdeps/powerpc/fraiseexcpt.c: Consequent change to the above.
* sysdeps/powerpc/fclrexcpt.c: Correct.
* sysdeps/powerpc/fsetexcptflag.c: Correct.
* sysdeps/powerpc/ftestexcpt.c: Is now much simpler.
* sysdeps/powerpc/fgetexcptflg.c: Simplify.
* sysdeps/powerpc/strlen.s: Schedule better, save 3 clocks :-).
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): Add comment
explaining some reentrancy issues with lazy PLT entries.
1997-08-09 13:04 Mark Kettenis <kettenis@phys.uva.nl>
* login/logout.c (logout): utmpname returns -1 on error.
* login/libutil.map: Remove updwtmp.
* login/getutline.c: Rename getutline to __getutline and make
getutline a weak alias. Make getutxline a weak alias for
__getutline.
* login/getutid.c: Rename getutid to __getutid and make getutid a
weak alias. Make getutxid a weak alias for __getutid.
* libc.map: Add getutxid, getutxline.
* login/utmpname.c (__utmpname): Reset backend right after backend
endutent call.
* login/utmp_file.c: Reordered functions. Remove unecessary
header files.
(getutent_r_file, pututline_file): Do not call setutent_file. At this
point the file is guaranteed to be open (assert!).
(getutid_r_file, getutline_r_file): Remove check for validity of file
descriptor. At this point the file is guaranteed to be open.
(getutent_r_file, internal_getut_r, getutline_r_file, pututline_file,
updwtmp_file): Do not wait when unlocking file.
* login/utmp_daemon.c: General cleanup and a bit of reordering.
(getutent_r_daemon, pututline_daemon): Do not call setutent_daemon.
At this point the socket is guaranteed to be open (assert!).
(getutid_r_daemon, getutline_r_daemon): Do not check if daemon_sock is
valid. At this point the socket is guaranteed to be open (assert!).
* login/getutline_r.c: Remove unnecessary header files.
(__getutline_r): Do not call backend setutent.
* login/getutid_r.c: Remove unnecessary header files.
(__getutid_r): Do not call backend setutent.
* login/getutent_r.c: Remove unneccesary header files.
(__libc_utmp_unknown_functions): Added getutid_r_unknown,
getutline_r_unknown.
(setutent_unknown): Only set file backend if setutent for the file
backend was successful.
(getutent_r_unknown, pututline_unknown): Call setutent_unknown instead
of __setutent. Report failure if no backend was selected.
(getutid_r_unknown): New function.
(getutline_r_unknown): New function.
(__endutent): Reset backend. This makes sure all backends are checked
on the next setutent call.
1997-08-08 20:20 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis_cache.c: Replace dummy functions.
* libc.map: Add xdr_sizeof symbol.
* sunrpc/Makefile: Add xdr_sizeof to routines.
* sunrpc/rpc/xdr.h: Add xdr_sizeof prototype.
* sunrpc/xdr_sizeof.c: New, from tirpc 2.3.
1997-08-08 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once): Define correctly.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Put parens in the
right place.
1997-08-06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Do arithmetic on
PC's in long long to avoid overflow.
1997-08-07 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/bits/libc-lock.h (__libc_once, __libc_once_define):
New macros.
1997-08-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nis/Makefile (headers): Remove bits/nislib.h.
1997-08-06 14:54 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Add login.
1997-08-06 14:23 Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>
* db/hash/hash.c (init_hash): Don't use stat() if it doesn't provide
the preferred block size.
* login/programs/database.c (store_state_entry): Don't compile if
there is no ut_type field.
(store_state_entry, store_process_entry): Use the ut_tv field
for timestamps if supported.
* login/programs/utmpdump.c (print_entry): Always use ut_tv field.
* login/programs/xtmp.c: Fix numerous xtmp/utmp typos. Use the ut_tv
field for timestamps if supported.
* login/programs/xtmp.h: Fix xtmp/utmp typo.
* sysdeps/posix/defs.c (stdstream): Change (PTR) to (void *).
* sysdeps/stub/connect.c (connect): Change to __connect, add alias.
* sysdeps/stub/send.c (send): Likewise.
* sysdeps/stub/s_exp2f.c: Emit correct stub_warning().
* sysdeps/stub/statfs.c: Move stub_warning() to the usual place.
* sysdeps/stub/init-first.c: Add definition of __libc_pid.
1997-08-05 13:28 Philip Blundell <pb@spring.nexus.co.uk>
* sysdeps/standalone/arm/bits/errno.h: Add EISDIR, EOPNOTSUPP;
tidy up formatting.
* Makefile (subdirs): Remove `login'.
* sysdeps/unix/Subdirs: New file; build `login' subdirectory
for Unix systems.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/bits/utmpx.h: New file.
* sysdeps/mach/hurd/Dist: Add some files.
* sysdeps/mips/Dist: Likewise.
* sysdeps/mips/mips64/Dist: Likewise.
* sysdeps/sparc/Dist: Likewise.
* sysdeps/unix/sysv/linux/mips/Dist: Likewise.
* sysdeps/unix/sysv/linux/sparc/Dist: Likewise.
* sysdeps/mips/mipsel/Dist: New file.
* sysdeps/sparc64/elf/Dist: New file.
* sysdeps/unix/sysv/linux/sparc64/Dist: New file.
1997-08-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add missing symbols.
1997-08-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/socket.texi: Correct typos.
* manual/math.texi: Correct typos.
* manual/time.texi (Formatting Date and Time): Likewise.
1997-08-04 13:06 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* gmon/gmon.c (write_gmon): New function; guts from _mcleanup.
(_mcleanup): Use write_gmon.
(write_profiling): This function can be safely called at any time
to write a current histogram without interfering with ongoing
profiling.
* sysdeps/mach/hurd/profil.c (fetch_samples): Initialize NSAMPLES.
1997-08-01 17:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (fetch_samples): Sample buffer need
not be vm_deallocated; it's a stack buffer.
(profil_vm_deallocate): Delete prototype.
(#include <../mach/RPC_vm_deallocate_rpc.c>): Drop this
inclusion.
* sysdeps/mach/hurd/Makefile
($(common-objpfx)hurd/../mach/RPC_vm_deallocate_rpc.c): Delete
this rule.
* sysdeps/mach/hurd/profil.c (fetch_samples): New function, guts
from profile_waiter.
(profile_waiter): Use fetch_samples.
(profil): When turning off profiling, fetch the last bunch of
samples before disabling PC sampling.
(fetch_samples): Add prototype.
1997-07-30 12:53 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/Makefile: Give normal rules for the mach RPC
source included by profil.c instead of trying to use
before-compile grot.
1997-07-23 15:04 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/profil.c (profile_waiter): Do vm_deallocate
after releasing lock. Use special RPC stubs and avoid assert,
thus making this function entirely independent of the threadvar
mechanism and of cthreads.
(lock): Convert to be a spin lock instead of a mutex, so that the
waiter thread need not use cthreads. Use a fork prepare hook
instead of _hurd_fork_locks to make sure we are clean before
forking.
(fork_profil_child): Renamed from fork_profil.
(profil_reply_port): New variable.
(profil_vm_deallocate, profil_task_get_sampled_pcs): Special RPC
stubs made by special hacks.
* sysdeps/mach/hurd/Makefile (before-compile): Add the mach RPC
source files that profil.c needs if we are in the gmon directory.
* mach/setup-thread.c (__mach_setup_thread): Delete avoidance of a
cthreads bug that hasn't existed for two years.
* stdio-common/printf_fp.c (__printf_fp): Correct rounding of numbers
* locale/programs/locale.c (print_escaped): New function.
* time/australasia: Likewise.
(open_database, synchronize_database, initialize_database):
* nss/nss_files/files-netgrp.c (_nss_netgroup_parseline): Don't
* Makerules (load-map-file): Currectly handle missing map file.
cannot rely on M_SQRT2 being defined.
(log1p): Use __M_SQRT2 not M_SQRT2.
1997-08-11 02:37:15 +08:00
|
|
|
|
add_name_to_object (l, name);
|
2000-10-21 14:02:49 +08:00
|
|
|
|
|
1995-05-02 14:35:55 +08:00
|
|
|
|
return l;
|
|
|
|
|
}
|
|
|
|
|
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
#ifdef SHARED
|
|
|
|
|
/* When loading into a namespace other than the base one we must
|
|
|
|
|
avoid loading ld.so since there can only be one copy. Ever. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (nsid != LM_ID_BASE)
|
2015-07-15 04:15:26 +08:00
|
|
|
|
&& (_dl_file_id_match_p (&id, &GL(dl_rtld_map).l_file_id)
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
|| _dl_name_match_p (name, &GL(dl_rtld_map))))
|
|
|
|
|
{
|
|
|
|
|
/* This is indeed ld.so. Create a new link_map which refers to
|
|
|
|
|
the real one for almost everything. */
|
|
|
|
|
l = _dl_new_object (realname, name, l_type, loader, mode, nsid);
|
|
|
|
|
if (l == NULL)
|
|
|
|
|
goto fail_new;
|
|
|
|
|
|
|
|
|
|
/* Refer to the real descriptor. */
|
|
|
|
|
l->l_real = &GL(dl_rtld_map);
|
|
|
|
|
|
|
|
|
|
/* No need to bump the refcount of the real object, ld.so will
|
|
|
|
|
never be unloaded. */
|
|
|
|
|
__close (fd);
|
|
|
|
|
|
2010-10-26 12:23:14 +08:00
|
|
|
|
/* Add the map for the mirrored object to the object list. */
|
|
|
|
|
_dl_add_to_namespace_list (l, nsid);
|
|
|
|
|
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
return l;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2000-07-21 12:12:25 +08:00
|
|
|
|
if (mode & RTLD_NOLOAD)
|
2009-10-06 19:43:26 +08:00
|
|
|
|
{
|
|
|
|
|
/* We are not supposed to load the object unless it is already
|
|
|
|
|
loaded. So return now. */
|
2011-02-26 09:49:48 +08:00
|
|
|
|
free (realname);
|
2009-10-06 19:43:26 +08:00
|
|
|
|
__close (fd);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
2000-07-21 06:53:54 +08:00
|
|
|
|
|
1998-03-11 02:04:16 +08:00
|
|
|
|
/* Print debugging message. */
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
_dl_debug_printf ("file=%s [%lu]; generating link map\n", name, nsid);
|
1998-03-11 02:04:16 +08:00
|
|
|
|
|
2000-10-22 01:08:18 +08:00
|
|
|
|
/* This is the ELF header. We read it in `open_verify'. */
|
|
|
|
|
header = (void *) fbp->buf;
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
Sun Jul 14 01:51:39 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* manual/Makefile (glibc-targets): Variable and targets removed.
Sat Jul 13 23:50:17 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* manual/Makefile (lib): New phony target. Depend on stamp files.
($(objpfx)stamp%-$(subdir)): New rule to create them when necessary.
1996-07-13 Paul Eggert <eggert@twinsun.com>
* time/strftime.c (strftime): Use space padding for %e, %k, %l,
to match Emacs format-time-string specification.
(DO_NUMBER_SPACEPAD): Renamed from DO_NUMBER_NOPAD.
Sat Jul 13 20:17:38 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/dl-deps.c (_dl_map_object_deps): Take new args PRELOADS and
NPRELOADS, vector of `struct link_map *'s; add them to the searchlist
between MAP and its deps.
* elf/link.h: Fix decl.
* elf/rtld.c (dl_main): If not secure, parse LD_PRELOAD for
colon-separated list of names, map those and pass vector of ptrs as
PRELOADS list to _dl_map_object_deps.
* elf/dl-runtime.c (_dl_object_relocation_scope): Pass new args to
_dl_map_object_deps with empty preload list.
* elf/dl-open.c (_dl_open): Likewise.
* sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_open_zero_fill): Function
removed.
(__mmap): Pass MACH_PORT_NULL for memobj port when (flags & MAP_ANON).
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_open_zero_fill):
Conditionalize defn on [! MAP_ANON].
* elf/dl-minimal.c (malloc): Conditionalize use of _dl_zerofd
on [! MAP_ANON].
* elf/rtld.c (dl_main): Likewise.
* elf/dl-load.c (_dl_zerofd): Conditionalize defn on [! MAP_ANON].
(_dl_map_object_from_fd): Conditionalize initialization of _dl_zerofd.
* elf/dl-fini.c (_dl_fini): Skip finalizer for executable itself.
Sat Jul 13 02:47:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* stdlib/random.c (__random): Declare as int32_t to be in sync
with declaration.
* socket/Makefile (headers): Add socketbits.h.
* misc/mntent.c (endmntent): Allow for NULL stream. SunOS does
it that way.
* grp/initgroups.c (initgroups): Add groups that user is a member
of, not the ones he is _not_ a member of.
* nss/nsswitch.c (known_compare): Make known_compare() a static
instead of a local function. The latter are difficult to debug
and slow to execute on certain platforms.
* sysdeps/posix/ttyname_r.c (ttyname_r): Use sizeof (dev) - 1 in
place of sizeof (dev). The size of a literal string includes the
NUL byte.
* sysdeps/unix/getlogin.c (getlogin): Initialize ut_fd with -1.
Thu Jul 11 16:59:10 1996 David Mosberger-Tang <davidm@azstarnet.com>
* misc/mntent.c (addmntent): Seek to end of file before writing
entry. Return 1 on error, not -1.
Tue Jul 9 19:08:05 1996 David Mosberger-Tang <davidm@azstarnet.com>
* sysdeps/unix/sysv/linux/syscalls.list: Mark bdflush as EXTRA
syscall.
Fri Jul 5 18:44:55 1996 David Mosberger-Tang <davidm@azstarnet.com>
* sysdeps/unix/sysv/linux/alpha/ioperm.c (port_to_cpu_addr): Size
shift amount for Jensen must be 5 not 4.
Sat Jul 13 20:04:28 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* socket/sys/socket.h (struct osockaddr): New type.
Sat Jul 13 03:50:53 1996 Ulrich Drepper <drepper@cygnus.com>
* misc/Makefile (routines): Add qefgcvt and qefgcvt_r.
* misc/efgcvt.c, misc/efgcvt_r.c: Change code so that the `double'
and `long double' versions can be generated.
* misc/qefgcvt.c, misc/qefgcvt_r.c: New files. Define macros
so that included efgcvt{,_r}.c file generate `long double'
versions.
* stdlib/stdlib.h: Add prototypes for q[efg]cvt() and q[ef]cvt_r()
functions.
* manual/startup.texi: Document new getsubopt function.
* manual/examples/subopt.c: New example program for documenting
getsubopt function.
Fri Jul 12 23:58:37 1996 Ulrich Drepper <drepper@cygnus.com>
* stdlib/Makefile (routines): Add getsubopt.
* stdlib/stdlib.h: Add prototype for getsubopt.
* stdlib/getsubopt.c: New file. Implement getsubopt function
to handle suboption parsing.
1996-07-14 14:04:09 +08:00
|
|
|
|
#ifndef MAP_ANON
|
1999-02-20 04:37:20 +08:00
|
|
|
|
# define MAP_ANON 0
|
1995-05-02 14:35:55 +08:00
|
|
|
|
if (_dl_zerofd == -1)
|
|
|
|
|
{
|
|
|
|
|
_dl_zerofd = _dl_sysdep_open_zero_fill ();
|
|
|
|
|
if (_dl_zerofd == -1)
|
1996-06-11 04:19:39 +08:00
|
|
|
|
{
|
2011-02-26 09:49:48 +08:00
|
|
|
|
free (realname);
|
1996-06-11 04:19:39 +08:00
|
|
|
|
__close (fd);
|
2004-03-06 16:19:29 +08:00
|
|
|
|
_dl_signal_error (errno, NULL, NULL,
|
|
|
|
|
N_("cannot open zero fill device"));
|
1996-06-11 04:19:39 +08:00
|
|
|
|
}
|
1995-05-02 14:35:55 +08:00
|
|
|
|
}
|
Sun Jul 14 01:51:39 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* manual/Makefile (glibc-targets): Variable and targets removed.
Sat Jul 13 23:50:17 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* manual/Makefile (lib): New phony target. Depend on stamp files.
($(objpfx)stamp%-$(subdir)): New rule to create them when necessary.
1996-07-13 Paul Eggert <eggert@twinsun.com>
* time/strftime.c (strftime): Use space padding for %e, %k, %l,
to match Emacs format-time-string specification.
(DO_NUMBER_SPACEPAD): Renamed from DO_NUMBER_NOPAD.
Sat Jul 13 20:17:38 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/dl-deps.c (_dl_map_object_deps): Take new args PRELOADS and
NPRELOADS, vector of `struct link_map *'s; add them to the searchlist
between MAP and its deps.
* elf/link.h: Fix decl.
* elf/rtld.c (dl_main): If not secure, parse LD_PRELOAD for
colon-separated list of names, map those and pass vector of ptrs as
PRELOADS list to _dl_map_object_deps.
* elf/dl-runtime.c (_dl_object_relocation_scope): Pass new args to
_dl_map_object_deps with empty preload list.
* elf/dl-open.c (_dl_open): Likewise.
* sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_open_zero_fill): Function
removed.
(__mmap): Pass MACH_PORT_NULL for memobj port when (flags & MAP_ANON).
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_open_zero_fill):
Conditionalize defn on [! MAP_ANON].
* elf/dl-minimal.c (malloc): Conditionalize use of _dl_zerofd
on [! MAP_ANON].
* elf/rtld.c (dl_main): Likewise.
* elf/dl-load.c (_dl_zerofd): Conditionalize defn on [! MAP_ANON].
(_dl_map_object_from_fd): Conditionalize initialization of _dl_zerofd.
* elf/dl-fini.c (_dl_fini): Skip finalizer for executable itself.
Sat Jul 13 02:47:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* stdlib/random.c (__random): Declare as int32_t to be in sync
with declaration.
* socket/Makefile (headers): Add socketbits.h.
* misc/mntent.c (endmntent): Allow for NULL stream. SunOS does
it that way.
* grp/initgroups.c (initgroups): Add groups that user is a member
of, not the ones he is _not_ a member of.
* nss/nsswitch.c (known_compare): Make known_compare() a static
instead of a local function. The latter are difficult to debug
and slow to execute on certain platforms.
* sysdeps/posix/ttyname_r.c (ttyname_r): Use sizeof (dev) - 1 in
place of sizeof (dev). The size of a literal string includes the
NUL byte.
* sysdeps/unix/getlogin.c (getlogin): Initialize ut_fd with -1.
Thu Jul 11 16:59:10 1996 David Mosberger-Tang <davidm@azstarnet.com>
* misc/mntent.c (addmntent): Seek to end of file before writing
entry. Return 1 on error, not -1.
Tue Jul 9 19:08:05 1996 David Mosberger-Tang <davidm@azstarnet.com>
* sysdeps/unix/sysv/linux/syscalls.list: Mark bdflush as EXTRA
syscall.
Fri Jul 5 18:44:55 1996 David Mosberger-Tang <davidm@azstarnet.com>
* sysdeps/unix/sysv/linux/alpha/ioperm.c (port_to_cpu_addr): Size
shift amount for Jensen must be 5 not 4.
Sat Jul 13 20:04:28 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* socket/sys/socket.h (struct osockaddr): New type.
Sat Jul 13 03:50:53 1996 Ulrich Drepper <drepper@cygnus.com>
* misc/Makefile (routines): Add qefgcvt and qefgcvt_r.
* misc/efgcvt.c, misc/efgcvt_r.c: Change code so that the `double'
and `long double' versions can be generated.
* misc/qefgcvt.c, misc/qefgcvt_r.c: New files. Define macros
so that included efgcvt{,_r}.c file generate `long double'
versions.
* stdlib/stdlib.h: Add prototypes for q[efg]cvt() and q[ef]cvt_r()
functions.
* manual/startup.texi: Document new getsubopt function.
* manual/examples/subopt.c: New example program for documenting
getsubopt function.
Fri Jul 12 23:58:37 1996 Ulrich Drepper <drepper@cygnus.com>
* stdlib/Makefile (routines): Add getsubopt.
* stdlib/stdlib.h: Add prototype for getsubopt.
* stdlib/getsubopt.c: New file. Implement getsubopt function
to handle suboption parsing.
1996-07-14 14:04:09 +08:00
|
|
|
|
#endif
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
2005-01-07 06:40:27 +08:00
|
|
|
|
/* Signal that we are going to add new objects. */
|
|
|
|
|
if (r->r_state == RT_CONSISTENT)
|
|
|
|
|
{
|
|
|
|
|
#ifdef SHARED
|
|
|
|
|
/* Auditing checkpoint: we are going to add new objects. */
|
2009-03-16 10:16:30 +08:00
|
|
|
|
if ((mode & __RTLD_AUDIT) == 0
|
2014-03-27 06:37:07 +08:00
|
|
|
|
&& __glibc_unlikely (GLRO(dl_naudit) > 0))
|
2005-01-07 06:40:27 +08:00
|
|
|
|
{
|
|
|
|
|
struct link_map *head = GL(dl_ns)[nsid]._ns_loaded;
|
|
|
|
|
/* Do not call the functions for any auditing object. */
|
|
|
|
|
if (head->l_auditing == 0)
|
|
|
|
|
{
|
|
|
|
|
struct audit_ifaces *afct = GLRO(dl_audit);
|
|
|
|
|
for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt)
|
|
|
|
|
{
|
|
|
|
|
if (afct->activity != NULL)
|
|
|
|
|
afct->activity (&head->l_audit[cnt].cookie, LA_ACT_ADD);
|
|
|
|
|
|
|
|
|
|
afct = afct->next;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* Notify the debugger we have added some objects. We need to
|
|
|
|
|
call _dl_debug_initialize in a static program in case dynamic
|
|
|
|
|
linking has not been used before. */
|
|
|
|
|
r->r_state = RT_ADD;
|
|
|
|
|
_dl_debug_state ();
|
2012-07-26 18:03:35 +08:00
|
|
|
|
LIBC_PROBE (map_start, 2, nsid, r);
|
2005-01-07 06:40:27 +08:00
|
|
|
|
make_consistent = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
assert (r->r_state == RT_ADD);
|
|
|
|
|
|
1996-06-11 04:19:39 +08:00
|
|
|
|
/* Enter the new object in the list of loaded objects. */
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
l = _dl_new_object (realname, name, l_type, loader, mode, nsid);
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (l == NULL))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
2004-10-14 17:24:14 +08:00
|
|
|
|
#ifdef SHARED
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
fail_new:
|
2004-10-14 17:24:14 +08:00
|
|
|
|
#endif
|
2001-11-07 08:31:36 +08:00
|
|
|
|
errstring = N_("cannot create shared object descriptor");
|
|
|
|
|
goto call_lose_errno;
|
|
|
|
|
}
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
1995-10-09 15:06:29 +08:00
|
|
|
|
/* Extract the remaining details we need from the ELF header
|
1998-05-21 23:30:48 +08:00
|
|
|
|
and then read in the program header table. */
|
1995-10-09 15:06:29 +08:00
|
|
|
|
l->l_entry = header->e_entry;
|
|
|
|
|
type = header->e_type;
|
|
|
|
|
l->l_phnum = header->e_phnum;
|
1998-05-21 23:30:48 +08:00
|
|
|
|
|
|
|
|
|
maplength = header->e_phnum * sizeof (ElfW(Phdr));
|
2002-08-25 12:51:08 +08:00
|
|
|
|
if (header->e_phoff + maplength <= (size_t) fbp->len)
|
2000-10-22 01:08:18 +08:00
|
|
|
|
phdr = (void *) (fbp->buf + header->e_phoff);
|
1998-05-21 23:30:48 +08:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
phdr = alloca (maplength);
|
2002-04-25 05:09:14 +08:00
|
|
|
|
__lseek (fd, header->e_phoff, SEEK_SET);
|
2002-08-25 12:51:08 +08:00
|
|
|
|
if ((size_t) __libc_read (fd, (void *) phdr, maplength) != maplength)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot read file data");
|
|
|
|
|
goto call_lose_errno;
|
|
|
|
|
}
|
1998-05-21 23:30:48 +08:00
|
|
|
|
}
|
1995-10-01 05:18:30 +08:00
|
|
|
|
|
2010-12-20 11:49:01 +08:00
|
|
|
|
/* On most platforms presume that PT_GNU_STACK is absent and the stack is
|
|
|
|
|
* executable. Other platforms default to a nonexecutable stack and don't
|
|
|
|
|
* need PT_GNU_STACK to do so. */
|
|
|
|
|
uint_fast16_t stack_flags = DEFAULT_STACK_PERMS;
|
2003-09-23 20:06:48 +08:00
|
|
|
|
|
1995-10-09 15:06:29 +08:00
|
|
|
|
{
|
|
|
|
|
/* Scan the program header table, collecting its load commands. */
|
2014-04-04 01:47:14 +08:00
|
|
|
|
struct loadcmd loadcmds[l->l_phnum];
|
1995-10-09 15:06:29 +08:00
|
|
|
|
size_t nloadcmds = 0;
|
2003-03-04 08:10:34 +08:00
|
|
|
|
bool has_holes = false;
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
1999-02-20 04:37:20 +08:00
|
|
|
|
/* The struct is initialized to zero so this is not necessary:
|
1995-05-02 14:35:55 +08:00
|
|
|
|
l->l_ld = 0;
|
1995-10-09 15:06:29 +08:00
|
|
|
|
l->l_phdr = 0;
|
1999-02-20 04:37:20 +08:00
|
|
|
|
l->l_addr = 0; */
|
1995-05-02 14:35:55 +08:00
|
|
|
|
for (ph = phdr; ph < &phdr[l->l_phnum]; ++ph)
|
|
|
|
|
switch (ph->p_type)
|
|
|
|
|
{
|
|
|
|
|
/* These entries tell us where to find things once the file's
|
|
|
|
|
segments are mapped in. We record the addresses it says
|
|
|
|
|
verbatim, and later correct for the run-time load address. */
|
|
|
|
|
case PT_DYNAMIC:
|
2017-09-27 04:49:48 +08:00
|
|
|
|
if (ph->p_filesz)
|
|
|
|
|
{
|
|
|
|
|
/* Debuginfo only files from "objcopy --only-keep-debug"
|
|
|
|
|
contain a PT_DYNAMIC segment with p_filesz == 0. Skip
|
|
|
|
|
such a segment to avoid a crash later. */
|
|
|
|
|
l->l_ld = (void *) ph->p_vaddr;
|
|
|
|
|
l->l_ldnum = ph->p_memsz / sizeof (ElfW(Dyn));
|
|
|
|
|
}
|
1995-05-02 14:35:55 +08:00
|
|
|
|
break;
|
2001-11-07 08:31:36 +08:00
|
|
|
|
|
1995-05-02 14:35:55 +08:00
|
|
|
|
case PT_PHDR:
|
|
|
|
|
l->l_phdr = (void *) ph->p_vaddr;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case PT_LOAD:
|
1995-10-09 15:06:29 +08:00
|
|
|
|
/* A load command tells us to map in part of the file.
|
|
|
|
|
We record the load commands and process them all later. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely ((ph->p_align & (GLRO(dl_pagesize) - 1)) != 0))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("ELF load command alignment not page-aligned");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (((ph->p_vaddr - ph->p_offset)
|
|
|
|
|
& (ph->p_align - 1)) != 0))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring
|
|
|
|
|
= N_("ELF load command address/offset not properly aligned");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-04 01:47:14 +08:00
|
|
|
|
struct loadcmd *c = &loadcmds[nloadcmds++];
|
2015-09-18 21:27:45 +08:00
|
|
|
|
c->mapstart = ALIGN_DOWN (ph->p_vaddr, GLRO(dl_pagesize));
|
|
|
|
|
c->mapend = ALIGN_UP (ph->p_vaddr + ph->p_filesz, GLRO(dl_pagesize));
|
2002-10-12 14:34:56 +08:00
|
|
|
|
c->dataend = ph->p_vaddr + ph->p_filesz;
|
|
|
|
|
c->allocend = ph->p_vaddr + ph->p_memsz;
|
2015-09-18 21:27:45 +08:00
|
|
|
|
c->mapoff = ALIGN_DOWN (ph->p_offset, GLRO(dl_pagesize));
|
2002-10-12 14:34:56 +08:00
|
|
|
|
|
2003-03-04 08:10:34 +08:00
|
|
|
|
/* Determine whether there is a gap between the last segment
|
|
|
|
|
and this one. */
|
|
|
|
|
if (nloadcmds > 1 && c[-1].mapend != c->mapstart)
|
|
|
|
|
has_holes = true;
|
|
|
|
|
|
2002-10-12 14:34:56 +08:00
|
|
|
|
/* Optimize a common case. */
|
2001-11-11 06:43:10 +08:00
|
|
|
|
#if (PF_R | PF_W | PF_X) == 7 && (PROT_READ | PROT_WRITE | PROT_EXEC) == 7
|
2002-10-12 14:34:56 +08:00
|
|
|
|
c->prot = (PF_TO_PROT
|
|
|
|
|
>> ((ph->p_flags & (PF_R | PF_W | PF_X)) * 4)) & 0xf;
|
2001-11-11 06:43:10 +08:00
|
|
|
|
#else
|
2002-10-12 14:34:56 +08:00
|
|
|
|
c->prot = 0;
|
|
|
|
|
if (ph->p_flags & PF_R)
|
|
|
|
|
c->prot |= PROT_READ;
|
|
|
|
|
if (ph->p_flags & PF_W)
|
|
|
|
|
c->prot |= PROT_WRITE;
|
|
|
|
|
if (ph->p_flags & PF_X)
|
|
|
|
|
c->prot |= PROT_EXEC;
|
2001-11-11 06:43:10 +08:00
|
|
|
|
#endif
|
2001-03-20 17:26:25 +08:00
|
|
|
|
break;
|
2002-02-05 16:38:38 +08:00
|
|
|
|
|
|
|
|
|
case PT_TLS:
|
2002-12-03 09:51:07 +08:00
|
|
|
|
if (ph->p_memsz == 0)
|
|
|
|
|
/* Nothing to do for an empty segment. */
|
|
|
|
|
break;
|
|
|
|
|
|
2002-12-04 20:30:40 +08:00
|
|
|
|
l->l_tls_blocksize = ph->p_memsz;
|
|
|
|
|
l->l_tls_align = ph->p_align;
|
2003-07-25 04:07:00 +08:00
|
|
|
|
if (ph->p_align == 0)
|
|
|
|
|
l->l_tls_firstbyte_offset = 0;
|
|
|
|
|
else
|
|
|
|
|
l->l_tls_firstbyte_offset = ph->p_vaddr & (ph->p_align - 1);
|
2002-12-04 20:30:40 +08:00
|
|
|
|
l->l_tls_initimage_size = ph->p_filesz;
|
|
|
|
|
/* Since we don't know the load address yet only store the
|
|
|
|
|
offset. We will adjust it later. */
|
|
|
|
|
l->l_tls_initimage = (void *) ph->p_vaddr;
|
|
|
|
|
|
2002-12-03 09:51:07 +08:00
|
|
|
|
/* If not loading the initial set of shared libraries,
|
|
|
|
|
check whether we should permit loading a TLS segment. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_likely (l->l_type == lt_library)
|
2003-01-17 02:24:32 +08:00
|
|
|
|
/* If GL(dl_tls_dtv_slotinfo_list) == NULL, then rtld.c did
|
|
|
|
|
not set up TLS data structures, so don't use them now. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
|| __glibc_likely (GL(dl_tls_dtv_slotinfo_list) != NULL))
|
2002-02-05 16:38:38 +08:00
|
|
|
|
{
|
2002-02-13 16:03:56 +08:00
|
|
|
|
/* Assign the next available module ID. */
|
|
|
|
|
l->l_tls_modid = _dl_next_tls_modid ();
|
2002-12-03 09:51:07 +08:00
|
|
|
|
break;
|
2002-02-05 16:38:38 +08:00
|
|
|
|
}
|
2002-12-03 09:51:07 +08:00
|
|
|
|
|
[BZ #2510, BZ #2830, BZ #3137, BZ #3313, BZ #3426, BZ #3465, BZ #3480, BZ #3483, BZ #3493, BZ #3514, BZ #3515, BZ #3664, BZ #3673, BZ #3674]
2007-01-11 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/soft-fp/sfp-machine.h: Remove.
* sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise.
2007-01-10 Ulrich Drepper <drepper@redhat.com>
* io/fts.c: Make sure fts_cur is always valid after return from
fts_read.
Patch by Miloslav Trmac <mitr@redhat.com>.
2006-10-27 Richard Sandiford <richard@codesourcery.com>
* elf/elf.h (R_MIPS_GLOB_DAT): Define.
(R_MIPS_NUM): Bump by 1.
2007-01-03 Jakub Jelinek <jakub@redhat.com>
* posix/execvp.c: Include alloca.h.
(allocate_scripts_argv): Renamed to...
(scripts_argv): ... this. Don't allocate buffer here nor count
arguments.
(execvp): Use alloca if possible.
* posix/Makefile: Add rules to build and run tst-vfork3 test.
* posix/tst-vfork3.c: New test.
* stdlib/Makefile (tst-strtod3-ENV): Define.
2007-01-02 Ulrich Drepper <drepper@redhat.com>
* posix/getconf.c: Update copyright year.
* nss/getent.c: Likewise.
* iconv/iconvconfig.c: Likewise.
* iconv/iconv_prog.c: Likewise.
* elf/ldconfig.c: Likewise.
* catgets/gencat.c: Likewise.
* csu/version.c: Likewise.
* elf/ldd.bash.in: Likewise.
* elf/sprof.c (print_version): Likewise.
* locale/programs/locale.c: Likewise.
* locale/programs/localedef.c: Likewise.
* nscd/nscd.c (print_version): Likewise.
* debug/xtrace.sh: Likewise.
* malloc/memusage.sh: Likewise.
* malloc/mtrace.pl: Likewise.
* debug/catchsegv.sh: Likewise.
2006-12-24 Ulrich Drepper <drepper@redhat.com>
* malloc/malloc.c (sYSMALLOc): Remove some unnecessary alignment
attempts.
2006-12-23 Ulrich Drepper <drepper@redhat.com>
* posix/wordexp.c: Remove some unnecessary tests.
2006-12-20 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
* sysdeps/unix/sysv/linux/sh/bits/shm.h: New file.
* nss/getXXbyYY_r.c: Include atomic.h.
(INTERNAL (REENTRANT_NAME)): Write startp after start_fct,
add atomic_write_barrier () in between.
2006-11-28 Jakub Jelinek <jakub@redhat.com>
* elf/dl-support.c: Include dl-procinfo.h.
* sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4,
PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS,
PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X):
Define.
(_dl_string_platform): Use PPC_PLATFORM_* macros instead of
hardcoded constants.
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use
PPC_PLATFORM_* macros for array designators.
2006-11-11 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap
names to the beginning.
(_dl_powerpc_platforms): Add "power6x".
* sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease.
(HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP.
(_DL_PLATFORMS_COUNT): Increase.
(_dl_string_platform): Handle power6x case.
* sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP,
PPC_FEATURE_POWER6_EXT): Define.
(PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.
[-2^31 .. 2^31) range.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Define ST_RELATIME.
* sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags):
Handle relatime mount option.
2006-12-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Include
kernel-features.h.
2006-12-11 Ulrich Drepper <drepper@redhat.com>
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Parse thousand
separators also if no non-zero digits found.
* stdlib/Makefile (tests): Add tst-strtod3.
[BZ #3664]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix test to recognize
empty parsed strings.
* stdlib/Makefile (tests): Add tst-strtod2.
* stdlib/tst-strtod2.c: New file.
[BZ #3673]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix exp_limit
computation.
* stdlib/Makefile (tests): Add tst-atof2.
* stdlib/tst-atof2.c: New file.
[BZ #3674]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Adjust exponent value
correctly if removing trailing zero of hex-float.
* stdlib/Makefile (tests): Add tst-atof1.
* stdlib/tst-atof1.c: New file.
* misc/mntent_r.c (__hasmntopt): Check p[optlen] even when p == rest.
Start searching for next comma at p rather than rest.
* misc/Makefile (tests): Add tst-mntent2.
* misc/tst-mntent2.c: New test.
2006-12-08 Ulrich Drepper <drepper@redhat.com>
* malloc/memusage.c: Handle realloc with new size of zero and
non-NULL pointer correctly.
(me): Really write first record twice.
(struct entry): Make format bi-arch safe.
(dest): Write out more realloc statistics.
* malloc/memusagestat.c (struct entry): Make format bi-arch safe.
2006-12-05 Jakub Jelinek <jakub@redhat.com>
* nis/nis_subr.c (nis_getnames): Revert last change.
2006-12-03 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/sys/io.h: Removed.
2006-11-30 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/i686/memcmp.S: Use jump table as the base of
jump table entries.
2006-11-30 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/i386/clone.S: Provide CFI for the outermost
`clone' function to ensure proper unwinding stop of gdb.
* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
2006-12-01 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd.init: Remove obsolete and commented-out -S option
handling.
2006-11-23 Jakub Jelinek <jakub@redhat.com>
[BZ #3514]
* manual/string.texi (strncmp): Fix pastos from wcscmp description.
[BZ #3515]
* manual/string.texi (strtok): Remove duplicate paragraph.
2006-12-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Fix compatibility with
libgcc not supporting `rflags' unwinding (register # >= 17).
2006-11-30 Jakub Jelinek <jakub@redhat.com>
* sunrpc/svc_run.c (svc_run): Set my_pollfd to new_pollfd if realloc
succeeded.
2006-11-29 Daniel Jacobowitz <dan@codesourcery.com>
Jakub Jelinek <jakub@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c (restore_rt): Add correct
unwind information.
* sysdeps/unix/sysv/linux/x86_64/Makefile: Provide symbols for
'restore_rt' even in the 'signal' directory.
* sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym: Extend the regs list.
malloc crashed. Don't allocate memory unnecessarily in each
loop.
2006-10-21 Jakub Jelinek <jakub@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Fix last change.
2006-11-20 Ulrich Drepper <drepper@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit.
2006-11-18 Bruno Haible <bruno@clisp.org>
* sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Invoke
__sysconf only after having tried to call getgroups32.
2006-11-19 Ulrich Drepper <drepper@redhat.com>
* nss/nss_files/files-hosts.c (LINE_PARSER): Support IPv6-style
addresses for IPv4 queries if they can be mapped.
2006-11-16 Jakub Jelinek <jakub@redhat.com>
* sysdeps/x86_64/fpu/s_copysignf.S (__copysignf): Switch to .text.
* sysdeps/x86_64/fpu/s_copysign.S (__copysign): Likewise.
(signmask): Add .size directive.
(othermask): Add .type directive.
2006-11-14 Ulrich Drepper <drepper@redhat.com>
* po/nl.po: Update from translation team.
* timezone/zdump.c: Redo fix for BZ #3137.
2006-11-14 Jakub Jelinek <jakub@redhat.com>
* nss/nss_files/files-alias.c (get_next_alias): Set line back
to first_unused after parsing :include: file.
* timezone/africa: Update from tzdata2006o.
* timezone/antarctica: Likewise.
* timezone/asia: Likewise.
* timezone/australasia: Likewise.
* timezone/backward: Likewise.
* timezone/europe: Likewise.
* timezone/iso3166.tab: Likewise.
* timezone/northamerica: Likewise.
* timezone/southamerica: Likewise.
* timezone/zone.tab: Likewise.
* time/tzfile.c (__tzfile_read): Extend to handle new file format
on machines with 64-bit time_t.
* timezone/checktab.awk: Update from tzcode2006o.
* timezone/ialloc.c: Likewise.
* timezone/private.h: Likewise.
* timezone/scheck.c: Likewise.
* timezone/tzfile.h: Likewise.
* timezone/tzselect.ksh: Likewise.
* timezone/zdump.c: Likewise.
* timezone/zic.c: Likewise.
[BZ #3483]
* elf/ldconfig.c (main): Call setlocale and textdomain.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
[BZ #3480]
* manual/argp.texi: Fix typos.
* manual/charset.texi: Likewise.
* manual/errno.texi: Likewise.
* manual/filesys.texi: Likewise.
* manual/lang.texi: Likewise.
* manual/maint.texi: Likewise.
* manual/memory.texi: Likewise.
* manual/message.texi: Likewise.
* manual/resource.texi: Likewise.
* manual/search.texi: Likewise.
* manual/signal.texi: Likewise.
* manual/startup.texi: Likewise.
* manual/stdio.texi: Likewise.
* manual/sysinfo.texi: Likewise.
* manual/syslog.texi: Likewise.
* manual/time.texi: Likewise.
Patch by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
[BZ #3465]
* sunrpc/clnt_raw.c: Minimal message improvements.
* sunrpc/pm_getmaps.c: Likewise.
* nis/nss_nisplus/nisplus-publickey.c: Likewise.
* nis/nis_print_group_entry.c: Likewise.
* locale/programs/repertoire.c: Likewise.
* locale/programs/charmap.c: Likewise.
* malloc/memusage.sh: Likewise.
* elf/dl-deps.c: Likewise.
* locale/programs/ld-collate.c: Likewise.
* libio/vswprintf.c: Likewise.
* malloc/memusagestat.c: Likewise.
* sunrpc/auth_unix.c: Likewise.
* sunrpc/rpc_main.c: Likewise.
* nscd/cache.c: Likewise.
* locale/programs/repertoire.c: Unify output messages.
* locale/programs/charmap.c: Likewise.
* locale/programs/ld-ctype.c: Likewise.
* locale/programs/ld-monetary.c: Likewise.
* locale/programs/ld-numeric.c: Likewise.
* locale/programs/ld-time.c: Likewise.
* elf/ldconfig.c: Likewise.
* nscd/selinux.c: Likewise.
* elf/cache.c: Likewise.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
2006-11-10 Jakub Jelinek <jakub@redhat.com>
* string/strxfrm_l.c (STRXFRM): Fix trailing \1 optimization
if N is one bigger than return value.
* string/tst-strxfrm2.c (do_test): Also test strxfrm with l1 + 1
and l1 last arguments, if buf is defined, verify the return value
equals to strlen (buf) and verify no byte beyond passed length
is modified.
2006-11-10 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
* sysdeps/gnu/siglist.c (__old_sys_siglist, __old_sys_sigabbrev):
Use __new_sys_siglist instead of _sys_siglist_internal as
second macro argument.
(_old_sys_siglist): Use declare_symbol_alias macro instead of
strong_alias.
2006-11-09 Ulrich Drepper <drepper@redhat.com>
[BZ #3493]
* posix/unistd.h (sysconf): Remove const attribute.
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Fix test for
temporary or deprecated addresses.
Patch by Sridhar Samudrala <sri@us.ibm.com>.
* string/Makefile (tests): Add tst-strxfrm2.
* string/tst-strxfrm2.c: New file.
2006-10-09 Jakub Jelinek <jakub@redhat.com>
* elf/dl-debug.c (_dl_debug_initialize): Check r->r_map for 0
rather than r->r_brk.
* string/strxfrm_l.c (STRXFRM): Do the trailing \1 removal
optimization even if needed > n.
2006-11-07 Jakub Jelinek <jakub@redhat.com>
* include/libc-symbols.h (declare_symbol): Rename to...
(declare_symbol_alias): ... this. Add ORIGINAL argument, imply
strong_alias (ORIGINAL, SYMBOL) in asm to make sure it preceedes
.size directive.
* sysdeps/gnu/errlist-compat.awk: Adjust for declare_symbol_alias
changes.
* sysdeps/gnu/siglist.c: Likewise.
2006-11-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/fpu/bits/mathinline.h
[__LIBC_INTERNAL_MATH_INLINES]: Moved to ...
* sysdeps/powerpc/fpu/math_private.h: ...here. New file.
2006-11-05 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word):
Update handling of cache descriptor 0x49 for new models.
* sysdeps/unix/sysv/linux/x86_64/sysconf.c (intel_check_word):
Likewise.
2006-11-02 Ulrich Drepper <drepper@redhat.com>
* configure.in: Work around ld --help change and avoid -z relro
test completely if the architecture doesn't care about security.
2006-11-01 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
2006-10-31 Ulrich Drepper <drepper@redhat.com>
* stdlib/atexit.c (atexit): Don't mark as hidden when used to
generate compatibility version.
2006-10-29 Ulrich Drepper <drepper@redhat.com>
* configure.in: Relax -z relro requirement a bit.
* po/sv.po: Update from translation team.
2006-10-29 Jakub Jelinek <jakub@redhat.com>
* elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise.
* elf/dl-close.c (_dl_close_worker): Likewise.
* elf/dl-open.c (_dl_open_worker): Likewise.
* sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define.
* configure.in: Require assembler support for visibility, compiler
support for visibility and aliases, linker support for various -z
options.
* Makeconfig: Remove conditional code which now is unnecessary.
* config.h.in: Likewise.
* config.make.in: Likewise.
* dlfcn/Makefile: Likewise.
* elf/Makefile: Likewise.
* elf/dl-load.c: Likewise.
* elf/rtld.c: Likewise.
* include/libc-symbols.h: Likewise.
* include/stdio.h: Likewise.
* io/Makefile: Likewise.
* io/fstat.c: Likewise.
* io/fstat64.c: Likewise.
* io/fstatat.c: Likewise.
* io/fstatat64.c: Likewise.
* io/lstat.c: Likewise.
* io/lstat64.c: Likewise.
* io/mknod.c: Likewise.
* io/mknodat.c: Likewise.
* io/stat.c: Likewise.
* io/stat64.c: Likewise.
* libio/stdio.c: Likewise.
* nscd/Makefile: Likewise.
* stdlib/Makefile: Likewise.
* stdlib/atexit.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/i386/sysdep.h: Likewise.
* sysdeps/i386/i686/memcmp.S: Likewise.
* sysdeps/powerpc/powerpc32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
* Makerules: USE_TLS support is now default.
* tls.make.c: Likewise.
* csu/Versions: Likewise.
* csu/libc-start.c: Likewise.
* csu/libc-tls.c: Likewise.
* csu/version.c: Likewise.
* dlfcn/dlinfo.c: Likewise.
* elf/dl-addr.c: Likewise.
* elf/dl-cache.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-iteratephdr.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-support.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-sysdep.c: Likewise.
* elf/dl-tls.c: Likewise.
* elf/ldconfig.c: Likewise.
* elf/rtld.c: Likewise.
* elf/tst-tls-dlinfo.c: Likewise.
* elf/tst-tls1.c: Likewise.
* elf/tst-tls10.h: Likewise.
* elf/tst-tls14.c: Likewise.
* elf/tst-tls2.c: Likewise.
* elf/tst-tls3.c: Likewise.
* elf/tst-tls4.c: Likewise.
* elf/tst-tls5.c: Likewise.
* elf/tst-tls6.c: Likewise.
* elf/tst-tls7.c: Likewise.
* elf/tst-tls8.c: Likewise.
* elf/tst-tls9.c: Likewise.
* elf/tst-tlsmod1.c: Likewise.
* elf/tst-tlsmod13.c: Likewise.
* elf/tst-tlsmod13a.c: Likewise.
* elf/tst-tlsmod14a.c: Likewise.
* elf/tst-tlsmod2.c: Likewise.
* elf/tst-tlsmod3.c: Likewise.
* elf/tst-tlsmod4.c: Likewise.
* elf/tst-tlsmod5.c: Likewise.
* elf/tst-tlsmod6.c: Likewise.
* include/errno.h: Likewise.
* include/link.h: Likewise.
* include/tls.h: Likewise.
* locale/global-locale.c: Likewise.
* locale/localeinfo.h: Likewise.
* malloc/arena.c: Likewise.
* malloc/hooks.c: Likewise.
* malloc/malloc.c: Likewise.
* resolv/Versions: Likewise.
* sysdeps/alpha/dl-machine.h: Likewise.
* sysdeps/alpha/libc-tls.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/generic/tls.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/ia64/dl-machine.h: Likewise.
* sysdeps/ia64/libc-tls.c: Likewise.
* sysdeps/mach/hurd/fork.c: Likewise.
* sysdeps/mach/hurd/i386/tls.h: Likewise.
* sysdeps/powerpc/powerpc32/dl-machine.c: Likwise.
* sysdeps/powerpc/powerpc32/dl-machine.h: Likewise.
* sysdeps/powerpc/powerpc64/dl-machine.h: Likewise.
* sysdeps/s390/libc-tls.c: Likewise.
* sysdeps/s390/s390-32/dl-machine.h: Likewise.
* sysdeps/s390/s390-64/dl-machine.h: Likewise.
* sysdeps/sh/dl-machine.h: Likewise.
* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
* sysdeps/x86_64/dl-machine.h: Likewise.
[BZ #3426]
* stdlib/stdlib.h: Adjust comment for canonicalize_file_name to
reality.
2006-10-27 Jakub Jelinek <jakub@redhat.com>
* elf/dl-lookup.c (_dl_debug_bindings): Remove unused symbol_scope
argument.
(_dl_lookup_symbol_x): Adjust caller.
* sysdeps/generic/ldsodefs.h (struct link_namespaces): Remove
_ns_global_scope.
* elf/rtld.c (dl_main): Don't initialize _ns_global_scope.
* elf/dl-libc.c: Revert l_scope name changes.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-close.c (_dl_close): Likewise.
* elf/dl-open.c (dl_open_worker): Likewise. If not SINGLE_THREAD_P,
always use __rtld_mrlock_{change,done}. Always free old scope list
here if not l_scope_mem.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Revert l_scope name
change. Never free scope list here. Just __rtld_mrlock_lock before
the lookup and __rtld_mrlock_unlock it after the lookup.
* elf/dl-sym.c: Likewise.
* include/link.h (struct r_scoperec): Remove.
(struct link_map): Replace l_scoperec with l_scope, l_scoperec_mem
with l_scope_mem and l_scoperec_lock with l_scope_lock.
2006-10-25 Ulrich Drepper <drepper@redhat.com>
* sysdeps/gnu/netinet/tcp.h: Define TCP_CONGESTION.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* configure.in: Disable building profile libraries by default.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* elf/dl-lookup.c (_dl_lookup_symbol_x): Add warning to
_dl_lookup_symbol_x code.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* elf/dl-runtime.c: Include sysdep-cancel.h.
(_dl_fixup, _dl_profile_fixup): Use __rtld_mrlock_* and
scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_*
instead of catomic_* macros.
* elf/dl-sym.c: Include sysdep-cancel.h.
(do_sym): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-close.c: Include sysdep-cancel.h.
(_dl_close): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-open.c: Include sysdep-cancel.h.
(dl_open_worker): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Set maxfb to address of last
fastbin rather than end of fastbin array.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/i486/bits/atomic.h (catomic_decrement): Use correct
body macro.
* sysdeps/x86_64/bits/atomic.h
(__arch_c_compare_and_exchange_val_64_acq): Add missing casts.
(catomic_decrement): Use correct body macro.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* include/atomic.h: Add a unique prefix to all local variables
in macros.
* csu/tst-atomic.c (do_test): Test also catomic_* macros.
2006-10-14 Ulrich Drepper <drepper@redhat.com>
* resolv/arpa/nameser.h: Document that ns_t_a6 is deprecated.
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to
determine highest fast bin to consolidate, always look into all of
them.
(do_check_malloc_state): Only require for empty bins for large
sizes in main arena.
* libio/stdio.h: Add more __wur attributes.
2006-11-12 Andreas Jaeger <aj@suse.de>
[BZ #2510]
* manual/search.texi (Hash Search Function): Clarify.
(Array Search Function): Clarify.
2006-11-12 Joseph Myers <joseph@codesourcery.com>
[BZ #2830]
* math/atest-exp.c (main): Cast hex value to mp_limb_t before
shifting.
* math/atest-exp2.c (read_mpn_hex): Likewise.
* math/atest-sincos.c (main): Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Add epoll_pwait.
* sysdeps/unix/sysv/linux/sys/epoll.h: Declare epoll_pwait.
* sysdeps/unix/sysv/linux/Versions (libc): Add epoll_pwait for
version GLIBC_2.6.
* Versions.def: Add GLIBC_2.6 for libc.
* sysdeps/i386/i486/bits/atomic.h: Add catomic_* support.
2006-10-11 Jakub Jelinek <jakub@redhat.com>
* malloc/malloc.c (_int_malloc): Remove unused any_larger variable.
* nis/nis_defaults.c (__nis_default_access): Don't call getenv twice.
* nis/nis_subr.c (nis_getnames): Use __secure_getenv instead of getenv.
* sysdeps/generic/unsecvars.h: Add NIS_PATH.
2006-10-11 Ulrich Drepper <drepper@redhat.com>
* include/atomic.c: Define catomic_* operations.
* sysdeps/x86_64/bits/atomic.h: Likewise. Fix a few minor problems.
* stdlib/cxa_finalize.c: Use catomic_* operations instead of atomic_*.
* malloc/memusage.c: Likewise.
* gmon/mcount.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-profile.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-runtime.c: Likewise.
* elf/dl-fptr.c: Likewise.
* resolv/res_libc.c: Likewise.
2006-10-10 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/utimes.c: Use a union to avoid an improper cast.
* sysdeps/mach/hurd/futimes.c: Likewise.
* sysdeps/mach/hurd/lutimes.c: Likewise.
2006-10-09 Ulrich Drepper <drepper@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Implement reference counting of scope records.
* elf/dl-close.c (_dl_close): Remove all scopes from removed objects
from the list in objects which remain. Always allocate new scope
record.
* elf/dl-open.c (dl_open_worker): When growing array for scopes,
don't resize, allocate a new one.
* elf/dl-runtime.c: Update reference counters before using a scope
array.
* elf/dl-sym.c: Likewise.
* elf/dl-libc.c: Adjust for l_scope name change.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* include/link.h: Include <rtld-lowlevel.h>. Define struct
r_scoperec. Replace r_scope with pointer to r_scoperec structure.
Add l_scoperec_lock.
* sysdeps/generic/ldsodefs.h: Include <rtld-lowlevel.h>.
* sysdeps/generic/rtld-lowlevel.h: New file.
* include/atomic.h: Rename atomic_and to atomic_and_val and
atomic_or to atomic_or_val. Define new macros atomic_and and
atomic_or which do not return values.
* sysdeps/x86_64/bits/atomic.h: Define atomic_and and atomic_or.
Various cleanups.
* sysdeps/i386/i486/bits/atomic.h: Likewise.
* po/sv.po: Update from translation team.
2006-10-07 Ulrich Drepper <drepper@redhat.com>
* Versions.def: Add GLIBC_2.6 to libpthread.
* include/shlib-compat.h (SHLIB_COMPAT): Expand parameters before use.
(versioned_symbol): Likewise.
(compat_symbol): Likewise.
* po/tr.po: Update from translation team.
* nis/Banner: Removed. It's been integral part forever and the
author info is incomplete anyway.
* libio/Banner: Likewise.
2006-10-06 Ulrich Drepper <drepper@redhat.com>
* version.h (VERSION): Bump to 2.5.90 for new development tree.
2007-01-12 05:51:07 +08:00
|
|
|
|
#ifdef SHARED
|
2016-11-23 20:12:03 +08:00
|
|
|
|
/* We are loading the executable itself when the dynamic
|
|
|
|
|
linker was executed directly. The setup will happen
|
|
|
|
|
later. Otherwise, the TLS data structures are already
|
|
|
|
|
initialized, and we assigned a TLS modid above. */
|
|
|
|
|
assert (l->l_prev == NULL || (mode & __RTLD_AUDIT) != 0);
|
|
|
|
|
#else
|
|
|
|
|
assert (false && "TLS not initialized in static application");
|
[BZ #2510, BZ #2830, BZ #3137, BZ #3313, BZ #3426, BZ #3465, BZ #3480, BZ #3483, BZ #3493, BZ #3514, BZ #3515, BZ #3664, BZ #3673, BZ #3674]
2007-01-11 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/soft-fp/sfp-machine.h: Remove.
* sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise.
2007-01-10 Ulrich Drepper <drepper@redhat.com>
* io/fts.c: Make sure fts_cur is always valid after return from
fts_read.
Patch by Miloslav Trmac <mitr@redhat.com>.
2006-10-27 Richard Sandiford <richard@codesourcery.com>
* elf/elf.h (R_MIPS_GLOB_DAT): Define.
(R_MIPS_NUM): Bump by 1.
2007-01-03 Jakub Jelinek <jakub@redhat.com>
* posix/execvp.c: Include alloca.h.
(allocate_scripts_argv): Renamed to...
(scripts_argv): ... this. Don't allocate buffer here nor count
arguments.
(execvp): Use alloca if possible.
* posix/Makefile: Add rules to build and run tst-vfork3 test.
* posix/tst-vfork3.c: New test.
* stdlib/Makefile (tst-strtod3-ENV): Define.
2007-01-02 Ulrich Drepper <drepper@redhat.com>
* posix/getconf.c: Update copyright year.
* nss/getent.c: Likewise.
* iconv/iconvconfig.c: Likewise.
* iconv/iconv_prog.c: Likewise.
* elf/ldconfig.c: Likewise.
* catgets/gencat.c: Likewise.
* csu/version.c: Likewise.
* elf/ldd.bash.in: Likewise.
* elf/sprof.c (print_version): Likewise.
* locale/programs/locale.c: Likewise.
* locale/programs/localedef.c: Likewise.
* nscd/nscd.c (print_version): Likewise.
* debug/xtrace.sh: Likewise.
* malloc/memusage.sh: Likewise.
* malloc/mtrace.pl: Likewise.
* debug/catchsegv.sh: Likewise.
2006-12-24 Ulrich Drepper <drepper@redhat.com>
* malloc/malloc.c (sYSMALLOc): Remove some unnecessary alignment
attempts.
2006-12-23 Ulrich Drepper <drepper@redhat.com>
* posix/wordexp.c: Remove some unnecessary tests.
2006-12-20 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
* sysdeps/unix/sysv/linux/sh/bits/shm.h: New file.
* nss/getXXbyYY_r.c: Include atomic.h.
(INTERNAL (REENTRANT_NAME)): Write startp after start_fct,
add atomic_write_barrier () in between.
2006-11-28 Jakub Jelinek <jakub@redhat.com>
* elf/dl-support.c: Include dl-procinfo.h.
* sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4,
PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS,
PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X):
Define.
(_dl_string_platform): Use PPC_PLATFORM_* macros instead of
hardcoded constants.
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use
PPC_PLATFORM_* macros for array designators.
2006-11-11 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap
names to the beginning.
(_dl_powerpc_platforms): Add "power6x".
* sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease.
(HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP.
(_DL_PLATFORMS_COUNT): Increase.
(_dl_string_platform): Handle power6x case.
* sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP,
PPC_FEATURE_POWER6_EXT): Define.
(PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.
[-2^31 .. 2^31) range.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Define ST_RELATIME.
* sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags):
Handle relatime mount option.
2006-12-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Include
kernel-features.h.
2006-12-11 Ulrich Drepper <drepper@redhat.com>
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Parse thousand
separators also if no non-zero digits found.
* stdlib/Makefile (tests): Add tst-strtod3.
[BZ #3664]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix test to recognize
empty parsed strings.
* stdlib/Makefile (tests): Add tst-strtod2.
* stdlib/tst-strtod2.c: New file.
[BZ #3673]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix exp_limit
computation.
* stdlib/Makefile (tests): Add tst-atof2.
* stdlib/tst-atof2.c: New file.
[BZ #3674]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Adjust exponent value
correctly if removing trailing zero of hex-float.
* stdlib/Makefile (tests): Add tst-atof1.
* stdlib/tst-atof1.c: New file.
* misc/mntent_r.c (__hasmntopt): Check p[optlen] even when p == rest.
Start searching for next comma at p rather than rest.
* misc/Makefile (tests): Add tst-mntent2.
* misc/tst-mntent2.c: New test.
2006-12-08 Ulrich Drepper <drepper@redhat.com>
* malloc/memusage.c: Handle realloc with new size of zero and
non-NULL pointer correctly.
(me): Really write first record twice.
(struct entry): Make format bi-arch safe.
(dest): Write out more realloc statistics.
* malloc/memusagestat.c (struct entry): Make format bi-arch safe.
2006-12-05 Jakub Jelinek <jakub@redhat.com>
* nis/nis_subr.c (nis_getnames): Revert last change.
2006-12-03 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/sys/io.h: Removed.
2006-11-30 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/i686/memcmp.S: Use jump table as the base of
jump table entries.
2006-11-30 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/i386/clone.S: Provide CFI for the outermost
`clone' function to ensure proper unwinding stop of gdb.
* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
2006-12-01 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd.init: Remove obsolete and commented-out -S option
handling.
2006-11-23 Jakub Jelinek <jakub@redhat.com>
[BZ #3514]
* manual/string.texi (strncmp): Fix pastos from wcscmp description.
[BZ #3515]
* manual/string.texi (strtok): Remove duplicate paragraph.
2006-12-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Fix compatibility with
libgcc not supporting `rflags' unwinding (register # >= 17).
2006-11-30 Jakub Jelinek <jakub@redhat.com>
* sunrpc/svc_run.c (svc_run): Set my_pollfd to new_pollfd if realloc
succeeded.
2006-11-29 Daniel Jacobowitz <dan@codesourcery.com>
Jakub Jelinek <jakub@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c (restore_rt): Add correct
unwind information.
* sysdeps/unix/sysv/linux/x86_64/Makefile: Provide symbols for
'restore_rt' even in the 'signal' directory.
* sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym: Extend the regs list.
malloc crashed. Don't allocate memory unnecessarily in each
loop.
2006-10-21 Jakub Jelinek <jakub@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Fix last change.
2006-11-20 Ulrich Drepper <drepper@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit.
2006-11-18 Bruno Haible <bruno@clisp.org>
* sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Invoke
__sysconf only after having tried to call getgroups32.
2006-11-19 Ulrich Drepper <drepper@redhat.com>
* nss/nss_files/files-hosts.c (LINE_PARSER): Support IPv6-style
addresses for IPv4 queries if they can be mapped.
2006-11-16 Jakub Jelinek <jakub@redhat.com>
* sysdeps/x86_64/fpu/s_copysignf.S (__copysignf): Switch to .text.
* sysdeps/x86_64/fpu/s_copysign.S (__copysign): Likewise.
(signmask): Add .size directive.
(othermask): Add .type directive.
2006-11-14 Ulrich Drepper <drepper@redhat.com>
* po/nl.po: Update from translation team.
* timezone/zdump.c: Redo fix for BZ #3137.
2006-11-14 Jakub Jelinek <jakub@redhat.com>
* nss/nss_files/files-alias.c (get_next_alias): Set line back
to first_unused after parsing :include: file.
* timezone/africa: Update from tzdata2006o.
* timezone/antarctica: Likewise.
* timezone/asia: Likewise.
* timezone/australasia: Likewise.
* timezone/backward: Likewise.
* timezone/europe: Likewise.
* timezone/iso3166.tab: Likewise.
* timezone/northamerica: Likewise.
* timezone/southamerica: Likewise.
* timezone/zone.tab: Likewise.
* time/tzfile.c (__tzfile_read): Extend to handle new file format
on machines with 64-bit time_t.
* timezone/checktab.awk: Update from tzcode2006o.
* timezone/ialloc.c: Likewise.
* timezone/private.h: Likewise.
* timezone/scheck.c: Likewise.
* timezone/tzfile.h: Likewise.
* timezone/tzselect.ksh: Likewise.
* timezone/zdump.c: Likewise.
* timezone/zic.c: Likewise.
[BZ #3483]
* elf/ldconfig.c (main): Call setlocale and textdomain.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
[BZ #3480]
* manual/argp.texi: Fix typos.
* manual/charset.texi: Likewise.
* manual/errno.texi: Likewise.
* manual/filesys.texi: Likewise.
* manual/lang.texi: Likewise.
* manual/maint.texi: Likewise.
* manual/memory.texi: Likewise.
* manual/message.texi: Likewise.
* manual/resource.texi: Likewise.
* manual/search.texi: Likewise.
* manual/signal.texi: Likewise.
* manual/startup.texi: Likewise.
* manual/stdio.texi: Likewise.
* manual/sysinfo.texi: Likewise.
* manual/syslog.texi: Likewise.
* manual/time.texi: Likewise.
Patch by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
[BZ #3465]
* sunrpc/clnt_raw.c: Minimal message improvements.
* sunrpc/pm_getmaps.c: Likewise.
* nis/nss_nisplus/nisplus-publickey.c: Likewise.
* nis/nis_print_group_entry.c: Likewise.
* locale/programs/repertoire.c: Likewise.
* locale/programs/charmap.c: Likewise.
* malloc/memusage.sh: Likewise.
* elf/dl-deps.c: Likewise.
* locale/programs/ld-collate.c: Likewise.
* libio/vswprintf.c: Likewise.
* malloc/memusagestat.c: Likewise.
* sunrpc/auth_unix.c: Likewise.
* sunrpc/rpc_main.c: Likewise.
* nscd/cache.c: Likewise.
* locale/programs/repertoire.c: Unify output messages.
* locale/programs/charmap.c: Likewise.
* locale/programs/ld-ctype.c: Likewise.
* locale/programs/ld-monetary.c: Likewise.
* locale/programs/ld-numeric.c: Likewise.
* locale/programs/ld-time.c: Likewise.
* elf/ldconfig.c: Likewise.
* nscd/selinux.c: Likewise.
* elf/cache.c: Likewise.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
2006-11-10 Jakub Jelinek <jakub@redhat.com>
* string/strxfrm_l.c (STRXFRM): Fix trailing \1 optimization
if N is one bigger than return value.
* string/tst-strxfrm2.c (do_test): Also test strxfrm with l1 + 1
and l1 last arguments, if buf is defined, verify the return value
equals to strlen (buf) and verify no byte beyond passed length
is modified.
2006-11-10 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
* sysdeps/gnu/siglist.c (__old_sys_siglist, __old_sys_sigabbrev):
Use __new_sys_siglist instead of _sys_siglist_internal as
second macro argument.
(_old_sys_siglist): Use declare_symbol_alias macro instead of
strong_alias.
2006-11-09 Ulrich Drepper <drepper@redhat.com>
[BZ #3493]
* posix/unistd.h (sysconf): Remove const attribute.
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Fix test for
temporary or deprecated addresses.
Patch by Sridhar Samudrala <sri@us.ibm.com>.
* string/Makefile (tests): Add tst-strxfrm2.
* string/tst-strxfrm2.c: New file.
2006-10-09 Jakub Jelinek <jakub@redhat.com>
* elf/dl-debug.c (_dl_debug_initialize): Check r->r_map for 0
rather than r->r_brk.
* string/strxfrm_l.c (STRXFRM): Do the trailing \1 removal
optimization even if needed > n.
2006-11-07 Jakub Jelinek <jakub@redhat.com>
* include/libc-symbols.h (declare_symbol): Rename to...
(declare_symbol_alias): ... this. Add ORIGINAL argument, imply
strong_alias (ORIGINAL, SYMBOL) in asm to make sure it preceedes
.size directive.
* sysdeps/gnu/errlist-compat.awk: Adjust for declare_symbol_alias
changes.
* sysdeps/gnu/siglist.c: Likewise.
2006-11-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/fpu/bits/mathinline.h
[__LIBC_INTERNAL_MATH_INLINES]: Moved to ...
* sysdeps/powerpc/fpu/math_private.h: ...here. New file.
2006-11-05 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word):
Update handling of cache descriptor 0x49 for new models.
* sysdeps/unix/sysv/linux/x86_64/sysconf.c (intel_check_word):
Likewise.
2006-11-02 Ulrich Drepper <drepper@redhat.com>
* configure.in: Work around ld --help change and avoid -z relro
test completely if the architecture doesn't care about security.
2006-11-01 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
2006-10-31 Ulrich Drepper <drepper@redhat.com>
* stdlib/atexit.c (atexit): Don't mark as hidden when used to
generate compatibility version.
2006-10-29 Ulrich Drepper <drepper@redhat.com>
* configure.in: Relax -z relro requirement a bit.
* po/sv.po: Update from translation team.
2006-10-29 Jakub Jelinek <jakub@redhat.com>
* elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise.
* elf/dl-close.c (_dl_close_worker): Likewise.
* elf/dl-open.c (_dl_open_worker): Likewise.
* sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define.
* configure.in: Require assembler support for visibility, compiler
support for visibility and aliases, linker support for various -z
options.
* Makeconfig: Remove conditional code which now is unnecessary.
* config.h.in: Likewise.
* config.make.in: Likewise.
* dlfcn/Makefile: Likewise.
* elf/Makefile: Likewise.
* elf/dl-load.c: Likewise.
* elf/rtld.c: Likewise.
* include/libc-symbols.h: Likewise.
* include/stdio.h: Likewise.
* io/Makefile: Likewise.
* io/fstat.c: Likewise.
* io/fstat64.c: Likewise.
* io/fstatat.c: Likewise.
* io/fstatat64.c: Likewise.
* io/lstat.c: Likewise.
* io/lstat64.c: Likewise.
* io/mknod.c: Likewise.
* io/mknodat.c: Likewise.
* io/stat.c: Likewise.
* io/stat64.c: Likewise.
* libio/stdio.c: Likewise.
* nscd/Makefile: Likewise.
* stdlib/Makefile: Likewise.
* stdlib/atexit.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/i386/sysdep.h: Likewise.
* sysdeps/i386/i686/memcmp.S: Likewise.
* sysdeps/powerpc/powerpc32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
* Makerules: USE_TLS support is now default.
* tls.make.c: Likewise.
* csu/Versions: Likewise.
* csu/libc-start.c: Likewise.
* csu/libc-tls.c: Likewise.
* csu/version.c: Likewise.
* dlfcn/dlinfo.c: Likewise.
* elf/dl-addr.c: Likewise.
* elf/dl-cache.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-iteratephdr.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-support.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-sysdep.c: Likewise.
* elf/dl-tls.c: Likewise.
* elf/ldconfig.c: Likewise.
* elf/rtld.c: Likewise.
* elf/tst-tls-dlinfo.c: Likewise.
* elf/tst-tls1.c: Likewise.
* elf/tst-tls10.h: Likewise.
* elf/tst-tls14.c: Likewise.
* elf/tst-tls2.c: Likewise.
* elf/tst-tls3.c: Likewise.
* elf/tst-tls4.c: Likewise.
* elf/tst-tls5.c: Likewise.
* elf/tst-tls6.c: Likewise.
* elf/tst-tls7.c: Likewise.
* elf/tst-tls8.c: Likewise.
* elf/tst-tls9.c: Likewise.
* elf/tst-tlsmod1.c: Likewise.
* elf/tst-tlsmod13.c: Likewise.
* elf/tst-tlsmod13a.c: Likewise.
* elf/tst-tlsmod14a.c: Likewise.
* elf/tst-tlsmod2.c: Likewise.
* elf/tst-tlsmod3.c: Likewise.
* elf/tst-tlsmod4.c: Likewise.
* elf/tst-tlsmod5.c: Likewise.
* elf/tst-tlsmod6.c: Likewise.
* include/errno.h: Likewise.
* include/link.h: Likewise.
* include/tls.h: Likewise.
* locale/global-locale.c: Likewise.
* locale/localeinfo.h: Likewise.
* malloc/arena.c: Likewise.
* malloc/hooks.c: Likewise.
* malloc/malloc.c: Likewise.
* resolv/Versions: Likewise.
* sysdeps/alpha/dl-machine.h: Likewise.
* sysdeps/alpha/libc-tls.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/generic/tls.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/ia64/dl-machine.h: Likewise.
* sysdeps/ia64/libc-tls.c: Likewise.
* sysdeps/mach/hurd/fork.c: Likewise.
* sysdeps/mach/hurd/i386/tls.h: Likewise.
* sysdeps/powerpc/powerpc32/dl-machine.c: Likwise.
* sysdeps/powerpc/powerpc32/dl-machine.h: Likewise.
* sysdeps/powerpc/powerpc64/dl-machine.h: Likewise.
* sysdeps/s390/libc-tls.c: Likewise.
* sysdeps/s390/s390-32/dl-machine.h: Likewise.
* sysdeps/s390/s390-64/dl-machine.h: Likewise.
* sysdeps/sh/dl-machine.h: Likewise.
* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
* sysdeps/x86_64/dl-machine.h: Likewise.
[BZ #3426]
* stdlib/stdlib.h: Adjust comment for canonicalize_file_name to
reality.
2006-10-27 Jakub Jelinek <jakub@redhat.com>
* elf/dl-lookup.c (_dl_debug_bindings): Remove unused symbol_scope
argument.
(_dl_lookup_symbol_x): Adjust caller.
* sysdeps/generic/ldsodefs.h (struct link_namespaces): Remove
_ns_global_scope.
* elf/rtld.c (dl_main): Don't initialize _ns_global_scope.
* elf/dl-libc.c: Revert l_scope name changes.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-close.c (_dl_close): Likewise.
* elf/dl-open.c (dl_open_worker): Likewise. If not SINGLE_THREAD_P,
always use __rtld_mrlock_{change,done}. Always free old scope list
here if not l_scope_mem.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Revert l_scope name
change. Never free scope list here. Just __rtld_mrlock_lock before
the lookup and __rtld_mrlock_unlock it after the lookup.
* elf/dl-sym.c: Likewise.
* include/link.h (struct r_scoperec): Remove.
(struct link_map): Replace l_scoperec with l_scope, l_scoperec_mem
with l_scope_mem and l_scoperec_lock with l_scope_lock.
2006-10-25 Ulrich Drepper <drepper@redhat.com>
* sysdeps/gnu/netinet/tcp.h: Define TCP_CONGESTION.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* configure.in: Disable building profile libraries by default.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* elf/dl-lookup.c (_dl_lookup_symbol_x): Add warning to
_dl_lookup_symbol_x code.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* elf/dl-runtime.c: Include sysdep-cancel.h.
(_dl_fixup, _dl_profile_fixup): Use __rtld_mrlock_* and
scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_*
instead of catomic_* macros.
* elf/dl-sym.c: Include sysdep-cancel.h.
(do_sym): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-close.c: Include sysdep-cancel.h.
(_dl_close): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-open.c: Include sysdep-cancel.h.
(dl_open_worker): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Set maxfb to address of last
fastbin rather than end of fastbin array.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/i486/bits/atomic.h (catomic_decrement): Use correct
body macro.
* sysdeps/x86_64/bits/atomic.h
(__arch_c_compare_and_exchange_val_64_acq): Add missing casts.
(catomic_decrement): Use correct body macro.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* include/atomic.h: Add a unique prefix to all local variables
in macros.
* csu/tst-atomic.c (do_test): Test also catomic_* macros.
2006-10-14 Ulrich Drepper <drepper@redhat.com>
* resolv/arpa/nameser.h: Document that ns_t_a6 is deprecated.
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to
determine highest fast bin to consolidate, always look into all of
them.
(do_check_malloc_state): Only require for empty bins for large
sizes in main arena.
* libio/stdio.h: Add more __wur attributes.
2006-11-12 Andreas Jaeger <aj@suse.de>
[BZ #2510]
* manual/search.texi (Hash Search Function): Clarify.
(Array Search Function): Clarify.
2006-11-12 Joseph Myers <joseph@codesourcery.com>
[BZ #2830]
* math/atest-exp.c (main): Cast hex value to mp_limb_t before
shifting.
* math/atest-exp2.c (read_mpn_hex): Likewise.
* math/atest-sincos.c (main): Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Add epoll_pwait.
* sysdeps/unix/sysv/linux/sys/epoll.h: Declare epoll_pwait.
* sysdeps/unix/sysv/linux/Versions (libc): Add epoll_pwait for
version GLIBC_2.6.
* Versions.def: Add GLIBC_2.6 for libc.
* sysdeps/i386/i486/bits/atomic.h: Add catomic_* support.
2006-10-11 Jakub Jelinek <jakub@redhat.com>
* malloc/malloc.c (_int_malloc): Remove unused any_larger variable.
* nis/nis_defaults.c (__nis_default_access): Don't call getenv twice.
* nis/nis_subr.c (nis_getnames): Use __secure_getenv instead of getenv.
* sysdeps/generic/unsecvars.h: Add NIS_PATH.
2006-10-11 Ulrich Drepper <drepper@redhat.com>
* include/atomic.c: Define catomic_* operations.
* sysdeps/x86_64/bits/atomic.h: Likewise. Fix a few minor problems.
* stdlib/cxa_finalize.c: Use catomic_* operations instead of atomic_*.
* malloc/memusage.c: Likewise.
* gmon/mcount.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-profile.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-runtime.c: Likewise.
* elf/dl-fptr.c: Likewise.
* resolv/res_libc.c: Likewise.
2006-10-10 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/utimes.c: Use a union to avoid an improper cast.
* sysdeps/mach/hurd/futimes.c: Likewise.
* sysdeps/mach/hurd/lutimes.c: Likewise.
2006-10-09 Ulrich Drepper <drepper@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Implement reference counting of scope records.
* elf/dl-close.c (_dl_close): Remove all scopes from removed objects
from the list in objects which remain. Always allocate new scope
record.
* elf/dl-open.c (dl_open_worker): When growing array for scopes,
don't resize, allocate a new one.
* elf/dl-runtime.c: Update reference counters before using a scope
array.
* elf/dl-sym.c: Likewise.
* elf/dl-libc.c: Adjust for l_scope name change.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* include/link.h: Include <rtld-lowlevel.h>. Define struct
r_scoperec. Replace r_scope with pointer to r_scoperec structure.
Add l_scoperec_lock.
* sysdeps/generic/ldsodefs.h: Include <rtld-lowlevel.h>.
* sysdeps/generic/rtld-lowlevel.h: New file.
* include/atomic.h: Rename atomic_and to atomic_and_val and
atomic_or to atomic_or_val. Define new macros atomic_and and
atomic_or which do not return values.
* sysdeps/x86_64/bits/atomic.h: Define atomic_and and atomic_or.
Various cleanups.
* sysdeps/i386/i486/bits/atomic.h: Likewise.
* po/sv.po: Update from translation team.
2006-10-07 Ulrich Drepper <drepper@redhat.com>
* Versions.def: Add GLIBC_2.6 to libpthread.
* include/shlib-compat.h (SHLIB_COMPAT): Expand parameters before use.
(versioned_symbol): Likewise.
(compat_symbol): Likewise.
* po/tr.po: Update from translation team.
* nis/Banner: Removed. It's been integral part forever and the
author info is incomplete anyway.
* libio/Banner: Likewise.
2006-10-06 Ulrich Drepper <drepper@redhat.com>
* version.h (VERSION): Bump to 2.5.90 for new development tree.
2007-01-12 05:51:07 +08:00
|
|
|
|
#endif
|
2002-07-16 08:18:20 +08:00
|
|
|
|
break;
|
2003-09-23 20:06:48 +08:00
|
|
|
|
|
|
|
|
|
case PT_GNU_STACK:
|
|
|
|
|
stack_flags = ph->p_flags;
|
|
|
|
|
break;
|
2004-01-13 16:36:54 +08:00
|
|
|
|
|
|
|
|
|
case PT_GNU_RELRO:
|
|
|
|
|
l->l_relro_addr = ph->p_vaddr;
|
|
|
|
|
l->l_relro_size = ph->p_memsz;
|
|
|
|
|
break;
|
1995-10-09 15:06:29 +08:00
|
|
|
|
}
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (nloadcmds == 0))
|
2003-03-14 11:59:59 +08:00
|
|
|
|
{
|
|
|
|
|
/* This only happens for a bogus object that will be caught with
|
|
|
|
|
another error below. But we don't want to go through the
|
|
|
|
|
calculations below using NLOADCMDS - 1. */
|
|
|
|
|
errstring = N_("object file has no loadable segments");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-04 01:47:14 +08:00
|
|
|
|
if (__glibc_unlikely (type != ET_DYN)
|
|
|
|
|
&& __glibc_unlikely ((mode & __RTLD_OPENEXEC) == 0))
|
2004-09-20 15:43:16 +08:00
|
|
|
|
{
|
2014-04-04 01:47:14 +08:00
|
|
|
|
/* This object is loaded at a fixed address. This must never
|
|
|
|
|
happen for objects loaded with dlopen. */
|
2004-09-20 15:43:16 +08:00
|
|
|
|
errstring = N_("cannot dynamically load executable");
|
|
|
|
|
goto call_lose;
|
Update.
1997-03-08 05:30 Ulrich Drepper <drepper@cygnus.com>
* argp/Makefile (routines): Add argp-eexst.
* argp/argp-ba.c (argp_program_bug_address): Make `const'.
* argp/argp-eexst.c: New file. Define exit status variable.
* argp/argp-help.c (__argp_state_help): Use argp_err_exit_status
variable instead of always exiting with value 1.
* argp/argp-pv.c (argp_program_version): Make `const'.
* argp/argp.h: Declare argp_err_exit_status.
Patches by Miles Bader <miles@gnu.ai.mit.edu>.
* locale/programs/localedef.c: Use argp_err_exit_status to
terminate with correct value.
* inet/rcmd.c (iruserok): Use euidaccess instead of half-hearted
switching of UID before opening .rhosts.
* libio/vsnprintf.c: Change implementation to follow ISO C 9X
proposal. The return value now is always the number of characters
which would be written if enough space is available.
* manual/stdio.texi: Update description for new behaviour.
* locale/locale.h (__locale_t): Don't use __locale_t for struct
name and pointer to struct since old gccs cannot keep the namespaces
apart. Rename struct to __locale_struct.
* locale/duplocale.h: Likewise.
* locale/newlocale.h: Likewise.
* math/Makefile (headers): Add complex.h and cmathcalls.h.
(routines): Remove w_cabs. Add conj, cimag, creal, and cabs.
* math/math.h: Undefine __MATHDECL_1, __MATHDECL, and __MATHCALL
after use.
(signgam): Move declaration to here from mathcalls.h.
* math/mathcalls.h (cabs, __cabs_complex, signgam): Remove definition.
Correct comment for fmin and fmax.
Start implementing complex math function from ISO C 9X.
* math/complex.h: New file.
* math/cmathcalls.h: New file.
* math/cabs.c: New file.
* math/cabsf.c: New file.
* math/cabsl.c: New file.
* math/cimag.c: New file.
* math/cimagf.c: New file.
* math/cimagl.c: New file.
* math/conj.c: New file.
* math/conjf.c: New file.
* math/conjl.c: New file.
* math/creal.c: New file.
* math/crealf.c: New file.
* math/creall.c: New file.
* sysdeps/libm-ieee754/w_cabs.c: Removed.
* sysdeps/libm-ieee754/w_cabsf.c: Removed.
* sysdeps/libm-ieee754/w_cabsl.c: Removed.
* posix/regex.c: Merge with regex sources from Arnold Robbins'
version in GNU awk.
* posix/regex.h: Likewise.
Add regex test suite by Tom Lord.
* posix/Makefile (distribute): Add TESTS, TESTS2C.sed, and testcases.h.
(tests): Add runtests.
(before-compile): Add testcases.h.
(testcases.h): New rule to generate header with tests.
* posix/TESTS: New file.
* posix/TESTS2C.sed.: New file.
* posix/runtests.c: New file.
* posix/testcases.h: New file.
* sysdeps/unix/sysv/linux/poll.c: Test whether poll syscall is
available and use fall-back implementation if not.
* sysdeps/unix/sysv/linux/syscalls.list: Sort entries.
* time/ialloc.c: Update from tzcode1997c.
* time/private.h: Likewise.
* time/scheck.c: Likewise.
* time/tzselect.ksh: Likewise.
* time/zdump.c: Likewise.
* time/zic.c: Likewise.
* time/tzfile.c: Pretty print.
1997-03-06 07:37 Geoff Keating <geoffk@ozemail.com.au>
Port to powerpc-*-linux-gnu. Slightly tested, under MkLinux,
on a 601.
* sysdeps/powerpc/Implies: Added.
* sysdeps/powerpc/__longjmp.S: Added.
* sysdeps/powerpc/__math.h: Added.
* sysdeps/powerpc/bsd-_setjmp.S: Added.
* sysdeps/powerpc/bsd-setjmp.S: Added.
* sysdeps/powerpc/dl-machine.h: Added.
* sysdeps/powerpc/ffs.c: Added.
* sysdeps/powerpc/fpu_control.h: Added.
* sysdeps/powerpc/jmp_buf.h: Added.
* sysdeps/powerpc/setjmp.S: Added.
* sysdeps/powerpc/strlen.s: Added.
* sysdeps/powerpc/elf/start.c: Added.
* sysdeps/powerpc/fpu_control.h: Added.
* sysdeps/powerpc/jmp_buf.h: Added.
* sysdeps/unix/sysv/linux/powerpc/Dist: Added.
* sysdeps/unix/sysv/linux/powerpc/_exit.S: Added.
* sysdeps/unix/sysv/linux/powerpc/brk.c: Added.
* sysdeps/unix/sysv/linux/powerpc/clone.S: Added.
* sysdeps/unix/sysv/linux/powerpc/init-first.h: Added.
* sysdeps/unix/sysv/linux/powerpc/ioctl-types.h: Added.
* sysdeps/unix/sysv/linux/powerpc/profil.c: Added.
* sysdeps/unix/sysv/linux/powerpc/sigreturn.S: Added.
* sysdeps/unix/sysv/linux/powerpc/socket.S: Added.
* sysdeps/unix/sysv/linux/powerpc/syscall.S: Added.
* sysdeps/unix/sysv/linux/powerpc/syscalls.list: Added.
* sysdeps/unix/sysv/linux/powerpc/sysdep.c: Added.
* sysdeps/unix/sysv/linux/powerpc/sysdep.h: Added.
* sysdeps/unix/sysv/linux/powerpc/termbits.h: Added.
* sysdeps/unix/sysv/linux/powerpc/sys/syscall.h: Added.
1997-03-05 05:24 Geoff Keating <geoffk@ozemail.com.au>
* elf/dl-runtime.c (fixup): Add ELF_FIXUP_RETURNS_ADDRESS switch,
because knowing the first instruction of a PowerPC PLT trampoline
is not very helpful.
1997-03-04 08:04 Geoff Keating <geoffk@ozemail.com.au>
* elf/dl-load.c (ELF_PREFERRED_ADDRESS, ELF_PREFERRED_ADDRESS_DATA,
ELF_FIXED_ADDRESS): Added. These are for dl-machine.h to indicate
a preference as to where executables should be loaded.
1997-02-28 08:50 Geoff Keating <geoffk@ozemail.com.au>
* elf/elf.h: Add in all those PowerPC reloc types.
1997-02-24 07:12 Geoff Keating <geoffk@ozemail.com.au>
* stdio-common/vfscanf.c: Use __va_copy if available.
1997-03-06 13:50 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* malloc/malloc.c (mprotect) [_LIBC]: Define as __mprotect to
clean up namespace.
1997-03-07 14:27 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/s_fpclassify.c (__fpclassify): Don't use
non-existing GET_WORDS macro, use EXTRACT_WORDS.
Reported by Andres Schwab <schwab@issan.informatik.uni-dortmund.de>.
1997-03-07 05:27 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/i386/sigaction.c: The user- and
kernel-level sigaction structure is different. handle this
correctly.
Bug report by Andres Jaeger <jaeger@informatik.uni-kl.de>.
1997-03-06 05:55 David Engel <david@sw.ods.com>
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Also
recognize cache entries with flag == 3.
1997-03-06 01:05 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/netinet/in.h (INADDR_NONE): Cast to unsigned int.
(INADDR_LOOPBACK): Likewise.
* sysdeps/unix/sysv/linux/netinet/in.h: Likewise.
* manual/socket.texi: Correct types of INADDR_* constants from
unsigned long to unsigned.
1997-03-05 23:14 Ulrich Drepper <drepper@cygnus.com>
* time/antarctica: Update from tzdata1997c.
* time/asia: Likewise.
* time/zone.tab: Likewise.
1997-03-05 00:43 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* configure.in (libc_cv_asm_symver_directive,
libc_cv_ld_version_script_option): Remove unknown instruction from
assembler test file.
1997-03-04 19:14 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/__math.h: Update feature tests to use
__USE_ISOC9X.
[__USE_ISOC9X]: Define __log2 and __exp2 inlines.
(fabs): Remove defininition, it is a gcc builtin.
(sqrt, __sqrt): Remove definition, they have wrappers in libm.
1997-03-04 10:11 H.J. Lu <hjl@lucon.org>
* sunrpc/Makefile ($(objpfx)rpc-proto.c): Create subdir before
generating file.
1997-03-05 03:59 Ulrich Drepper <drepper@cygnus.com>
* inet/rcmd.c (__ivaliduser): Don't use getline, but __getline
instead to avoid namespace problems.
Reported by David Mosberger-Tang <davidm@AZStarNet.COM>.
1997-03-03 19:01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* login/utmp_file.c: Fix previous change. Make portable by
checking the _HAVE_UT_* feature macros.
* libio/fileops.c (_IO_file_finish): Likewise.
1997-03-08 13:28:20 +08:00
|
|
|
|
}
|
1995-10-09 15:06:29 +08:00
|
|
|
|
|
2014-04-04 01:47:14 +08:00
|
|
|
|
/* Length of the sections to be loaded. */
|
|
|
|
|
maplength = loadcmds[nloadcmds - 1].allocend - loadcmds[0].mapstart;
|
|
|
|
|
|
|
|
|
|
/* Now process the load commands and map segments into memory.
|
|
|
|
|
This is responsible for filling in:
|
|
|
|
|
l_map_start, l_map_end, l_addr, l_contiguous, l_text_end, l_phdr
|
|
|
|
|
*/
|
|
|
|
|
errstring = _dl_map_segments (l, fd, header, type, loadcmds, nloadcmds,
|
2015-07-15 04:15:26 +08:00
|
|
|
|
maplength, has_holes, loader);
|
2014-04-04 01:47:14 +08:00
|
|
|
|
if (__glibc_unlikely (errstring != NULL))
|
|
|
|
|
goto call_lose;
|
1995-10-09 15:06:29 +08:00
|
|
|
|
}
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
1995-10-09 15:06:29 +08:00
|
|
|
|
if (l->l_ld == 0)
|
|
|
|
|
{
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (type == ET_DYN))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("object file has no dynamic section");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
1995-10-09 15:06:29 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
2004-02-22 02:25:59 +08:00
|
|
|
|
l->l_ld = (ElfW(Dyn) *) ((ElfW(Addr)) l->l_ld + l->l_addr);
|
1995-10-01 05:18:30 +08:00
|
|
|
|
|
2003-05-21 06:36:38 +08:00
|
|
|
|
elf_get_dynamic_info (l, NULL);
|
2000-07-21 12:12:25 +08:00
|
|
|
|
|
2004-09-20 15:43:16 +08:00
|
|
|
|
/* Make sure we are not dlopen'ing an object that has the
|
|
|
|
|
DF_1_NOOPEN flag set. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (l->l_flags_1 & DF_1_NOOPEN)
|
2000-07-21 12:12:25 +08:00
|
|
|
|
&& (mode & __RTLD_DLOPEN))
|
|
|
|
|
{
|
|
|
|
|
/* We are not supposed to load this object. Free all resources. */
|
2014-04-04 01:47:14 +08:00
|
|
|
|
_dl_unmap_segments (l);
|
2000-07-21 12:12:25 +08:00
|
|
|
|
|
2001-09-09 04:03:14 +08:00
|
|
|
|
if (!l->l_libname->dont_free)
|
|
|
|
|
free (l->l_libname);
|
2000-07-21 12:12:25 +08:00
|
|
|
|
|
|
|
|
|
if (l->l_phdr_allocated)
|
|
|
|
|
free ((void *) l->l_phdr);
|
|
|
|
|
|
2001-11-07 15:44:06 +08:00
|
|
|
|
errstring = N_("shared object cannot be dlopen()ed");
|
|
|
|
|
goto call_lose;
|
2000-07-21 12:12:25 +08:00
|
|
|
|
}
|
|
|
|
|
|
2004-09-20 15:43:16 +08:00
|
|
|
|
if (l->l_phdr == NULL)
|
|
|
|
|
{
|
|
|
|
|
/* The program header is not contained in any of the segments.
|
|
|
|
|
We have to allocate memory ourself and copy it over from out
|
|
|
|
|
temporary place. */
|
|
|
|
|
ElfW(Phdr) *newp = (ElfW(Phdr) *) malloc (header->e_phnum
|
|
|
|
|
* sizeof (ElfW(Phdr)));
|
|
|
|
|
if (newp == NULL)
|
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot allocate memory for program header");
|
|
|
|
|
goto call_lose_errno;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
l->l_phdr = memcpy (newp, phdr,
|
|
|
|
|
(header->e_phnum * sizeof (ElfW(Phdr))));
|
|
|
|
|
l->l_phdr_allocated = 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
/* Adjust the PT_PHDR value by the runtime load address. */
|
|
|
|
|
l->l_phdr = (ElfW(Phdr) *) ((ElfW(Addr)) l->l_phdr + l->l_addr);
|
|
|
|
|
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely ((stack_flags &~ GL(dl_stack_flags)) & PF_X))
|
2004-09-19 10:48:59 +08:00
|
|
|
|
{
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (__check_caller (RETURN_ADDRESS (0), allow_ldso) != 0))
|
2005-09-20 15:46:12 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("invalid caller");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
|
|
|
|
|
2004-09-19 10:48:59 +08:00
|
|
|
|
/* The stack is presently not executable, but this module
|
|
|
|
|
requires that it be executable. We must change the
|
|
|
|
|
protection of the variable which contains the flags used in
|
|
|
|
|
the mprotect calls. */
|
[BZ #2510, BZ #2830, BZ #3137, BZ #3313, BZ #3426, BZ #3465, BZ #3480, BZ #3483, BZ #3493, BZ #3514, BZ #3515, BZ #3664, BZ #3673, BZ #3674]
2007-01-11 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/soft-fp/sfp-machine.h: Remove.
* sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise.
2007-01-10 Ulrich Drepper <drepper@redhat.com>
* io/fts.c: Make sure fts_cur is always valid after return from
fts_read.
Patch by Miloslav Trmac <mitr@redhat.com>.
2006-10-27 Richard Sandiford <richard@codesourcery.com>
* elf/elf.h (R_MIPS_GLOB_DAT): Define.
(R_MIPS_NUM): Bump by 1.
2007-01-03 Jakub Jelinek <jakub@redhat.com>
* posix/execvp.c: Include alloca.h.
(allocate_scripts_argv): Renamed to...
(scripts_argv): ... this. Don't allocate buffer here nor count
arguments.
(execvp): Use alloca if possible.
* posix/Makefile: Add rules to build and run tst-vfork3 test.
* posix/tst-vfork3.c: New test.
* stdlib/Makefile (tst-strtod3-ENV): Define.
2007-01-02 Ulrich Drepper <drepper@redhat.com>
* posix/getconf.c: Update copyright year.
* nss/getent.c: Likewise.
* iconv/iconvconfig.c: Likewise.
* iconv/iconv_prog.c: Likewise.
* elf/ldconfig.c: Likewise.
* catgets/gencat.c: Likewise.
* csu/version.c: Likewise.
* elf/ldd.bash.in: Likewise.
* elf/sprof.c (print_version): Likewise.
* locale/programs/locale.c: Likewise.
* locale/programs/localedef.c: Likewise.
* nscd/nscd.c (print_version): Likewise.
* debug/xtrace.sh: Likewise.
* malloc/memusage.sh: Likewise.
* malloc/mtrace.pl: Likewise.
* debug/catchsegv.sh: Likewise.
2006-12-24 Ulrich Drepper <drepper@redhat.com>
* malloc/malloc.c (sYSMALLOc): Remove some unnecessary alignment
attempts.
2006-12-23 Ulrich Drepper <drepper@redhat.com>
* posix/wordexp.c: Remove some unnecessary tests.
2006-12-20 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
* sysdeps/unix/sysv/linux/sh/bits/shm.h: New file.
* nss/getXXbyYY_r.c: Include atomic.h.
(INTERNAL (REENTRANT_NAME)): Write startp after start_fct,
add atomic_write_barrier () in between.
2006-11-28 Jakub Jelinek <jakub@redhat.com>
* elf/dl-support.c: Include dl-procinfo.h.
* sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4,
PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS,
PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X):
Define.
(_dl_string_platform): Use PPC_PLATFORM_* macros instead of
hardcoded constants.
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use
PPC_PLATFORM_* macros for array designators.
2006-11-11 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap
names to the beginning.
(_dl_powerpc_platforms): Add "power6x".
* sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease.
(HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP.
(_DL_PLATFORMS_COUNT): Increase.
(_dl_string_platform): Handle power6x case.
* sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP,
PPC_FEATURE_POWER6_EXT): Define.
(PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.
[-2^31 .. 2^31) range.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Define ST_RELATIME.
* sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags):
Handle relatime mount option.
2006-12-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Include
kernel-features.h.
2006-12-11 Ulrich Drepper <drepper@redhat.com>
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Parse thousand
separators also if no non-zero digits found.
* stdlib/Makefile (tests): Add tst-strtod3.
[BZ #3664]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix test to recognize
empty parsed strings.
* stdlib/Makefile (tests): Add tst-strtod2.
* stdlib/tst-strtod2.c: New file.
[BZ #3673]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix exp_limit
computation.
* stdlib/Makefile (tests): Add tst-atof2.
* stdlib/tst-atof2.c: New file.
[BZ #3674]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Adjust exponent value
correctly if removing trailing zero of hex-float.
* stdlib/Makefile (tests): Add tst-atof1.
* stdlib/tst-atof1.c: New file.
* misc/mntent_r.c (__hasmntopt): Check p[optlen] even when p == rest.
Start searching for next comma at p rather than rest.
* misc/Makefile (tests): Add tst-mntent2.
* misc/tst-mntent2.c: New test.
2006-12-08 Ulrich Drepper <drepper@redhat.com>
* malloc/memusage.c: Handle realloc with new size of zero and
non-NULL pointer correctly.
(me): Really write first record twice.
(struct entry): Make format bi-arch safe.
(dest): Write out more realloc statistics.
* malloc/memusagestat.c (struct entry): Make format bi-arch safe.
2006-12-05 Jakub Jelinek <jakub@redhat.com>
* nis/nis_subr.c (nis_getnames): Revert last change.
2006-12-03 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/sys/io.h: Removed.
2006-11-30 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/i686/memcmp.S: Use jump table as the base of
jump table entries.
2006-11-30 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/i386/clone.S: Provide CFI for the outermost
`clone' function to ensure proper unwinding stop of gdb.
* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
2006-12-01 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd.init: Remove obsolete and commented-out -S option
handling.
2006-11-23 Jakub Jelinek <jakub@redhat.com>
[BZ #3514]
* manual/string.texi (strncmp): Fix pastos from wcscmp description.
[BZ #3515]
* manual/string.texi (strtok): Remove duplicate paragraph.
2006-12-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Fix compatibility with
libgcc not supporting `rflags' unwinding (register # >= 17).
2006-11-30 Jakub Jelinek <jakub@redhat.com>
* sunrpc/svc_run.c (svc_run): Set my_pollfd to new_pollfd if realloc
succeeded.
2006-11-29 Daniel Jacobowitz <dan@codesourcery.com>
Jakub Jelinek <jakub@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c (restore_rt): Add correct
unwind information.
* sysdeps/unix/sysv/linux/x86_64/Makefile: Provide symbols for
'restore_rt' even in the 'signal' directory.
* sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym: Extend the regs list.
malloc crashed. Don't allocate memory unnecessarily in each
loop.
2006-10-21 Jakub Jelinek <jakub@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Fix last change.
2006-11-20 Ulrich Drepper <drepper@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit.
2006-11-18 Bruno Haible <bruno@clisp.org>
* sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Invoke
__sysconf only after having tried to call getgroups32.
2006-11-19 Ulrich Drepper <drepper@redhat.com>
* nss/nss_files/files-hosts.c (LINE_PARSER): Support IPv6-style
addresses for IPv4 queries if they can be mapped.
2006-11-16 Jakub Jelinek <jakub@redhat.com>
* sysdeps/x86_64/fpu/s_copysignf.S (__copysignf): Switch to .text.
* sysdeps/x86_64/fpu/s_copysign.S (__copysign): Likewise.
(signmask): Add .size directive.
(othermask): Add .type directive.
2006-11-14 Ulrich Drepper <drepper@redhat.com>
* po/nl.po: Update from translation team.
* timezone/zdump.c: Redo fix for BZ #3137.
2006-11-14 Jakub Jelinek <jakub@redhat.com>
* nss/nss_files/files-alias.c (get_next_alias): Set line back
to first_unused after parsing :include: file.
* timezone/africa: Update from tzdata2006o.
* timezone/antarctica: Likewise.
* timezone/asia: Likewise.
* timezone/australasia: Likewise.
* timezone/backward: Likewise.
* timezone/europe: Likewise.
* timezone/iso3166.tab: Likewise.
* timezone/northamerica: Likewise.
* timezone/southamerica: Likewise.
* timezone/zone.tab: Likewise.
* time/tzfile.c (__tzfile_read): Extend to handle new file format
on machines with 64-bit time_t.
* timezone/checktab.awk: Update from tzcode2006o.
* timezone/ialloc.c: Likewise.
* timezone/private.h: Likewise.
* timezone/scheck.c: Likewise.
* timezone/tzfile.h: Likewise.
* timezone/tzselect.ksh: Likewise.
* timezone/zdump.c: Likewise.
* timezone/zic.c: Likewise.
[BZ #3483]
* elf/ldconfig.c (main): Call setlocale and textdomain.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
[BZ #3480]
* manual/argp.texi: Fix typos.
* manual/charset.texi: Likewise.
* manual/errno.texi: Likewise.
* manual/filesys.texi: Likewise.
* manual/lang.texi: Likewise.
* manual/maint.texi: Likewise.
* manual/memory.texi: Likewise.
* manual/message.texi: Likewise.
* manual/resource.texi: Likewise.
* manual/search.texi: Likewise.
* manual/signal.texi: Likewise.
* manual/startup.texi: Likewise.
* manual/stdio.texi: Likewise.
* manual/sysinfo.texi: Likewise.
* manual/syslog.texi: Likewise.
* manual/time.texi: Likewise.
Patch by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
[BZ #3465]
* sunrpc/clnt_raw.c: Minimal message improvements.
* sunrpc/pm_getmaps.c: Likewise.
* nis/nss_nisplus/nisplus-publickey.c: Likewise.
* nis/nis_print_group_entry.c: Likewise.
* locale/programs/repertoire.c: Likewise.
* locale/programs/charmap.c: Likewise.
* malloc/memusage.sh: Likewise.
* elf/dl-deps.c: Likewise.
* locale/programs/ld-collate.c: Likewise.
* libio/vswprintf.c: Likewise.
* malloc/memusagestat.c: Likewise.
* sunrpc/auth_unix.c: Likewise.
* sunrpc/rpc_main.c: Likewise.
* nscd/cache.c: Likewise.
* locale/programs/repertoire.c: Unify output messages.
* locale/programs/charmap.c: Likewise.
* locale/programs/ld-ctype.c: Likewise.
* locale/programs/ld-monetary.c: Likewise.
* locale/programs/ld-numeric.c: Likewise.
* locale/programs/ld-time.c: Likewise.
* elf/ldconfig.c: Likewise.
* nscd/selinux.c: Likewise.
* elf/cache.c: Likewise.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
2006-11-10 Jakub Jelinek <jakub@redhat.com>
* string/strxfrm_l.c (STRXFRM): Fix trailing \1 optimization
if N is one bigger than return value.
* string/tst-strxfrm2.c (do_test): Also test strxfrm with l1 + 1
and l1 last arguments, if buf is defined, verify the return value
equals to strlen (buf) and verify no byte beyond passed length
is modified.
2006-11-10 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
* sysdeps/gnu/siglist.c (__old_sys_siglist, __old_sys_sigabbrev):
Use __new_sys_siglist instead of _sys_siglist_internal as
second macro argument.
(_old_sys_siglist): Use declare_symbol_alias macro instead of
strong_alias.
2006-11-09 Ulrich Drepper <drepper@redhat.com>
[BZ #3493]
* posix/unistd.h (sysconf): Remove const attribute.
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Fix test for
temporary or deprecated addresses.
Patch by Sridhar Samudrala <sri@us.ibm.com>.
* string/Makefile (tests): Add tst-strxfrm2.
* string/tst-strxfrm2.c: New file.
2006-10-09 Jakub Jelinek <jakub@redhat.com>
* elf/dl-debug.c (_dl_debug_initialize): Check r->r_map for 0
rather than r->r_brk.
* string/strxfrm_l.c (STRXFRM): Do the trailing \1 removal
optimization even if needed > n.
2006-11-07 Jakub Jelinek <jakub@redhat.com>
* include/libc-symbols.h (declare_symbol): Rename to...
(declare_symbol_alias): ... this. Add ORIGINAL argument, imply
strong_alias (ORIGINAL, SYMBOL) in asm to make sure it preceedes
.size directive.
* sysdeps/gnu/errlist-compat.awk: Adjust for declare_symbol_alias
changes.
* sysdeps/gnu/siglist.c: Likewise.
2006-11-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/fpu/bits/mathinline.h
[__LIBC_INTERNAL_MATH_INLINES]: Moved to ...
* sysdeps/powerpc/fpu/math_private.h: ...here. New file.
2006-11-05 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word):
Update handling of cache descriptor 0x49 for new models.
* sysdeps/unix/sysv/linux/x86_64/sysconf.c (intel_check_word):
Likewise.
2006-11-02 Ulrich Drepper <drepper@redhat.com>
* configure.in: Work around ld --help change and avoid -z relro
test completely if the architecture doesn't care about security.
2006-11-01 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
2006-10-31 Ulrich Drepper <drepper@redhat.com>
* stdlib/atexit.c (atexit): Don't mark as hidden when used to
generate compatibility version.
2006-10-29 Ulrich Drepper <drepper@redhat.com>
* configure.in: Relax -z relro requirement a bit.
* po/sv.po: Update from translation team.
2006-10-29 Jakub Jelinek <jakub@redhat.com>
* elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise.
* elf/dl-close.c (_dl_close_worker): Likewise.
* elf/dl-open.c (_dl_open_worker): Likewise.
* sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define.
* configure.in: Require assembler support for visibility, compiler
support for visibility and aliases, linker support for various -z
options.
* Makeconfig: Remove conditional code which now is unnecessary.
* config.h.in: Likewise.
* config.make.in: Likewise.
* dlfcn/Makefile: Likewise.
* elf/Makefile: Likewise.
* elf/dl-load.c: Likewise.
* elf/rtld.c: Likewise.
* include/libc-symbols.h: Likewise.
* include/stdio.h: Likewise.
* io/Makefile: Likewise.
* io/fstat.c: Likewise.
* io/fstat64.c: Likewise.
* io/fstatat.c: Likewise.
* io/fstatat64.c: Likewise.
* io/lstat.c: Likewise.
* io/lstat64.c: Likewise.
* io/mknod.c: Likewise.
* io/mknodat.c: Likewise.
* io/stat.c: Likewise.
* io/stat64.c: Likewise.
* libio/stdio.c: Likewise.
* nscd/Makefile: Likewise.
* stdlib/Makefile: Likewise.
* stdlib/atexit.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/i386/sysdep.h: Likewise.
* sysdeps/i386/i686/memcmp.S: Likewise.
* sysdeps/powerpc/powerpc32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
* Makerules: USE_TLS support is now default.
* tls.make.c: Likewise.
* csu/Versions: Likewise.
* csu/libc-start.c: Likewise.
* csu/libc-tls.c: Likewise.
* csu/version.c: Likewise.
* dlfcn/dlinfo.c: Likewise.
* elf/dl-addr.c: Likewise.
* elf/dl-cache.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-iteratephdr.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-support.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-sysdep.c: Likewise.
* elf/dl-tls.c: Likewise.
* elf/ldconfig.c: Likewise.
* elf/rtld.c: Likewise.
* elf/tst-tls-dlinfo.c: Likewise.
* elf/tst-tls1.c: Likewise.
* elf/tst-tls10.h: Likewise.
* elf/tst-tls14.c: Likewise.
* elf/tst-tls2.c: Likewise.
* elf/tst-tls3.c: Likewise.
* elf/tst-tls4.c: Likewise.
* elf/tst-tls5.c: Likewise.
* elf/tst-tls6.c: Likewise.
* elf/tst-tls7.c: Likewise.
* elf/tst-tls8.c: Likewise.
* elf/tst-tls9.c: Likewise.
* elf/tst-tlsmod1.c: Likewise.
* elf/tst-tlsmod13.c: Likewise.
* elf/tst-tlsmod13a.c: Likewise.
* elf/tst-tlsmod14a.c: Likewise.
* elf/tst-tlsmod2.c: Likewise.
* elf/tst-tlsmod3.c: Likewise.
* elf/tst-tlsmod4.c: Likewise.
* elf/tst-tlsmod5.c: Likewise.
* elf/tst-tlsmod6.c: Likewise.
* include/errno.h: Likewise.
* include/link.h: Likewise.
* include/tls.h: Likewise.
* locale/global-locale.c: Likewise.
* locale/localeinfo.h: Likewise.
* malloc/arena.c: Likewise.
* malloc/hooks.c: Likewise.
* malloc/malloc.c: Likewise.
* resolv/Versions: Likewise.
* sysdeps/alpha/dl-machine.h: Likewise.
* sysdeps/alpha/libc-tls.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/generic/tls.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/ia64/dl-machine.h: Likewise.
* sysdeps/ia64/libc-tls.c: Likewise.
* sysdeps/mach/hurd/fork.c: Likewise.
* sysdeps/mach/hurd/i386/tls.h: Likewise.
* sysdeps/powerpc/powerpc32/dl-machine.c: Likwise.
* sysdeps/powerpc/powerpc32/dl-machine.h: Likewise.
* sysdeps/powerpc/powerpc64/dl-machine.h: Likewise.
* sysdeps/s390/libc-tls.c: Likewise.
* sysdeps/s390/s390-32/dl-machine.h: Likewise.
* sysdeps/s390/s390-64/dl-machine.h: Likewise.
* sysdeps/sh/dl-machine.h: Likewise.
* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
* sysdeps/x86_64/dl-machine.h: Likewise.
[BZ #3426]
* stdlib/stdlib.h: Adjust comment for canonicalize_file_name to
reality.
2006-10-27 Jakub Jelinek <jakub@redhat.com>
* elf/dl-lookup.c (_dl_debug_bindings): Remove unused symbol_scope
argument.
(_dl_lookup_symbol_x): Adjust caller.
* sysdeps/generic/ldsodefs.h (struct link_namespaces): Remove
_ns_global_scope.
* elf/rtld.c (dl_main): Don't initialize _ns_global_scope.
* elf/dl-libc.c: Revert l_scope name changes.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-close.c (_dl_close): Likewise.
* elf/dl-open.c (dl_open_worker): Likewise. If not SINGLE_THREAD_P,
always use __rtld_mrlock_{change,done}. Always free old scope list
here if not l_scope_mem.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Revert l_scope name
change. Never free scope list here. Just __rtld_mrlock_lock before
the lookup and __rtld_mrlock_unlock it after the lookup.
* elf/dl-sym.c: Likewise.
* include/link.h (struct r_scoperec): Remove.
(struct link_map): Replace l_scoperec with l_scope, l_scoperec_mem
with l_scope_mem and l_scoperec_lock with l_scope_lock.
2006-10-25 Ulrich Drepper <drepper@redhat.com>
* sysdeps/gnu/netinet/tcp.h: Define TCP_CONGESTION.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* configure.in: Disable building profile libraries by default.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* elf/dl-lookup.c (_dl_lookup_symbol_x): Add warning to
_dl_lookup_symbol_x code.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* elf/dl-runtime.c: Include sysdep-cancel.h.
(_dl_fixup, _dl_profile_fixup): Use __rtld_mrlock_* and
scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_*
instead of catomic_* macros.
* elf/dl-sym.c: Include sysdep-cancel.h.
(do_sym): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-close.c: Include sysdep-cancel.h.
(_dl_close): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-open.c: Include sysdep-cancel.h.
(dl_open_worker): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Set maxfb to address of last
fastbin rather than end of fastbin array.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/i486/bits/atomic.h (catomic_decrement): Use correct
body macro.
* sysdeps/x86_64/bits/atomic.h
(__arch_c_compare_and_exchange_val_64_acq): Add missing casts.
(catomic_decrement): Use correct body macro.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* include/atomic.h: Add a unique prefix to all local variables
in macros.
* csu/tst-atomic.c (do_test): Test also catomic_* macros.
2006-10-14 Ulrich Drepper <drepper@redhat.com>
* resolv/arpa/nameser.h: Document that ns_t_a6 is deprecated.
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to
determine highest fast bin to consolidate, always look into all of
them.
(do_check_malloc_state): Only require for empty bins for large
sizes in main arena.
* libio/stdio.h: Add more __wur attributes.
2006-11-12 Andreas Jaeger <aj@suse.de>
[BZ #2510]
* manual/search.texi (Hash Search Function): Clarify.
(Array Search Function): Clarify.
2006-11-12 Joseph Myers <joseph@codesourcery.com>
[BZ #2830]
* math/atest-exp.c (main): Cast hex value to mp_limb_t before
shifting.
* math/atest-exp2.c (read_mpn_hex): Likewise.
* math/atest-sincos.c (main): Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Add epoll_pwait.
* sysdeps/unix/sysv/linux/sys/epoll.h: Declare epoll_pwait.
* sysdeps/unix/sysv/linux/Versions (libc): Add epoll_pwait for
version GLIBC_2.6.
* Versions.def: Add GLIBC_2.6 for libc.
* sysdeps/i386/i486/bits/atomic.h: Add catomic_* support.
2006-10-11 Jakub Jelinek <jakub@redhat.com>
* malloc/malloc.c (_int_malloc): Remove unused any_larger variable.
* nis/nis_defaults.c (__nis_default_access): Don't call getenv twice.
* nis/nis_subr.c (nis_getnames): Use __secure_getenv instead of getenv.
* sysdeps/generic/unsecvars.h: Add NIS_PATH.
2006-10-11 Ulrich Drepper <drepper@redhat.com>
* include/atomic.c: Define catomic_* operations.
* sysdeps/x86_64/bits/atomic.h: Likewise. Fix a few minor problems.
* stdlib/cxa_finalize.c: Use catomic_* operations instead of atomic_*.
* malloc/memusage.c: Likewise.
* gmon/mcount.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-profile.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-runtime.c: Likewise.
* elf/dl-fptr.c: Likewise.
* resolv/res_libc.c: Likewise.
2006-10-10 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/utimes.c: Use a union to avoid an improper cast.
* sysdeps/mach/hurd/futimes.c: Likewise.
* sysdeps/mach/hurd/lutimes.c: Likewise.
2006-10-09 Ulrich Drepper <drepper@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Implement reference counting of scope records.
* elf/dl-close.c (_dl_close): Remove all scopes from removed objects
from the list in objects which remain. Always allocate new scope
record.
* elf/dl-open.c (dl_open_worker): When growing array for scopes,
don't resize, allocate a new one.
* elf/dl-runtime.c: Update reference counters before using a scope
array.
* elf/dl-sym.c: Likewise.
* elf/dl-libc.c: Adjust for l_scope name change.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* include/link.h: Include <rtld-lowlevel.h>. Define struct
r_scoperec. Replace r_scope with pointer to r_scoperec structure.
Add l_scoperec_lock.
* sysdeps/generic/ldsodefs.h: Include <rtld-lowlevel.h>.
* sysdeps/generic/rtld-lowlevel.h: New file.
* include/atomic.h: Rename atomic_and to atomic_and_val and
atomic_or to atomic_or_val. Define new macros atomic_and and
atomic_or which do not return values.
* sysdeps/x86_64/bits/atomic.h: Define atomic_and and atomic_or.
Various cleanups.
* sysdeps/i386/i486/bits/atomic.h: Likewise.
* po/sv.po: Update from translation team.
2006-10-07 Ulrich Drepper <drepper@redhat.com>
* Versions.def: Add GLIBC_2.6 to libpthread.
* include/shlib-compat.h (SHLIB_COMPAT): Expand parameters before use.
(versioned_symbol): Likewise.
(compat_symbol): Likewise.
* po/tr.po: Update from translation team.
* nis/Banner: Removed. It's been integral part forever and the
author info is incomplete anyway.
* libio/Banner: Likewise.
2006-10-06 Ulrich Drepper <drepper@redhat.com>
* version.h (VERSION): Bump to 2.5.90 for new development tree.
2007-01-12 05:51:07 +08:00
|
|
|
|
#ifdef SHARED
|
2005-01-13 10:08:37 +08:00
|
|
|
|
if ((mode & (__RTLD_DLOPEN | __RTLD_AUDIT)) == __RTLD_DLOPEN)
|
2004-09-19 10:48:59 +08:00
|
|
|
|
{
|
2005-09-20 15:46:12 +08:00
|
|
|
|
const uintptr_t p = (uintptr_t) &__stack_prot & -GLRO(dl_pagesize);
|
|
|
|
|
const size_t s = (uintptr_t) (&__stack_prot + 1) - p;
|
|
|
|
|
|
|
|
|
|
struct link_map *const m = &GL(dl_rtld_map);
|
|
|
|
|
const uintptr_t relro_end = ((m->l_addr + m->l_relro_addr
|
|
|
|
|
+ m->l_relro_size)
|
|
|
|
|
& -GLRO(dl_pagesize));
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_likely (p + s <= relro_end))
|
2005-09-20 15:46:12 +08:00
|
|
|
|
{
|
|
|
|
|
/* The variable lies in the region protected by RELRO. */
|
2013-06-29 05:43:42 +08:00
|
|
|
|
if (__mprotect ((void *) p, s, PROT_READ|PROT_WRITE) < 0)
|
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot change memory protections");
|
|
|
|
|
goto call_lose_errno;
|
|
|
|
|
}
|
2005-09-20 15:46:12 +08:00
|
|
|
|
__stack_prot |= PROT_READ|PROT_WRITE|PROT_EXEC;
|
|
|
|
|
__mprotect ((void *) p, s, PROT_READ);
|
|
|
|
|
}
|
|
|
|
|
else
|
2005-02-08 07:52:23 +08:00
|
|
|
|
__stack_prot |= PROT_READ|PROT_WRITE|PROT_EXEC;
|
2004-09-19 10:48:59 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
2005-02-08 07:52:23 +08:00
|
|
|
|
__stack_prot |= PROT_READ|PROT_WRITE|PROT_EXEC;
|
2004-09-19 10:48:59 +08:00
|
|
|
|
|
2005-02-08 16:25:22 +08:00
|
|
|
|
#ifdef check_consistency
|
|
|
|
|
check_consistency ();
|
|
|
|
|
#endif
|
|
|
|
|
|
2004-09-19 10:48:59 +08:00
|
|
|
|
errval = (*GL(dl_make_stack_executable_hook)) (stack_endp);
|
|
|
|
|
if (errval)
|
|
|
|
|
{
|
|
|
|
|
errstring = N_("\
|
|
|
|
|
cannot enable executable stack as shared object requires");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2004-09-20 15:43:16 +08:00
|
|
|
|
/* Adjust the address of the TLS initialization image. */
|
|
|
|
|
if (l->l_tls_initimage != NULL)
|
|
|
|
|
l->l_tls_initimage = (char *) l->l_tls_initimage + l->l_addr;
|
|
|
|
|
|
|
|
|
|
/* We are done mapping in the file. We no longer need the descriptor. */
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (__close (fd) != 0))
|
2004-09-20 15:43:16 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("cannot close file descriptor");
|
|
|
|
|
goto call_lose_errno;
|
|
|
|
|
}
|
|
|
|
|
/* Signal that we closed the file. */
|
|
|
|
|
fd = -1;
|
|
|
|
|
|
2014-03-13 06:58:39 +08:00
|
|
|
|
/* If this is ET_EXEC, we should have loaded it as lt_executable. */
|
|
|
|
|
assert (type != ET_EXEC || l->l_type == lt_executable);
|
2004-09-20 15:43:16 +08:00
|
|
|
|
|
|
|
|
|
l->l_entry += l->l_addr;
|
|
|
|
|
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
2004-09-20 15:43:16 +08:00
|
|
|
|
_dl_debug_printf ("\
|
|
|
|
|
dynamic: 0x%0*lx base: 0x%0*lx size: 0x%0*Zx\n\
|
|
|
|
|
entry: 0x%0*lx phdr: 0x%0*lx phnum: %*u\n\n",
|
|
|
|
|
(int) sizeof (void *) * 2,
|
|
|
|
|
(unsigned long int) l->l_ld,
|
|
|
|
|
(int) sizeof (void *) * 2,
|
|
|
|
|
(unsigned long int) l->l_addr,
|
|
|
|
|
(int) sizeof (void *) * 2, maplength,
|
|
|
|
|
(int) sizeof (void *) * 2,
|
|
|
|
|
(unsigned long int) l->l_entry,
|
|
|
|
|
(int) sizeof (void *) * 2,
|
|
|
|
|
(unsigned long int) l->l_phdr,
|
|
|
|
|
(int) sizeof (void *) * 2, l->l_phnum);
|
|
|
|
|
|
|
|
|
|
/* Set up the symbol hash table. */
|
|
|
|
|
_dl_setup_hash (l);
|
1995-05-02 14:35:55 +08:00
|
|
|
|
|
1998-09-06 17:16:53 +08:00
|
|
|
|
/* If this object has DT_SYMBOLIC set modify now its scope. We don't
|
|
|
|
|
have to do this for the main map. */
|
2004-09-23 15:45:38 +08:00
|
|
|
|
if ((mode & RTLD_DEEPBIND) == 0
|
2014-03-27 06:37:07 +08:00
|
|
|
|
&& __glibc_unlikely (l->l_info[DT_SYMBOLIC] != NULL)
|
2006-10-27 23:54:20 +08:00
|
|
|
|
&& &l->l_searchlist != l->l_scope[0])
|
1998-09-06 17:16:53 +08:00
|
|
|
|
{
|
|
|
|
|
/* Create an appropriate searchlist. It contains only this map.
|
2004-09-23 15:45:38 +08:00
|
|
|
|
This is the definition of DT_SYMBOLIC in SysVr4. */
|
1998-09-06 17:16:53 +08:00
|
|
|
|
l->l_symbolic_searchlist.r_list[0] = l;
|
|
|
|
|
l->l_symbolic_searchlist.r_nlist = 1;
|
|
|
|
|
|
|
|
|
|
/* Now move the existing entries one back. */
|
2006-10-27 23:54:20 +08:00
|
|
|
|
memmove (&l->l_scope[1], &l->l_scope[0],
|
|
|
|
|
(l->l_scope_max - 1) * sizeof (l->l_scope[0]));
|
1998-09-06 17:16:53 +08:00
|
|
|
|
|
|
|
|
|
/* Now add the new entry. */
|
2006-10-27 23:54:20 +08:00
|
|
|
|
l->l_scope[0] = &l->l_symbolic_searchlist;
|
1998-09-06 17:16:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
2001-02-02 14:19:24 +08:00
|
|
|
|
/* Remember whether this object must be initialized first. */
|
2001-11-07 08:31:36 +08:00
|
|
|
|
if (l->l_flags_1 & DF_1_INITFIRST)
|
2002-01-31 11:41:25 +08:00
|
|
|
|
GL(dl_initfirst) = l;
|
2001-02-02 14:19:24 +08:00
|
|
|
|
|
1999-02-19 08:00:05 +08:00
|
|
|
|
/* Finally the file information. */
|
2015-07-15 04:15:26 +08:00
|
|
|
|
l->l_file_id = id;
|
1999-02-19 08:00:05 +08:00
|
|
|
|
|
2015-11-09 23:52:31 +08:00
|
|
|
|
#ifdef SHARED
|
|
|
|
|
/* When auditing is used the recorded names might not include the
|
|
|
|
|
name by which the DSO is actually known. Add that as well. */
|
|
|
|
|
if (__glibc_unlikely (origname != NULL))
|
|
|
|
|
add_name_to_object (l, origname);
|
|
|
|
|
#else
|
|
|
|
|
/* Audit modules only exist when linking is dynamic so ORIGNAME
|
|
|
|
|
cannot be non-NULL. */
|
|
|
|
|
assert (origname == NULL);
|
|
|
|
|
#endif
|
|
|
|
|
|
2002-02-28 14:40:08 +08:00
|
|
|
|
/* When we profile the SONAME might be needed for something else but
|
|
|
|
|
loading. Add it right away. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_profile) != NULL)
|
2002-02-28 14:40:08 +08:00
|
|
|
|
&& l->l_info[DT_SONAME] != NULL)
|
|
|
|
|
add_name_to_object (l, ((const char *) D_PTR (l, l_info[DT_STRTAB])
|
|
|
|
|
+ l->l_info[DT_SONAME]->d_un.d_val));
|
|
|
|
|
|
2012-10-31 02:16:18 +08:00
|
|
|
|
#ifdef DL_AFTER_LOAD
|
|
|
|
|
DL_AFTER_LOAD (l);
|
|
|
|
|
#endif
|
|
|
|
|
|
2010-10-26 12:23:14 +08:00
|
|
|
|
/* Now that the object is fully initialized add it to the object list. */
|
|
|
|
|
_dl_add_to_namespace_list (l, nsid);
|
|
|
|
|
|
2005-01-07 06:40:27 +08:00
|
|
|
|
#ifdef SHARED
|
|
|
|
|
/* Auditing checkpoint: we have a new object. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_naudit) > 0)
|
2005-01-09 16:29:25 +08:00
|
|
|
|
&& !GL(dl_ns)[l->l_ns]._ns_loaded->l_auditing)
|
2005-01-07 06:40:27 +08:00
|
|
|
|
{
|
|
|
|
|
struct audit_ifaces *afct = GLRO(dl_audit);
|
|
|
|
|
for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt)
|
|
|
|
|
{
|
|
|
|
|
if (afct->objopen != NULL)
|
|
|
|
|
{
|
|
|
|
|
l->l_audit[cnt].bindflags
|
|
|
|
|
= afct->objopen (l, nsid, &l->l_audit[cnt].cookie);
|
|
|
|
|
|
|
|
|
|
l->l_audit_any_plt |= l->l_audit[cnt].bindflags != 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
afct = afct->next;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
1995-05-02 14:35:55 +08:00
|
|
|
|
return l;
|
|
|
|
|
}
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
1998-03-06 00:42:56 +08:00
|
|
|
|
/* Print search path. */
|
|
|
|
|
static void
|
|
|
|
|
print_search_path (struct r_search_path_elem **list,
|
2010-02-25 11:27:24 +08:00
|
|
|
|
const char *what, const char *name)
|
1998-03-06 00:42:56 +08:00
|
|
|
|
{
|
1998-04-01 02:24:48 +08:00
|
|
|
|
char buf[max_dirnamelen + max_capstrlen];
|
1998-03-06 00:42:56 +08:00
|
|
|
|
int first = 1;
|
|
|
|
|
|
2004-03-06 16:19:29 +08:00
|
|
|
|
_dl_debug_printf (" search path=");
|
1998-03-06 00:42:56 +08:00
|
|
|
|
|
|
|
|
|
while (*list != NULL && (*list)->what == what) /* Yes, ==. */
|
|
|
|
|
{
|
1998-04-01 02:24:48 +08:00
|
|
|
|
char *endp = __mempcpy (buf, (*list)->dirname, (*list)->dirnamelen);
|
|
|
|
|
size_t cnt;
|
|
|
|
|
|
|
|
|
|
for (cnt = 0; cnt < ncapstr; ++cnt)
|
|
|
|
|
if ((*list)->status[cnt] != nonexisting)
|
|
|
|
|
{
|
|
|
|
|
char *cp = __mempcpy (endp, capstr[cnt].str, capstr[cnt].len);
|
1998-09-02 20:58:42 +08:00
|
|
|
|
if (cp == buf || (cp == buf + 1 && buf[0] == '/'))
|
|
|
|
|
cp[0] = '\0';
|
|
|
|
|
else
|
|
|
|
|
cp[-1] = '\0';
|
2001-11-07 15:44:06 +08:00
|
|
|
|
|
|
|
|
|
_dl_debug_printf_c (first ? "%s" : ":%s", buf);
|
|
|
|
|
first = 0;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
}
|
1998-03-06 00:42:56 +08:00
|
|
|
|
|
|
|
|
|
++list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (name != NULL)
|
2001-02-28 14:36:10 +08:00
|
|
|
|
_dl_debug_printf_c ("\t\t(%s from file %s)\n", what,
|
2013-05-30 00:00:20 +08:00
|
|
|
|
DSO_FILENAME (name));
|
1998-03-06 00:42:56 +08:00
|
|
|
|
else
|
2001-02-28 14:36:10 +08:00
|
|
|
|
_dl_debug_printf_c ("\t\t(%s)\n", what);
|
1998-03-06 00:42:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
2000-10-22 01:08:18 +08:00
|
|
|
|
/* Open a file and verify it is an ELF file for this architecture. We
|
|
|
|
|
ignore only ELF files for other architectures. Non-ELF files and
|
|
|
|
|
ELF files with different header information cause fatal errors since
|
|
|
|
|
this could mean there is something wrong in the installation and the
|
2015-11-11 11:44:48 +08:00
|
|
|
|
user might want to know about this.
|
|
|
|
|
|
|
|
|
|
If FD is not -1, then the file is already open and FD refers to it.
|
|
|
|
|
In that case, FD is consumed for both successful and error returns. */
|
2000-10-22 01:08:18 +08:00
|
|
|
|
static int
|
2015-11-11 11:44:48 +08:00
|
|
|
|
open_verify (const char *name, int fd,
|
|
|
|
|
struct filebuf *fbp, struct link_map *loader,
|
2014-03-25 01:58:26 +08:00
|
|
|
|
int whatcode, int mode, bool *found_other_class, bool free_name)
|
2000-10-22 01:08:18 +08:00
|
|
|
|
{
|
|
|
|
|
/* This is the expected ELF header. */
|
|
|
|
|
#define ELF32_CLASS ELFCLASS32
|
|
|
|
|
#define ELF64_CLASS ELFCLASS64
|
|
|
|
|
#ifndef VALID_ELF_HEADER
|
|
|
|
|
# define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, exp, size) == 0)
|
|
|
|
|
# define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV)
|
2010-03-17 14:34:59 +08:00
|
|
|
|
# define VALID_ELF_ABIVERSION(osabi,ver) (ver == 0)
|
2009-02-11 01:21:29 +08:00
|
|
|
|
#elif defined MORE_ELF_HEADER_DATA
|
|
|
|
|
MORE_ELF_HEADER_DATA;
|
2000-10-22 01:08:18 +08:00
|
|
|
|
#endif
|
2010-03-19 04:15:27 +08:00
|
|
|
|
static const unsigned char expected[EI_NIDENT] =
|
2000-10-22 01:08:18 +08:00
|
|
|
|
{
|
|
|
|
|
[EI_MAG0] = ELFMAG0,
|
|
|
|
|
[EI_MAG1] = ELFMAG1,
|
|
|
|
|
[EI_MAG2] = ELFMAG2,
|
|
|
|
|
[EI_MAG3] = ELFMAG3,
|
|
|
|
|
[EI_CLASS] = ELFW(CLASS),
|
|
|
|
|
[EI_DATA] = byteorder,
|
|
|
|
|
[EI_VERSION] = EV_CURRENT,
|
|
|
|
|
[EI_OSABI] = ELFOSABI_SYSV,
|
|
|
|
|
[EI_ABIVERSION] = 0
|
|
|
|
|
};
|
2001-11-07 08:31:36 +08:00
|
|
|
|
static const struct
|
|
|
|
|
{
|
|
|
|
|
ElfW(Word) vendorlen;
|
|
|
|
|
ElfW(Word) datalen;
|
|
|
|
|
ElfW(Word) type;
|
2001-03-20 17:26:25 +08:00
|
|
|
|
char vendor[4];
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
} expected_note = { 4, 16, 1, "GNU" };
|
2001-11-07 08:31:36 +08:00
|
|
|
|
/* Initialize it to make the compiler happy. */
|
|
|
|
|
const char *errstring = NULL;
|
|
|
|
|
int errval = 0;
|
2000-10-22 01:08:18 +08:00
|
|
|
|
|
2005-01-07 06:40:27 +08:00
|
|
|
|
#ifdef SHARED
|
|
|
|
|
/* Give the auditing libraries a chance. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_naudit) > 0) && whatcode != 0
|
2005-01-07 06:40:27 +08:00
|
|
|
|
&& loader->l_auditing == 0)
|
|
|
|
|
{
|
2015-11-11 11:44:48 +08:00
|
|
|
|
const char *original_name = name;
|
2005-01-07 06:40:27 +08:00
|
|
|
|
struct audit_ifaces *afct = GLRO(dl_audit);
|
|
|
|
|
for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt)
|
|
|
|
|
{
|
|
|
|
|
if (afct->objsearch != NULL)
|
|
|
|
|
{
|
|
|
|
|
name = afct->objsearch (name, &loader->l_audit[cnt].cookie,
|
|
|
|
|
whatcode);
|
|
|
|
|
if (name == NULL)
|
|
|
|
|
/* Ignore the path. */
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
afct = afct->next;
|
|
|
|
|
}
|
2015-11-11 11:44:48 +08:00
|
|
|
|
|
|
|
|
|
if (fd != -1 && name != original_name && strcmp (name, original_name))
|
|
|
|
|
{
|
|
|
|
|
/* An audit library changed what we're supposed to open,
|
|
|
|
|
so FD no longer matches it. */
|
|
|
|
|
__close (fd);
|
|
|
|
|
fd = -1;
|
|
|
|
|
}
|
2005-01-07 06:40:27 +08:00
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2015-11-11 11:44:48 +08:00
|
|
|
|
if (fd == -1)
|
|
|
|
|
/* Open the file. We always open files read-only. */
|
|
|
|
|
fd = __open (name, O_RDONLY | O_CLOEXEC);
|
|
|
|
|
|
2000-10-22 01:08:18 +08:00
|
|
|
|
if (fd != -1)
|
|
|
|
|
{
|
|
|
|
|
ElfW(Ehdr) *ehdr;
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
ElfW(Phdr) *phdr, *ph;
|
2007-07-01 01:01:07 +08:00
|
|
|
|
ElfW(Word) *abi_note;
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
unsigned int osversion;
|
|
|
|
|
size_t maplength;
|
2000-10-22 01:08:18 +08:00
|
|
|
|
|
2014-01-09 10:46:53 +08:00
|
|
|
|
/* We successfully opened the file. Now verify it is a file
|
2000-10-22 01:08:18 +08:00
|
|
|
|
we can use. */
|
|
|
|
|
__set_errno (0);
|
2012-10-20 10:30:58 +08:00
|
|
|
|
fbp->len = 0;
|
|
|
|
|
assert (sizeof (fbp->buf) > sizeof (ElfW(Ehdr)));
|
|
|
|
|
/* Read in the header. */
|
|
|
|
|
do
|
2014-04-04 01:47:14 +08:00
|
|
|
|
{
|
|
|
|
|
ssize_t retlen = __libc_read (fd, fbp->buf + fbp->len,
|
2012-10-20 10:30:58 +08:00
|
|
|
|
sizeof (fbp->buf) - fbp->len);
|
|
|
|
|
if (retlen <= 0)
|
|
|
|
|
break;
|
|
|
|
|
fbp->len += retlen;
|
|
|
|
|
}
|
2014-03-27 06:37:07 +08:00
|
|
|
|
while (__glibc_unlikely (fbp->len < sizeof (ElfW(Ehdr))));
|
2000-10-22 01:08:18 +08:00
|
|
|
|
|
|
|
|
|
/* This is where the ELF header is loaded. */
|
|
|
|
|
ehdr = (ElfW(Ehdr) *) fbp->buf;
|
|
|
|
|
|
|
|
|
|
/* Now run the tests. */
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (fbp->len < (ssize_t) sizeof (ElfW(Ehdr))))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errval = errno;
|
|
|
|
|
errstring = (errval == 0
|
|
|
|
|
? N_("file too short") : N_("cannot read file data"));
|
|
|
|
|
call_lose:
|
2006-03-16 03:26:13 +08:00
|
|
|
|
if (free_name)
|
|
|
|
|
{
|
|
|
|
|
char *realname = (char *) name;
|
|
|
|
|
name = strdupa (realname);
|
|
|
|
|
free (realname);
|
|
|
|
|
}
|
2012-07-26 18:03:35 +08:00
|
|
|
|
lose (errval, fd, name, NULL, NULL, errstring, NULL, 0);
|
2001-11-07 08:31:36 +08:00
|
|
|
|
}
|
2000-10-22 01:08:18 +08:00
|
|
|
|
|
|
|
|
|
/* See whether the ELF header is what we expect. */
|
2014-03-28 02:50:42 +08:00
|
|
|
|
if (__glibc_unlikely (! VALID_ELF_HEADER (ehdr->e_ident, expected,
|
2010-03-16 02:44:58 +08:00
|
|
|
|
EI_ABIVERSION)
|
2010-03-17 14:34:59 +08:00
|
|
|
|
|| !VALID_ELF_ABIVERSION (ehdr->e_ident[EI_OSABI],
|
2010-03-19 04:15:27 +08:00
|
|
|
|
ehdr->e_ident[EI_ABIVERSION])
|
|
|
|
|
|| memcmp (&ehdr->e_ident[EI_PAD],
|
|
|
|
|
&expected[EI_PAD],
|
2014-03-28 02:50:42 +08:00
|
|
|
|
EI_NIDENT - EI_PAD) != 0))
|
2000-10-22 01:08:18 +08:00
|
|
|
|
{
|
|
|
|
|
/* Something is wrong. */
|
2009-04-27 04:12:37 +08:00
|
|
|
|
const Elf32_Word *magp = (const void *) ehdr->e_ident;
|
|
|
|
|
if (*magp !=
|
2000-10-22 01:08:18 +08:00
|
|
|
|
#if BYTE_ORDER == LITTLE_ENDIAN
|
|
|
|
|
((ELFMAG0 << (EI_MAG0 * 8)) |
|
|
|
|
|
(ELFMAG1 << (EI_MAG1 * 8)) |
|
|
|
|
|
(ELFMAG2 << (EI_MAG2 * 8)) |
|
|
|
|
|
(ELFMAG3 << (EI_MAG3 * 8)))
|
|
|
|
|
#else
|
|
|
|
|
((ELFMAG0 << (EI_MAG3 * 8)) |
|
|
|
|
|
(ELFMAG1 << (EI_MAG2 * 8)) |
|
|
|
|
|
(ELFMAG2 << (EI_MAG1 * 8)) |
|
|
|
|
|
(ELFMAG3 << (EI_MAG0 * 8)))
|
|
|
|
|
#endif
|
|
|
|
|
)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
errstring = N_("invalid ELF header");
|
|
|
|
|
else if (ehdr->e_ident[EI_CLASS] != ELFW(CLASS))
|
2005-09-26 23:58:00 +08:00
|
|
|
|
{
|
|
|
|
|
/* This is not a fatal error. On architectures where
|
|
|
|
|
32-bit and 64-bit binaries can be run this might
|
|
|
|
|
happen. */
|
|
|
|
|
*found_other_class = true;
|
|
|
|
|
goto close_and_out;
|
|
|
|
|
}
|
2001-11-07 08:31:36 +08:00
|
|
|
|
else if (ehdr->e_ident[EI_DATA] != byteorder)
|
2000-10-22 01:08:18 +08:00
|
|
|
|
{
|
|
|
|
|
if (BYTE_ORDER == BIG_ENDIAN)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
errstring = N_("ELF file data encoding not big-endian");
|
2000-10-22 01:08:18 +08:00
|
|
|
|
else
|
2001-11-07 08:31:36 +08:00
|
|
|
|
errstring = N_("ELF file data encoding not little-endian");
|
2000-10-22 01:08:18 +08:00
|
|
|
|
}
|
2001-11-07 08:31:36 +08:00
|
|
|
|
else if (ehdr->e_ident[EI_VERSION] != EV_CURRENT)
|
|
|
|
|
errstring
|
|
|
|
|
= N_("ELF file version ident does not match current one");
|
2000-10-22 01:08:18 +08:00
|
|
|
|
/* XXX We should be able so set system specific versions which are
|
|
|
|
|
allowed here. */
|
2001-11-07 08:31:36 +08:00
|
|
|
|
else if (!VALID_ELF_OSABI (ehdr->e_ident[EI_OSABI]))
|
|
|
|
|
errstring = N_("ELF file OS ABI invalid");
|
2010-03-17 14:34:59 +08:00
|
|
|
|
else if (!VALID_ELF_ABIVERSION (ehdr->e_ident[EI_OSABI],
|
|
|
|
|
ehdr->e_ident[EI_ABIVERSION]))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
errstring = N_("ELF file ABI version invalid");
|
2010-03-19 04:15:27 +08:00
|
|
|
|
else if (memcmp (&ehdr->e_ident[EI_PAD], &expected[EI_PAD],
|
|
|
|
|
EI_NIDENT - EI_PAD) != 0)
|
|
|
|
|
errstring = N_("nonzero padding in e_ident");
|
2001-11-07 08:31:36 +08:00
|
|
|
|
else
|
|
|
|
|
/* Otherwise we don't know what went wrong. */
|
|
|
|
|
errstring = N_("internal error");
|
|
|
|
|
|
|
|
|
|
goto call_lose;
|
2000-10-22 01:08:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (ehdr->e_version != EV_CURRENT))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("ELF file version does not match current one");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
2014-03-28 02:50:42 +08:00
|
|
|
|
if (! __glibc_likely (elf_machine_matches_host (ehdr)))
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
goto close_and_out;
|
2014-03-28 02:50:42 +08:00
|
|
|
|
else if (__glibc_unlikely (ehdr->e_type != ET_DYN
|
|
|
|
|
&& ehdr->e_type != ET_EXEC))
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("only ET_DYN and ET_EXEC can be loaded");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
2014-03-25 01:58:26 +08:00
|
|
|
|
else if (__glibc_unlikely (ehdr->e_type == ET_EXEC
|
|
|
|
|
&& (mode & __RTLD_OPENEXEC) == 0))
|
|
|
|
|
{
|
|
|
|
|
/* BZ #16634. It is an error to dlopen ET_EXEC (unless
|
|
|
|
|
__RTLD_OPENEXEC is explicitly set). We return error here
|
|
|
|
|
so that code in _dl_map_object_from_fd does not try to set
|
|
|
|
|
l_tls_modid for this module. */
|
|
|
|
|
|
|
|
|
|
errstring = N_("cannot dynamically load executable");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
2014-03-27 06:37:07 +08:00
|
|
|
|
else if (__glibc_unlikely (ehdr->e_phentsize != sizeof (ElfW(Phdr))))
|
Update.
2004-05-03 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/bsd/bits/fcntl.h (F_SETOWN, F_GETOWN): Define if
__USE_BSD or __USE_UNIX98.
* sysdeps/unix/bsd/ultrix4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
* sysdeps/unix/bsd/bsd4.4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
* sysdeps/unix/bsd/sun/sunos4/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/common/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
* sysdeps/unix/sysv/aix/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
* sysdeps/unix/sysv/irix4/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/s390/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/cris/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
*sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/sh/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/arm/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (F_SETOWN, F_GETOWN):
Likewise.
* sysdeps/generic/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
* sysdeps/mach/hurd/bits/fcntl.h (F_SETOWN, F_GETOWN): Likewise.
* io/sys/stat.h (S_ISSOCK, S_IFSOCK): Likewise.
2004-05-01 Jakub Jelinek <jakub@redhat.com>
* posix/Versions (libc): Remove __libc_wait, __libc_waitpid,
__libc_pause, __libc_nanosleep, __libc_pread, __libc_pread64,
__libc_pwrite64, __waitid and __pselect @@GLIBC_PRIVATE.
* stdlib/Versions (libc): Remove __on_exit@@GLIBC_PRIVATE.
* sysdeps/unix/sysv/linux/Versions (libc): Remove
__libc_sigaction@@GLIBC_PRIVATE.
* sysdeps/unix/sysv/linux/x86_64/Versions (libc): Remove
__modify_ldt@@GLIBC_PRIVATE.
* socket/Versions (libc): Remove __libc_accept, __libc_send,
__libc_recvfrom, __libc_recvmsg, __libc_sendmsg, __libc_recv,
__libc_sendto and __libc_connect @@GLIBC_PRIVATE.
* stdio-common/Versions (libc): Remove
_itoa_upper_digits@@GLIBC_PRIVATE.
* resolv/Versions (libresolv): Remove __ns_samename@@GLIBC_PRIVATE.
* misc/Versions (libc): Remove __libc_fsync, __libc_msync,
__libc_readv and __libc_writev @@GLIBC_PRIVATE.
* termios/Versions (libc): Remove __libc_tcdrain@@GLIBC_PRIVATE.
* io/Versions (libc): Remove __libc_open, __libc_close, __libc_read,
__libc_write, __libc_lseek, __libc_fcntl, __libc_open64 and
__libc_lseek64 @@GLIBC_PRIVATE.
2004-04-30 Jakub Jelinek <jakub@redhat.com>
* elf/dl-load.c (open_verify): Move e_phentsize check after e_type
check.
2004-04-29 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_floor.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llrint.c: Removed.
* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llrintf.c: Removed.
* sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llround.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_lround.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_lroundf.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_rint.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_rintf.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_round.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: New file.
* math/test-misc.c [LDBL_MANT_DIG == 106](main): Correct LDBL_MAX
mantissa for AIX long double format.
* misc/qefgcvt.c [LDBL_MANT_DIG == 106] (NDIGIT_MAX): Define for AIX
long double format.
* misc/qefgcvt_r.c [LDBL_MANT_DIG == 106] (NDIGIT_MAX): Likewise.
* stdlib/fpioconst.c [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__>1024]
(_fpioconst_pow10): AIX long double format has same exponent range as
double.
* stdlib/fpioconst.h [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__>1024]
(LDBL_MAX_10_EXP_LOG): AIX long double format has same exponent range
as double.
2004-04-23 Art Haas <ahaas@airmail.net>
* sysdeps/unix/sysv/linux/kernel-features.h: Add 'defined'.
2004-05-04 05:40:12 +08:00
|
|
|
|
{
|
|
|
|
|
errstring = N_("ELF file's phentsize not the expected size");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
|
|
|
|
|
maplength = ehdr->e_phnum * sizeof (ElfW(Phdr));
|
2002-08-25 12:51:08 +08:00
|
|
|
|
if (ehdr->e_phoff + maplength <= (size_t) fbp->len)
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
phdr = (void *) (fbp->buf + ehdr->e_phoff);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
phdr = alloca (maplength);
|
2002-04-25 05:09:14 +08:00
|
|
|
|
__lseek (fd, ehdr->e_phoff, SEEK_SET);
|
2002-08-25 12:51:08 +08:00
|
|
|
|
if ((size_t) __libc_read (fd, (void *) phdr, maplength) != maplength)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
{
|
|
|
|
|
read_error:
|
|
|
|
|
errval = errno;
|
|
|
|
|
errstring = N_("cannot read file data");
|
|
|
|
|
goto call_lose;
|
|
|
|
|
}
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
2014-10-02 00:08:51 +08:00
|
|
|
|
if (__glibc_unlikely (elf_machine_reject_phdr_p
|
|
|
|
|
(phdr, ehdr->e_phnum, fbp->buf, fbp->len,
|
|
|
|
|
loader, fd)))
|
|
|
|
|
goto close_and_out;
|
|
|
|
|
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
/* Check .note.ABI-tag if present. */
|
|
|
|
|
for (ph = phdr; ph < &phdr[ehdr->e_phnum]; ++ph)
|
2007-07-01 01:01:07 +08:00
|
|
|
|
if (ph->p_type == PT_NOTE && ph->p_filesz >= 32 && ph->p_align >= 4)
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
{
|
2007-07-01 01:01:07 +08:00
|
|
|
|
ElfW(Addr) size = ph->p_filesz;
|
|
|
|
|
|
|
|
|
|
if (ph->p_offset + size <= (size_t) fbp->len)
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
abi_note = (void *) (fbp->buf + ph->p_offset);
|
|
|
|
|
else
|
|
|
|
|
{
|
2007-07-01 01:01:07 +08:00
|
|
|
|
abi_note = alloca (size);
|
2002-04-25 05:09:14 +08:00
|
|
|
|
__lseek (fd, ph->p_offset, SEEK_SET);
|
2007-07-01 01:01:07 +08:00
|
|
|
|
if (__libc_read (fd, (void *) abi_note, size) != size)
|
2001-11-07 08:31:36 +08:00
|
|
|
|
goto read_error;
|
2007-07-01 01:01:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while (memcmp (abi_note, &expected_note, sizeof (expected_note)))
|
|
|
|
|
{
|
|
|
|
|
#define ROUND(len) (((len) + sizeof (ElfW(Word)) - 1) & -sizeof (ElfW(Word)))
|
|
|
|
|
ElfW(Addr) note_size = 3 * sizeof (ElfW(Word))
|
|
|
|
|
+ ROUND (abi_note[0])
|
|
|
|
|
+ ROUND (abi_note[1]);
|
2001-11-07 08:31:36 +08:00
|
|
|
|
|
2007-07-01 01:01:07 +08:00
|
|
|
|
if (size - 32 < note_size)
|
|
|
|
|
{
|
|
|
|
|
size = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
size -= note_size;
|
|
|
|
|
abi_note = (void *) abi_note + note_size;
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
2007-07-01 01:01:07 +08:00
|
|
|
|
if (size == 0)
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
continue;
|
|
|
|
|
|
2001-03-20 17:26:25 +08:00
|
|
|
|
osversion = (abi_note[5] & 0xff) * 65536
|
|
|
|
|
+ (abi_note[6] & 0xff) * 256
|
|
|
|
|
+ (abi_note[7] & 0xff);
|
|
|
|
|
if (abi_note[4] != __ABI_TAG_OS
|
2004-03-05 18:29:47 +08:00
|
|
|
|
|| (GLRO(dl_osversion) && GLRO(dl_osversion) < osversion))
|
Update.
2001-03-12 Jakub Jelinek <jakub@redhat.com>
* csu/Makefile (abi-tag.h): Define OS and version separately, allow
version to be overriden from config.h.
* csu/abi-note.S: Use OS and version separately, include config.h.
* elf/dl-load.c (_dl_osversion): New.
(_dl_map_object_from_fd): Kill some warnings.
(open_verify): Check .note.ABI-tag of the library if present.
* elf/Makefile (CPPFLAGS-dl-load.c): Add -I$(csu-objpfx).
* elf/cache.c (struct cache_entry): Add osversion.
(print_entry): Print osversion.
(print_cache): Pass osversion to it.
(compare): Sort according to osversion.
(save_cache): Set osversion.
(add_to_cache): Add osversion argument.
* sysdeps/generic/ldconfig.h (add_to_cache, process_file,
process_elf_file): Add osversion argument.
* elf/readlib.c (process_file): Likewise.
* sysdeps/generic/readelflib.c (process_elf_file): Likewise.
* sysdeps/unix/sysv/linux/ia64/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/i386/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file,
process_elf32_file, process_elf64_file): Likewise.
* elf/ldconfig.c (manual_link): Pass it.
(search_dir): Issue diagnostic if two libs with the same soname in
the same directory have different .note.ABI-tag. Record osversion in
dlib_entry and use it from there.
(struct lib_entry): Remove.
(struct dlib_entry): Add osversion.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Check
osversion.
* sysdeps/generic/dl-cache.h (struct file_entry_new): Replace __unused
field with osversion.
* sysdeps/generic/ldsodefs.h (_dl_osversion): Declare.
* sysdeps/unix/sysv/linux/init-first.c: Include ldsodefs.h.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Save kernel
version in _dl_osversion.
* sysdeps/unix/sysv/linux/configure.in: Define __ABI_TAG_VERSION.
* Makerules (build-shlib-helper, build-module-helper): New.
(build-shlib, build-module-helper): Make sure .note.ABI-tag comes
early.
* config.h.in (__ABI_TAG_VERSION): Add.
* elf/dl-minimal.c (__strtoul_internal): Set endptr on return.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h (EXTRA_LD_ENVVARS):
Handle LD_ASSUME_KERNEL.
* sysdeps/unix/sysv/linux/dl-librecon.h: New.
2001-03-16 15:40:05 +08:00
|
|
|
|
{
|
|
|
|
|
close_and_out:
|
|
|
|
|
__close (fd);
|
|
|
|
|
__set_errno (ENOENT);
|
|
|
|
|
fd = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
2000-10-22 01:08:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fd;
|
|
|
|
|
}
|
|
|
|
|
|
Update.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* string/strxfrm.c (strxfrm, wcsxfrm): Include <sys/param.h>.
If nrules == 0 and srclen < n, copy only srclen + 1 characters.
* sysdeps/generic/getdomain.c (getdomainname): Include <sys/param.h>.
If the result is fits in the buffer, copy only as many bytes as needed.
* sysdeps/generic/_strerror.c (__strerror_r): Don't zero-fill the
buffer after copying numbuf into it.
* sysdeps/mach/_strerror.c (__strerror_r): Likewise.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* posix/confstr.c (confstr): When string_len > len, NUL-terminate
the result. When string_len < len, don't clear the rest of the buffer.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
Support for new LC_COLLATE format.
* locale/coll-lookup.h: New file.
* locale/weightwc.h (findidx): When size == 0, call
collidx_table_lookup.
* wcsmbs/wcscoll.c: Include coll-lookup.h.
* wcsmbs/wcsxfrm.c: Likewise.
* posix/fnmatch.c: Likewise.
* posix/fnmatch_loop.c (internal_fnwmatch): When size == 0, call
collseq_table_lookup.
* locale/programs/3level.h: New file.
* locale/programs/ld-ctype.c: (wcwidth_table, wctrans_table): Define
by including "3level.h".
* locale/programs/ld-collate.c (wchead_table, collidx_table,
collseq_table): New types, defined by including "3level.h".
(locale_collate_t): New wcheads_3level, wcseqorder_3level fields.
(encoding_mask, encoding_byte): Remove.
(utf8_encode): Use simple shifts instead.
(collate_finish): When !oldstyle_tables, set plane_size and plane_cnt
to 0, and initialize and fill wcheads_3level and wcseqorder_3level.
(collate_output): New local variable tablewc_3level. When
!oldstyle_tables, set table_size to 0 and names to NULL and fill
tablewc_3level instead of tablewc. Change format of TABLEWC and
COLLSEQWC entries written to the file.
* locale/C-collate.c (collseqwc): Change format.
(_nl_C_LC_COLLATE): Set HASH_SIZE and HASH_LAYERS to 0, change format
of COLLSEQWC.
* locale/Makefile (distribute): Add coll-lookup.h, programs/3level.h.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* locale/programs/ld-ctype.c (MAX_CHARNAMES_IDX): New macro.
(locale_ctype_t): New charnames_idx field.
(ctype_startup): Initialize charnames_idx field.
(find_idx): Speed up dramatically by using charnames_idx inverse table.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* locale/C-ctype.c: Switch to new locale format.
(_nl_C_LC_CTYPE_names): Remove array.
(STRUCT_CTYPE_CLASS): New macro.
(_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print,
graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}):
New three-level tables.
(_nl_C_LC_CTYPE_width): Change from array to three-level table.
(_nl_C_LC_CTYPE): Fix nstrings value. Set HASH_SIZE and HASH_LAYERS
to 0. Change WIDTH format. Set CLASS_OFFSET and MAP_OFFSET. Add
12 class tables and 2 map tables at the end.
* ctype/ctype-info.c (_nl_C_LC_CTYPE_names): Remove declaration.
(_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print,
graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}):
New declarations.
(b): Remove trailing semicolon.
(__ctype_names, __ctype_width): Don't initialize.
(__ctype32_wctype, __ctype32_wctrans, __ctype32_width): Initialize.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* elf/dl-load.c (open_path): Add a argument telling whether *dirsp
is guaranteed to be allocated with the same malloc() and may be
passed to free().
(_dl_map_object): Update open_path calls. If rtld_search_dirs has
been set to empty by an earlier open_path call, don't pass it again.
2000-08-29 09:20:23 +08:00
|
|
|
|
/* Try to open NAME in one of the directories in *DIRSP.
|
1996-06-11 04:19:39 +08:00
|
|
|
|
Return the fd, or -1. If successful, fill in *REALNAME
|
Update.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* string/strxfrm.c (strxfrm, wcsxfrm): Include <sys/param.h>.
If nrules == 0 and srclen < n, copy only srclen + 1 characters.
* sysdeps/generic/getdomain.c (getdomainname): Include <sys/param.h>.
If the result is fits in the buffer, copy only as many bytes as needed.
* sysdeps/generic/_strerror.c (__strerror_r): Don't zero-fill the
buffer after copying numbuf into it.
* sysdeps/mach/_strerror.c (__strerror_r): Likewise.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* posix/confstr.c (confstr): When string_len > len, NUL-terminate
the result. When string_len < len, don't clear the rest of the buffer.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
Support for new LC_COLLATE format.
* locale/coll-lookup.h: New file.
* locale/weightwc.h (findidx): When size == 0, call
collidx_table_lookup.
* wcsmbs/wcscoll.c: Include coll-lookup.h.
* wcsmbs/wcsxfrm.c: Likewise.
* posix/fnmatch.c: Likewise.
* posix/fnmatch_loop.c (internal_fnwmatch): When size == 0, call
collseq_table_lookup.
* locale/programs/3level.h: New file.
* locale/programs/ld-ctype.c: (wcwidth_table, wctrans_table): Define
by including "3level.h".
* locale/programs/ld-collate.c (wchead_table, collidx_table,
collseq_table): New types, defined by including "3level.h".
(locale_collate_t): New wcheads_3level, wcseqorder_3level fields.
(encoding_mask, encoding_byte): Remove.
(utf8_encode): Use simple shifts instead.
(collate_finish): When !oldstyle_tables, set plane_size and plane_cnt
to 0, and initialize and fill wcheads_3level and wcseqorder_3level.
(collate_output): New local variable tablewc_3level. When
!oldstyle_tables, set table_size to 0 and names to NULL and fill
tablewc_3level instead of tablewc. Change format of TABLEWC and
COLLSEQWC entries written to the file.
* locale/C-collate.c (collseqwc): Change format.
(_nl_C_LC_COLLATE): Set HASH_SIZE and HASH_LAYERS to 0, change format
of COLLSEQWC.
* locale/Makefile (distribute): Add coll-lookup.h, programs/3level.h.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* locale/programs/ld-ctype.c (MAX_CHARNAMES_IDX): New macro.
(locale_ctype_t): New charnames_idx field.
(ctype_startup): Initialize charnames_idx field.
(find_idx): Speed up dramatically by using charnames_idx inverse table.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* locale/C-ctype.c: Switch to new locale format.
(_nl_C_LC_CTYPE_names): Remove array.
(STRUCT_CTYPE_CLASS): New macro.
(_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print,
graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}):
New three-level tables.
(_nl_C_LC_CTYPE_width): Change from array to three-level table.
(_nl_C_LC_CTYPE): Fix nstrings value. Set HASH_SIZE and HASH_LAYERS
to 0. Change WIDTH format. Set CLASS_OFFSET and MAP_OFFSET. Add
12 class tables and 2 map tables at the end.
* ctype/ctype-info.c (_nl_C_LC_CTYPE_names): Remove declaration.
(_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print,
graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}):
New declarations.
(b): Remove trailing semicolon.
(__ctype_names, __ctype_width): Don't initialize.
(__ctype32_wctype, __ctype32_wctrans, __ctype32_width): Initialize.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* elf/dl-load.c (open_path): Add a argument telling whether *dirsp
is guaranteed to be allocated with the same malloc() and may be
passed to free().
(_dl_map_object): Update open_path calls. If rtld_search_dirs has
been set to empty by an earlier open_path call, don't pass it again.
2000-08-29 09:20:23 +08:00
|
|
|
|
with the malloc'd full directory name. If it turns out
|
|
|
|
|
that none of the directories in *DIRSP exists, *DIRSP is
|
|
|
|
|
replaced with (void *) -1, and the old value is free()d
|
|
|
|
|
if MAY_FREE_DIRS is true. */
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
|
|
|
|
static int
|
2014-03-25 01:58:26 +08:00
|
|
|
|
open_path (const char *name, size_t namelen, int mode,
|
2000-10-22 01:08:18 +08:00
|
|
|
|
struct r_search_path_struct *sps, char **realname,
|
2005-09-26 23:58:00 +08:00
|
|
|
|
struct filebuf *fbp, struct link_map *loader, int whatcode,
|
|
|
|
|
bool *found_other_class)
|
1996-06-11 04:19:39 +08:00
|
|
|
|
{
|
2000-08-31 10:27:07 +08:00
|
|
|
|
struct r_search_path_elem **dirs = sps->dirs;
|
1996-06-11 04:19:39 +08:00
|
|
|
|
char *buf;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
int fd = -1;
|
1998-03-06 00:42:56 +08:00
|
|
|
|
const char *current_what = NULL;
|
2000-04-03 18:44:36 +08:00
|
|
|
|
int any = 0;
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (dirs == NULL))
|
2005-04-08 04:57:41 +08:00
|
|
|
|
/* We're called before _dl_init_paths when loading the main executable
|
|
|
|
|
given on the command line when rtld is run directly. */
|
|
|
|
|
return -1;
|
|
|
|
|
|
1999-02-03 00:39:32 +08:00
|
|
|
|
buf = alloca (max_dirnamelen + max_capstrlen + namelen);
|
1996-06-11 04:19:39 +08:00
|
|
|
|
do
|
|
|
|
|
{
|
1997-07-26 10:33:30 +08:00
|
|
|
|
struct r_search_path_elem *this_dir = *dirs;
|
|
|
|
|
size_t buflen = 0;
|
1998-04-01 02:24:48 +08:00
|
|
|
|
size_t cnt;
|
1998-07-03 06:51:40 +08:00
|
|
|
|
char *edp;
|
2000-10-30 11:21:39 +08:00
|
|
|
|
int here_any = 0;
|
2001-03-20 17:26:25 +08:00
|
|
|
|
int err;
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
1998-03-06 00:42:56 +08:00
|
|
|
|
/* If we are debugging the search for libraries print the path
|
|
|
|
|
now if it hasn't happened now. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS)
|
2000-04-03 11:51:04 +08:00
|
|
|
|
&& current_what != this_dir->what)
|
1998-03-06 00:42:56 +08:00
|
|
|
|
{
|
|
|
|
|
current_what = this_dir->what;
|
|
|
|
|
print_search_path (dirs, current_what, this_dir->where);
|
|
|
|
|
}
|
|
|
|
|
|
1998-07-03 06:51:40 +08:00
|
|
|
|
edp = (char *) __mempcpy (buf, this_dir->dirname, this_dir->dirnamelen);
|
1998-04-01 02:24:48 +08:00
|
|
|
|
for (cnt = 0; fd == -1 && cnt < ncapstr; ++cnt)
|
1997-01-21 14:10:42 +08:00
|
|
|
|
{
|
1998-04-01 02:24:48 +08:00
|
|
|
|
/* Skip this directory if we know it does not exist. */
|
|
|
|
|
if (this_dir->status[cnt] == nonexisting)
|
|
|
|
|
continue;
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
1998-04-01 02:24:48 +08:00
|
|
|
|
buflen =
|
2002-01-31 11:41:25 +08:00
|
|
|
|
((char *) __mempcpy (__mempcpy (edp, capstr[cnt].str,
|
|
|
|
|
capstr[cnt].len),
|
1998-04-01 02:24:48 +08:00
|
|
|
|
name, namelen)
|
|
|
|
|
- buf);
|
|
|
|
|
|
|
|
|
|
/* Print name we try if this is wanted. */
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
|
2004-03-06 16:19:29 +08:00
|
|
|
|
_dl_debug_printf (" trying file=%s\n", buf);
|
1998-03-06 00:42:56 +08:00
|
|
|
|
|
2015-11-11 11:44:48 +08:00
|
|
|
|
fd = open_verify (buf, -1, fbp, loader, whatcode, mode,
|
2014-03-25 01:58:26 +08:00
|
|
|
|
found_other_class, false);
|
1998-04-01 02:24:48 +08:00
|
|
|
|
if (this_dir->status[cnt] == unknown)
|
1998-09-09 19:53:19 +08:00
|
|
|
|
{
|
|
|
|
|
if (fd != -1)
|
|
|
|
|
this_dir->status[cnt] = existing;
|
2005-01-07 06:40:27 +08:00
|
|
|
|
/* Do not update the directory information when loading
|
|
|
|
|
auditing code. We must try to disturb the program as
|
|
|
|
|
little as possible. */
|
|
|
|
|
else if (loader == NULL
|
2006-06-27 22:23:43 +08:00
|
|
|
|
|| GL(dl_ns)[loader->l_ns]._ns_loaded->l_auditing == 0)
|
1998-09-09 19:53:19 +08:00
|
|
|
|
{
|
|
|
|
|
/* We failed to open machine dependent library. Let's
|
|
|
|
|
test whether there is any directory at all. */
|
2000-08-16 09:28:07 +08:00
|
|
|
|
struct stat64 st;
|
1998-09-09 19:53:19 +08:00
|
|
|
|
|
|
|
|
|
buf[buflen - namelen - 1] = '\0';
|
|
|
|
|
|
2000-08-16 09:28:07 +08:00
|
|
|
|
if (__xstat64 (_STAT_VER, buf, &st) != 0
|
1998-09-09 19:53:19 +08:00
|
|
|
|
|| ! S_ISDIR (st.st_mode))
|
|
|
|
|
/* The directory does not exist or it is no directory. */
|
|
|
|
|
this_dir->status[cnt] = nonexisting;
|
|
|
|
|
else
|
|
|
|
|
this_dir->status[cnt] = existing;
|
|
|
|
|
}
|
|
|
|
|
}
|
1997-01-21 14:10:42 +08:00
|
|
|
|
|
2000-04-03 18:44:36 +08:00
|
|
|
|
/* Remember whether we found any existing directory. */
|
2005-01-07 06:40:27 +08:00
|
|
|
|
here_any |= this_dir->status[cnt] != nonexisting;
|
2000-04-03 18:44:36 +08:00
|
|
|
|
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (fd != -1 && __glibc_unlikely (mode & __RTLD_SECURE)
|
2014-10-10 19:13:11 +08:00
|
|
|
|
&& __libc_enable_secure)
|
1998-02-18 02:23:42 +08:00
|
|
|
|
{
|
|
|
|
|
/* This is an extra security effort to make sure nobody can
|
|
|
|
|
preload broken shared objects which are in the trusted
|
|
|
|
|
directories and so exploit the bugs. */
|
2000-08-16 09:28:07 +08:00
|
|
|
|
struct stat64 st;
|
1998-02-18 02:23:42 +08:00
|
|
|
|
|
2000-08-16 09:28:07 +08:00
|
|
|
|
if (__fxstat64 (_STAT_VER, fd, &st) != 0
|
1998-02-18 02:23:42 +08:00
|
|
|
|
|| (st.st_mode & S_ISUID) == 0)
|
|
|
|
|
{
|
|
|
|
|
/* The shared object cannot be tested for being SUID
|
|
|
|
|
or this bit is not set. In this case we must not
|
|
|
|
|
use this object. */
|
|
|
|
|
__close (fd);
|
|
|
|
|
fd = -1;
|
|
|
|
|
/* We simply ignore the file, signal this by setting
|
|
|
|
|
the error value which would have been set by `open'. */
|
|
|
|
|
errno = ENOENT;
|
|
|
|
|
}
|
|
|
|
|
}
|
1996-06-11 04:19:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (fd != -1)
|
|
|
|
|
{
|
2001-11-02 07:16:25 +08:00
|
|
|
|
*realname = (char *) malloc (buflen);
|
1998-02-18 02:23:42 +08:00
|
|
|
|
if (*realname != NULL)
|
1996-06-11 04:19:39 +08:00
|
|
|
|
{
|
|
|
|
|
memcpy (*realname, buf, buflen);
|
|
|
|
|
return fd;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
/* No memory for the name, we certainly won't be able
|
|
|
|
|
to load and link it. */
|
|
|
|
|
__close (fd);
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
2001-03-20 17:26:25 +08:00
|
|
|
|
if (here_any && (err = errno) != ENOENT && err != EACCES)
|
1996-06-11 04:19:39 +08:00
|
|
|
|
/* The file exists and is readable, but something went wrong. */
|
|
|
|
|
return -1;
|
2000-10-30 11:21:39 +08:00
|
|
|
|
|
|
|
|
|
/* Remember whether we found anything. */
|
|
|
|
|
any |= here_any;
|
1996-06-11 04:19:39 +08:00
|
|
|
|
}
|
1997-07-26 10:33:30 +08:00
|
|
|
|
while (*++dirs != NULL);
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
2000-04-03 18:44:36 +08:00
|
|
|
|
/* Remove the whole path if none of the directories exists. */
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (! any))
|
2000-04-03 18:44:36 +08:00
|
|
|
|
{
|
Update.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* string/strxfrm.c (strxfrm, wcsxfrm): Include <sys/param.h>.
If nrules == 0 and srclen < n, copy only srclen + 1 characters.
* sysdeps/generic/getdomain.c (getdomainname): Include <sys/param.h>.
If the result is fits in the buffer, copy only as many bytes as needed.
* sysdeps/generic/_strerror.c (__strerror_r): Don't zero-fill the
buffer after copying numbuf into it.
* sysdeps/mach/_strerror.c (__strerror_r): Likewise.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* posix/confstr.c (confstr): When string_len > len, NUL-terminate
the result. When string_len < len, don't clear the rest of the buffer.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
Support for new LC_COLLATE format.
* locale/coll-lookup.h: New file.
* locale/weightwc.h (findidx): When size == 0, call
collidx_table_lookup.
* wcsmbs/wcscoll.c: Include coll-lookup.h.
* wcsmbs/wcsxfrm.c: Likewise.
* posix/fnmatch.c: Likewise.
* posix/fnmatch_loop.c (internal_fnwmatch): When size == 0, call
collseq_table_lookup.
* locale/programs/3level.h: New file.
* locale/programs/ld-ctype.c: (wcwidth_table, wctrans_table): Define
by including "3level.h".
* locale/programs/ld-collate.c (wchead_table, collidx_table,
collseq_table): New types, defined by including "3level.h".
(locale_collate_t): New wcheads_3level, wcseqorder_3level fields.
(encoding_mask, encoding_byte): Remove.
(utf8_encode): Use simple shifts instead.
(collate_finish): When !oldstyle_tables, set plane_size and plane_cnt
to 0, and initialize and fill wcheads_3level and wcseqorder_3level.
(collate_output): New local variable tablewc_3level. When
!oldstyle_tables, set table_size to 0 and names to NULL and fill
tablewc_3level instead of tablewc. Change format of TABLEWC and
COLLSEQWC entries written to the file.
* locale/C-collate.c (collseqwc): Change format.
(_nl_C_LC_COLLATE): Set HASH_SIZE and HASH_LAYERS to 0, change format
of COLLSEQWC.
* locale/Makefile (distribute): Add coll-lookup.h, programs/3level.h.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* locale/programs/ld-ctype.c (MAX_CHARNAMES_IDX): New macro.
(locale_ctype_t): New charnames_idx field.
(ctype_startup): Initialize charnames_idx field.
(find_idx): Speed up dramatically by using charnames_idx inverse table.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* locale/C-ctype.c: Switch to new locale format.
(_nl_C_LC_CTYPE_names): Remove array.
(STRUCT_CTYPE_CLASS): New macro.
(_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print,
graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}):
New three-level tables.
(_nl_C_LC_CTYPE_width): Change from array to three-level table.
(_nl_C_LC_CTYPE): Fix nstrings value. Set HASH_SIZE and HASH_LAYERS
to 0. Change WIDTH format. Set CLASS_OFFSET and MAP_OFFSET. Add
12 class tables and 2 map tables at the end.
* ctype/ctype-info.c (_nl_C_LC_CTYPE_names): Remove declaration.
(_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print,
graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}):
New declarations.
(b): Remove trailing semicolon.
(__ctype_names, __ctype_width): Don't initialize.
(__ctype32_wctype, __ctype32_wctrans, __ctype32_width): Initialize.
2000-08-27 Bruno Haible <haible@clisp.cons.org>
* elf/dl-load.c (open_path): Add a argument telling whether *dirsp
is guaranteed to be allocated with the same malloc() and may be
passed to free().
(_dl_map_object): Update open_path calls. If rtld_search_dirs has
been set to empty by an earlier open_path call, don't pass it again.
2000-08-29 09:20:23 +08:00
|
|
|
|
/* Paths which were allocated using the minimal malloc() in ld.so
|
|
|
|
|
must not be freed using the general free() in libc. */
|
2000-08-31 10:27:07 +08:00
|
|
|
|
if (sps->malloced)
|
|
|
|
|
free (sps->dirs);
|
[BZ #2510, BZ #2830, BZ #3137, BZ #3313, BZ #3426, BZ #3465, BZ #3480, BZ #3483, BZ #3493, BZ #3514, BZ #3515, BZ #3664, BZ #3673, BZ #3674]
2007-01-11 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/soft-fp/sfp-machine.h: Remove.
* sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise.
2007-01-10 Ulrich Drepper <drepper@redhat.com>
* io/fts.c: Make sure fts_cur is always valid after return from
fts_read.
Patch by Miloslav Trmac <mitr@redhat.com>.
2006-10-27 Richard Sandiford <richard@codesourcery.com>
* elf/elf.h (R_MIPS_GLOB_DAT): Define.
(R_MIPS_NUM): Bump by 1.
2007-01-03 Jakub Jelinek <jakub@redhat.com>
* posix/execvp.c: Include alloca.h.
(allocate_scripts_argv): Renamed to...
(scripts_argv): ... this. Don't allocate buffer here nor count
arguments.
(execvp): Use alloca if possible.
* posix/Makefile: Add rules to build and run tst-vfork3 test.
* posix/tst-vfork3.c: New test.
* stdlib/Makefile (tst-strtod3-ENV): Define.
2007-01-02 Ulrich Drepper <drepper@redhat.com>
* posix/getconf.c: Update copyright year.
* nss/getent.c: Likewise.
* iconv/iconvconfig.c: Likewise.
* iconv/iconv_prog.c: Likewise.
* elf/ldconfig.c: Likewise.
* catgets/gencat.c: Likewise.
* csu/version.c: Likewise.
* elf/ldd.bash.in: Likewise.
* elf/sprof.c (print_version): Likewise.
* locale/programs/locale.c: Likewise.
* locale/programs/localedef.c: Likewise.
* nscd/nscd.c (print_version): Likewise.
* debug/xtrace.sh: Likewise.
* malloc/memusage.sh: Likewise.
* malloc/mtrace.pl: Likewise.
* debug/catchsegv.sh: Likewise.
2006-12-24 Ulrich Drepper <drepper@redhat.com>
* malloc/malloc.c (sYSMALLOc): Remove some unnecessary alignment
attempts.
2006-12-23 Ulrich Drepper <drepper@redhat.com>
* posix/wordexp.c: Remove some unnecessary tests.
2006-12-20 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
* sysdeps/unix/sysv/linux/sh/bits/shm.h: New file.
* nss/getXXbyYY_r.c: Include atomic.h.
(INTERNAL (REENTRANT_NAME)): Write startp after start_fct,
add atomic_write_barrier () in between.
2006-11-28 Jakub Jelinek <jakub@redhat.com>
* elf/dl-support.c: Include dl-procinfo.h.
* sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4,
PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS,
PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X):
Define.
(_dl_string_platform): Use PPC_PLATFORM_* macros instead of
hardcoded constants.
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use
PPC_PLATFORM_* macros for array designators.
2006-11-11 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap
names to the beginning.
(_dl_powerpc_platforms): Add "power6x".
* sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease.
(HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP.
(_DL_PLATFORMS_COUNT): Increase.
(_dl_string_platform): Handle power6x case.
* sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP,
PPC_FEATURE_POWER6_EXT): Define.
(PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.
[-2^31 .. 2^31) range.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Define ST_RELATIME.
* sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags):
Handle relatime mount option.
2006-12-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Include
kernel-features.h.
2006-12-11 Ulrich Drepper <drepper@redhat.com>
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Parse thousand
separators also if no non-zero digits found.
* stdlib/Makefile (tests): Add tst-strtod3.
[BZ #3664]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix test to recognize
empty parsed strings.
* stdlib/Makefile (tests): Add tst-strtod2.
* stdlib/tst-strtod2.c: New file.
[BZ #3673]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix exp_limit
computation.
* stdlib/Makefile (tests): Add tst-atof2.
* stdlib/tst-atof2.c: New file.
[BZ #3674]
* stdlib/strtod_l.c (____STRTOF_INTERNAL): Adjust exponent value
correctly if removing trailing zero of hex-float.
* stdlib/Makefile (tests): Add tst-atof1.
* stdlib/tst-atof1.c: New file.
* misc/mntent_r.c (__hasmntopt): Check p[optlen] even when p == rest.
Start searching for next comma at p rather than rest.
* misc/Makefile (tests): Add tst-mntent2.
* misc/tst-mntent2.c: New test.
2006-12-08 Ulrich Drepper <drepper@redhat.com>
* malloc/memusage.c: Handle realloc with new size of zero and
non-NULL pointer correctly.
(me): Really write first record twice.
(struct entry): Make format bi-arch safe.
(dest): Write out more realloc statistics.
* malloc/memusagestat.c (struct entry): Make format bi-arch safe.
2006-12-05 Jakub Jelinek <jakub@redhat.com>
* nis/nis_subr.c (nis_getnames): Revert last change.
2006-12-03 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/sys/io.h: Removed.
2006-11-30 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/i686/memcmp.S: Use jump table as the base of
jump table entries.
2006-11-30 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/i386/clone.S: Provide CFI for the outermost
`clone' function to ensure proper unwinding stop of gdb.
* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
2006-12-01 Ulrich Drepper <drepper@redhat.com>
* nscd/nscd.init: Remove obsolete and commented-out -S option
handling.
2006-11-23 Jakub Jelinek <jakub@redhat.com>
[BZ #3514]
* manual/string.texi (strncmp): Fix pastos from wcscmp description.
[BZ #3515]
* manual/string.texi (strtok): Remove duplicate paragraph.
2006-12-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Fix compatibility with
libgcc not supporting `rflags' unwinding (register # >= 17).
2006-11-30 Jakub Jelinek <jakub@redhat.com>
* sunrpc/svc_run.c (svc_run): Set my_pollfd to new_pollfd if realloc
succeeded.
2006-11-29 Daniel Jacobowitz <dan@codesourcery.com>
Jakub Jelinek <jakub@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sigaction.c (restore_rt): Add correct
unwind information.
* sysdeps/unix/sysv/linux/x86_64/Makefile: Provide symbols for
'restore_rt' even in the 'signal' directory.
* sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym: Extend the regs list.
malloc crashed. Don't allocate memory unnecessarily in each
loop.
2006-10-21 Jakub Jelinek <jakub@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Fix last change.
2006-11-20 Ulrich Drepper <drepper@redhat.com>
* resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit.
2006-11-18 Bruno Haible <bruno@clisp.org>
* sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Invoke
__sysconf only after having tried to call getgroups32.
2006-11-19 Ulrich Drepper <drepper@redhat.com>
* nss/nss_files/files-hosts.c (LINE_PARSER): Support IPv6-style
addresses for IPv4 queries if they can be mapped.
2006-11-16 Jakub Jelinek <jakub@redhat.com>
* sysdeps/x86_64/fpu/s_copysignf.S (__copysignf): Switch to .text.
* sysdeps/x86_64/fpu/s_copysign.S (__copysign): Likewise.
(signmask): Add .size directive.
(othermask): Add .type directive.
2006-11-14 Ulrich Drepper <drepper@redhat.com>
* po/nl.po: Update from translation team.
* timezone/zdump.c: Redo fix for BZ #3137.
2006-11-14 Jakub Jelinek <jakub@redhat.com>
* nss/nss_files/files-alias.c (get_next_alias): Set line back
to first_unused after parsing :include: file.
* timezone/africa: Update from tzdata2006o.
* timezone/antarctica: Likewise.
* timezone/asia: Likewise.
* timezone/australasia: Likewise.
* timezone/backward: Likewise.
* timezone/europe: Likewise.
* timezone/iso3166.tab: Likewise.
* timezone/northamerica: Likewise.
* timezone/southamerica: Likewise.
* timezone/zone.tab: Likewise.
* time/tzfile.c (__tzfile_read): Extend to handle new file format
on machines with 64-bit time_t.
* timezone/checktab.awk: Update from tzcode2006o.
* timezone/ialloc.c: Likewise.
* timezone/private.h: Likewise.
* timezone/scheck.c: Likewise.
* timezone/tzfile.h: Likewise.
* timezone/tzselect.ksh: Likewise.
* timezone/zdump.c: Likewise.
* timezone/zic.c: Likewise.
[BZ #3483]
* elf/ldconfig.c (main): Call setlocale and textdomain.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
[BZ #3480]
* manual/argp.texi: Fix typos.
* manual/charset.texi: Likewise.
* manual/errno.texi: Likewise.
* manual/filesys.texi: Likewise.
* manual/lang.texi: Likewise.
* manual/maint.texi: Likewise.
* manual/memory.texi: Likewise.
* manual/message.texi: Likewise.
* manual/resource.texi: Likewise.
* manual/search.texi: Likewise.
* manual/signal.texi: Likewise.
* manual/startup.texi: Likewise.
* manual/stdio.texi: Likewise.
* manual/sysinfo.texi: Likewise.
* manual/syslog.texi: Likewise.
* manual/time.texi: Likewise.
Patch by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
[BZ #3465]
* sunrpc/clnt_raw.c: Minimal message improvements.
* sunrpc/pm_getmaps.c: Likewise.
* nis/nss_nisplus/nisplus-publickey.c: Likewise.
* nis/nis_print_group_entry.c: Likewise.
* locale/programs/repertoire.c: Likewise.
* locale/programs/charmap.c: Likewise.
* malloc/memusage.sh: Likewise.
* elf/dl-deps.c: Likewise.
* locale/programs/ld-collate.c: Likewise.
* libio/vswprintf.c: Likewise.
* malloc/memusagestat.c: Likewise.
* sunrpc/auth_unix.c: Likewise.
* sunrpc/rpc_main.c: Likewise.
* nscd/cache.c: Likewise.
* locale/programs/repertoire.c: Unify output messages.
* locale/programs/charmap.c: Likewise.
* locale/programs/ld-ctype.c: Likewise.
* locale/programs/ld-monetary.c: Likewise.
* locale/programs/ld-numeric.c: Likewise.
* locale/programs/ld-time.c: Likewise.
* elf/ldconfig.c: Likewise.
* nscd/selinux.c: Likewise.
* elf/cache.c: Likewise.
Patch mostly by Benno Schulenberg <bensberg@justemail.net>.
2006-11-10 Jakub Jelinek <jakub@redhat.com>
* string/strxfrm_l.c (STRXFRM): Fix trailing \1 optimization
if N is one bigger than return value.
* string/tst-strxfrm2.c (do_test): Also test strxfrm with l1 + 1
and l1 last arguments, if buf is defined, verify the return value
equals to strlen (buf) and verify no byte beyond passed length
is modified.
2006-11-10 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
* sysdeps/gnu/siglist.c (__old_sys_siglist, __old_sys_sigabbrev):
Use __new_sys_siglist instead of _sys_siglist_internal as
second macro argument.
(_old_sys_siglist): Use declare_symbol_alias macro instead of
strong_alias.
2006-11-09 Ulrich Drepper <drepper@redhat.com>
[BZ #3493]
* posix/unistd.h (sysconf): Remove const attribute.
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Fix test for
temporary or deprecated addresses.
Patch by Sridhar Samudrala <sri@us.ibm.com>.
* string/Makefile (tests): Add tst-strxfrm2.
* string/tst-strxfrm2.c: New file.
2006-10-09 Jakub Jelinek <jakub@redhat.com>
* elf/dl-debug.c (_dl_debug_initialize): Check r->r_map for 0
rather than r->r_brk.
* string/strxfrm_l.c (STRXFRM): Do the trailing \1 removal
optimization even if needed > n.
2006-11-07 Jakub Jelinek <jakub@redhat.com>
* include/libc-symbols.h (declare_symbol): Rename to...
(declare_symbol_alias): ... this. Add ORIGINAL argument, imply
strong_alias (ORIGINAL, SYMBOL) in asm to make sure it preceedes
.size directive.
* sysdeps/gnu/errlist-compat.awk: Adjust for declare_symbol_alias
changes.
* sysdeps/gnu/siglist.c: Likewise.
2006-11-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/fpu/bits/mathinline.h
[__LIBC_INTERNAL_MATH_INLINES]: Moved to ...
* sysdeps/powerpc/fpu/math_private.h: ...here. New file.
2006-11-05 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word):
Update handling of cache descriptor 0x49 for new models.
* sysdeps/unix/sysv/linux/x86_64/sysconf.c (intel_check_word):
Likewise.
2006-11-02 Ulrich Drepper <drepper@redhat.com>
* configure.in: Work around ld --help change and avoid -z relro
test completely if the architecture doesn't care about security.
2006-11-01 Ulrich Drepper <drepper@redhat.com>
* po/sv.po: Update from translation team.
2006-10-31 Ulrich Drepper <drepper@redhat.com>
* stdlib/atexit.c (atexit): Don't mark as hidden when used to
generate compatibility version.
2006-10-29 Ulrich Drepper <drepper@redhat.com>
* configure.in: Relax -z relro requirement a bit.
* po/sv.po: Update from translation team.
2006-10-29 Jakub Jelinek <jakub@redhat.com>
* elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise.
* elf/dl-close.c (_dl_close_worker): Likewise.
* elf/dl-open.c (_dl_open_worker): Likewise.
* sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define.
* configure.in: Require assembler support for visibility, compiler
support for visibility and aliases, linker support for various -z
options.
* Makeconfig: Remove conditional code which now is unnecessary.
* config.h.in: Likewise.
* config.make.in: Likewise.
* dlfcn/Makefile: Likewise.
* elf/Makefile: Likewise.
* elf/dl-load.c: Likewise.
* elf/rtld.c: Likewise.
* include/libc-symbols.h: Likewise.
* include/stdio.h: Likewise.
* io/Makefile: Likewise.
* io/fstat.c: Likewise.
* io/fstat64.c: Likewise.
* io/fstatat.c: Likewise.
* io/fstatat64.c: Likewise.
* io/lstat.c: Likewise.
* io/lstat64.c: Likewise.
* io/mknod.c: Likewise.
* io/mknodat.c: Likewise.
* io/stat.c: Likewise.
* io/stat64.c: Likewise.
* libio/stdio.c: Likewise.
* nscd/Makefile: Likewise.
* stdlib/Makefile: Likewise.
* stdlib/atexit.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/i386/sysdep.h: Likewise.
* sysdeps/i386/i686/memcmp.S: Likewise.
* sysdeps/powerpc/powerpc32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
* Makerules: USE_TLS support is now default.
* tls.make.c: Likewise.
* csu/Versions: Likewise.
* csu/libc-start.c: Likewise.
* csu/libc-tls.c: Likewise.
* csu/version.c: Likewise.
* dlfcn/dlinfo.c: Likewise.
* elf/dl-addr.c: Likewise.
* elf/dl-cache.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-iteratephdr.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-support.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-sysdep.c: Likewise.
* elf/dl-tls.c: Likewise.
* elf/ldconfig.c: Likewise.
* elf/rtld.c: Likewise.
* elf/tst-tls-dlinfo.c: Likewise.
* elf/tst-tls1.c: Likewise.
* elf/tst-tls10.h: Likewise.
* elf/tst-tls14.c: Likewise.
* elf/tst-tls2.c: Likewise.
* elf/tst-tls3.c: Likewise.
* elf/tst-tls4.c: Likewise.
* elf/tst-tls5.c: Likewise.
* elf/tst-tls6.c: Likewise.
* elf/tst-tls7.c: Likewise.
* elf/tst-tls8.c: Likewise.
* elf/tst-tls9.c: Likewise.
* elf/tst-tlsmod1.c: Likewise.
* elf/tst-tlsmod13.c: Likewise.
* elf/tst-tlsmod13a.c: Likewise.
* elf/tst-tlsmod14a.c: Likewise.
* elf/tst-tlsmod2.c: Likewise.
* elf/tst-tlsmod3.c: Likewise.
* elf/tst-tlsmod4.c: Likewise.
* elf/tst-tlsmod5.c: Likewise.
* elf/tst-tlsmod6.c: Likewise.
* include/errno.h: Likewise.
* include/link.h: Likewise.
* include/tls.h: Likewise.
* locale/global-locale.c: Likewise.
* locale/localeinfo.h: Likewise.
* malloc/arena.c: Likewise.
* malloc/hooks.c: Likewise.
* malloc/malloc.c: Likewise.
* resolv/Versions: Likewise.
* sysdeps/alpha/dl-machine.h: Likewise.
* sysdeps/alpha/libc-tls.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/generic/tls.h: Likewise.
* sysdeps/i386/dl-machine.h: Likewise.
* sysdeps/ia64/dl-machine.h: Likewise.
* sysdeps/ia64/libc-tls.c: Likewise.
* sysdeps/mach/hurd/fork.c: Likewise.
* sysdeps/mach/hurd/i386/tls.h: Likewise.
* sysdeps/powerpc/powerpc32/dl-machine.c: Likwise.
* sysdeps/powerpc/powerpc32/dl-machine.h: Likewise.
* sysdeps/powerpc/powerpc64/dl-machine.h: Likewise.
* sysdeps/s390/libc-tls.c: Likewise.
* sysdeps/s390/s390-32/dl-machine.h: Likewise.
* sysdeps/s390/s390-64/dl-machine.h: Likewise.
* sysdeps/sh/dl-machine.h: Likewise.
* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
* sysdeps/x86_64/dl-machine.h: Likewise.
[BZ #3426]
* stdlib/stdlib.h: Adjust comment for canonicalize_file_name to
reality.
2006-10-27 Jakub Jelinek <jakub@redhat.com>
* elf/dl-lookup.c (_dl_debug_bindings): Remove unused symbol_scope
argument.
(_dl_lookup_symbol_x): Adjust caller.
* sysdeps/generic/ldsodefs.h (struct link_namespaces): Remove
_ns_global_scope.
* elf/rtld.c (dl_main): Don't initialize _ns_global_scope.
* elf/dl-libc.c: Revert l_scope name changes.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* elf/dl-close.c (_dl_close): Likewise.
* elf/dl-open.c (dl_open_worker): Likewise. If not SINGLE_THREAD_P,
always use __rtld_mrlock_{change,done}. Always free old scope list
here if not l_scope_mem.
* elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Revert l_scope name
change. Never free scope list here. Just __rtld_mrlock_lock before
the lookup and __rtld_mrlock_unlock it after the lookup.
* elf/dl-sym.c: Likewise.
* include/link.h (struct r_scoperec): Remove.
(struct link_map): Replace l_scoperec with l_scope, l_scoperec_mem
with l_scope_mem and l_scoperec_lock with l_scope_lock.
2006-10-25 Ulrich Drepper <drepper@redhat.com>
* sysdeps/gnu/netinet/tcp.h: Define TCP_CONGESTION.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* configure.in: Disable building profile libraries by default.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* elf/dl-lookup.c (_dl_lookup_symbol_x): Add warning to
_dl_lookup_symbol_x code.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* elf/dl-runtime.c: Include sysdep-cancel.h.
(_dl_fixup, _dl_profile_fixup): Use __rtld_mrlock_* and
scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_*
instead of catomic_* macros.
* elf/dl-sym.c: Include sysdep-cancel.h.
(do_sym): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-close.c: Include sysdep-cancel.h.
(_dl_close): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
* elf/dl-open.c: Include sysdep-cancel.h.
(dl_open_worker): Use __rtld_mrlock_* and scoperec->nusers only
if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Set maxfb to address of last
fastbin rather than end of fastbin array.
2006-10-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/i486/bits/atomic.h (catomic_decrement): Use correct
body macro.
* sysdeps/x86_64/bits/atomic.h
(__arch_c_compare_and_exchange_val_64_acq): Add missing casts.
(catomic_decrement): Use correct body macro.
2006-10-17 Jakub Jelinek <jakub@redhat.com>
* include/atomic.h: Add a unique prefix to all local variables
in macros.
* csu/tst-atomic.c (do_test): Test also catomic_* macros.
2006-10-14 Ulrich Drepper <drepper@redhat.com>
* resolv/arpa/nameser.h: Document that ns_t_a6 is deprecated.
[BZ #3313]
* malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to
determine highest fast bin to consolidate, always look into all of
them.
(do_check_malloc_state): Only require for empty bins for large
sizes in main arena.
* libio/stdio.h: Add more __wur attributes.
2006-11-12 Andreas Jaeger <aj@suse.de>
[BZ #2510]
* manual/search.texi (Hash Search Function): Clarify.
(Array Search Function): Clarify.
2006-11-12 Joseph Myers <joseph@codesourcery.com>
[BZ #2830]
* math/atest-exp.c (main): Cast hex value to mp_limb_t before
shifting.
* math/atest-exp2.c (read_mpn_hex): Likewise.
* math/atest-sincos.c (main): Likewise.
* sysdeps/unix/sysv/linux/syscalls.list: Add epoll_pwait.
* sysdeps/unix/sysv/linux/sys/epoll.h: Declare epoll_pwait.
* sysdeps/unix/sysv/linux/Versions (libc): Add epoll_pwait for
version GLIBC_2.6.
* Versions.def: Add GLIBC_2.6 for libc.
* sysdeps/i386/i486/bits/atomic.h: Add catomic_* support.
2006-10-11 Jakub Jelinek <jakub@redhat.com>
* malloc/malloc.c (_int_malloc): Remove unused any_larger variable.
* nis/nis_defaults.c (__nis_default_access): Don't call getenv twice.
* nis/nis_subr.c (nis_getnames): Use __secure_getenv instead of getenv.
* sysdeps/generic/unsecvars.h: Add NIS_PATH.
2006-10-11 Ulrich Drepper <drepper@redhat.com>
* include/atomic.c: Define catomic_* operations.
* sysdeps/x86_64/bits/atomic.h: Likewise. Fix a few minor problems.
* stdlib/cxa_finalize.c: Use catomic_* operations instead of atomic_*.
* malloc/memusage.c: Likewise.
* gmon/mcount.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-profile.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/dl-runtime.c: Likewise.
* elf/dl-fptr.c: Likewise.
* resolv/res_libc.c: Likewise.
2006-10-10 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/utimes.c: Use a union to avoid an improper cast.
* sysdeps/mach/hurd/futimes.c: Likewise.
* sysdeps/mach/hurd/lutimes.c: Likewise.
2006-10-09 Ulrich Drepper <drepper@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Implement reference counting of scope records.
* elf/dl-close.c (_dl_close): Remove all scopes from removed objects
from the list in objects which remain. Always allocate new scope
record.
* elf/dl-open.c (dl_open_worker): When growing array for scopes,
don't resize, allocate a new one.
* elf/dl-runtime.c: Update reference counters before using a scope
array.
* elf/dl-sym.c: Likewise.
* elf/dl-libc.c: Adjust for l_scope name change.
* elf/dl-load.c: Likewise.
* elf/dl-object.c: Likewise.
* elf/rtld.c: Likewise.
* include/link.h: Include <rtld-lowlevel.h>. Define struct
r_scoperec. Replace r_scope with pointer to r_scoperec structure.
Add l_scoperec_lock.
* sysdeps/generic/ldsodefs.h: Include <rtld-lowlevel.h>.
* sysdeps/generic/rtld-lowlevel.h: New file.
* include/atomic.h: Rename atomic_and to atomic_and_val and
atomic_or to atomic_or_val. Define new macros atomic_and and
atomic_or which do not return values.
* sysdeps/x86_64/bits/atomic.h: Define atomic_and and atomic_or.
Various cleanups.
* sysdeps/i386/i486/bits/atomic.h: Likewise.
* po/sv.po: Update from translation team.
2006-10-07 Ulrich Drepper <drepper@redhat.com>
* Versions.def: Add GLIBC_2.6 to libpthread.
* include/shlib-compat.h (SHLIB_COMPAT): Expand parameters before use.
(versioned_symbol): Likewise.
(compat_symbol): Likewise.
* po/tr.po: Update from translation team.
* nis/Banner: Removed. It's been integral part forever and the
author info is incomplete anyway.
* libio/Banner: Likewise.
2006-10-06 Ulrich Drepper <drepper@redhat.com>
* version.h (VERSION): Bump to 2.5.90 for new development tree.
2007-01-12 05:51:07 +08:00
|
|
|
|
|
2013-04-18 22:50:49 +08:00
|
|
|
|
/* rtld_search_dirs and env_path_list are attribute_relro, therefore
|
2015-07-15 04:15:26 +08:00
|
|
|
|
avoid writing into it. */
|
2013-04-18 22:50:49 +08:00
|
|
|
|
if (sps != &rtld_search_dirs && sps != &env_path_list)
|
2005-02-08 07:52:23 +08:00
|
|
|
|
sps->dirs = (void *) -1;
|
2000-04-03 18:44:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
1996-06-11 04:19:39 +08:00
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Map in the shared object file NAME. */
|
|
|
|
|
|
|
|
|
|
struct link_map *
|
2010-10-25 09:43:15 +08:00
|
|
|
|
_dl_map_object (struct link_map *loader, const char *name,
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
int type, int trace_mode, int mode, Lmid_t nsid)
|
1996-06-11 04:19:39 +08:00
|
|
|
|
{
|
|
|
|
|
int fd;
|
2015-11-09 23:52:31 +08:00
|
|
|
|
const char *origname = NULL;
|
1996-06-11 04:19:39 +08:00
|
|
|
|
char *realname;
|
update from main archive 960828
Thu Aug 29 00:28:08 1996 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/printf_fp.c (__printf_fp): Use default value `.` if
`decimal' char is 0.
* C-numeric.c (not_available): New constant.
(_nl_C_LC_NUMERIC): Use `not_available' for grouping value.
* nss/nsswitch.conf: Example configuration file.
* nss/db-Makefile: Example Makefile for generation of databases
for nss_db.
* nss/Makefile (distribute): Add nsswitch.conf and db-Makefile.
1996-08-28 Paul Eggert <eggert@twinsun.com>
* C-messages.c (_nl_C_LC_MESSAGES): Set yesexpr to "^[yY]" and
noexpr to "^[nN]"; this conforms to POSIX.2.
* C-time.c (_nl_C_LC_TIME): Change %d to %e in d_t_format, to
conform to POSIX.2.
1996-08-28 Paul Eggert <eggert@twinsun.com>
* C-monetary.c (not_available): New constant.
(_nl_C_LC_MONETARY): Set mon_decimal_point to "", and set
mon_grouping, int_frac_digits, frac_digits, p_cs_precedes,
p_sep_by_space, n_cs_precedes, n_sep_by_space, p_sign_posn, and
n_sign_posn to CHAR_MAX, as required by the POSIX Standard.
Wed Aug 28 23:12:28 1996 Ulrich Drepper <drepper@cygnus.com>
* nss/nss_db/db-XXX.c: Correct function names. They must be
`_nss_db_*' instead of `_nss_files_*'.
(lookup): `parse_line' returns 1 if succesful.
* nss/nss_files/files-service.c (servbyname): Key for database
must also contain protocol names.
(servbypt): Likewise.
Test must also check for protocol. Add `proto' argument.
Tue Aug 27 09:56:13 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* MakeTAGS ($P/subdirs.pot): Prefix all file names, not only the
first one.
Fri Aug 16 16:11:25 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* nss/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): Treat
EPFNOSUPPORT and EAFNOSUPPORT as implying NSS_STATUS_UNAVAIL just
like ECONNREFUSED already does.
(_nss_dns_gethostbyaddr_r): Likewise.
* nss/nss_dns/dns-network.c (_nss_dns_getnetbyname_r): Likewise.
(_nss_dns_getnetbyaddr_r): Likewise.
* sysdeps/mach/hurd/socket.c (socket): For message transmission
and RPC errors that indicate that the socket server is not really
present and able to do its job, turn the error into EPFNOSUPPORT.
* sysdeps/generic/sbrk.c (__sbrk): Get kernel brk address
always only if in static libc or if statically linked program
uses libc.so.
1996-08-29 08:31:18 +08:00
|
|
|
|
char *name_copy;
|
1996-06-11 04:19:39 +08:00
|
|
|
|
struct link_map *l;
|
2000-10-22 01:08:18 +08:00
|
|
|
|
struct filebuf fb;
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
assert (nsid >= 0);
|
2009-04-01 08:26:36 +08:00
|
|
|
|
assert (nsid < GL(dl_nns));
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
|
1996-06-11 04:19:39 +08:00
|
|
|
|
/* Look for this name among those already loaded. */
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
for (l = GL(dl_ns)[nsid]._ns_loaded; l; l = l->l_next)
|
Update.
1997-08-24 12:24 Ulrich Drepper <drepper@cygnus.com>
* configure.in (INSTALL): Quote `$'.
* libc.map: Add __xpg_basename.
* csu/Makefile (initfini.s): Disable optimization.
* elf/dl-deps.c: Implement handling of DL_FILTER.
* elf/dl-load.c (_dl_init_paths): Add error check.
* intl/finddomain.c (_nl_find_domain): Correct comment.
* intl/localealias.c: Include <bits/libc-lock.h> not <libc-lock.h>.
* libio/stdio.h: Make {,v}snprintf available if __USE_BSD.
Change extern inline functions to work correctly in C++.
* locale/iso-4217.def: Update for more recent ISO 4217 version.
* locale/loadlocale.c (_nl_load_locale): Add cast.
* manual/message.texi: Finish gettext section.
* posix/getopt_init.c: Don't use relative #include path.
(__getopt_clean_environment): Change function to take pointer to
environment as argument. Optimize generation of test string a bit.
* sysdeps/unix/sysv/linux/init-first.c: Call __getopt_clean_environment
with additional argument.
* poisx/glob.c: Add prototype for next_brace_sub.
* sysdeps/generic/dl-sysdep.c: Recognize AT_BASE value on auxiliary
vector.
* sysdeps/i386/dl-machine.h (elf_machine_load_address): Rewrite
to not generate relocation entry. Suggested by Richard Henderson.
(ELF_MACHINE_BEFORE_RTLD_RELOC): Removed.
(elf_machine_runtime_setup): Add .aligns.
* sysdeps/i386/fpu/fraiseexcpt.c: Add volatile to asms.
* sysdeps/i386/fpu/bits/mathinline.h: Partially undo change of
1997-08-14 03:14. gcc 2.7.2* is really broken in some aspects.
* sysdeps/standalone/i386/i386.h: Clean up asm statements a bit.
* sysdeps/standalone/i960/i960ca.h: Likewise.
1997-08-22 19:04 Richard Henderson <rth@cygnus.com>
* elf/rtld.c (_dl_start): Init _dl_rtld_map.l_opencount due to
undocumented test addition in _dl_map_object.
Support ET_EXEC versions of ld.so, for debugging at least:
* elf/dl-load.c (_dl_map_object): Add_name_to_object could get
called despite the DT_SONAME != NULL test, segfaulting. Simplify
the code here as well.
* elf/dl-lookup.c (do_lookup): Skip objects with no symtab.
(_dl_setup_hash): Likewise for hash tables.
* elf/dl-version.c (_dl_check_map_versions): Likewise for strtabs.
* elf/rtld.c (_dl_start): Likewise for rpath.
(_dl_rtld_libname2): New variable.
(dl_main): Use it to add an soname for ourselves when we don't have
one of our own. Base it on the target's .interp.
(dl_main): Again, skip printing of objects that don't have strtabs.
Sparc 32 merge:
* elf/dl-runtime.c (ELF_FIXUP_RETURN_VALUE): Provide default value.
(fixup): Simplify code. Use ELF_FIXUP_RETURN_VALUE.
(profile_fixup): Likewise, though this still needs fixing for
Sparc32 and PPC.
* sysdeps/powerpc/dl-machine.h: Transmute ELF_FIXUP_RETURNS_ADDRESS
to ELF_FIXUP_RETURN_VALUE.
* sysdeps/sparc/sparc32/dl-machine.h: Implement lazy relocation.
Fix up _dl_start_user to handle _dl_skip_args properly.
Use _dl_hwcap to determine if "flush" is available/needed.
* sysdeps/sparc/configure.in: Remove. It doesn't actually do
anything anymore, and what it did do is done somewhere else.
* sysdeps/sparc/configure: Likewise.
* sysdeps/sparc/fpu/bits/mathdef.h (FP_ILOGB0, FP_ILOGBNAN): New.
* sysdeps/sparc/fpu/fraiseexcpt.c: Rearrange for smaller code.
* sysdeps/sparc/sparc32/Makefile: Fix sparc->sparc/sparc32 bits
in divrem expansions.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (END, LOC): New
definitions for assembly syntax differences.
* sysdeps/sparc/sparc32/__longjmp.S: %g6,%g7 are reserved to the
"system". Use %g2,%g3 instead. Use new local label macro.
* sysdeps/sparc/sparc32/add_n.S: Use <sysdep.h> and ENTRY, END,
and LOC for proper assembly headers/footers.
* sysdeps/sparc/sparc32/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/alloca.S: Likewise.
* sysdeps/sparc/sparc32/dotmul.S: Likewise.
* sysdeps/sparc/sparc32/lshift.S: Likewise.
* sysdeps/sparc/sparc32/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/rshift.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/sub_n.S: Likewise.
* sysdeps/sparc/sparc32/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/umul.S: Likewise.
* sysdeps/sparc/sparc32/divrem.m4: Likewise.
* sysdeps/sparc/sparc32/rem.S: Regenerate.
* sysdeps/sparc/sparc32/sdiv.S: Regenerate.
* sysdeps/sparc/sparc32/udiv.S: Regenerate.
* sysdeps/sparc/sparc32/urem.S: Regenerate.
* sysdeps/sparc/sparc32/sparcv8/dotmul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/rem.S: New file.
* sysdeps/sparc/sparc32/sparcv8/sdiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/udiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/umul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/urem.S: New file.
* sysdeps/sparc/sparc32/bsd-_setjmp.S: Dike out.
* sysdeps/sparc/sparc32/bsd-setjmp.S: Likewise.
* sysdeps/sparc/sparc32/setjmp.S: Add _setjmp and setjmp entry points.
* sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S:
Clean up PIC code.
* sysdeps/sparc/sparc32/elf/start.S: New file, slightly modified
from the sparc64 version.
* sysdeps/sparc/sparc32/elf/start.c: Removed.
* sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Rewrite in
assembly based on the sparc64 version.
* sysdeps/sparc/sparc32/fpu/bits/fenv.h: Duh. Use proper syntax
for manipulating %fsr.
* sysdeps/sparc/sparc32/fpu/fpu_control.h: Make IEEE conformance
be the default.
* elf/elf.h (HWCAP_SPARC_*): New definitions.
* elf/rtld.c (_dl_hwcap): New variable.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Record AT_HWCAP.
* sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c: New file.
Attempt to get hold of the page size based on what we might have
been told at startup time in _dl_pagesize. This will be obsolete
when I finish the kernel hooks for a proper sysconf(), stay tuned.
Sparc 64 merge:
* sysdeps/sparc/sparc64/dl-machine.h (ELF_FIXUP_RETURN_VALUE): New.
Figure out the right thing to return based on the .plt format.
* sysdeps/sparc/sparc64/fpu/fpu_control.h: Update comment.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h (__dev_t):
Should have been 64-bits wide.
* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: sll->sllx,
optimize for branch delay slot usage.
1997-08-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* csu/Makefile ($(objpfx)crt%.o): Fix a missing *.so -> *.os
change.
1997-08-20 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c (identities): Change epsilon.
* sysdeps/i386/fpu/bits/mathinline.h: Correct arguments to fabs,
fabsf, fabsl, __fabsl.
* sysdeps/libm-i387/e_remainderl.S: Pop extra value from FPU stack.
* sysdeps/libm-ieee754/s_csinhl.c: Include <fenv.h>.
1997-08-24 18:55:18 +08:00
|
|
|
|
{
|
|
|
|
|
/* If the requested name matches the soname of a loaded object,
|
|
|
|
|
use that object. Elide this check for names that have not
|
|
|
|
|
yet been opened. */
|
2014-03-28 02:50:42 +08:00
|
|
|
|
if (__glibc_unlikely ((l->l_faked | l->l_removed) != 0))
|
Update.
1997-08-24 12:24 Ulrich Drepper <drepper@cygnus.com>
* configure.in (INSTALL): Quote `$'.
* libc.map: Add __xpg_basename.
* csu/Makefile (initfini.s): Disable optimization.
* elf/dl-deps.c: Implement handling of DL_FILTER.
* elf/dl-load.c (_dl_init_paths): Add error check.
* intl/finddomain.c (_nl_find_domain): Correct comment.
* intl/localealias.c: Include <bits/libc-lock.h> not <libc-lock.h>.
* libio/stdio.h: Make {,v}snprintf available if __USE_BSD.
Change extern inline functions to work correctly in C++.
* locale/iso-4217.def: Update for more recent ISO 4217 version.
* locale/loadlocale.c (_nl_load_locale): Add cast.
* manual/message.texi: Finish gettext section.
* posix/getopt_init.c: Don't use relative #include path.
(__getopt_clean_environment): Change function to take pointer to
environment as argument. Optimize generation of test string a bit.
* sysdeps/unix/sysv/linux/init-first.c: Call __getopt_clean_environment
with additional argument.
* poisx/glob.c: Add prototype for next_brace_sub.
* sysdeps/generic/dl-sysdep.c: Recognize AT_BASE value on auxiliary
vector.
* sysdeps/i386/dl-machine.h (elf_machine_load_address): Rewrite
to not generate relocation entry. Suggested by Richard Henderson.
(ELF_MACHINE_BEFORE_RTLD_RELOC): Removed.
(elf_machine_runtime_setup): Add .aligns.
* sysdeps/i386/fpu/fraiseexcpt.c: Add volatile to asms.
* sysdeps/i386/fpu/bits/mathinline.h: Partially undo change of
1997-08-14 03:14. gcc 2.7.2* is really broken in some aspects.
* sysdeps/standalone/i386/i386.h: Clean up asm statements a bit.
* sysdeps/standalone/i960/i960ca.h: Likewise.
1997-08-22 19:04 Richard Henderson <rth@cygnus.com>
* elf/rtld.c (_dl_start): Init _dl_rtld_map.l_opencount due to
undocumented test addition in _dl_map_object.
Support ET_EXEC versions of ld.so, for debugging at least:
* elf/dl-load.c (_dl_map_object): Add_name_to_object could get
called despite the DT_SONAME != NULL test, segfaulting. Simplify
the code here as well.
* elf/dl-lookup.c (do_lookup): Skip objects with no symtab.
(_dl_setup_hash): Likewise for hash tables.
* elf/dl-version.c (_dl_check_map_versions): Likewise for strtabs.
* elf/rtld.c (_dl_start): Likewise for rpath.
(_dl_rtld_libname2): New variable.
(dl_main): Use it to add an soname for ourselves when we don't have
one of our own. Base it on the target's .interp.
(dl_main): Again, skip printing of objects that don't have strtabs.
Sparc 32 merge:
* elf/dl-runtime.c (ELF_FIXUP_RETURN_VALUE): Provide default value.
(fixup): Simplify code. Use ELF_FIXUP_RETURN_VALUE.
(profile_fixup): Likewise, though this still needs fixing for
Sparc32 and PPC.
* sysdeps/powerpc/dl-machine.h: Transmute ELF_FIXUP_RETURNS_ADDRESS
to ELF_FIXUP_RETURN_VALUE.
* sysdeps/sparc/sparc32/dl-machine.h: Implement lazy relocation.
Fix up _dl_start_user to handle _dl_skip_args properly.
Use _dl_hwcap to determine if "flush" is available/needed.
* sysdeps/sparc/configure.in: Remove. It doesn't actually do
anything anymore, and what it did do is done somewhere else.
* sysdeps/sparc/configure: Likewise.
* sysdeps/sparc/fpu/bits/mathdef.h (FP_ILOGB0, FP_ILOGBNAN): New.
* sysdeps/sparc/fpu/fraiseexcpt.c: Rearrange for smaller code.
* sysdeps/sparc/sparc32/Makefile: Fix sparc->sparc/sparc32 bits
in divrem expansions.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (END, LOC): New
definitions for assembly syntax differences.
* sysdeps/sparc/sparc32/__longjmp.S: %g6,%g7 are reserved to the
"system". Use %g2,%g3 instead. Use new local label macro.
* sysdeps/sparc/sparc32/add_n.S: Use <sysdep.h> and ENTRY, END,
and LOC for proper assembly headers/footers.
* sysdeps/sparc/sparc32/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/alloca.S: Likewise.
* sysdeps/sparc/sparc32/dotmul.S: Likewise.
* sysdeps/sparc/sparc32/lshift.S: Likewise.
* sysdeps/sparc/sparc32/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/rshift.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/sub_n.S: Likewise.
* sysdeps/sparc/sparc32/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/umul.S: Likewise.
* sysdeps/sparc/sparc32/divrem.m4: Likewise.
* sysdeps/sparc/sparc32/rem.S: Regenerate.
* sysdeps/sparc/sparc32/sdiv.S: Regenerate.
* sysdeps/sparc/sparc32/udiv.S: Regenerate.
* sysdeps/sparc/sparc32/urem.S: Regenerate.
* sysdeps/sparc/sparc32/sparcv8/dotmul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/rem.S: New file.
* sysdeps/sparc/sparc32/sparcv8/sdiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/udiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/umul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/urem.S: New file.
* sysdeps/sparc/sparc32/bsd-_setjmp.S: Dike out.
* sysdeps/sparc/sparc32/bsd-setjmp.S: Likewise.
* sysdeps/sparc/sparc32/setjmp.S: Add _setjmp and setjmp entry points.
* sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S:
Clean up PIC code.
* sysdeps/sparc/sparc32/elf/start.S: New file, slightly modified
from the sparc64 version.
* sysdeps/sparc/sparc32/elf/start.c: Removed.
* sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Rewrite in
assembly based on the sparc64 version.
* sysdeps/sparc/sparc32/fpu/bits/fenv.h: Duh. Use proper syntax
for manipulating %fsr.
* sysdeps/sparc/sparc32/fpu/fpu_control.h: Make IEEE conformance
be the default.
* elf/elf.h (HWCAP_SPARC_*): New definitions.
* elf/rtld.c (_dl_hwcap): New variable.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Record AT_HWCAP.
* sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c: New file.
Attempt to get hold of the page size based on what we might have
been told at startup time in _dl_pagesize. This will be obsolete
when I finish the kernel hooks for a proper sysconf(), stay tuned.
Sparc 64 merge:
* sysdeps/sparc/sparc64/dl-machine.h (ELF_FIXUP_RETURN_VALUE): New.
Figure out the right thing to return based on the .plt format.
* sysdeps/sparc/sparc64/fpu/fpu_control.h: Update comment.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h (__dev_t):
Should have been 64-bits wide.
* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: sll->sllx,
optimize for branch delay slot usage.
1997-08-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* csu/Makefile ($(objpfx)crt%.o): Fix a missing *.so -> *.os
change.
1997-08-20 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c (identities): Change epsilon.
* sysdeps/i386/fpu/bits/mathinline.h: Correct arguments to fabs,
fabsf, fabsl, __fabsl.
* sysdeps/libm-i387/e_remainderl.S: Pop extra value from FPU stack.
* sysdeps/libm-ieee754/s_csinhl.c: Include <fenv.h>.
1997-08-24 18:55:18 +08:00
|
|
|
|
continue;
|
|
|
|
|
if (!_dl_name_match_p (name, l))
|
|
|
|
|
{
|
|
|
|
|
const char *soname;
|
|
|
|
|
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_likely (l->l_soname_added)
|
2000-10-21 14:32:16 +08:00
|
|
|
|
|| l->l_info[DT_SONAME] == NULL)
|
Update.
1997-08-24 12:24 Ulrich Drepper <drepper@cygnus.com>
* configure.in (INSTALL): Quote `$'.
* libc.map: Add __xpg_basename.
* csu/Makefile (initfini.s): Disable optimization.
* elf/dl-deps.c: Implement handling of DL_FILTER.
* elf/dl-load.c (_dl_init_paths): Add error check.
* intl/finddomain.c (_nl_find_domain): Correct comment.
* intl/localealias.c: Include <bits/libc-lock.h> not <libc-lock.h>.
* libio/stdio.h: Make {,v}snprintf available if __USE_BSD.
Change extern inline functions to work correctly in C++.
* locale/iso-4217.def: Update for more recent ISO 4217 version.
* locale/loadlocale.c (_nl_load_locale): Add cast.
* manual/message.texi: Finish gettext section.
* posix/getopt_init.c: Don't use relative #include path.
(__getopt_clean_environment): Change function to take pointer to
environment as argument. Optimize generation of test string a bit.
* sysdeps/unix/sysv/linux/init-first.c: Call __getopt_clean_environment
with additional argument.
* poisx/glob.c: Add prototype for next_brace_sub.
* sysdeps/generic/dl-sysdep.c: Recognize AT_BASE value on auxiliary
vector.
* sysdeps/i386/dl-machine.h (elf_machine_load_address): Rewrite
to not generate relocation entry. Suggested by Richard Henderson.
(ELF_MACHINE_BEFORE_RTLD_RELOC): Removed.
(elf_machine_runtime_setup): Add .aligns.
* sysdeps/i386/fpu/fraiseexcpt.c: Add volatile to asms.
* sysdeps/i386/fpu/bits/mathinline.h: Partially undo change of
1997-08-14 03:14. gcc 2.7.2* is really broken in some aspects.
* sysdeps/standalone/i386/i386.h: Clean up asm statements a bit.
* sysdeps/standalone/i960/i960ca.h: Likewise.
1997-08-22 19:04 Richard Henderson <rth@cygnus.com>
* elf/rtld.c (_dl_start): Init _dl_rtld_map.l_opencount due to
undocumented test addition in _dl_map_object.
Support ET_EXEC versions of ld.so, for debugging at least:
* elf/dl-load.c (_dl_map_object): Add_name_to_object could get
called despite the DT_SONAME != NULL test, segfaulting. Simplify
the code here as well.
* elf/dl-lookup.c (do_lookup): Skip objects with no symtab.
(_dl_setup_hash): Likewise for hash tables.
* elf/dl-version.c (_dl_check_map_versions): Likewise for strtabs.
* elf/rtld.c (_dl_start): Likewise for rpath.
(_dl_rtld_libname2): New variable.
(dl_main): Use it to add an soname for ourselves when we don't have
one of our own. Base it on the target's .interp.
(dl_main): Again, skip printing of objects that don't have strtabs.
Sparc 32 merge:
* elf/dl-runtime.c (ELF_FIXUP_RETURN_VALUE): Provide default value.
(fixup): Simplify code. Use ELF_FIXUP_RETURN_VALUE.
(profile_fixup): Likewise, though this still needs fixing for
Sparc32 and PPC.
* sysdeps/powerpc/dl-machine.h: Transmute ELF_FIXUP_RETURNS_ADDRESS
to ELF_FIXUP_RETURN_VALUE.
* sysdeps/sparc/sparc32/dl-machine.h: Implement lazy relocation.
Fix up _dl_start_user to handle _dl_skip_args properly.
Use _dl_hwcap to determine if "flush" is available/needed.
* sysdeps/sparc/configure.in: Remove. It doesn't actually do
anything anymore, and what it did do is done somewhere else.
* sysdeps/sparc/configure: Likewise.
* sysdeps/sparc/fpu/bits/mathdef.h (FP_ILOGB0, FP_ILOGBNAN): New.
* sysdeps/sparc/fpu/fraiseexcpt.c: Rearrange for smaller code.
* sysdeps/sparc/sparc32/Makefile: Fix sparc->sparc/sparc32 bits
in divrem expansions.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (END, LOC): New
definitions for assembly syntax differences.
* sysdeps/sparc/sparc32/__longjmp.S: %g6,%g7 are reserved to the
"system". Use %g2,%g3 instead. Use new local label macro.
* sysdeps/sparc/sparc32/add_n.S: Use <sysdep.h> and ENTRY, END,
and LOC for proper assembly headers/footers.
* sysdeps/sparc/sparc32/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/alloca.S: Likewise.
* sysdeps/sparc/sparc32/dotmul.S: Likewise.
* sysdeps/sparc/sparc32/lshift.S: Likewise.
* sysdeps/sparc/sparc32/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/rshift.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/sub_n.S: Likewise.
* sysdeps/sparc/sparc32/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/umul.S: Likewise.
* sysdeps/sparc/sparc32/divrem.m4: Likewise.
* sysdeps/sparc/sparc32/rem.S: Regenerate.
* sysdeps/sparc/sparc32/sdiv.S: Regenerate.
* sysdeps/sparc/sparc32/udiv.S: Regenerate.
* sysdeps/sparc/sparc32/urem.S: Regenerate.
* sysdeps/sparc/sparc32/sparcv8/dotmul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/rem.S: New file.
* sysdeps/sparc/sparc32/sparcv8/sdiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/udiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/umul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/urem.S: New file.
* sysdeps/sparc/sparc32/bsd-_setjmp.S: Dike out.
* sysdeps/sparc/sparc32/bsd-setjmp.S: Likewise.
* sysdeps/sparc/sparc32/setjmp.S: Add _setjmp and setjmp entry points.
* sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S:
Clean up PIC code.
* sysdeps/sparc/sparc32/elf/start.S: New file, slightly modified
from the sparc64 version.
* sysdeps/sparc/sparc32/elf/start.c: Removed.
* sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Rewrite in
assembly based on the sparc64 version.
* sysdeps/sparc/sparc32/fpu/bits/fenv.h: Duh. Use proper syntax
for manipulating %fsr.
* sysdeps/sparc/sparc32/fpu/fpu_control.h: Make IEEE conformance
be the default.
* elf/elf.h (HWCAP_SPARC_*): New definitions.
* elf/rtld.c (_dl_hwcap): New variable.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Record AT_HWCAP.
* sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c: New file.
Attempt to get hold of the page size based on what we might have
been told at startup time in _dl_pagesize. This will be obsolete
when I finish the kernel hooks for a proper sysconf(), stay tuned.
Sparc 64 merge:
* sysdeps/sparc/sparc64/dl-machine.h (ELF_FIXUP_RETURN_VALUE): New.
Figure out the right thing to return based on the .plt format.
* sysdeps/sparc/sparc64/fpu/fpu_control.h: Update comment.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h (__dev_t):
Should have been 64-bits wide.
* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: sll->sllx,
optimize for branch delay slot usage.
1997-08-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* csu/Makefile ($(objpfx)crt%.o): Fix a missing *.so -> *.os
change.
1997-08-20 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c (identities): Change epsilon.
* sysdeps/i386/fpu/bits/mathinline.h: Correct arguments to fabs,
fabsf, fabsl, __fabsl.
* sysdeps/libm-i387/e_remainderl.S: Pop extra value from FPU stack.
* sysdeps/libm-ieee754/s_csinhl.c: Include <fenv.h>.
1997-08-24 18:55:18 +08:00
|
|
|
|
continue;
|
|
|
|
|
|
2000-10-21 14:02:49 +08:00
|
|
|
|
soname = ((const char *) D_PTR (l, l_info[DT_STRTAB])
|
|
|
|
|
+ l->l_info[DT_SONAME]->d_un.d_val);
|
Update.
1997-08-24 12:24 Ulrich Drepper <drepper@cygnus.com>
* configure.in (INSTALL): Quote `$'.
* libc.map: Add __xpg_basename.
* csu/Makefile (initfini.s): Disable optimization.
* elf/dl-deps.c: Implement handling of DL_FILTER.
* elf/dl-load.c (_dl_init_paths): Add error check.
* intl/finddomain.c (_nl_find_domain): Correct comment.
* intl/localealias.c: Include <bits/libc-lock.h> not <libc-lock.h>.
* libio/stdio.h: Make {,v}snprintf available if __USE_BSD.
Change extern inline functions to work correctly in C++.
* locale/iso-4217.def: Update for more recent ISO 4217 version.
* locale/loadlocale.c (_nl_load_locale): Add cast.
* manual/message.texi: Finish gettext section.
* posix/getopt_init.c: Don't use relative #include path.
(__getopt_clean_environment): Change function to take pointer to
environment as argument. Optimize generation of test string a bit.
* sysdeps/unix/sysv/linux/init-first.c: Call __getopt_clean_environment
with additional argument.
* poisx/glob.c: Add prototype for next_brace_sub.
* sysdeps/generic/dl-sysdep.c: Recognize AT_BASE value on auxiliary
vector.
* sysdeps/i386/dl-machine.h (elf_machine_load_address): Rewrite
to not generate relocation entry. Suggested by Richard Henderson.
(ELF_MACHINE_BEFORE_RTLD_RELOC): Removed.
(elf_machine_runtime_setup): Add .aligns.
* sysdeps/i386/fpu/fraiseexcpt.c: Add volatile to asms.
* sysdeps/i386/fpu/bits/mathinline.h: Partially undo change of
1997-08-14 03:14. gcc 2.7.2* is really broken in some aspects.
* sysdeps/standalone/i386/i386.h: Clean up asm statements a bit.
* sysdeps/standalone/i960/i960ca.h: Likewise.
1997-08-22 19:04 Richard Henderson <rth@cygnus.com>
* elf/rtld.c (_dl_start): Init _dl_rtld_map.l_opencount due to
undocumented test addition in _dl_map_object.
Support ET_EXEC versions of ld.so, for debugging at least:
* elf/dl-load.c (_dl_map_object): Add_name_to_object could get
called despite the DT_SONAME != NULL test, segfaulting. Simplify
the code here as well.
* elf/dl-lookup.c (do_lookup): Skip objects with no symtab.
(_dl_setup_hash): Likewise for hash tables.
* elf/dl-version.c (_dl_check_map_versions): Likewise for strtabs.
* elf/rtld.c (_dl_start): Likewise for rpath.
(_dl_rtld_libname2): New variable.
(dl_main): Use it to add an soname for ourselves when we don't have
one of our own. Base it on the target's .interp.
(dl_main): Again, skip printing of objects that don't have strtabs.
Sparc 32 merge:
* elf/dl-runtime.c (ELF_FIXUP_RETURN_VALUE): Provide default value.
(fixup): Simplify code. Use ELF_FIXUP_RETURN_VALUE.
(profile_fixup): Likewise, though this still needs fixing for
Sparc32 and PPC.
* sysdeps/powerpc/dl-machine.h: Transmute ELF_FIXUP_RETURNS_ADDRESS
to ELF_FIXUP_RETURN_VALUE.
* sysdeps/sparc/sparc32/dl-machine.h: Implement lazy relocation.
Fix up _dl_start_user to handle _dl_skip_args properly.
Use _dl_hwcap to determine if "flush" is available/needed.
* sysdeps/sparc/configure.in: Remove. It doesn't actually do
anything anymore, and what it did do is done somewhere else.
* sysdeps/sparc/configure: Likewise.
* sysdeps/sparc/fpu/bits/mathdef.h (FP_ILOGB0, FP_ILOGBNAN): New.
* sysdeps/sparc/fpu/fraiseexcpt.c: Rearrange for smaller code.
* sysdeps/sparc/sparc32/Makefile: Fix sparc->sparc/sparc32 bits
in divrem expansions.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (END, LOC): New
definitions for assembly syntax differences.
* sysdeps/sparc/sparc32/__longjmp.S: %g6,%g7 are reserved to the
"system". Use %g2,%g3 instead. Use new local label macro.
* sysdeps/sparc/sparc32/add_n.S: Use <sysdep.h> and ENTRY, END,
and LOC for proper assembly headers/footers.
* sysdeps/sparc/sparc32/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/alloca.S: Likewise.
* sysdeps/sparc/sparc32/dotmul.S: Likewise.
* sysdeps/sparc/sparc32/lshift.S: Likewise.
* sysdeps/sparc/sparc32/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/rshift.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/sub_n.S: Likewise.
* sysdeps/sparc/sparc32/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/umul.S: Likewise.
* sysdeps/sparc/sparc32/divrem.m4: Likewise.
* sysdeps/sparc/sparc32/rem.S: Regenerate.
* sysdeps/sparc/sparc32/sdiv.S: Regenerate.
* sysdeps/sparc/sparc32/udiv.S: Regenerate.
* sysdeps/sparc/sparc32/urem.S: Regenerate.
* sysdeps/sparc/sparc32/sparcv8/dotmul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/rem.S: New file.
* sysdeps/sparc/sparc32/sparcv8/sdiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/udiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/umul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/urem.S: New file.
* sysdeps/sparc/sparc32/bsd-_setjmp.S: Dike out.
* sysdeps/sparc/sparc32/bsd-setjmp.S: Likewise.
* sysdeps/sparc/sparc32/setjmp.S: Add _setjmp and setjmp entry points.
* sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S:
Clean up PIC code.
* sysdeps/sparc/sparc32/elf/start.S: New file, slightly modified
from the sparc64 version.
* sysdeps/sparc/sparc32/elf/start.c: Removed.
* sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Rewrite in
assembly based on the sparc64 version.
* sysdeps/sparc/sparc32/fpu/bits/fenv.h: Duh. Use proper syntax
for manipulating %fsr.
* sysdeps/sparc/sparc32/fpu/fpu_control.h: Make IEEE conformance
be the default.
* elf/elf.h (HWCAP_SPARC_*): New definitions.
* elf/rtld.c (_dl_hwcap): New variable.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Record AT_HWCAP.
* sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c: New file.
Attempt to get hold of the page size based on what we might have
been told at startup time in _dl_pagesize. This will be obsolete
when I finish the kernel hooks for a proper sysconf(), stay tuned.
Sparc 64 merge:
* sysdeps/sparc/sparc64/dl-machine.h (ELF_FIXUP_RETURN_VALUE): New.
Figure out the right thing to return based on the .plt format.
* sysdeps/sparc/sparc64/fpu/fpu_control.h: Update comment.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h (__dev_t):
Should have been 64-bits wide.
* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: sll->sllx,
optimize for branch delay slot usage.
1997-08-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* csu/Makefile ($(objpfx)crt%.o): Fix a missing *.so -> *.os
change.
1997-08-20 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c (identities): Change epsilon.
* sysdeps/i386/fpu/bits/mathinline.h: Correct arguments to fabs,
fabsf, fabsl, __fabsl.
* sysdeps/libm-i387/e_remainderl.S: Pop extra value from FPU stack.
* sysdeps/libm-ieee754/s_csinhl.c: Include <fenv.h>.
1997-08-24 18:55:18 +08:00
|
|
|
|
if (strcmp (name, soname) != 0)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
/* We have a match on a new name -- cache it. */
|
1998-09-02 01:58:59 +08:00
|
|
|
|
add_name_to_object (l, soname);
|
2000-10-21 14:32:16 +08:00
|
|
|
|
l->l_soname_added = 1;
|
Update.
1997-08-24 12:24 Ulrich Drepper <drepper@cygnus.com>
* configure.in (INSTALL): Quote `$'.
* libc.map: Add __xpg_basename.
* csu/Makefile (initfini.s): Disable optimization.
* elf/dl-deps.c: Implement handling of DL_FILTER.
* elf/dl-load.c (_dl_init_paths): Add error check.
* intl/finddomain.c (_nl_find_domain): Correct comment.
* intl/localealias.c: Include <bits/libc-lock.h> not <libc-lock.h>.
* libio/stdio.h: Make {,v}snprintf available if __USE_BSD.
Change extern inline functions to work correctly in C++.
* locale/iso-4217.def: Update for more recent ISO 4217 version.
* locale/loadlocale.c (_nl_load_locale): Add cast.
* manual/message.texi: Finish gettext section.
* posix/getopt_init.c: Don't use relative #include path.
(__getopt_clean_environment): Change function to take pointer to
environment as argument. Optimize generation of test string a bit.
* sysdeps/unix/sysv/linux/init-first.c: Call __getopt_clean_environment
with additional argument.
* poisx/glob.c: Add prototype for next_brace_sub.
* sysdeps/generic/dl-sysdep.c: Recognize AT_BASE value on auxiliary
vector.
* sysdeps/i386/dl-machine.h (elf_machine_load_address): Rewrite
to not generate relocation entry. Suggested by Richard Henderson.
(ELF_MACHINE_BEFORE_RTLD_RELOC): Removed.
(elf_machine_runtime_setup): Add .aligns.
* sysdeps/i386/fpu/fraiseexcpt.c: Add volatile to asms.
* sysdeps/i386/fpu/bits/mathinline.h: Partially undo change of
1997-08-14 03:14. gcc 2.7.2* is really broken in some aspects.
* sysdeps/standalone/i386/i386.h: Clean up asm statements a bit.
* sysdeps/standalone/i960/i960ca.h: Likewise.
1997-08-22 19:04 Richard Henderson <rth@cygnus.com>
* elf/rtld.c (_dl_start): Init _dl_rtld_map.l_opencount due to
undocumented test addition in _dl_map_object.
Support ET_EXEC versions of ld.so, for debugging at least:
* elf/dl-load.c (_dl_map_object): Add_name_to_object could get
called despite the DT_SONAME != NULL test, segfaulting. Simplify
the code here as well.
* elf/dl-lookup.c (do_lookup): Skip objects with no symtab.
(_dl_setup_hash): Likewise for hash tables.
* elf/dl-version.c (_dl_check_map_versions): Likewise for strtabs.
* elf/rtld.c (_dl_start): Likewise for rpath.
(_dl_rtld_libname2): New variable.
(dl_main): Use it to add an soname for ourselves when we don't have
one of our own. Base it on the target's .interp.
(dl_main): Again, skip printing of objects that don't have strtabs.
Sparc 32 merge:
* elf/dl-runtime.c (ELF_FIXUP_RETURN_VALUE): Provide default value.
(fixup): Simplify code. Use ELF_FIXUP_RETURN_VALUE.
(profile_fixup): Likewise, though this still needs fixing for
Sparc32 and PPC.
* sysdeps/powerpc/dl-machine.h: Transmute ELF_FIXUP_RETURNS_ADDRESS
to ELF_FIXUP_RETURN_VALUE.
* sysdeps/sparc/sparc32/dl-machine.h: Implement lazy relocation.
Fix up _dl_start_user to handle _dl_skip_args properly.
Use _dl_hwcap to determine if "flush" is available/needed.
* sysdeps/sparc/configure.in: Remove. It doesn't actually do
anything anymore, and what it did do is done somewhere else.
* sysdeps/sparc/configure: Likewise.
* sysdeps/sparc/fpu/bits/mathdef.h (FP_ILOGB0, FP_ILOGBNAN): New.
* sysdeps/sparc/fpu/fraiseexcpt.c: Rearrange for smaller code.
* sysdeps/sparc/sparc32/Makefile: Fix sparc->sparc/sparc32 bits
in divrem expansions.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (END, LOC): New
definitions for assembly syntax differences.
* sysdeps/sparc/sparc32/__longjmp.S: %g6,%g7 are reserved to the
"system". Use %g2,%g3 instead. Use new local label macro.
* sysdeps/sparc/sparc32/add_n.S: Use <sysdep.h> and ENTRY, END,
and LOC for proper assembly headers/footers.
* sysdeps/sparc/sparc32/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/alloca.S: Likewise.
* sysdeps/sparc/sparc32/dotmul.S: Likewise.
* sysdeps/sparc/sparc32/lshift.S: Likewise.
* sysdeps/sparc/sparc32/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/rshift.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/sub_n.S: Likewise.
* sysdeps/sparc/sparc32/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/umul.S: Likewise.
* sysdeps/sparc/sparc32/divrem.m4: Likewise.
* sysdeps/sparc/sparc32/rem.S: Regenerate.
* sysdeps/sparc/sparc32/sdiv.S: Regenerate.
* sysdeps/sparc/sparc32/udiv.S: Regenerate.
* sysdeps/sparc/sparc32/urem.S: Regenerate.
* sysdeps/sparc/sparc32/sparcv8/dotmul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/rem.S: New file.
* sysdeps/sparc/sparc32/sparcv8/sdiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/udiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/umul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/urem.S: New file.
* sysdeps/sparc/sparc32/bsd-_setjmp.S: Dike out.
* sysdeps/sparc/sparc32/bsd-setjmp.S: Likewise.
* sysdeps/sparc/sparc32/setjmp.S: Add _setjmp and setjmp entry points.
* sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S:
Clean up PIC code.
* sysdeps/sparc/sparc32/elf/start.S: New file, slightly modified
from the sparc64 version.
* sysdeps/sparc/sparc32/elf/start.c: Removed.
* sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Rewrite in
assembly based on the sparc64 version.
* sysdeps/sparc/sparc32/fpu/bits/fenv.h: Duh. Use proper syntax
for manipulating %fsr.
* sysdeps/sparc/sparc32/fpu/fpu_control.h: Make IEEE conformance
be the default.
* elf/elf.h (HWCAP_SPARC_*): New definitions.
* elf/rtld.c (_dl_hwcap): New variable.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Record AT_HWCAP.
* sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c: New file.
Attempt to get hold of the page size based on what we might have
been told at startup time in _dl_pagesize. This will be obsolete
when I finish the kernel hooks for a proper sysconf(), stay tuned.
Sparc 64 merge:
* sysdeps/sparc/sparc64/dl-machine.h (ELF_FIXUP_RETURN_VALUE): New.
Figure out the right thing to return based on the .plt format.
* sysdeps/sparc/sparc64/fpu/fpu_control.h: Update comment.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h (__dev_t):
Should have been 64-bits wide.
* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: sll->sllx,
optimize for branch delay slot usage.
1997-08-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* csu/Makefile ($(objpfx)crt%.o): Fix a missing *.so -> *.os
change.
1997-08-20 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c (identities): Change epsilon.
* sysdeps/i386/fpu/bits/mathinline.h: Correct arguments to fabs,
fabsf, fabsl, __fabsl.
* sysdeps/libm-i387/e_remainderl.S: Pop extra value from FPU stack.
* sysdeps/libm-ieee754/s_csinhl.c: Include <fenv.h>.
1997-08-24 18:55:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
2000-10-24 15:36:55 +08:00
|
|
|
|
/* We have a match. */
|
Update.
1997-08-24 12:24 Ulrich Drepper <drepper@cygnus.com>
* configure.in (INSTALL): Quote `$'.
* libc.map: Add __xpg_basename.
* csu/Makefile (initfini.s): Disable optimization.
* elf/dl-deps.c: Implement handling of DL_FILTER.
* elf/dl-load.c (_dl_init_paths): Add error check.
* intl/finddomain.c (_nl_find_domain): Correct comment.
* intl/localealias.c: Include <bits/libc-lock.h> not <libc-lock.h>.
* libio/stdio.h: Make {,v}snprintf available if __USE_BSD.
Change extern inline functions to work correctly in C++.
* locale/iso-4217.def: Update for more recent ISO 4217 version.
* locale/loadlocale.c (_nl_load_locale): Add cast.
* manual/message.texi: Finish gettext section.
* posix/getopt_init.c: Don't use relative #include path.
(__getopt_clean_environment): Change function to take pointer to
environment as argument. Optimize generation of test string a bit.
* sysdeps/unix/sysv/linux/init-first.c: Call __getopt_clean_environment
with additional argument.
* poisx/glob.c: Add prototype for next_brace_sub.
* sysdeps/generic/dl-sysdep.c: Recognize AT_BASE value on auxiliary
vector.
* sysdeps/i386/dl-machine.h (elf_machine_load_address): Rewrite
to not generate relocation entry. Suggested by Richard Henderson.
(ELF_MACHINE_BEFORE_RTLD_RELOC): Removed.
(elf_machine_runtime_setup): Add .aligns.
* sysdeps/i386/fpu/fraiseexcpt.c: Add volatile to asms.
* sysdeps/i386/fpu/bits/mathinline.h: Partially undo change of
1997-08-14 03:14. gcc 2.7.2* is really broken in some aspects.
* sysdeps/standalone/i386/i386.h: Clean up asm statements a bit.
* sysdeps/standalone/i960/i960ca.h: Likewise.
1997-08-22 19:04 Richard Henderson <rth@cygnus.com>
* elf/rtld.c (_dl_start): Init _dl_rtld_map.l_opencount due to
undocumented test addition in _dl_map_object.
Support ET_EXEC versions of ld.so, for debugging at least:
* elf/dl-load.c (_dl_map_object): Add_name_to_object could get
called despite the DT_SONAME != NULL test, segfaulting. Simplify
the code here as well.
* elf/dl-lookup.c (do_lookup): Skip objects with no symtab.
(_dl_setup_hash): Likewise for hash tables.
* elf/dl-version.c (_dl_check_map_versions): Likewise for strtabs.
* elf/rtld.c (_dl_start): Likewise for rpath.
(_dl_rtld_libname2): New variable.
(dl_main): Use it to add an soname for ourselves when we don't have
one of our own. Base it on the target's .interp.
(dl_main): Again, skip printing of objects that don't have strtabs.
Sparc 32 merge:
* elf/dl-runtime.c (ELF_FIXUP_RETURN_VALUE): Provide default value.
(fixup): Simplify code. Use ELF_FIXUP_RETURN_VALUE.
(profile_fixup): Likewise, though this still needs fixing for
Sparc32 and PPC.
* sysdeps/powerpc/dl-machine.h: Transmute ELF_FIXUP_RETURNS_ADDRESS
to ELF_FIXUP_RETURN_VALUE.
* sysdeps/sparc/sparc32/dl-machine.h: Implement lazy relocation.
Fix up _dl_start_user to handle _dl_skip_args properly.
Use _dl_hwcap to determine if "flush" is available/needed.
* sysdeps/sparc/configure.in: Remove. It doesn't actually do
anything anymore, and what it did do is done somewhere else.
* sysdeps/sparc/configure: Likewise.
* sysdeps/sparc/fpu/bits/mathdef.h (FP_ILOGB0, FP_ILOGBNAN): New.
* sysdeps/sparc/fpu/fraiseexcpt.c: Rearrange for smaller code.
* sysdeps/sparc/sparc32/Makefile: Fix sparc->sparc/sparc32 bits
in divrem expansions.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (END, LOC): New
definitions for assembly syntax differences.
* sysdeps/sparc/sparc32/__longjmp.S: %g6,%g7 are reserved to the
"system". Use %g2,%g3 instead. Use new local label macro.
* sysdeps/sparc/sparc32/add_n.S: Use <sysdep.h> and ENTRY, END,
and LOC for proper assembly headers/footers.
* sysdeps/sparc/sparc32/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/alloca.S: Likewise.
* sysdeps/sparc/sparc32/dotmul.S: Likewise.
* sysdeps/sparc/sparc32/lshift.S: Likewise.
* sysdeps/sparc/sparc32/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/rshift.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/addmul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/mul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/sparcv8/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/sub_n.S: Likewise.
* sysdeps/sparc/sparc32/submul_1.S: Likewise.
* sysdeps/sparc/sparc32/udiv_qrnnd.S: Likewise.
* sysdeps/sparc/sparc32/umul.S: Likewise.
* sysdeps/sparc/sparc32/divrem.m4: Likewise.
* sysdeps/sparc/sparc32/rem.S: Regenerate.
* sysdeps/sparc/sparc32/sdiv.S: Regenerate.
* sysdeps/sparc/sparc32/udiv.S: Regenerate.
* sysdeps/sparc/sparc32/urem.S: Regenerate.
* sysdeps/sparc/sparc32/sparcv8/dotmul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/rem.S: New file.
* sysdeps/sparc/sparc32/sparcv8/sdiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/udiv.S: New file.
* sysdeps/sparc/sparc32/sparcv8/umul.S: New file.
* sysdeps/sparc/sparc32/sparcv8/urem.S: New file.
* sysdeps/sparc/sparc32/bsd-_setjmp.S: Dike out.
* sysdeps/sparc/sparc32/bsd-setjmp.S: Likewise.
* sysdeps/sparc/sparc32/setjmp.S: Add _setjmp and setjmp entry points.
* sysdeps/unix/sysv/linux/sparc/sparc32/__sigtrampoline.S:
Clean up PIC code.
* sysdeps/sparc/sparc32/elf/start.S: New file, slightly modified
from the sparc64 version.
* sysdeps/sparc/sparc32/elf/start.c: Removed.
* sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Rewrite in
assembly based on the sparc64 version.
* sysdeps/sparc/sparc32/fpu/bits/fenv.h: Duh. Use proper syntax
for manipulating %fsr.
* sysdeps/sparc/sparc32/fpu/fpu_control.h: Make IEEE conformance
be the default.
* elf/elf.h (HWCAP_SPARC_*): New definitions.
* elf/rtld.c (_dl_hwcap): New variable.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Record AT_HWCAP.
* sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c: New file.
Attempt to get hold of the page size based on what we might have
been told at startup time in _dl_pagesize. This will be obsolete
when I finish the kernel hooks for a proper sysconf(), stay tuned.
Sparc 64 merge:
* sysdeps/sparc/sparc64/dl-machine.h (ELF_FIXUP_RETURN_VALUE): New.
Figure out the right thing to return based on the .plt format.
* sysdeps/sparc/sparc64/fpu/fpu_control.h: Update comment.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h (__dev_t):
Should have been 64-bits wide.
* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: sll->sllx,
optimize for branch delay slot usage.
1997-08-22 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* csu/Makefile ($(objpfx)crt%.o): Fix a missing *.so -> *.os
change.
1997-08-20 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c (identities): Change epsilon.
* sysdeps/i386/fpu/bits/mathinline.h: Correct arguments to fabs,
fabsf, fabsl, __fabsl.
* sysdeps/libm-i387/e_remainderl.S: Pop extra value from FPU stack.
* sysdeps/libm-ieee754/s_csinhl.c: Include <fenv.h>.
1997-08-24 18:55:18 +08:00
|
|
|
|
return l;
|
|
|
|
|
}
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
1998-03-11 02:04:16 +08:00
|
|
|
|
/* Display information if we are debugging. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES)
|
Update.
Change ld.so to not use functions which are exported. One cannot
interpose them anyway. Use INT() to mark uses, INTDEF() to mark
definitions.
* include/libc-symbols.h: Define INT and INTDEF.
* sysdeps/generic/ldsodefs.h: Declare _dl_debug_printf_internal,
_dl_signal_error_internal, _dl_map_object_internal,
_dl_map_object_deps_internal, _dl_lookup_symbol_internal,
_dl_lookup_versioned_symbol_internal,
_dl_relocate_object_internal, _dl_debug_state_internal,
_dl_start_profile_internal, and _dl_unload_cache_internal.
* include/dlfcn.h: Declare _dl_catch_error_internal.
* elf/rtld.c: Use INT for calls to any of the *_internal functions
above. Add INTDEF to function definitions.
* elf/dl-debug.c: Likewise.
* elf/dl-deps.c: Likewise.
* elf/dl-dst.h: 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-misc.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-profile.c: Likewise.
* elf/dl-reloc.c: Likewise.
* elf/dl-runtime.c: Likewise.
* elf/dl-version.c: Likewise.
* elf/do-lookup.h: Likewise.
* sysdeps/generic/dl-cache.c: Likewise.
* sysdeps/generic/dl-sysdep.c: Likewise.
* sysdeps/alpha/dl-machine.h (RTLD_START): Call _dl_init_internal
instead of _dl_init.
* sysdeps/arm/dl-machine.h: Likewise.
* sysdeps/cris/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/s390/s390-32/dl-machine.h: Likewise.
* sysdeps/s390/s390-64/dl-machine.h: Likewise.
* sysdeps/sh/dl-machine.h: Likewise.
* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
* sysdeps/x86_64/dl-machine.h: Likewise.
* sysdeps/powerpc/dl-start.S (_dl_start_user): Likewise.
* elf/Versions: Don't export _dl_check_all_versions, _dl_sysdep_start,
and _dl_debug_initialize.
2002-02-03 08:31:37 +08:00
|
|
|
|
&& loader != NULL)
|
2011-08-13 01:32:10 +08:00
|
|
|
|
_dl_debug_printf ((mode & __RTLD_CALLMAP) == 0
|
2011-08-13 01:20:11 +08:00
|
|
|
|
? "\nfile=%s [%lu]; needed by %s [%lu]\n"
|
|
|
|
|
: "\nfile=%s [%lu]; dynamically loaded by %s [%lu]\n",
|
2013-05-30 00:00:20 +08:00
|
|
|
|
name, nsid, DSO_FILENAME (loader->l_name), loader->l_ns);
|
1998-03-11 02:04:16 +08:00
|
|
|
|
|
2005-01-07 06:40:27 +08:00
|
|
|
|
#ifdef SHARED
|
|
|
|
|
/* Give the auditing libraries a chance to change the name before we
|
|
|
|
|
try anything. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_naudit) > 0)
|
2005-01-07 06:40:27 +08:00
|
|
|
|
&& (loader == NULL || loader->l_auditing == 0))
|
|
|
|
|
{
|
|
|
|
|
struct audit_ifaces *afct = GLRO(dl_audit);
|
|
|
|
|
for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt)
|
|
|
|
|
{
|
|
|
|
|
if (afct->objsearch != NULL)
|
|
|
|
|
{
|
2015-11-09 23:52:31 +08:00
|
|
|
|
const char *before = name;
|
2005-01-07 06:40:27 +08:00
|
|
|
|
name = afct->objsearch (name, &loader->l_audit[cnt].cookie,
|
|
|
|
|
LA_SER_ORIG);
|
|
|
|
|
if (name == NULL)
|
|
|
|
|
{
|
|
|
|
|
/* Do not try anything further. */
|
|
|
|
|
fd = -1;
|
|
|
|
|
goto no_file;
|
|
|
|
|
}
|
2015-11-09 23:52:31 +08:00
|
|
|
|
if (before != name && strcmp (before, name) != 0)
|
|
|
|
|
{
|
|
|
|
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
|
|
|
|
_dl_debug_printf ("audit changed filename %s -> %s\n",
|
|
|
|
|
before, name);
|
|
|
|
|
|
|
|
|
|
if (origname == NULL)
|
|
|
|
|
origname = before;
|
|
|
|
|
}
|
2005-01-07 06:40:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
afct = afct->next;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2005-09-26 23:58:00 +08:00
|
|
|
|
/* Will be true if we found a DSO which is of the other ELF class. */
|
|
|
|
|
bool found_other_class = false;
|
|
|
|
|
|
1996-06-11 04:19:39 +08:00
|
|
|
|
if (strchr (name, '/') == NULL)
|
|
|
|
|
{
|
|
|
|
|
/* Search for NAME in several places. */
|
|
|
|
|
|
|
|
|
|
size_t namelen = strlen (name) + 1;
|
|
|
|
|
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
_dl_debug_printf ("find library=%s [%lu]; searching\n", name, nsid);
|
1998-03-06 00:42:56 +08:00
|
|
|
|
|
1996-06-11 04:19:39 +08:00
|
|
|
|
fd = -1;
|
1996-06-16 09:27:54 +08:00
|
|
|
|
|
1999-07-25 03:45:13 +08:00
|
|
|
|
/* When the object has the RUNPATH information we don't use any
|
2010-02-25 11:27:24 +08:00
|
|
|
|
RPATHs. */
|
2000-05-27 13:32:14 +08:00
|
|
|
|
if (loader == NULL || loader->l_info[DT_RUNPATH] == NULL)
|
1999-07-25 03:45:13 +08:00
|
|
|
|
{
|
2006-06-27 21:22:20 +08:00
|
|
|
|
/* This is the executable's map (if there is one). Make sure that
|
|
|
|
|
we do not look at it twice. */
|
|
|
|
|
struct link_map *main_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
|
|
|
|
|
bool did_main_map = false;
|
|
|
|
|
|
1999-07-25 03:45:13 +08:00
|
|
|
|
/* First try the DT_RPATH of the dependent object that caused NAME
|
|
|
|
|
to be loaded. Then that object's dependent, and on up. */
|
2006-06-27 21:22:20 +08:00
|
|
|
|
for (l = loader; l; l = l->l_loader)
|
2003-03-16 07:16:22 +08:00
|
|
|
|
if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
|
2006-06-27 21:22:20 +08:00
|
|
|
|
{
|
2014-03-25 01:58:26 +08:00
|
|
|
|
fd = open_path (name, namelen, mode,
|
2010-10-25 09:43:15 +08:00
|
|
|
|
&l->l_rpath_dirs,
|
2006-06-27 21:22:20 +08:00
|
|
|
|
&realname, &fb, loader, LA_SER_RUNPATH,
|
|
|
|
|
&found_other_class);
|
|
|
|
|
if (fd != -1)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
did_main_map |= l == main_map;
|
|
|
|
|
}
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
1999-07-25 03:45:13 +08:00
|
|
|
|
/* If dynamically linked, try the DT_RPATH of the executable
|
2010-02-25 11:27:24 +08:00
|
|
|
|
itself. NB: we do this for lookups in any namespace. */
|
2006-06-27 21:22:20 +08:00
|
|
|
|
if (fd == -1 && !did_main_map
|
|
|
|
|
&& main_map != NULL && main_map->l_type != lt_loaded
|
|
|
|
|
&& cache_rpath (main_map, &main_map->l_rpath_dirs, DT_RPATH,
|
|
|
|
|
"RPATH"))
|
2014-03-25 01:58:26 +08:00
|
|
|
|
fd = open_path (name, namelen, mode,
|
2010-10-25 09:43:15 +08:00
|
|
|
|
&main_map->l_rpath_dirs,
|
2006-06-27 21:22:20 +08:00
|
|
|
|
&realname, &fb, loader ?: main_map, LA_SER_RUNPATH,
|
|
|
|
|
&found_other_class);
|
1999-07-25 03:45:13 +08:00
|
|
|
|
}
|
1997-01-21 14:10:42 +08:00
|
|
|
|
|
1998-09-14 19:43:26 +08:00
|
|
|
|
/* Try the LD_LIBRARY_PATH environment variable. */
|
2000-08-31 10:27:07 +08:00
|
|
|
|
if (fd == -1 && env_path_list.dirs != (void *) -1)
|
2014-03-25 01:58:26 +08:00
|
|
|
|
fd = open_path (name, namelen, mode, &env_path_list,
|
2005-01-07 06:40:27 +08:00
|
|
|
|
&realname, &fb,
|
|
|
|
|
loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded,
|
2005-09-26 23:58:00 +08:00
|
|
|
|
LA_SER_LIBPATH, &found_other_class);
|
1997-08-20 11:53:21 +08:00
|
|
|
|
|
2003-03-16 07:16:22 +08:00
|
|
|
|
/* Look at the RUNPATH information for this binary. */
|
|
|
|
|
if (fd == -1 && loader != NULL
|
|
|
|
|
&& cache_rpath (loader, &loader->l_runpath_dirs,
|
|
|
|
|
DT_RUNPATH, "RUNPATH"))
|
2014-03-25 01:58:26 +08:00
|
|
|
|
fd = open_path (name, namelen, mode,
|
2005-01-07 06:40:27 +08:00
|
|
|
|
&loader->l_runpath_dirs, &realname, &fb, loader,
|
2005-09-26 23:58:00 +08:00
|
|
|
|
LA_SER_RUNPATH, &found_other_class);
|
1999-07-25 03:45:13 +08:00
|
|
|
|
|
2015-11-11 11:44:48 +08:00
|
|
|
|
if (fd == -1)
|
|
|
|
|
{
|
|
|
|
|
realname = _dl_sysdep_open_object (name, namelen, &fd);
|
|
|
|
|
if (realname != NULL)
|
|
|
|
|
{
|
|
|
|
|
fd = open_verify (realname, fd,
|
|
|
|
|
&fb, loader ?: GL(dl_ns)[nsid]._ns_loaded,
|
|
|
|
|
LA_SER_CONFIG, mode, &found_other_class,
|
|
|
|
|
false);
|
|
|
|
|
if (fd == -1)
|
|
|
|
|
free (realname);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-04 07:13:14 +08:00
|
|
|
|
#ifdef USE_LDCONFIG
|
2001-03-20 17:26:25 +08:00
|
|
|
|
if (fd == -1
|
2014-03-28 02:50:42 +08:00
|
|
|
|
&& (__glibc_likely ((mode & __RTLD_SECURE) == 0)
|
2014-10-10 19:13:11 +08:00
|
|
|
|
|| ! __libc_enable_secure)
|
2014-03-27 06:37:07 +08:00
|
|
|
|
&& __glibc_likely (GLRO(dl_inhibit_cache) == 0))
|
1996-07-18 07:09:43 +08:00
|
|
|
|
{
|
|
|
|
|
/* Check the list of libraries in the file /etc/ld.so.cache,
|
|
|
|
|
for compatibility with Linux's ldconfig program. */
|
2015-01-21 14:51:10 +08:00
|
|
|
|
char *cached = _dl_load_cache_lookup (name);
|
2000-08-18 03:36:13 +08:00
|
|
|
|
|
2001-11-02 07:16:25 +08:00
|
|
|
|
if (cached != NULL)
|
|
|
|
|
{
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
// XXX Correct to unconditionally default to namespace 0?
|
2011-03-06 13:01:50 +08:00
|
|
|
|
l = (loader
|
|
|
|
|
?: GL(dl_ns)[LM_ID_BASE]._ns_loaded
|
2014-02-01 01:51:31 +08:00
|
|
|
|
# ifdef SHARED
|
|
|
|
|
?: &GL(dl_rtld_map)
|
2012-10-04 07:13:14 +08:00
|
|
|
|
# endif
|
2014-02-01 01:51:31 +08:00
|
|
|
|
);
|
2000-08-18 03:36:13 +08:00
|
|
|
|
|
2000-07-21 13:07:54 +08:00
|
|
|
|
/* If the loader has the DF_1_NODEFLIB flag set we must not
|
|
|
|
|
use a cache entry from any of these directories. */
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (l->l_flags_1 & DF_1_NODEFLIB))
|
2000-07-21 13:07:54 +08:00
|
|
|
|
{
|
|
|
|
|
const char *dirp = system_dirs;
|
2001-01-13 01:03:52 +08:00
|
|
|
|
unsigned int cnt = 0;
|
2000-07-21 13:07:54 +08:00
|
|
|
|
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
if (memcmp (cached, dirp, system_dirs_len[cnt]) == 0)
|
|
|
|
|
{
|
|
|
|
|
/* The prefix matches. Don't use the entry. */
|
2015-01-21 14:51:10 +08:00
|
|
|
|
free (cached);
|
2000-07-21 13:07:54 +08:00
|
|
|
|
cached = NULL;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dirp += system_dirs_len[cnt] + 1;
|
|
|
|
|
++cnt;
|
|
|
|
|
}
|
2000-08-31 08:20:09 +08:00
|
|
|
|
while (cnt < nsystem_dirs_len);
|
2000-07-21 13:07:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
2001-11-02 07:16:25 +08:00
|
|
|
|
if (cached != NULL)
|
1996-07-18 07:09:43 +08:00
|
|
|
|
{
|
2015-11-11 11:44:48 +08:00
|
|
|
|
fd = open_verify (cached, -1,
|
2005-01-07 06:40:27 +08:00
|
|
|
|
&fb, loader ?: GL(dl_ns)[nsid]._ns_loaded,
|
2014-03-25 01:58:26 +08:00
|
|
|
|
LA_SER_CONFIG, mode, &found_other_class,
|
|
|
|
|
false);
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_likely (fd != -1))
|
2015-01-21 14:51:10 +08:00
|
|
|
|
realname = cached;
|
|
|
|
|
else
|
|
|
|
|
free (cached);
|
1996-07-18 07:09:43 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2012-10-04 07:13:14 +08:00
|
|
|
|
#endif
|
1997-07-26 10:33:30 +08:00
|
|
|
|
|
1996-06-16 09:27:54 +08:00
|
|
|
|
/* Finally, try the default path. */
|
2000-07-21 13:07:54 +08:00
|
|
|
|
if (fd == -1
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
&& ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL
|
2014-03-27 06:37:07 +08:00
|
|
|
|
|| __glibc_likely (!(l->l_flags_1 & DF_1_NODEFLIB)))
|
2000-08-31 10:27:07 +08:00
|
|
|
|
&& rtld_search_dirs.dirs != (void *) -1)
|
2014-03-25 01:58:26 +08:00
|
|
|
|
fd = open_path (name, namelen, mode, &rtld_search_dirs,
|
2005-09-26 23:58:00 +08:00
|
|
|
|
&realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
|
1998-03-06 00:42:56 +08:00
|
|
|
|
|
2002-08-26 03:34:42 +08:00
|
|
|
|
/* Add another newline when we are tracing the library loading. */
|
2014-02-10 21:45:42 +08:00
|
|
|
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
|
2010-02-25 11:27:24 +08:00
|
|
|
|
_dl_debug_printf ("\n");
|
1996-06-11 04:19:39 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
1998-08-28 04:08:32 +08:00
|
|
|
|
/* The path may contain dynamic string tokens. */
|
|
|
|
|
realname = (loader
|
2011-04-10 02:55:26 +08:00
|
|
|
|
? expand_dynamic_string_token (loader, name, 0)
|
2014-10-29 07:37:07 +08:00
|
|
|
|
: __strdup (name));
|
1998-08-28 04:08:32 +08:00
|
|
|
|
if (realname == NULL)
|
|
|
|
|
fd = -1;
|
|
|
|
|
else
|
1996-06-11 04:19:39 +08:00
|
|
|
|
{
|
2015-11-11 11:44:48 +08:00
|
|
|
|
fd = open_verify (realname, -1, &fb,
|
2014-03-25 01:58:26 +08:00
|
|
|
|
loader ?: GL(dl_ns)[nsid]._ns_loaded, 0, mode,
|
2006-03-16 03:26:13 +08:00
|
|
|
|
&found_other_class, true);
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (fd == -1))
|
1998-08-28 04:08:32 +08:00
|
|
|
|
free (realname);
|
1996-06-11 04:19:39 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2005-01-07 06:40:27 +08:00
|
|
|
|
#ifdef SHARED
|
|
|
|
|
no_file:
|
|
|
|
|
#endif
|
2004-08-09 14:41:04 +08:00
|
|
|
|
/* In case the LOADER information has only been provided to get to
|
|
|
|
|
the appropriate RUNPATH/RPATH information we do not need it
|
|
|
|
|
anymore. */
|
|
|
|
|
if (mode & __RTLD_CALLMAP)
|
|
|
|
|
loader = NULL;
|
|
|
|
|
|
2014-03-27 06:37:07 +08:00
|
|
|
|
if (__glibc_unlikely (fd == -1))
|
1996-10-21 09:26:31 +08:00
|
|
|
|
{
|
Update.
2001-12-11 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile (dl-routines): Add conflict.
(rtld-ldscript-in, rtld-ldscript, rtld-parms): Remove.
(ld.so): Add _begin local symbol.
* elf/elf.h (DT_VALTAGIDX, DT_VALNUM, DT_ADDRTAGIDX, DT_ADDRNUM):
Define.
* elf/dl-deps.c (_dl_build_local_scope): New.
(_dl_map_object_deps): If LD_TRACE_PRELINKING, compute local scopes
of all libraries.
* elf/do-rel.h (VALIDX): Define.
(elf_dynamic_do_rel): If ELF_MACHINE_PLT_REL is defined, don't do
lazy binding for RELA. If DT_GNU_PRELINKED, DT_RELACOUNT relocations
can be skipped.
* elf/dl-conflict.c: New file.
* elf/dl-lookup.c (_dl_debug_bindings): New.
(_dl_lookup_symbol): Use _dl_debug_bindings. Reference_name is always
non-NULL.
(_dl_lookup_symbol_skip): Likewise.
(_dl_lookup_versioned_symbol): Likewise.
(_dl_lookup_versioned_symbol_skip): Likewise.
* elf/dl-runtime.c (PLTREL): If ELF_MACHINE_PLT_REL is defined,
define to ElfW(Rel).
* elf/dynamic-link.h (elf_get_dynamic_info): Record selected dynamic
tags in the DT_VALRNGLO..DT_VALRNGHI and DT_ADDRRNGLO..DT_ADDRRNGHI
ranges.
Don't adjust address dynamic tags if l_addr is 0.
* elf/rtld.c (_dl_trace_prelink, _dl_trace_prelink_map): New variables.
(_dl_start): Skip ELF_DYNAMIC_RELOCATE if ld.so is prelinked.
(VALIDX, ADDRIDX): Define.
(_dl_start_final): Initialize _dl_rtld_map's l_map_start and l_map_end.
(dl_main): Print library list for LD_TRACE_PRELINKING.
If prelinking information can be used, skip relocating libraries and
call _dl_resolve_conflicts instead.
(process_envvars): Handle LD_TRACE_PRELINKING envvar.
* elf/dl-load.c (_dl_map_object): Don't create fake libs
if LD_TRACE_PRELINKING.
* include/link.h (struct link_map) [l_info]: Add DT_VALNUM
+ DT_ADDRNUM.
* sysdeps/generic/ldsodefs.h (_dl_trace_prelink_map): New declaration.
(DL_DEBUG_PRELINK): Define.
(_dl_resolve_conflicts): Add prototype.
* sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Reinitialize
.plt for prelinked libraries where prelinking info cannot be used.
(elf_machine_rela): If relocating R_ALPHA_JMP_SLOT in .gnu.conflict
section, use RESOLVE_CONFLICT_FIND_MAP to find out reloc's link_map.
* sysdeps/arm/bits/link.h: New file.
* sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(ELF_MACHINE_NO_RELA): Only define if RTLD_BOOTSTRAP.
(ELF_MACHINE_PLT_REL): Define.
(elf_machine_rela, elf_machine_rela_relative): New.
(elf_machine_lazy_rel): Reinitialize R_ARM_JUMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/i386/bits/link.h: New file.
* sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(ELF_MACHINE_NO_RELA): Only define if RTLD_BOOTSTRAP.
(ELF_MACHINE_PLT_REL): Define.
(elf_machine_rela, elf_machine_rela_relative): New.
(elf_machine_lazy_rel): Reinitialize R_386_JUMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): If relocating
conflicts, skip finaladdr computation. Use RESOLVE_CONFLICT_FIND_MAP
to find out map for R_PPC_JMP_SLOT relocs.
* sysdeps/sparc/sparc32/dl-machine.h (VALIDX): Define.
(OPCODE_BA): Define.
(elf_machine_runtime_setup): Reinitialize .plt for prelinked
libraries where prelinking info cannot be used.
(sparc_fixup_plt): Renamed from elf_machine_fixup_plt.
(elf_machine_fixup_plt): Call sparc_fixup_plt.
(elf_machine_rela): Set value to 0 if relocating conflicts.
Call sparc_fixup_plt for R_SPARC_JMP_SLOT.
* sysdeps/sparc/sparc64/dl-machine.h (VALIDX): Define.
(sparc64_fixup_plt): Fix a typo.
(elf_machine_rela): Set value to 0 if relocating conflicts.
Handle R_SPARC_JMP_SLOT relocs when relocating conflicts.
(elf_machine_runtime_setup): Reinitialize .plt for prelinked
libraries where prelinking info cannot be used.
* sysdeps/sh/bits/link.h: New file.
* sysdeps/sh/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_SH_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/s390/s390-32/bits/link.h: New file.
* sysdeps/s390/s390-32/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_390_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/s390/s390-64/bits/link.h: New file.
* sysdeps/s390/s390-64/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_390_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/x86_64/bits/link.h: New file.
* sysdeps/x86_64/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_X86_64_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
2001-12-12 08:21:26 +08:00
|
|
|
|
if (trace_mode
|
2014-03-27 06:37:07 +08:00
|
|
|
|
&& __glibc_likely ((GLRO(dl_debug_mask) & DL_DEBUG_PRELINK) == 0))
|
1996-10-21 09:26:31 +08:00
|
|
|
|
{
|
|
|
|
|
/* 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
|
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 13:26:05 +08:00
|
|
|
|
have. */
|
1999-07-27 13:53:25 +08:00
|
|
|
|
static const Elf_Symndx dummy_bucket = STN_UNDEF;
|
1996-10-21 09:26:31 +08:00
|
|
|
|
|
2010-10-26 12:23:14 +08:00
|
|
|
|
/* Allocate a new object map. */
|
2014-10-29 07:37:07 +08:00
|
|
|
|
if ((name_copy = __strdup (name)) == NULL
|
2004-09-23 15:45:38 +08:00
|
|
|
|
|| (l = _dl_new_object (name_copy, name, type, loader,
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
mode, nsid)) == NULL)
|
2006-03-16 03:26:13 +08:00
|
|
|
|
{
|
|
|
|
|
free (name_copy);
|
|
|
|
|
_dl_signal_error (ENOMEM, name, NULL,
|
|
|
|
|
N_("cannot create shared object descriptor"));
|
|
|
|
|
}
|
2000-10-24 09:02:15 +08:00
|
|
|
|
/* Signal that this is a faked entry. */
|
|
|
|
|
l->l_faked = 1;
|
|
|
|
|
/* Since the descriptor is initialized with zero we do not
|
1999-02-20 04:37:20 +08:00
|
|
|
|
have do this here.
|
|
|
|
|
l->l_reserved = 0; */
|
1997-01-21 14:10:42 +08:00
|
|
|
|
l->l_buckets = &dummy_bucket;
|
|
|
|
|
l->l_nbuckets = 1;
|
|
|
|
|
l->l_relocated = 1;
|
|
|
|
|
|
2010-10-26 12:23:14 +08:00
|
|
|
|
/* Enter the object in the object list. */
|
|
|
|
|
_dl_add_to_namespace_list (l, nsid);
|
|
|
|
|
|
1997-01-21 14:10:42 +08:00
|
|
|
|
return l;
|
1996-10-21 09:26:31 +08:00
|
|
|
|
}
|
2005-09-26 23:58:00 +08:00
|
|
|
|
else if (found_other_class)
|
|
|
|
|
_dl_signal_error (0, name, NULL,
|
|
|
|
|
ELFW(CLASS) == ELFCLASS32
|
|
|
|
|
? N_("wrong ELF class: ELFCLASS64")
|
|
|
|
|
: N_("wrong ELF class: ELFCLASS32"));
|
1996-10-21 09:26:31 +08:00
|
|
|
|
else
|
2004-03-06 16:19:29 +08:00
|
|
|
|
_dl_signal_error (errno, name, NULL,
|
|
|
|
|
N_("cannot open shared object file"));
|
1996-10-21 09:26:31 +08:00
|
|
|
|
}
|
1996-06-11 04:19:39 +08:00
|
|
|
|
|
2004-01-13 23:47:32 +08:00
|
|
|
|
void *stack_end = __libc_stack_end;
|
2015-11-09 23:52:31 +08:00
|
|
|
|
return _dl_map_object_from_fd (name, origname, fd, &fb, realname, loader,
|
|
|
|
|
type, mode, &stack_end, nsid);
|
1996-06-11 04:19:39 +08:00
|
|
|
|
}
|
2004-03-06 16:19:29 +08:00
|
|
|
|
|
2014-10-10 02:15:24 +08:00
|
|
|
|
struct add_path_state
|
|
|
|
|
{
|
|
|
|
|
bool counting;
|
|
|
|
|
unsigned int idx;
|
|
|
|
|
Dl_serinfo *si;
|
|
|
|
|
char *allocptr;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
add_path (struct add_path_state *p, const struct r_search_path_struct *sps,
|
|
|
|
|
unsigned int flags)
|
|
|
|
|
{
|
|
|
|
|
if (sps->dirs != (void *) -1)
|
|
|
|
|
{
|
|
|
|
|
struct r_search_path_elem **dirs = sps->dirs;
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
const struct r_search_path_elem *const r = *dirs++;
|
|
|
|
|
if (p->counting)
|
|
|
|
|
{
|
|
|
|
|
p->si->dls_cnt++;
|
|
|
|
|
p->si->dls_size += MAX (2, r->dirnamelen);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Dl_serpath *const sp = &p->si->dls_serpath[p->idx++];
|
|
|
|
|
sp->dls_name = p->allocptr;
|
|
|
|
|
if (r->dirnamelen < 2)
|
|
|
|
|
*p->allocptr++ = r->dirnamelen ? '/' : '.';
|
|
|
|
|
else
|
|
|
|
|
p->allocptr = __mempcpy (p->allocptr,
|
|
|
|
|
r->dirname, r->dirnamelen - 1);
|
|
|
|
|
*p->allocptr++ = '\0';
|
|
|
|
|
sp->dls_flags = flags;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
while (*dirs != NULL);
|
|
|
|
|
}
|
|
|
|
|
}
|
2003-03-16 07:16:22 +08:00
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
_dl_rtld_di_serinfo (struct link_map *loader, Dl_serinfo *si, bool counting)
|
|
|
|
|
{
|
|
|
|
|
if (counting)
|
|
|
|
|
{
|
|
|
|
|
si->dls_cnt = 0;
|
|
|
|
|
si->dls_size = 0;
|
|
|
|
|
}
|
|
|
|
|
|
2014-10-10 02:15:24 +08:00
|
|
|
|
struct add_path_state p =
|
2003-03-16 07:16:22 +08:00
|
|
|
|
{
|
2014-10-10 02:15:24 +08:00
|
|
|
|
.counting = counting,
|
|
|
|
|
.idx = 0,
|
|
|
|
|
.si = si,
|
|
|
|
|
.allocptr = (char *) &si->dls_serpath[si->dls_cnt]
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# define add_path(p, sps, flags) add_path(p, sps, 0) /* XXX */
|
2003-03-16 07:16:22 +08:00
|
|
|
|
|
|
|
|
|
/* When the object has the RUNPATH information we don't use any RPATHs. */
|
|
|
|
|
if (loader->l_info[DT_RUNPATH] == NULL)
|
|
|
|
|
{
|
|
|
|
|
/* First try the DT_RPATH of the dependent object that caused NAME
|
|
|
|
|
to be loaded. Then that object's dependent, and on up. */
|
|
|
|
|
|
|
|
|
|
struct link_map *l = loader;
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
|
2014-10-10 02:15:24 +08:00
|
|
|
|
add_path (&p, &l->l_rpath_dirs, XXX_RPATH);
|
2003-03-16 07:16:22 +08:00
|
|
|
|
l = l->l_loader;
|
|
|
|
|
}
|
|
|
|
|
while (l != NULL);
|
|
|
|
|
|
|
|
|
|
/* If dynamically linked, try the DT_RPATH of the executable itself. */
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
if (loader->l_ns == LM_ID_BASE)
|
|
|
|
|
{
|
|
|
|
|
l = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
|
|
|
|
|
if (l != NULL && l->l_type != lt_loaded && l != loader)
|
|
|
|
|
if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
|
2014-10-10 02:15:24 +08:00
|
|
|
|
add_path (&p, &l->l_rpath_dirs, XXX_RPATH);
|
[BZ #77]
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>
2004-10-14 10:08:23 +08:00
|
|
|
|
}
|
2003-03-16 07:16:22 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Try the LD_LIBRARY_PATH environment variable. */
|
2014-10-10 02:15:24 +08:00
|
|
|
|
add_path (&p, &env_path_list, XXX_ENV);
|
2003-03-16 07:16:22 +08:00
|
|
|
|
|
|
|
|
|
/* Look at the RUNPATH information for this binary. */
|
|
|
|
|
if (cache_rpath (loader, &loader->l_runpath_dirs, DT_RUNPATH, "RUNPATH"))
|
2014-10-10 02:15:24 +08:00
|
|
|
|
add_path (&p, &loader->l_runpath_dirs, XXX_RUNPATH);
|
2003-03-16 07:16:22 +08:00
|
|
|
|
|
|
|
|
|
/* XXX
|
|
|
|
|
Here is where ld.so.cache gets checked, but we don't have
|
|
|
|
|
a way to indicate that in the results for Dl_serinfo. */
|
|
|
|
|
|
|
|
|
|
/* Finally, try the default path. */
|
|
|
|
|
if (!(loader->l_flags_1 & DF_1_NODEFLIB))
|
2014-10-10 02:15:24 +08:00
|
|
|
|
add_path (&p, &rtld_search_dirs, XXX_default);
|
2003-03-16 07:16:22 +08:00
|
|
|
|
|
|
|
|
|
if (counting)
|
|
|
|
|
/* Count the struct size before the string area, which we didn't
|
|
|
|
|
know before we completed dls_cnt. */
|
|
|
|
|
si->dls_size += (char *) &si->dls_serpath[si->dls_cnt] - (char *) si;
|
|
|
|
|
}
|