2004-01-13 Ulrich Drepper <drepper@redhat.com>
* Makeconfig: Define relro-LDFLAGS if have-z-relro==yes. Add it to
LDFLAGS.so and LDFLAGS-rtld.
(+link): Add relro-LDFLAGS.
* Makeconfig (shlib.lds): Place __libc_subfreeres, __libc_atexit, and
__libc_thread_subfreeres sections after .jcr section.
* config.make.in: Add have-z-relro.
* configure.in: Add check for -z relro option.
* include/link.h (struct link_map): Add relro_addr and relro_size
members.
* elf/dl-load.c (_dl_map_object_from_fd): Recognize PT_GNU_RELRO.
* elf/dl-reloc.c (_dl_relocate_object): At the end, make relro
part of loaded segments read-only.
* elf/elf.h: Define PT_GNU_RELRO.
* elf/rtld.c (_dl_start): Recognize PT_GNU_RELRO of ld.so.
(dl_main): Recognize PT_GNU_RELRO of the application. Call
_dl_debug_initialize and initialize l_info[DT_DEBUG] before
relocations.
Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED].
(elf_machine_rela): Clean up.
* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Clean up.
PowerPC TLS support contributed by Paul Mackerras <paulus@samba.org>.
* sysdeps/powerpc/powerpc32/elf/configure.in: New file.
* sysdeps/powerpc/powerpc32/elf/configure: New generated file.
* elf/tls-macros.h [__powerpc__ && !__powerpc64__]
(TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define them.
* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Support
new relocs for TLS.
* sysdeps/powerpc/dl-tls.h (TLS_TP_OFFSET, TLS_DTV_OFFSET): Move these
macros out of [SHARED].
(TLS_TPREL_VALUE, TLS_DTPREL_VALUE): New macros.
* elf/elf.h: Define R_PPC_* relocs for TLS support.
Clean up R_PPC64_* macro definition comments.
2002-10-02 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/sh/pt-machine.h: Make C code ifndef'ed with __ASSEMBLER__.
* sysdeps/sh/tls.h: Likewise.
* sysdeps/unix/sysv/linux/sh/smp.h: New file.
unconditionally. Set dli_fname to _dl_argv[0] only for main program.
2002-09-27 Roland McGrath <roland@redhat.com>
* elf/dl-addr.c (_dl_addr): Add a cast.
* sysdeps/x86_64/dl-machine.h (elf_machine_rela) [USE_TLS]: Handle new
TLS relocs R_X86_64_DTPMOD64, R_X86_64_DTPOFF64, and R_X86_64_TPOFF64.
* elf/elf.h (R_X86_64_DTPMOD64, R_X86_64_DTPOFF64, R_X86_64_TPOFF64,
R_X86_64_TLSGD, R_X86_64_TLSLD, R_X86_64_DTPOFF32,
R_x86_64_GOTTPOFF, R_X86_64_TPOFF32): New macros.
(R_X86_64_NUM): Update the value.
2002-09-09 Steven Munroe <sjmunroe@us.ibm.com>
* elf/elf.h: Add powerpc64 specific elf relocation and dynamic types.
2002-09-09 Jakub Jelinek <jakub@redhat.com>
* elf/dl-error.c (_dl_signal_cerror): Don't print anything if only
LD_DEBUG=statistics or LD_TRACE_PRELINKING.
2002-04-08 kaz Kojima <kkojima@rr.iij4u.or.jp>
* elf/elf.h: Define R_SH_TLS_xxx macros.
* elf/rtld.c: Remove an extra parenthesis.
* elf/tls-macros.h: Define SH version TLS_LE, TLS_IE, TLS_LD and
TLS_GD macros.
* sysdeps/generic/dl-tls.c: Add a missing semi-colon.
* sysdeps/sh/dl-lookupcfg.h: New file.
* sysdeps/sh/dl-tls.h: New file.
* sysdeps/sh/dl-machine.h (elf_machine_type_class): Set
ELF_RTYPE_CLASS_PLT also for the three TLS relocations.
(elf_machine_rela): Handle R_SH_TLS_DTPMOD32, R_SH_TLS_DTPOFF32 and
R_SH_TLS_TPOFF32 relocations.
2001-12-11 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile (dl-routines): Add conflict.
(rtld-ldscript-in, rtld-ldscript, rtld-parms): Remove.
(ld.so): Add _begin local symbol.
* elf/elf.h (DT_VALTAGIDX, DT_VALNUM, DT_ADDRTAGIDX, DT_ADDRNUM):
Define.
* elf/dl-deps.c (_dl_build_local_scope): New.
(_dl_map_object_deps): If LD_TRACE_PRELINKING, compute local scopes
of all libraries.
* elf/do-rel.h (VALIDX): Define.
(elf_dynamic_do_rel): If ELF_MACHINE_PLT_REL is defined, don't do
lazy binding for RELA. If DT_GNU_PRELINKED, DT_RELACOUNT relocations
can be skipped.
* elf/dl-conflict.c: New file.
* elf/dl-lookup.c (_dl_debug_bindings): New.
(_dl_lookup_symbol): Use _dl_debug_bindings. Reference_name is always
non-NULL.
(_dl_lookup_symbol_skip): Likewise.
(_dl_lookup_versioned_symbol): Likewise.
(_dl_lookup_versioned_symbol_skip): Likewise.
* elf/dl-runtime.c (PLTREL): If ELF_MACHINE_PLT_REL is defined,
define to ElfW(Rel).
* elf/dynamic-link.h (elf_get_dynamic_info): Record selected dynamic
tags in the DT_VALRNGLO..DT_VALRNGHI and DT_ADDRRNGLO..DT_ADDRRNGHI
ranges.
Don't adjust address dynamic tags if l_addr is 0.
* elf/rtld.c (_dl_trace_prelink, _dl_trace_prelink_map): New variables.
(_dl_start): Skip ELF_DYNAMIC_RELOCATE if ld.so is prelinked.
(VALIDX, ADDRIDX): Define.
(_dl_start_final): Initialize _dl_rtld_map's l_map_start and l_map_end.
(dl_main): Print library list for LD_TRACE_PRELINKING.
If prelinking information can be used, skip relocating libraries and
call _dl_resolve_conflicts instead.
(process_envvars): Handle LD_TRACE_PRELINKING envvar.
* elf/dl-load.c (_dl_map_object): Don't create fake libs
if LD_TRACE_PRELINKING.
* include/link.h (struct link_map) [l_info]: Add DT_VALNUM
+ DT_ADDRNUM.
* sysdeps/generic/ldsodefs.h (_dl_trace_prelink_map): New declaration.
(DL_DEBUG_PRELINK): Define.
(_dl_resolve_conflicts): Add prototype.
* sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Reinitialize
.plt for prelinked libraries where prelinking info cannot be used.
(elf_machine_rela): If relocating R_ALPHA_JMP_SLOT in .gnu.conflict
section, use RESOLVE_CONFLICT_FIND_MAP to find out reloc's link_map.
* sysdeps/arm/bits/link.h: New file.
* sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(ELF_MACHINE_NO_RELA): Only define if RTLD_BOOTSTRAP.
(ELF_MACHINE_PLT_REL): Define.
(elf_machine_rela, elf_machine_rela_relative): New.
(elf_machine_lazy_rel): Reinitialize R_ARM_JUMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/i386/bits/link.h: New file.
* sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(ELF_MACHINE_NO_RELA): Only define if RTLD_BOOTSTRAP.
(ELF_MACHINE_PLT_REL): Define.
(elf_machine_rela, elf_machine_rela_relative): New.
(elf_machine_lazy_rel): Reinitialize R_386_JUMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/powerpc/dl-machine.h (elf_machine_rela): If relocating
conflicts, skip finaladdr computation. Use RESOLVE_CONFLICT_FIND_MAP
to find out map for R_PPC_JMP_SLOT relocs.
* sysdeps/sparc/sparc32/dl-machine.h (VALIDX): Define.
(OPCODE_BA): Define.
(elf_machine_runtime_setup): Reinitialize .plt for prelinked
libraries where prelinking info cannot be used.
(sparc_fixup_plt): Renamed from elf_machine_fixup_plt.
(elf_machine_fixup_plt): Call sparc_fixup_plt.
(elf_machine_rela): Set value to 0 if relocating conflicts.
Call sparc_fixup_plt for R_SPARC_JMP_SLOT.
* sysdeps/sparc/sparc64/dl-machine.h (VALIDX): Define.
(sparc64_fixup_plt): Fix a typo.
(elf_machine_rela): Set value to 0 if relocating conflicts.
Handle R_SPARC_JMP_SLOT relocs when relocating conflicts.
(elf_machine_runtime_setup): Reinitialize .plt for prelinked
libraries where prelinking info cannot be used.
* sysdeps/sh/bits/link.h: New file.
* sysdeps/sh/dl-machine.h (elf_machine_runtime_setup): Save original
content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_SH_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/s390/s390-32/bits/link.h: New file.
* sysdeps/s390/s390-32/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_390_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/s390/s390-64/bits/link.h: New file.
* sysdeps/s390/s390-64/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_390_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* sysdeps/x86_64/bits/link.h: New file.
* sysdeps/x86_64/dl-machine.h (elf_machine_runtime_setup):
Save original content of .got[1].
(elf_machine_lazy_rel): Reinitialize R_X86_64_JMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
* elf/elf.h: Add dynamic tag definitions for prelinking.
* elf/rtld.c (process_envvars): Avoid using array of string pointers.
Rewrite code to remove environment varables for SUID binaries.
Small optimization in LD_PROFILE handling.
* sysdeps/generic/unsecvars.h: Adjust format for process_envvars
changes.
* sysdeps/unix/sysv/linux/i386/dl-librecon.h: Likewise.
* sysdeps/generic/dl-sysdep.c: Don't initialize _dl_cpuclock_offset.
2001-10-10 Ulrich Drepper <drepper@redhat.com>
* elf/elf.h: Add more ELFOSABI_* constants.
(sparc64_fixup_plt): Moved from elf_machine_fixup_plt. Optimize
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
2001-04-10 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* elf/elf.h (AT_DCACHEBSIZE, AT_ICACHEBSIZE, AT_UCACHEBSIZE,
AT_IGNOREPPC): New defines.
* sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Print them.
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_STD_AUXV):
Define for newer powerpc kernels.
* sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Use the standard
DL_FIND_ARG_COMPONENTS if __ASSUME_STD_AUXV is defined.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* sysdeps/unix/sysv/linux/cris/Dist: New file.
* sysdeps/unix/sysv/linux/cris/Makefile: New file.
* sysdeps/unix/sysv/linux/cris/_G_config.h: New file.
* sysdeps/unix/sysv/linux/cris/bits/fcntl.h: New file.
* sysdeps/unix/sysv/linux/cris/bits/mman.h: New file.
* sysdeps/unix/sysv/linux/cris/bits/resource.h: New file.
* sysdeps/unix/sysv/linux/cris/brk.c: New file.
* sysdeps/unix/sysv/linux/cris/chown.c: New file.
* sysdeps/unix/sysv/linux/cris/clone.S: New file.
* sysdeps/unix/sysv/linux/cris/fchown.c: New file.
* sysdeps/unix/sysv/linux/cris/fcntl.c: New file.
* sysdeps/unix/sysv/linux/cris/fxstat.c: New file.
* sysdeps/unix/sysv/linux/cris/getegid.c: New file.
* sysdeps/unix/sysv/linux/cris/geteuid.c: New file.
* sysdeps/unix/sysv/linux/cris/getgid.c: New file.
* sysdeps/unix/sysv/linux/cris/getgroups.c: New file.
* sysdeps/unix/sysv/linux/cris/getresgid.c: New file.
* sysdeps/unix/sysv/linux/cris/getresuid.c: New file.
* sysdeps/unix/sysv/linux/cris/getrlimit.c: New file.
* sysdeps/unix/sysv/linux/cris/getrlimit64.c: New file.
* sysdeps/unix/sysv/linux/cris/getuid.c: New file.
* sysdeps/unix/sysv/linux/cris/lchown.c: New file.
* sysdeps/unix/sysv/linux/cris/lockf64.c: New file.
* sysdeps/unix/sysv/linux/cris/lxstat.c: New file.
* sysdeps/unix/sysv/linux/cris/mmap.S: New file.
* sysdeps/unix/sysv/linux/cris/mmap64.S: New file.
* sysdeps/unix/sysv/linux/cris/msgctl.c: New file.
* sysdeps/unix/sysv/linux/cris/profil-counter.h: New file.
* sysdeps/unix/sysv/linux/cris/register-dump.h: New file.
* sysdeps/unix/sysv/linux/cris/semctl.c: New file.
* sysdeps/unix/sysv/linux/cris/setegid.c: New file.
* sysdeps/unix/sysv/linux/cris/seteuid.c: New file.
* sysdeps/unix/sysv/linux/cris/setfsgid.c: New file.
* sysdeps/unix/sysv/linux/cris/setfsuid.c: New file.
* sysdeps/unix/sysv/linux/cris/setgid.c: New file.
* sysdeps/unix/sysv/linux/cris/setgroups.c: New file.
* sysdeps/unix/sysv/linux/cris/setregid.c: New file.
* sysdeps/unix/sysv/linux/cris/setresgid.c: New file.
* sysdeps/unix/sysv/linux/cris/setresuid.c: New file.
* sysdeps/unix/sysv/linux/cris/setreuid.c: New file.
* sysdeps/unix/sysv/linux/cris/setrlimit.c: New file.
* sysdeps/unix/sysv/linux/cris/setuid.c: New file.
* sysdeps/unix/sysv/linux/cris/shmctl.c: New file.
* sysdeps/unix/sysv/linux/cris/socket.S: New file.
* sysdeps/unix/sysv/linux/cris/sys/ucontext.h: New file.
* sysdeps/unix/sysv/linux/cris/syscall.S: New file.
* sysdeps/unix/sysv/linux/cris/sysdep.S: New file.
* sysdeps/unix/sysv/linux/cris/sysdep.h: New file.
* sysdeps/unix/sysv/linux/cris/vfork.S: New file.
* sysdeps/unix/sysv/linux/cris/xstat.c: New file.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* sysdeps/cris/Dist: New file.
* sysdeps/cris/Implies: New file.
* sysdeps/cris/Makefile: New file.
* sysdeps/cris/__longjmp.S: New file.
* sysdeps/cris/_mcount.S: New file.
* sysdeps/cris/bits/endian.h: New file.
* sysdeps/cris/bits/setjmp.h: New file.
* sysdeps/cris/bits/string.h: New file.
* sysdeps/cris/dl-machine.h: New file.
* sysdeps/cris/elf/start.S: New file.
* sysdeps/cris/machine-gmon.h: New file.
* sysdeps/cris/memcopy.h: New file.
* sysdeps/cris/memusage.h: New file.
* sysdeps/cris/setjmp.S: New file.
* sysdeps/cris/sysdep.h: New file.
* sysdeps/cris/wordcopy.c: New file.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* elf/elf.h: Add new relocations for CRIS.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* shlib-versions: Add cases for Linux on CRIS.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* configure.in (ASM_LINE_SEP tests): Handle CRIS assembly, with
';' for comments and '@' for line separator.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* sysdeps/unix/sysv/linux/hppa/sysdep.h (INLINE_SYSCALL): Fix
typo; s/==/=/ for assignment.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* malloc/Makefile: Correct comment; mtrace is Perl, not AWK.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* iconv/gconv_simple.c (internal_ucs4_loop_unaligned): Check for
empty input before checking full output.
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
* iconv/gconv.c (__gconv): Don't derefer parameter cd before
checking if == -1L.
2001-04-08 Ulrich Drepper <drepper@redhat.com>
* inet/rexec.c (rexec_af): Avoid calling perror with errno being set.
2001-04-05 David S. Miller <davem@redhat.com>
* elf/elf.h (HWCAP_SPARC_ULTRA3): Define it.
* sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h: Add it to
capability flags table and HWCAP_IMPORTANT, increase
_DL_HWCAP_COUNT to 6.
* sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h: Likewise.
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
* shlib-versions: Add rule for Linux on 64 bit S/390.
* sysdeps/s390/s390-64/pt-machine.h: New file.
* sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c: New file.
2001-03-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
* sysdeps/s390/pt-machine.h: Move to...
* sysdeps/s390/s390-32/pt-machine.h: ...here.
Add defines for FLOATING_STACK and ARCH_STACK_MAX_SIZE.
2001-03-09 Andreas Jaeger <aj@suse.de>
* sysdeps/s390/dl-machine.h (elf_machine_matches_host): Handle
both new and old EM_S390 values.
(EM_S390_OLD): New constant.
* elf/elf.h (EM_S390): Use official value.
2001-02-27 Philip Blundell <pb@futuretv.com>
* elf/elf.h: Add new ARM definitions from latest (B-01)
specification. Correct naming of EF_ARM_ALIGN8 et al.
2001-03-04 Ulrich Drepper <drepper@redhat.com>
* stdio-common/tst-printf.sh: Remove bashisms.
Patch by Matthew Clarke <Matthew_Clarke@mindlink.bc.ca>.
* shlib-versions: Add entry for libanl.