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 10:18:47 +00:00
|
|
|
/* Support for dynamic linking code in static libc.
|
2021-01-02 19:32:25 +00:00
|
|
|
Copyright (C) 1996-2021 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 03:15:52 +00:00
|
|
|
This file is part of the GNU C Library.
|
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 10:18:47 +00: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 03:15:52 +00:00
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00: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.
|
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 10:18:47 +00: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 03:15:52 +00: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 04:58:11 +00:00
|
|
|
Lesser General Public License for more details.
|
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 10:18:47 +00:00
|
|
|
|
2001-07-06 04:58:11 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
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 10:18:47 +00:00
|
|
|
|
|
|
|
/* This file defines some things that for the dynamic linker are defined in
|
|
|
|
rtld.c and dl-sysdep.c in ways appropriate to bootstrap dynamic linking. */
|
|
|
|
|
2021-01-15 12:49:24 +00:00
|
|
|
#include <string.h>
|
|
|
|
/* Mark symbols hidden in static PIE for early self relocation to work.
|
|
|
|
Note: string.h may have ifuncs which cannot be hidden on i686. */
|
|
|
|
#if BUILD_PIE_DEFAULT
|
|
|
|
# pragma GCC visibility push(hidden)
|
|
|
|
#endif
|
1998-04-07 20:39:52 +00:00
|
|
|
#include <errno.h>
|
2000-06-10 04:01:36 +00:00
|
|
|
#include <libintl.h>
|
Update.
1997-06-03 23:42 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-support.c: Define and initialize _dl_verbose used in
dl-machine.h.
* io/ftw.c: Expand stat/lstat calls.
* manual/intro.texi: Also refer to ISO 9945.
Update info about SVID.
Add description for XPG.
* md5-crypt/md5-crypt.c: Namespace cleanups.
* md5-crypt/md5.c: Likewise.
* md5-crypt/md5.h: Likewise.
* sysdeps/generic/crypt-entry.c: Likewise.
* posix/unistd.h (_POSIX2_C_VERSION): Set to 199209L.
* stdlib/fmtmsg.h: Declare addseverity only if __USE_SVID is
defined.
* sunrpc/rpc_scan.c (findkind): Declare `token' as const.
* sunrpc/rpc_util.c (toktostr): Declare `token' as const.
* time/Makefile: Make tzselect dependen of config.make.
1997-06-01 15:01 Miles Bader <miles@gnu.ai.mit.edu>
* manual/string.texi (String and Array Utilities): Add `Argz and
Envz Vectors' to the menu.
(Argz and Envz Vectors, Argz Functions, Envz Functions): New nodes.
1997-05-31 20:59 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* login/Makefile (utmpd-routines): Add utmpd.
(extra-objs): Add utmpd objects to get dependencies.
(distribute): Add sources for utmpd.
(subdir-dirs): Define.
1997-06-02 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/wordsize-32/inttypes.h: Include features.h and use
__CONCAT instead of defined __CONCAT__ ourself.
* sysdeps/wordsize-64/inttypes.h: Likewise.
1997-06-01 19:11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/wordsize-64/inttypes.h (INTMAX_C): Use `l' suffix, not
`ll'.
(PRIdFAST, PRIoFAST, PRIxFAST, PRIuFAST, SCNdFAST, SCNiFAST,
SCNoFAST, SCNxFAST): Correct format specifiers.
1997-06-02 04:23 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/syscalls.list: Make fchdir weak alias for __fchdir.
1997-06-01 19:17 Ulrich Drepper <drepper@cygnus.com>
* md5-crypt/Makefile: Correct libmd5crypt file to really generate
DES free libcrypt.
* md5-crypt/onlymd5-entry.c: New file. Wrapper around
sysdeps/generic/crypt-entry.c.
1997-06-01 12:48 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/alpha/gnu/types.h (__fd_mask): Change
type to `unsigned long int'.
Patch by Richard Henderson <richard@twiddle.rth.home>.
1997-05-30 17:34 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/generic/bb_init_func.c (__bb_init_func): Use ISO C
declaration style.
* nss/nss_files/files-hosts.c: Delete inclusion of
"../resolv/mapv4v6hostent.h".
1997-06-03 21:53:09 +00:00
|
|
|
#include <stdlib.h>
|
1997-07-26 02:33:30 +00:00
|
|
|
#include <unistd.h>
|
2011-09-11 15:25:51 +00:00
|
|
|
#include <sys/param.h>
|
2013-05-01 15:46:34 +00:00
|
|
|
#include <stdint.h>
|
2000-03-23 20:31:46 +00:00
|
|
|
#include <ldsodefs.h>
|
1997-07-26 02:33:30 +00:00
|
|
|
#include <dl-machine.h>
|
2015-09-08 21:11:03 +00:00
|
|
|
#include <libc-lock.h>
|
2002-02-01 01:33:04 +00:00
|
|
|
#include <dl-cache.h>
|
2000-09-26 09:46:55 +00:00
|
|
|
#include <dl-librecon.h>
|
2006-12-19 15:30:39 +00:00
|
|
|
#include <dl-procinfo.h>
|
2000-09-26 09:46:55 +00:00
|
|
|
#include <unsecvars.h>
|
2001-04-23 19:01:10 +00:00
|
|
|
#include <hp-timing.h>
|
2010-12-20 03:49:01 +00:00
|
|
|
#include <stackinfo.h>
|
elf: Move vDSO setup to rtld (BZ#24967)
This patch moves the vDSO setup from libc to loader code, just after
the vDSO link_map setup. For static case the initialization
is moved to _dl_non_dynamic_init instead.
Instead of using the mangled pointer, the vDSO data is set as
attribute_relro (on _rtld_global_ro for shared or _dl_vdso_* for
static). It is read-only even with partial relro.
It fixes BZ#24967 now that the vDSO pointer is setup earlier than
malloc interposition is called.
Also, vDSO calls should not be a problem for static dlopen as
indicated by BZ#20802. The vDSO pointer would be zero-initialized
and the syscall will be issued instead.
Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu,
arm-linux-gnueabihf, powerpc64le-linux-gnu, powerpc64-linux-gnu,
powerpc-linux-gnu, s390x-linux-gnu, sparc64-linux-gnu, and
sparcv9-linux-gnu. I also run some tests on mips.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2019-11-29 13:44:59 +00:00
|
|
|
#include <dl-vdso.h>
|
|
|
|
#include <dl-vdso-setup.h>
|
2020-01-10 22:14:56 +00:00
|
|
|
#include <dl-auxv.h>
|
Update.
1997-06-03 23:42 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-support.c: Define and initialize _dl_verbose used in
dl-machine.h.
* io/ftw.c: Expand stat/lstat calls.
* manual/intro.texi: Also refer to ISO 9945.
Update info about SVID.
Add description for XPG.
* md5-crypt/md5-crypt.c: Namespace cleanups.
* md5-crypt/md5.c: Likewise.
* md5-crypt/md5.h: Likewise.
* sysdeps/generic/crypt-entry.c: Likewise.
* posix/unistd.h (_POSIX2_C_VERSION): Set to 199209L.
* stdlib/fmtmsg.h: Declare addseverity only if __USE_SVID is
defined.
* sunrpc/rpc_scan.c (findkind): Declare `token' as const.
* sunrpc/rpc_util.c (toktostr): Declare `token' as const.
* time/Makefile: Make tzselect dependen of config.make.
1997-06-01 15:01 Miles Bader <miles@gnu.ai.mit.edu>
* manual/string.texi (String and Array Utilities): Add `Argz and
Envz Vectors' to the menu.
(Argz and Envz Vectors, Argz Functions, Envz Functions): New nodes.
1997-05-31 20:59 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* login/Makefile (utmpd-routines): Add utmpd.
(extra-objs): Add utmpd objects to get dependencies.
(distribute): Add sources for utmpd.
(subdir-dirs): Define.
1997-06-02 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/wordsize-32/inttypes.h: Include features.h and use
__CONCAT instead of defined __CONCAT__ ourself.
* sysdeps/wordsize-64/inttypes.h: Likewise.
1997-06-01 19:11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/wordsize-64/inttypes.h (INTMAX_C): Use `l' suffix, not
`ll'.
(PRIdFAST, PRIoFAST, PRIxFAST, PRIuFAST, SCNdFAST, SCNiFAST,
SCNoFAST, SCNxFAST): Correct format specifiers.
1997-06-02 04:23 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/syscalls.list: Make fchdir weak alias for __fchdir.
1997-06-01 19:17 Ulrich Drepper <drepper@cygnus.com>
* md5-crypt/Makefile: Correct libmd5crypt file to really generate
DES free libcrypt.
* md5-crypt/onlymd5-entry.c: New file. Wrapper around
sysdeps/generic/crypt-entry.c.
1997-06-01 12:48 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/alpha/gnu/types.h (__fd_mask): Change
type to `unsigned long int'.
Patch by Richard Henderson <richard@twiddle.rth.home>.
1997-05-30 17:34 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/generic/bb_init_func.c (__bb_init_func): Use ISO C
declaration style.
* nss/nss_files/files-hosts.c: Delete inclusion of
"../resolv/mapv4v6hostent.h".
1997-06-03 21:53:09 +00:00
|
|
|
|
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 10:18:47 +00:00
|
|
|
extern char *__progname;
|
|
|
|
char **_dl_argv = &__progname; /* This is checked for some error messages. */
|
|
|
|
|
1997-07-26 02:33:30 +00:00
|
|
|
/* Name of the architecture. */
|
|
|
|
const char *_dl_platform;
|
|
|
|
size_t _dl_platformlen;
|
1998-04-07 20:39:52 +00:00
|
|
|
|
2001-02-27 09:34:31 +00:00
|
|
|
int _dl_debug_mask;
|
1999-05-11 13:00:20 +00:00
|
|
|
int _dl_lazy;
|
2003-11-26 03:24:15 +00:00
|
|
|
ElfW(Addr) _dl_use_load_bias = -2;
|
2000-06-08 03:03:00 +00:00
|
|
|
int _dl_dynamic_weak;
|
1997-07-26 02:33:30 +00:00
|
|
|
|
Update.
1997-06-03 23:42 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-support.c: Define and initialize _dl_verbose used in
dl-machine.h.
* io/ftw.c: Expand stat/lstat calls.
* manual/intro.texi: Also refer to ISO 9945.
Update info about SVID.
Add description for XPG.
* md5-crypt/md5-crypt.c: Namespace cleanups.
* md5-crypt/md5.c: Likewise.
* md5-crypt/md5.h: Likewise.
* sysdeps/generic/crypt-entry.c: Likewise.
* posix/unistd.h (_POSIX2_C_VERSION): Set to 199209L.
* stdlib/fmtmsg.h: Declare addseverity only if __USE_SVID is
defined.
* sunrpc/rpc_scan.c (findkind): Declare `token' as const.
* sunrpc/rpc_util.c (toktostr): Declare `token' as const.
* time/Makefile: Make tzselect dependen of config.make.
1997-06-01 15:01 Miles Bader <miles@gnu.ai.mit.edu>
* manual/string.texi (String and Array Utilities): Add `Argz and
Envz Vectors' to the menu.
(Argz and Envz Vectors, Argz Functions, Envz Functions): New nodes.
1997-05-31 20:59 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* login/Makefile (utmpd-routines): Add utmpd.
(extra-objs): Add utmpd objects to get dependencies.
(distribute): Add sources for utmpd.
(subdir-dirs): Define.
1997-06-02 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/wordsize-32/inttypes.h: Include features.h and use
__CONCAT instead of defined __CONCAT__ ourself.
* sysdeps/wordsize-64/inttypes.h: Likewise.
1997-06-01 19:11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/wordsize-64/inttypes.h (INTMAX_C): Use `l' suffix, not
`ll'.
(PRIdFAST, PRIoFAST, PRIxFAST, PRIuFAST, SCNdFAST, SCNiFAST,
SCNoFAST, SCNxFAST): Correct format specifiers.
1997-06-02 04:23 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/syscalls.list: Make fchdir weak alias for __fchdir.
1997-06-01 19:17 Ulrich Drepper <drepper@cygnus.com>
* md5-crypt/Makefile: Correct libmd5crypt file to really generate
DES free libcrypt.
* md5-crypt/onlymd5-entry.c: New file. Wrapper around
sysdeps/generic/crypt-entry.c.
1997-06-01 12:48 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/alpha/gnu/types.h (__fd_mask): Change
type to `unsigned long int'.
Patch by Richard Henderson <richard@twiddle.rth.home>.
1997-05-30 17:34 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/generic/bb_init_func.c (__bb_init_func): Use ISO C
declaration style.
* nss/nss_files/files-hosts.c: Delete inclusion of
"../resolv/mapv4v6hostent.h".
1997-06-03 21:53:09 +00:00
|
|
|
/* If nonzero print warnings about problematic situations. */
|
|
|
|
int _dl_verbose;
|
|
|
|
|
1997-07-28 22:35:20 +00:00
|
|
|
/* We never do profiling. */
|
|
|
|
const char *_dl_profile;
|
2004-03-06 09:07:56 +00:00
|
|
|
const char *_dl_profile_output;
|
1997-07-28 22:35:20 +00:00
|
|
|
|
1999-07-24 19:45:13 +00:00
|
|
|
/* Names of shared object for which the RUNPATHs and RPATHs should be
|
|
|
|
ignored. */
|
1998-05-20 00:15:00 +00:00
|
|
|
const char *_dl_inhibit_rpath;
|
1998-05-19 23:18:44 +00:00
|
|
|
|
1998-07-07 17:31:11 +00:00
|
|
|
/* The map for the object we will profile. */
|
|
|
|
struct link_map *_dl_profile_map;
|
|
|
|
|
1998-06-07 14:06:56 +00:00
|
|
|
/* This is the address of the last stack address ever used. */
|
|
|
|
void *__libc_stack_end;
|
|
|
|
|
1998-08-27 20:08:32 +00:00
|
|
|
/* Path where the binary is found. */
|
|
|
|
const char *_dl_origin_path;
|
|
|
|
|
2000-07-21 06:43:05 +00:00
|
|
|
/* Nonzero if runtime lookup should not update the .got/.plt. */
|
|
|
|
int _dl_bind_not;
|
|
|
|
|
2013-06-28 15:20:26 +00:00
|
|
|
/* A dummy link map for the executable, used by dlopen to access the global
|
|
|
|
scope. We don't export any symbols ourselves, so this can be minimal. */
|
|
|
|
static struct link_map _dl_main_map =
|
|
|
|
{
|
|
|
|
.l_name = (char *) "",
|
|
|
|
.l_real = &_dl_main_map,
|
|
|
|
.l_ns = LM_ID_BASE,
|
|
|
|
.l_libname = &(struct libname_list) { .name = "", .dont_free = 1 },
|
|
|
|
.l_searchlist =
|
|
|
|
{
|
|
|
|
.r_list = &(struct link_map *) { &_dl_main_map },
|
|
|
|
.r_nlist = 1,
|
|
|
|
},
|
|
|
|
.l_symbolic_searchlist = { .r_list = &(struct link_map *) { NULL } },
|
|
|
|
.l_type = lt_executable,
|
|
|
|
.l_scope_mem = { &_dl_main_map.l_searchlist },
|
|
|
|
.l_scope_max = (sizeof (_dl_main_map.l_scope_mem)
|
|
|
|
/ sizeof (_dl_main_map.l_scope_mem[0])),
|
|
|
|
.l_scope = _dl_main_map.l_scope_mem,
|
|
|
|
.l_local_scope = { &_dl_main_map.l_searchlist },
|
|
|
|
.l_used = 1,
|
|
|
|
.l_tls_offset = NO_TLS_OFFSET,
|
|
|
|
.l_serial = 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 02:08:23 +00:00
|
|
|
/* Namespace information. */
|
2013-06-28 15:20:26 +00:00
|
|
|
struct link_namespaces _dl_ns[DL_NNS] =
|
|
|
|
{
|
|
|
|
[LM_ID_BASE] =
|
|
|
|
{
|
|
|
|
._ns_loaded = &_dl_main_map,
|
|
|
|
._ns_nloaded = 1,
|
|
|
|
._ns_main_searchlist = &_dl_main_map.l_searchlist,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
size_t _dl_nns = 1;
|
1998-09-06 09:16:53 +00:00
|
|
|
|
2004-01-24 20:12:10 +00:00
|
|
|
/* Incremented whenever something may have been added to dl_loaded. */
|
2013-06-28 15:20:26 +00:00
|
|
|
unsigned long long _dl_load_adds = 1;
|
2004-01-24 20:12:10 +00:00
|
|
|
|
2013-06-28 15:20:26 +00:00
|
|
|
/* Fake scope of the main application. */
|
|
|
|
struct r_scope_elem _dl_initial_searchlist =
|
|
|
|
{
|
|
|
|
.r_list = &(struct link_map *) { &_dl_main_map },
|
|
|
|
.r_nlist = 1,
|
|
|
|
};
|
1998-09-06 09:16:53 +00:00
|
|
|
|
2004-07-06 04:26:42 +00:00
|
|
|
#ifndef HAVE_INLINED_SYSCALLS
|
2000-03-31 08:21:01 +00:00
|
|
|
/* Nonzero during startup. */
|
|
|
|
int _dl_starting_up = 1;
|
2004-07-06 04:26:42 +00:00
|
|
|
#endif
|
2000-03-31 08:21:01 +00:00
|
|
|
|
2009-01-11 04:44:06 +00:00
|
|
|
/* Random data provided by the kernel. */
|
|
|
|
void *_dl_random;
|
|
|
|
|
2002-02-01 07:49:47 +00:00
|
|
|
/* Get architecture specific initializer. */
|
2017-11-13 16:02:39 +00:00
|
|
|
#include <dl-procruntime.c>
|
2002-02-01 07:49:47 +00:00
|
|
|
#include <dl-procinfo.c>
|
|
|
|
|
2011-09-11 15:25:51 +00:00
|
|
|
size_t _dl_pagesize = EXEC_PAGESIZE;
|
2002-01-31 03:41:25 +00:00
|
|
|
|
2021-02-01 19:00:38 +00:00
|
|
|
size_t _dl_minsigstacksize = CONSTANT_MINSIGSTKSZ;
|
|
|
|
|
2012-04-04 14:39:09 +00:00
|
|
|
int _dl_inhibit_cache;
|
|
|
|
|
2002-01-31 03:41:25 +00:00
|
|
|
unsigned int _dl_osversion;
|
|
|
|
|
|
|
|
/* All known directories in sorted order. */
|
|
|
|
struct r_search_path_elem *_dl_all_dirs;
|
|
|
|
|
|
|
|
/* All directories after startup. */
|
|
|
|
struct r_search_path_elem *_dl_init_all_dirs;
|
|
|
|
|
|
|
|
/* The object to be initialized first. */
|
|
|
|
struct link_map *_dl_initfirst;
|
|
|
|
|
2002-02-01 01:33:04 +00:00
|
|
|
/* Descriptor to write debug messages to. */
|
|
|
|
int _dl_debug_fd = STDERR_FILENO;
|
|
|
|
|
|
|
|
int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID;
|
|
|
|
|
2012-05-20 17:34:00 +00:00
|
|
|
ElfW(auxv_t) *_dl_auxv;
|
2013-03-28 22:39:32 +00:00
|
|
|
const ElfW(Phdr) *_dl_phdr;
|
2002-07-23 22:59:19 +00:00
|
|
|
size_t _dl_phnum;
|
2021-07-09 18:09:14 +00:00
|
|
|
uint64_t _dl_hwcap;
|
|
|
|
uint64_t _dl_hwcap2;
|
2003-07-29 08:57:15 +00:00
|
|
|
|
2013-09-09 21:36:57 +00:00
|
|
|
/* The value of the FPU control word the kernel will preset in hardware. */
|
|
|
|
fpu_control_t _dl_fpu_control = _FPU_DEFAULT;
|
|
|
|
|
2017-06-01 17:02:03 +00:00
|
|
|
#if !HAVE_TUNABLES
|
2010-04-06 02:43:05 +00:00
|
|
|
/* This is not initialized to HWCAP_IMPORTANT, matching the definition
|
|
|
|
of _dl_important_hwcaps, below, where no hwcap strings are ever
|
|
|
|
used. This mask is still used to mediate the lookups in the cache
|
|
|
|
file. Since there is no way to set this nonzero (we don't grok the
|
|
|
|
LD_HWCAP_MASK environment variable here), there is no real point in
|
|
|
|
setting _dl_hwcap nonzero below, but we do anyway. */
|
2021-07-09 18:09:14 +00:00
|
|
|
uint64_t _dl_hwcap_mask;
|
2017-06-01 17:02:03 +00:00
|
|
|
#endif
|
2010-04-06 02:43:05 +00:00
|
|
|
|
2010-12-20 03:49:01 +00:00
|
|
|
/* Prevailing state of the stack. Generally this includes PF_X, indicating it's
|
|
|
|
* executable but this isn't true for all platforms. */
|
|
|
|
ElfW(Word) _dl_stack_flags = DEFAULT_STACK_PERMS;
|
2003-09-23 12:06:48 +00:00
|
|
|
|
2020-11-16 18:33:30 +00:00
|
|
|
#if THREAD_GSCOPE_IN_TCB
|
|
|
|
list_t _dl_stack_used;
|
|
|
|
list_t _dl_stack_user;
|
2021-05-10 08:31:41 +00:00
|
|
|
list_t _dl_stack_cache;
|
|
|
|
size_t _dl_stack_cache_actsize;
|
|
|
|
uintptr_t _dl_in_flight_stack;
|
2020-11-16 18:33:30 +00:00
|
|
|
int _dl_stack_cache_lock;
|
|
|
|
#else
|
2021-05-10 08:31:41 +00:00
|
|
|
/* If loading a shared object requires that we make the stack executable
|
|
|
|
when it was not, we do it by calling this function.
|
|
|
|
It returns an errno code or zero on success. */
|
|
|
|
int (*_dl_make_stack_executable_hook) (void **) = _dl_make_stack_executable;
|
2018-03-04 18:11:26 +00:00
|
|
|
int _dl_thread_gscope_count;
|
2021-05-05 04:20:31 +00:00
|
|
|
void (*_dl_init_static_tls) (struct link_map *) = &_dl_nothread_init_static_tls;
|
2018-03-04 18:11:26 +00:00
|
|
|
#endif
|
2007-06-20 03:19:13 +00:00
|
|
|
struct dl_scope_free_list *_dl_scope_free_list;
|
|
|
|
|
2002-12-19 00:03:48 +00:00
|
|
|
#ifdef NEED_DL_SYSINFO
|
2021-01-18 11:45:46 +00:00
|
|
|
/* Needed for improved syscall handling on at least x86/Linux. NB: Don't
|
|
|
|
initialize it here to avoid RELATIVE relocation in static PIE. */
|
|
|
|
uintptr_t _dl_sysinfo;
|
2004-11-06 00:24:55 +00:00
|
|
|
#endif
|
2013-03-01 22:44:44 +00:00
|
|
|
#ifdef NEED_DL_SYSINFO_DSO
|
2003-05-04 04:30:13 +00:00
|
|
|
/* Address of the ELF headers in the vsyscall page. */
|
|
|
|
const ElfW(Ehdr) *_dl_sysinfo_dso;
|
2012-10-05 17:20:39 +00:00
|
|
|
|
|
|
|
struct link_map *_dl_sysinfo_map;
|
|
|
|
|
|
|
|
# include "get-dynamic-info.h"
|
2002-12-19 00:03:48 +00:00
|
|
|
#endif
|
2012-11-01 17:48:34 +00:00
|
|
|
#include "setup-vdso.h"
|
elf: Move vDSO setup to rtld (BZ#24967)
This patch moves the vDSO setup from libc to loader code, just after
the vDSO link_map setup. For static case the initialization
is moved to _dl_non_dynamic_init instead.
Instead of using the mangled pointer, the vDSO data is set as
attribute_relro (on _rtld_global_ro for shared or _dl_vdso_* for
static). It is read-only even with partial relro.
It fixes BZ#24967 now that the vDSO pointer is setup earlier than
malloc interposition is called.
Also, vDSO calls should not be a problem for static dlopen as
indicated by BZ#20802. The vDSO pointer would be zero-initialized
and the syscall will be issued instead.
Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu,
arm-linux-gnueabihf, powerpc64le-linux-gnu, powerpc64-linux-gnu,
powerpc-linux-gnu, s390x-linux-gnu, sparc64-linux-gnu, and
sparcv9-linux-gnu. I also run some tests on mips.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2019-11-29 13:44:59 +00:00
|
|
|
/* Define the vDSO function pointers. */
|
|
|
|
#include <dl-vdso-setup.c>
|
2002-12-19 00:03:48 +00:00
|
|
|
|
2000-04-03 03:51:04 +00:00
|
|
|
/* During the program run we must not modify the global data of
|
|
|
|
loaded shared object simultanously in two threads. Therefore we
|
|
|
|
protect `_dl_open' and `_dl_close' in dl-close.c.
|
|
|
|
|
|
|
|
This must be a recursive lock since the initializer function of
|
|
|
|
the loaded object might as well require a call to this function.
|
|
|
|
At this time it is not anymore a problem to modify the tables. */
|
2002-12-06 11:49:42 +00:00
|
|
|
__rtld_lock_define_initialized_recursive (, _dl_load_lock)
|
2010-05-03 15:08:28 +00:00
|
|
|
/* This lock is used to keep __dl_iterate_phdr from inspecting the
|
|
|
|
list of loaded objects while an object is added to or removed from
|
|
|
|
that list. */
|
|
|
|
__rtld_lock_define_initialized_recursive (, _dl_load_write_lock)
|
2021-09-15 14:16:19 +00:00
|
|
|
/* This lock protects global and module specific TLS related data.
|
|
|
|
E.g. it is held in dlopen and dlclose when GL(dl_tls_generation),
|
|
|
|
GL(dl_tls_max_dtv_idx) or GL(dl_tls_dtv_slotinfo_list) are
|
|
|
|
accessed and when TLS related relocations are processed for a
|
|
|
|
module. It was introduced to keep pthread_create accessing TLS
|
|
|
|
state that is being set up. */
|
|
|
|
__rtld_lock_define_initialized_recursive (, _dl_load_tls_lock)
|
2000-04-03 03:51:04 +00:00
|
|
|
|
2001-01-05 06:43:17 +00:00
|
|
|
|
2001-01-07 02:00:21 +00:00
|
|
|
#ifdef HAVE_AUX_VECTOR
|
2002-01-31 03:41:25 +00:00
|
|
|
int _dl_clktck;
|
1997-07-26 02:33:30 +00:00
|
|
|
|
2001-01-07 02:00:21 +00:00
|
|
|
void
|
|
|
|
_dl_aux_init (ElfW(auxv_t) *av)
|
Update.
1997-06-03 23:42 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-support.c: Define and initialize _dl_verbose used in
dl-machine.h.
* io/ftw.c: Expand stat/lstat calls.
* manual/intro.texi: Also refer to ISO 9945.
Update info about SVID.
Add description for XPG.
* md5-crypt/md5-crypt.c: Namespace cleanups.
* md5-crypt/md5.c: Likewise.
* md5-crypt/md5.h: Likewise.
* sysdeps/generic/crypt-entry.c: Likewise.
* posix/unistd.h (_POSIX2_C_VERSION): Set to 199209L.
* stdlib/fmtmsg.h: Declare addseverity only if __USE_SVID is
defined.
* sunrpc/rpc_scan.c (findkind): Declare `token' as const.
* sunrpc/rpc_util.c (toktostr): Declare `token' as const.
* time/Makefile: Make tzselect dependen of config.make.
1997-06-01 15:01 Miles Bader <miles@gnu.ai.mit.edu>
* manual/string.texi (String and Array Utilities): Add `Argz and
Envz Vectors' to the menu.
(Argz and Envz Vectors, Argz Functions, Envz Functions): New nodes.
1997-05-31 20:59 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* login/Makefile (utmpd-routines): Add utmpd.
(extra-objs): Add utmpd objects to get dependencies.
(distribute): Add sources for utmpd.
(subdir-dirs): Define.
1997-06-02 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/wordsize-32/inttypes.h: Include features.h and use
__CONCAT instead of defined __CONCAT__ ourself.
* sysdeps/wordsize-64/inttypes.h: Likewise.
1997-06-01 19:11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/wordsize-64/inttypes.h (INTMAX_C): Use `l' suffix, not
`ll'.
(PRIdFAST, PRIoFAST, PRIxFAST, PRIuFAST, SCNdFAST, SCNiFAST,
SCNoFAST, SCNxFAST): Correct format specifiers.
1997-06-02 04:23 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/syscalls.list: Make fchdir weak alias for __fchdir.
1997-06-01 19:17 Ulrich Drepper <drepper@cygnus.com>
* md5-crypt/Makefile: Correct libmd5crypt file to really generate
DES free libcrypt.
* md5-crypt/onlymd5-entry.c: New file. Wrapper around
sysdeps/generic/crypt-entry.c.
1997-06-01 12:48 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/alpha/gnu/types.h (__fd_mask): Change
type to `unsigned long int'.
Patch by Richard Henderson <richard@twiddle.rth.home>.
1997-05-30 17:34 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/generic/bb_init_func.c (__bb_init_func): Use ISO C
declaration style.
* nss/nss_files/files-hosts.c: Delete inclusion of
"../resolv/mapv4v6hostent.h".
1997-06-03 21:53:09 +00:00
|
|
|
{
|
2003-05-06 06:34:21 +00:00
|
|
|
int seen = 0;
|
|
|
|
uid_t uid = 0;
|
|
|
|
gid_t gid = 0;
|
|
|
|
|
2021-01-18 11:45:46 +00:00
|
|
|
#ifdef NEED_DL_SYSINFO
|
|
|
|
/* NB: Avoid RELATIVE relocation in static PIE. */
|
|
|
|
GL(dl_sysinfo) = DL_SYSINFO_DEFAULT;
|
|
|
|
#endif
|
|
|
|
|
2012-05-20 17:34:00 +00:00
|
|
|
_dl_auxv = av;
|
2001-01-05 06:43:17 +00:00
|
|
|
for (; av->a_type != AT_NULL; ++av)
|
|
|
|
switch (av->a_type)
|
|
|
|
{
|
|
|
|
case AT_PAGESZ:
|
2013-03-15 21:35:17 +00:00
|
|
|
if (av->a_un.a_val != 0)
|
|
|
|
GLRO(dl_pagesize) = av->a_un.a_val;
|
2001-01-05 06:43:17 +00:00
|
|
|
break;
|
|
|
|
case AT_CLKTCK:
|
2004-03-05 10:29:47 +00:00
|
|
|
GLRO(dl_clktck) = av->a_un.a_val;
|
2001-01-05 06:43:17 +00:00
|
|
|
break;
|
2002-07-23 22:59:19 +00:00
|
|
|
case AT_PHDR:
|
2013-03-28 22:39:32 +00:00
|
|
|
GL(dl_phdr) = (const void *) av->a_un.a_val;
|
2002-07-23 22:59:19 +00:00
|
|
|
break;
|
|
|
|
case AT_PHNUM:
|
|
|
|
GL(dl_phnum) = av->a_un.a_val;
|
|
|
|
break;
|
2015-10-09 19:01:35 +00:00
|
|
|
case AT_PLATFORM:
|
|
|
|
GLRO(dl_platform) = (void *) av->a_un.a_val;
|
|
|
|
break;
|
2003-07-22 22:28:07 +00:00
|
|
|
case AT_HWCAP:
|
2005-04-07 20:57:41 +00:00
|
|
|
GLRO(dl_hwcap) = (unsigned long int) av->a_un.a_val;
|
2003-07-22 22:28:07 +00:00
|
|
|
break;
|
2013-06-28 21:50:48 +00:00
|
|
|
case AT_HWCAP2:
|
|
|
|
GLRO(dl_hwcap2) = (unsigned long int) av->a_un.a_val;
|
|
|
|
break;
|
2013-09-09 21:36:57 +00:00
|
|
|
case AT_FPUCW:
|
|
|
|
GLRO(dl_fpu_control) = av->a_un.a_val;
|
|
|
|
break;
|
2003-01-30 17:31:48 +00:00
|
|
|
#ifdef NEED_DL_SYSINFO
|
|
|
|
case AT_SYSINFO:
|
|
|
|
GL(dl_sysinfo) = av->a_un.a_val;
|
|
|
|
break;
|
2004-11-06 00:24:55 +00:00
|
|
|
#endif
|
2013-03-01 22:44:44 +00:00
|
|
|
#ifdef NEED_DL_SYSINFO_DSO
|
2004-11-06 00:24:55 +00:00
|
|
|
case AT_SYSINFO_EHDR:
|
2005-05-11 17:32:13 +00:00
|
|
|
GL(dl_sysinfo_dso) = (void *) av->a_un.a_val;
|
2004-11-06 00:24:55 +00:00
|
|
|
break;
|
2003-01-30 17:31:48 +00:00
|
|
|
#endif
|
2003-05-06 06:34:21 +00:00
|
|
|
case AT_UID:
|
|
|
|
uid ^= av->a_un.a_val;
|
|
|
|
seen |= 1;
|
|
|
|
break;
|
|
|
|
case AT_EUID:
|
|
|
|
uid ^= av->a_un.a_val;
|
|
|
|
seen |= 2;
|
|
|
|
break;
|
|
|
|
case AT_GID:
|
|
|
|
gid ^= av->a_un.a_val;
|
|
|
|
seen |= 4;
|
|
|
|
break;
|
|
|
|
case AT_EGID:
|
|
|
|
gid ^= av->a_un.a_val;
|
|
|
|
seen |= 8;
|
|
|
|
break;
|
2003-06-26 19:54:29 +00:00
|
|
|
case AT_SECURE:
|
|
|
|
seen = -1;
|
|
|
|
__libc_enable_secure = av->a_un.a_val;
|
|
|
|
__libc_enable_secure_decided = 1;
|
|
|
|
break;
|
2009-01-11 04:44:06 +00:00
|
|
|
case AT_RANDOM:
|
|
|
|
_dl_random = (void *) av->a_un.a_val;
|
|
|
|
break;
|
2021-02-01 19:00:38 +00:00
|
|
|
case AT_MINSIGSTKSZ:
|
|
|
|
_dl_minsigstacksize = av->a_un.a_val;
|
|
|
|
break;
|
2007-03-13 21:25:16 +00:00
|
|
|
DL_PLATFORM_AUXV
|
2001-01-05 06:43:17 +00:00
|
|
|
}
|
2003-05-06 06:34:21 +00:00
|
|
|
if (seen == 0xf)
|
|
|
|
{
|
|
|
|
__libc_enable_secure = uid != 0 || gid != 0;
|
|
|
|
__libc_enable_secure_decided = 1;
|
|
|
|
}
|
2001-01-07 02:00:21 +00:00
|
|
|
}
|
2001-01-05 16:27:04 +00:00
|
|
|
#endif
|
2001-01-05 06:43:17 +00:00
|
|
|
|
2001-01-07 02:00:21 +00:00
|
|
|
|
2002-02-24 08:34:04 +00:00
|
|
|
void
|
|
|
|
_dl_non_dynamic_init (void)
|
2001-01-07 02:00:21 +00:00
|
|
|
{
|
2013-06-28 15:20:26 +00:00
|
|
|
_dl_main_map.l_origin = _dl_get_origin ();
|
2014-01-31 17:51:31 +00:00
|
|
|
_dl_main_map.l_phdr = GL(dl_phdr);
|
|
|
|
_dl_main_map.l_phnum = GL(dl_phnum);
|
2013-06-28 15:20:26 +00:00
|
|
|
|
2001-01-05 06:43:17 +00:00
|
|
|
_dl_verbose = *(getenv ("LD_WARN") ?: "") == '\0' ? 0 : 1;
|
1997-11-24 02:08:40 +00:00
|
|
|
|
2012-10-05 17:20:39 +00:00
|
|
|
/* Set up the data structures for the system-supplied DSO early,
|
|
|
|
so they can influence _dl_init_paths. */
|
|
|
|
setup_vdso (NULL, NULL);
|
|
|
|
|
elf: Move vDSO setup to rtld (BZ#24967)
This patch moves the vDSO setup from libc to loader code, just after
the vDSO link_map setup. For static case the initialization
is moved to _dl_non_dynamic_init instead.
Instead of using the mangled pointer, the vDSO data is set as
attribute_relro (on _rtld_global_ro for shared or _dl_vdso_* for
static). It is read-only even with partial relro.
It fixes BZ#24967 now that the vDSO pointer is setup earlier than
malloc interposition is called.
Also, vDSO calls should not be a problem for static dlopen as
indicated by BZ#20802. The vDSO pointer would be zero-initialized
and the syscall will be issued instead.
Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu,
arm-linux-gnueabihf, powerpc64le-linux-gnu, powerpc64-linux-gnu,
powerpc-linux-gnu, s390x-linux-gnu, sparc64-linux-gnu, and
sparcv9-linux-gnu. I also run some tests on mips.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2019-11-29 13:44:59 +00:00
|
|
|
/* With vDSO setup we can initialize the function pointers. */
|
|
|
|
setup_vdso_pointers ();
|
|
|
|
|
1997-07-26 02:33:30 +00:00
|
|
|
/* Initialize the data structures for the search paths for shared
|
|
|
|
objects. */
|
2020-12-04 08:13:43 +00:00
|
|
|
_dl_init_paths (getenv ("LD_LIBRARY_PATH"), "LD_LIBRARY_PATH",
|
|
|
|
/* No glibc-hwcaps selection support in statically
|
|
|
|
linked binaries. */
|
|
|
|
NULL, NULL);
|
1997-07-26 02:33:30 +00:00
|
|
|
|
2010-09-15 14:20:57 +00:00
|
|
|
/* Remember the last search directory added at startup. */
|
|
|
|
_dl_init_all_dirs = GL(dl_all_dirs);
|
|
|
|
|
1999-05-11 13:00:20 +00:00
|
|
|
_dl_lazy = *(getenv ("LD_BIND_NOW") ?: "") == '\0';
|
|
|
|
|
2000-07-21 06:43:05 +00:00
|
|
|
_dl_bind_not = *(getenv ("LD_BIND_NOT") ?: "") != '\0';
|
|
|
|
|
2000-06-08 03:03:00 +00:00
|
|
|
_dl_dynamic_weak = *(getenv ("LD_DYNAMIC_WEAK") ?: "") == '\0';
|
|
|
|
|
2004-03-06 09:07:56 +00:00
|
|
|
_dl_profile_output = getenv ("LD_PROFILE_OUTPUT");
|
|
|
|
if (_dl_profile_output == NULL || _dl_profile_output[0] == '\0')
|
|
|
|
_dl_profile_output
|
|
|
|
= &"/var/tmp\0/var/profile"[__libc_enable_secure ? 9 : 0];
|
|
|
|
|
2000-09-26 09:46:55 +00:00
|
|
|
if (__libc_enable_secure)
|
|
|
|
{
|
2004-09-26 12:12:28 +00:00
|
|
|
static const char unsecure_envvars[] =
|
|
|
|
UNSECURE_ENVVARS
|
2000-09-26 09:46:55 +00:00
|
|
|
#ifdef EXTRA_UNSECURE_ENVVARS
|
|
|
|
EXTRA_UNSECURE_ENVVARS
|
|
|
|
#endif
|
2004-09-26 12:12:28 +00:00
|
|
|
;
|
|
|
|
const char *cp = unsecure_envvars;
|
2000-09-26 09:46:55 +00:00
|
|
|
|
2004-09-26 12:12:28 +00:00
|
|
|
while (cp < unsecure_envvars + sizeof (unsecure_envvars))
|
|
|
|
{
|
|
|
|
__unsetenv (cp);
|
|
|
|
cp = (const char *) __rawmemchr (cp, '\0') + 1;
|
|
|
|
}
|
2000-09-26 09:46:55 +00:00
|
|
|
|
2016-12-31 18:02:17 +00:00
|
|
|
#if !HAVE_TUNABLES
|
2000-09-26 09:46:55 +00:00
|
|
|
if (__access ("/etc/suid-debug", F_OK) != 0)
|
2004-09-26 12:12:28 +00:00
|
|
|
__unsetenv ("MALLOC_CHECK_");
|
2016-12-31 18:02:17 +00:00
|
|
|
#endif
|
2000-09-26 09:46:55 +00:00
|
|
|
}
|
|
|
|
|
1997-07-26 02:33:30 +00:00
|
|
|
#ifdef DL_PLATFORM_INIT
|
|
|
|
DL_PLATFORM_INIT;
|
|
|
|
#endif
|
|
|
|
|
2002-12-10 10:31:03 +00:00
|
|
|
#ifdef DL_OSVERSION_INIT
|
|
|
|
DL_OSVERSION_INIT;
|
|
|
|
#endif
|
|
|
|
|
1997-07-26 02:33:30 +00:00
|
|
|
/* Now determine the length of the platform string. */
|
|
|
|
if (_dl_platform != NULL)
|
|
|
|
_dl_platformlen = strlen (_dl_platform);
|
2003-09-23 12:06:48 +00:00
|
|
|
|
|
|
|
if (_dl_phdr != NULL)
|
elf: Enable relro for static build
The code is similar to the one at elf/dl-reloc.c, where it checks for
the l_relro_size from the link_map (obtained from PT_GNU_RELRO header
from program headers) and calls_dl_protected_relro.
For testing I will use the ones proposed by Florian's patch
'elf: Add tests for working RELRO protection' [1].
Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
aarch64-linux-gnu, s390x-linux-gnu, and sparc64-linux-gnu. I also
check with --enable-static pie on x86_64-linux-gnu, i686-linux-gnu,
and aarch64-linux-gnu which seems the only architectures where
static PIE is actually working (as per 9d7a3741c9e, on
arm-linux-gnueabihf, powerpc64{le}-linux-gnu, and s390x-linux-gnu
I am seeing runtime issues not related to my patch).
[1] https://sourceware.org/ml/libc-alpha/2019-10/msg00059.html
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2019-11-29 13:26:30 +00:00
|
|
|
for (const ElfW(Phdr) *ph = _dl_phdr; ph < &_dl_phdr[_dl_phnum]; ++ph)
|
|
|
|
switch (ph->p_type)
|
2003-09-23 12:06:48 +00:00
|
|
|
{
|
elf: Enable relro for static build
The code is similar to the one at elf/dl-reloc.c, where it checks for
the l_relro_size from the link_map (obtained from PT_GNU_RELRO header
from program headers) and calls_dl_protected_relro.
For testing I will use the ones proposed by Florian's patch
'elf: Add tests for working RELRO protection' [1].
Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
aarch64-linux-gnu, s390x-linux-gnu, and sparc64-linux-gnu. I also
check with --enable-static pie on x86_64-linux-gnu, i686-linux-gnu,
and aarch64-linux-gnu which seems the only architectures where
static PIE is actually working (as per 9d7a3741c9e, on
arm-linux-gnueabihf, powerpc64{le}-linux-gnu, and s390x-linux-gnu
I am seeing runtime issues not related to my patch).
[1] https://sourceware.org/ml/libc-alpha/2019-10/msg00059.html
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2019-11-29 13:26:30 +00:00
|
|
|
/* Check if the stack is nonexecutable. */
|
|
|
|
case PT_GNU_STACK:
|
|
|
|
_dl_stack_flags = ph->p_flags;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PT_GNU_RELRO:
|
|
|
|
_dl_main_map.l_relro_addr = ph->p_vaddr;
|
|
|
|
_dl_main_map.l_relro_size = ph->p_memsz;
|
2003-09-23 12:06:48 +00:00
|
|
|
break;
|
|
|
|
}
|
elf: Enable relro for static build
The code is similar to the one at elf/dl-reloc.c, where it checks for
the l_relro_size from the link_map (obtained from PT_GNU_RELRO header
from program headers) and calls_dl_protected_relro.
For testing I will use the ones proposed by Florian's patch
'elf: Add tests for working RELRO protection' [1].
Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
aarch64-linux-gnu, s390x-linux-gnu, and sparc64-linux-gnu. I also
check with --enable-static pie on x86_64-linux-gnu, i686-linux-gnu,
and aarch64-linux-gnu which seems the only architectures where
static PIE is actually working (as per 9d7a3741c9e, on
arm-linux-gnueabihf, powerpc64{le}-linux-gnu, and s390x-linux-gnu
I am seeing runtime issues not related to my patch).
[1] https://sourceware.org/ml/libc-alpha/2019-10/msg00059.html
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2019-11-29 13:26:30 +00:00
|
|
|
|
|
|
|
/* Setup relro on the binary itself. */
|
|
|
|
if (_dl_main_map.l_relro_size != 0)
|
|
|
|
_dl_protect_relro (&_dl_main_map);
|
Update.
1997-06-03 23:42 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-support.c: Define and initialize _dl_verbose used in
dl-machine.h.
* io/ftw.c: Expand stat/lstat calls.
* manual/intro.texi: Also refer to ISO 9945.
Update info about SVID.
Add description for XPG.
* md5-crypt/md5-crypt.c: Namespace cleanups.
* md5-crypt/md5.c: Likewise.
* md5-crypt/md5.h: Likewise.
* sysdeps/generic/crypt-entry.c: Likewise.
* posix/unistd.h (_POSIX2_C_VERSION): Set to 199209L.
* stdlib/fmtmsg.h: Declare addseverity only if __USE_SVID is
defined.
* sunrpc/rpc_scan.c (findkind): Declare `token' as const.
* sunrpc/rpc_util.c (toktostr): Declare `token' as const.
* time/Makefile: Make tzselect dependen of config.make.
1997-06-01 15:01 Miles Bader <miles@gnu.ai.mit.edu>
* manual/string.texi (String and Array Utilities): Add `Argz and
Envz Vectors' to the menu.
(Argz and Envz Vectors, Argz Functions, Envz Functions): New nodes.
1997-05-31 20:59 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* login/Makefile (utmpd-routines): Add utmpd.
(extra-objs): Add utmpd objects to get dependencies.
(distribute): Add sources for utmpd.
(subdir-dirs): Define.
1997-06-02 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/wordsize-32/inttypes.h: Include features.h and use
__CONCAT instead of defined __CONCAT__ ourself.
* sysdeps/wordsize-64/inttypes.h: Likewise.
1997-06-01 19:11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/wordsize-64/inttypes.h (INTMAX_C): Use `l' suffix, not
`ll'.
(PRIdFAST, PRIoFAST, PRIxFAST, PRIuFAST, SCNdFAST, SCNiFAST,
SCNoFAST, SCNxFAST): Correct format specifiers.
1997-06-02 04:23 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/syscalls.list: Make fchdir weak alias for __fchdir.
1997-06-01 19:17 Ulrich Drepper <drepper@cygnus.com>
* md5-crypt/Makefile: Correct libmd5crypt file to really generate
DES free libcrypt.
* md5-crypt/onlymd5-entry.c: New file. Wrapper around
sysdeps/generic/crypt-entry.c.
1997-06-01 12:48 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/alpha/gnu/types.h (__fd_mask): Change
type to `unsigned long int'.
Patch by Richard Henderson <richard@twiddle.rth.home>.
1997-05-30 17:34 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/generic/bb_init_func.c (__bb_init_func): Use ISO C
declaration style.
* nss/nss_files/files-hosts.c: Delete inclusion of
"../resolv/mapv4v6hostent.h".
1997-06-03 21:53:09 +00:00
|
|
|
}
|
2002-02-24 08:34:04 +00:00
|
|
|
|
2002-12-19 00:03:48 +00:00
|
|
|
#ifdef DL_SYSINFO_IMPLEMENTATION
|
|
|
|
DL_SYSINFO_IMPLEMENTATION
|
|
|
|
#endif
|
Add --enable-static-pie configure option to build static PIE [BZ #19574]
Static PIE extends address space layout randomization to static
executables. It provides additional security hardening benefits at
the cost of some memory and performance.
Dynamic linker, ld.so, is a standalone program which can be loaded at
any address. This patch adds a configure option, --enable-static-pie,
to embed the part of ld.so in static executable to create static position
independent executable (static PIE). A static PIE is similar to static
executable, but can be loaded at any address without help from a dynamic
linker. When --enable-static-pie is used to configure glibc, libc.a is
built as PIE and all static executables, including tests, are built as
static PIE. The resulting libc.a can be used together with GCC 8 or
above to build static PIE with the compiler option, -static-pie. But
GCC 8 isn't required to build glibc with --enable-static-pie. Only GCC
with PIE support is needed. When an older GCC is used to build glibc
with --enable-static-pie, proper input files are passed to linker to
create static executables as static PIE, together with "-z text" to
prevent dynamic relocations in read-only segments, which are not allowed
in static PIE.
The following changes are made for static PIE:
1. Add a new function, _dl_relocate_static_pie, to:
a. Get the run-time load address.
b. Read the dynamic section.
c. Perform dynamic relocations.
Dynamic linker also performs these steps. But static PIE doesn't load
any shared objects.
2. Call _dl_relocate_static_pie at entrance of LIBC_START_MAIN in
libc.a. crt1.o, which is used to create dynamic and non-PIE static
executables, is updated to include a dummy _dl_relocate_static_pie.
rcrt1.o is added to create static PIE, which will link in the real
_dl_relocate_static_pie. grcrt1.o is also added to create static PIE
with -pg. GCC 8 has been updated to support rcrt1.o and grcrt1.o for
static PIE.
Static PIE can work on all architectures which support PIE, provided:
1. Target must support accessing of local functions without dynamic
relocations, which is needed in start.S to call __libc_start_main with
function addresses of __libc_csu_init, __libc_csu_fini and main. All
functions in static PIE are local functions. If PIE start.S can't reach
main () defined in a shared object, the code sequence:
pass address of local_main to __libc_start_main
...
local_main:
tail call to main via PLT
can be used.
2. start.S is updated to check PIC instead SHARED for PIC code path and
avoid dynamic relocation, when PIC is defined and SHARED isn't defined,
to support static PIE.
3. All assembly codes are updated check PIC instead SHARED for PIC code
path to avoid dynamic relocations in read-only sections.
4. All assembly codes are updated check SHARED instead PIC for static
symbol name.
5. elf_machine_load_address in dl-machine.h are updated to support static
PIE.
6. __brk works without TLS nor dynamic relocations in read-only section
so that it can be used by __libc_setup_tls to initializes TLS in static
PIE.
NB: When glibc is built with GCC defaulted to PIE, libc.a is compiled
with -fPIE, regardless if --enable-static-pie is used to configure glibc.
When glibc is configured with --enable-static-pie, libc.a is compiled
with -fPIE, regardless whether GCC defaults to PIE or not. The same
libc.a can be used to build both static executable and static PIE.
There is no need for separate PIE copy of libc.a.
On x86-64, the normal static sln:
text data bss dec hex filename
625425 8284 5456 639165 9c0bd elf/sln
the static PIE sln:
text data bss dec hex filename
657626 20636 5392 683654 a6e86 elf/sln
The code size is increased by 5% and the binary size is increased by 7%.
Linker requirements to build glibc with --enable-static-pie:
1. Linker supports --no-dynamic-linker to remove PT_INTERP segment from
static PIE.
2. Linker can create working static PIE. The x86-64 linker needs the
fix for
https://sourceware.org/bugzilla/show_bug.cgi?id=21782
The i386 linker needs to be able to convert "movl main@GOT(%ebx), %eax"
to "leal main@GOTOFF(%ebx), %eax" if main is defined locally.
Binutils 2.29 or above are OK for i686 and x86-64. But linker status for
other targets need to be verified.
3. Linker should resolve undefined weak symbols to 0 in static PIE:
https://sourceware.org/bugzilla/show_bug.cgi?id=22269
4. Many ELF backend linkers incorrectly check bfd_link_pic for TLS
relocations, which should check bfd_link_executable instead:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Tested on aarch64, i686 and x86-64.
Using GCC 7 and binutils master branch, build-many-glibcs.py with
--enable-static-pie with all patches for static PIE applied have the
following build successes:
PASS: glibcs-aarch64_be-linux-gnu build
PASS: glibcs-aarch64-linux-gnu build
PASS: glibcs-armeb-linux-gnueabi-be8 build
PASS: glibcs-armeb-linux-gnueabi build
PASS: glibcs-armeb-linux-gnueabihf-be8 build
PASS: glibcs-armeb-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabi build
PASS: glibcs-arm-linux-gnueabihf build
PASS: glibcs-arm-linux-gnueabihf-v7a build
PASS: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch build
PASS: glibcs-m68k-linux-gnu build
PASS: glibcs-microblazeel-linux-gnu build
PASS: glibcs-microblaze-linux-gnu build
PASS: glibcs-mips64el-linux-gnu-n32 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n32-soft build
PASS: glibcs-mips64el-linux-gnu-n64 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64el-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64el-linux-gnu-n64-soft build
PASS: glibcs-mips64-linux-gnu-n32 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008 build
PASS: glibcs-mips64-linux-gnu-n32-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n32-soft build
PASS: glibcs-mips64-linux-gnu-n64 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008 build
PASS: glibcs-mips64-linux-gnu-n64-nan2008-soft build
PASS: glibcs-mips64-linux-gnu-n64-soft build
PASS: glibcs-mipsel-linux-gnu build
PASS: glibcs-mipsel-linux-gnu-nan2008 build
PASS: glibcs-mipsel-linux-gnu-nan2008-soft build
PASS: glibcs-mipsel-linux-gnu-soft build
PASS: glibcs-mips-linux-gnu build
PASS: glibcs-mips-linux-gnu-nan2008 build
PASS: glibcs-mips-linux-gnu-nan2008-soft build
PASS: glibcs-mips-linux-gnu-soft build
PASS: glibcs-nios2-linux-gnu build
PASS: glibcs-powerpc64le-linux-gnu build
PASS: glibcs-powerpc64-linux-gnu build
PASS: glibcs-tilegxbe-linux-gnu-32 build
PASS: glibcs-tilegxbe-linux-gnu build
PASS: glibcs-tilegx-linux-gnu-32 build
PASS: glibcs-tilegx-linux-gnu build
PASS: glibcs-tilepro-linux-gnu build
and the following build failures:
FAIL: glibcs-alpha-linux-gnu build
elf/sln is failed to link due to:
assertion fail bfd/elf64-alpha.c:4125
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-hppa-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
https://sourceware.org/bugzilla/show_bug.cgi?id=22537
FAIL: glibcs-ia64-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
FAIL: glibcs-powerpc-linux-gnu build
FAIL: glibcs-powerpc-linux-gnu-soft build
FAIL: glibcs-powerpc-linux-gnuspe build
FAIL: glibcs-powerpc-linux-gnuspe-e500v1 build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22264
FAIL: glibcs-powerpc-linux-gnu-power4 build
elf/sln is failed to link due to:
findlocale.c:96:(.text+0x22c): @local call to ifunc memchr
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-s390-linux-gnu build
elf/sln is failed to link due to:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped
assertion fail bfd/elflink.c:14299
This is caused by linker bug and/or non-PIC code in PIE libc.a.
FAIL: glibcs-sh3eb-linux-gnu build
FAIL: glibcs-sh3-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu build
FAIL: glibcs-sh4eb-linux-gnu-soft build
FAIL: glibcs-sh4-linux-gnu build
FAIL: glibcs-sh4-linux-gnu-soft build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
Also TLS code sequence in SH assembly syscalls in glibc doesn't match TLS
code sequence expected by ld:
https://sourceware.org/bugzilla/show_bug.cgi?id=22270
FAIL: glibcs-sparc64-linux-gnu build
FAIL: glibcs-sparcv9-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu build
FAIL: glibcs-tilegxbe-linux-gnu-32 build
FAIL: glibcs-tilegx-linux-gnu build
FAIL: glibcs-tilegx-linux-gnu-32 build
FAIL: glibcs-tilepro-linux-gnu build
elf/sln is failed to link due to:
ld: read-only segment has dynamic relocations.
This is caused by linker bug and/or non-PIC code in PIE libc.a. See:
https://sourceware.org/bugzilla/show_bug.cgi?id=22263
[BZ #19574]
* INSTALL: Regenerated.
* Makeconfig (real-static-start-installed-name): New.
(pic-default): Updated for --enable-static-pie.
(pie-default): New for --enable-static-pie.
(default-pie-ldflag): Likewise.
(+link-static-before-libc): Replace $(DEFAULT-LDFLAGS-$(@F))
with $(if $($(@F)-no-pie),$(no-pie-ldflag),$(default-pie-ldflag)).
Replace $(static-start-installed-name) with
$(real-static-start-installed-name).
(+prectorT): Updated for --enable-static-pie.
(+postctorT): Likewise.
(CFLAGS-.o): Add $(pie-default).
(CFLAGS-.op): Likewise.
* NEWS: Mention --enable-static-pie.
* config.h.in (ENABLE_STATIC_PIE): New.
* configure.ac (--enable-static-pie): New configure option.
(have-no-dynamic-linker): New LIBC_CONFIG_VAR.
(have-static-pie): Likewise.
Enable static PIE if linker supports --no-dynamic-linker.
(ENABLE_STATIC_PIE): New AC_DEFINE.
(enable-static-pie): New LIBC_CONFIG_VAR.
* configure: Regenerated.
* csu/Makefile (omit-deps): Add r$(start-installed-name) and
gr$(start-installed-name) for --enable-static-pie.
(extra-objs): Likewise.
(install-lib): Likewise.
(extra-objs): Add static-reloc.o and static-reloc.os
($(objpfx)$(start-installed-name)): Also depend on
$(objpfx)static-reloc.o.
($(objpfx)r$(start-installed-name)): New.
($(objpfx)g$(start-installed-name)): Also depend on
$(objpfx)static-reloc.os.
($(objpfx)gr$(start-installed-name)): New.
* csu/libc-start.c (LIBC_START_MAIN): Call _dl_relocate_static_pie
in libc.a.
* csu/libc-tls.c (__libc_setup_tls): Add main_map->l_addr to
initimage.
* csu/static-reloc.c: New file.
* elf/Makefile (routines): Add dl-reloc-static-pie.
(elide-routines.os): Likewise.
(DEFAULT-LDFLAGS-tst-tls1-static-non-pie): Removed.
(tst-tls1-static-non-pie-no-pie): New.
* elf/dl-reloc-static-pie.c: New file.
* elf/dl-support.c (_dl_get_dl_main_map): New function.
* elf/dynamic-link.h (ELF_DURING_STARTUP): Also check
STATIC_PIE_BOOTSTRAP.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise.
* gmon/Makefile (tests): Add tst-gmon-static-pie.
(tests-static): Likewise.
(DEFAULT-LDFLAGS-tst-gmon-static): Removed.
(tst-gmon-static-no-pie): New.
(CFLAGS-tst-gmon-static-pie.c): Likewise.
(CRT-tst-gmon-static-pie): Likewise.
(tst-gmon-static-pie-ENV): Likewise.
(tests-special): Likewise.
($(objpfx)tst-gmon-static-pie.out): Likewise.
(clean-tst-gmon-static-pie-data): Likewise.
($(objpfx)tst-gmon-static-pie-gprof.out): Likewise.
* gmon/tst-gmon-static-pie.c: New file.
* manual/install.texi: Document --enable-static-pie.
* sysdeps/generic/ldsodefs.h (_dl_relocate_static_pie): New.
(_dl_get_dl_main_map): Likewise.
* sysdeps/i386/configure.ac: Check if linker supports static PIE.
* sysdeps/x86_64/configure.ac: Likewise.
* sysdeps/i386/configure: Regenerated.
* sysdeps/x86_64/configure: Likewise.
* sysdeps/mips/Makefile (ASFLAGS-.o): Add $(pie-default).
(ASFLAGS-.op): Likewise.
2017-12-16 00:59:33 +00:00
|
|
|
|
|
|
|
#if ENABLE_STATIC_PIE
|
|
|
|
/* Since relocation to hidden _dl_main_map causes relocation overflow on
|
|
|
|
aarch64, a function is used to get the address of _dl_main_map. */
|
|
|
|
|
|
|
|
struct link_map *
|
|
|
|
_dl_get_dl_main_map (void)
|
|
|
|
{
|
|
|
|
return &_dl_main_map;
|
|
|
|
}
|
|
|
|
#endif
|
2021-07-22 21:02:42 +00:00
|
|
|
|
|
|
|
/* This is used by _dl_runtime_profile, not used on static code. */
|
|
|
|
void
|
|
|
|
DL_ARCH_FIXUP_ATTRIBUTE
|
|
|
|
_dl_audit_pltexit (struct link_map *l, ElfW(Word) reloc_arg,
|
|
|
|
const void *inregs, void *outregs)
|
|
|
|
{
|
|
|
|
}
|