changed from [USE_TLS && HAVE___THREAD].
* sysdeps/i386/dl-machine.h (elf_machine_type_class, elf_machine_rel):
Disable TLS relocs if [RTLD_BOOTSTRAP && !USE___THREAD].
* sysdeps/x86_64/dl-machine.h
(elf_machine_type_class, elf_machine_rela): Likewise.
* sysdeps/sh/dl-machine.h (elf_machine_type_class, elf_machine_rela):
Likewise.
* include/link.h (struct link_map): Remove member l_tls_tp_initialized.
* elf/rtld.c (_dl_start_final, dl_main): Don't use it.
(_dl_start): Conditionalize PT_TLS check on [USE___THREAD].
* sysdeps/i386/dl-tls.h (__TLS_GET_ADDR): Use ___tls_get_addr_internal
instead of ___tls_get_addr.
(___tls_get_addr_internal): Add attribute_hidden to decl.
* sysdeps/generic/ldsodefs.h (struct rtld_global): New variable
_dl_error_catch_tsd.
* elf/rtld.c (startup_error_tsd): New function.
(dl_main): Point _dl_error_catch_tsd at that.
* elf/dl-error.c: Don't use libc-tsd.h for DL_ERROR,
use new function pointer instead.
* elf/dl-tsd.c: New file.
* elf/Makefile (routines): Add it.
2002-10-07 Roland McGrath <roland@redhat.com>
* elf/dl-misc.c (_dl_debug_vdprintf): Use INTERNAL_SYSCALL macro for
writev if it's available. Otherwise if [RTLD_PRIVATE_ERRNO] then
take _dl_load_lock around calling __writev.
* sysdeps/unix/sysv/linux/i386/sysdep.h (INTERNAL_SYSCALL): New macro.
(INLINE_SYSCALL): Use that.
* sysdeps/generic/dl-sysdep.h: New file.
* sysdeps/mach/hurd/dl-sysdep.h: New file.
* sysdeps/generic/ldsodefs.h: Include <dl-sysdep.h>.
* include/errno.h [IS_IN_rtld]: Include <dl-sysdep.h> to define ...
[RTLD_PRIVATE_ERRNO]: Use a hidden global variable for errno and
access it directly.
* elf/dl-minimal.c (__errno_location): Removed.
* sysdeps/unix/i386/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]:
Use GOTOFF access for errno.
* sysdeps/unix/sysv/linux/i386/sysdep.h
[RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise.
* sysdeps/unix/x86_64/sysdep.S (__syscall_errno) [RTLD_PRIVATE_ERRNO]:
Use PC-relative access for errno.
* sysdeps/unix/sysv/linux/x86_64/sysdep.h
[RTLD_PRIVATE_ERRNO] (SYSCALL_ERROR_HANDLER): Likewise.
* include/tls.h: New file.
(USE___THREAD): New macro.
Define to 1 under [USE_TLS && HAVE___THREAD] and only when compiling
libc or libpthread.
* sysdeps/unix/sysv/linux/i386/sysdep.h [USE___THREAD]: Conditional
changed from [USE_TLS && HAVE___THREAD].
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
* sysdeps/unix/i386/sysdep.S: Likewise.
* sysdeps/unix/x86_64/sysdep.S: Likewise.
* include/errno.h: Likewise.
* include/netdb.h: Likewise.
* include/resolv.h: Likewise.
* sysdeps/generic/errno.c: New file.
* csu/Makefile (aux): New variable, list errno.
* sysdeps/unix/sysv/linux/i386/sysdep.S (errno, _errno): Remove defns.
* sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/arm/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/cris/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/hppa/sysdep.c: Likewise.
* sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/sysdep.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/sh/sysdep.S: Likewise.
* sysdeps/unix/alpha/sysdep.S: Likewise.
* sysdeps/generic/start.c: Likewise.
* sysdeps/unix/start.c: Likewise.
* sysdeps/unix/arm/start.c: Likewise.
* sysdeps/unix/bsd/ultrix4/mips/start.S: Likewise.
* sysdeps/unix/sparc/start.c: Likewise.
* sysdeps/unix/sysv/irix4/start.c: Likewise.
* sysdeps/unix/sysv/linux/mips/sysdep.S: File removed.
* manual/search.texi (Tree Search Function, Hash Search Function):
Mention search.h clearly.
2002-10-05 Roland McGrath <roland@redhat.com>
* elf/dl-fxstat64.c: File removed.
* elf/dl-xstat64.c: File removed.
* elf/Makefile (rtld-routines): Remove them.
* sysdeps/unix/sysv/linux/xstat64.c: Remove RTLD_STAT64 conditionals.
Instead, use strong_alias instead of versioned_symbol in the
!SHLIB_COMPAT case.
* sysdeps/unix/sysv/linux/fxstat64.c: Likewise.
* sysdeps/unix/sysv/linux/lxstat64.c: Likewise.
* include/shlib-compat.h
(SHLIB_COMPAT): Require that IS_IN_##lib be defined nonzero.
[! NOT_IN_libc] (IS_IN_libc): Define it.
* cppflags-iterator.mk (CPPFLAGS-$(cpp-src)): Use -Dx=1 not just -Dx.
* elf/Makefile (CPPFLAGS-.os): Likewise.
* sunrpc/rpc_main.c (main): Don't declare with noreturn attribute.
Return the status instead of calling exit.
* Makeconfig (CFLAGS): Prepend -std=gnu99.
* Makerules (+make-deps): Use $(CFLAGS) only for .c sources.
Remove superfluous rm command, whose @ plus make bugs hid
all these commands from the make output.
* include/stubs-prologue.h: New file. Give #error under #ifdef _LIBC.
* Makefile ($(inst_includedir)/gnu/stubs.h): Depend on it.
Use that file's contents instead of literal echo's for the prologue.
* include/features.h: Include <gnu/stubs.h> unconditionally.
* include/gnu/stubs.h: New file.
2002-09-30 Roland McGrath <roland@redhat.com>
* elf/rtld-Rules: New file.
* elf/Makefile ($(objpfx)librtld.map, $(objpfx)librtld.mk,
$(objpfx)rtld-libc.a): New targets.
(generated): Add them.
(reloc-link): Remove -o $@ from the variable.
($(objpfx)dl-allobjs.os): Add -o $@ after $(reloc-link).
(distribute): Add rtld-Rules.
(CPPFLAGS-.os): Define this instead of CFLAGS-.os.
* Makerules ($(+sysdir_pfx)sysd-rules): Emit rules for rtld-% targets.
(common-mostlyclean, common-clean): Clean up rtld-* files.
* sysdeps/unix/make-syscalls.sh: Add rtld-*.os target name to rules.
now-unused dtv slot, reset the slot to TLS_DTV_UNALLOCATED.
* elf/tls-macros.h [__x86_64__] (TLS_GD): Fix the sequence with the
proper set of no-op insn prefixes.
* elf/tst-tls8.c (do_test): Use %zd format for l_tls_modid members.
2002-10-05 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* elf/tls-macros.h: Fix SH version of macros so as to match ABI syntax.
2002-10-03 Ulrich Drepper <drepper@redhat.com>
* version.h (RELEASE): Change to stable.
See ChangeLog.13 for earlier changes.
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.
* sysdeps/unix/x86_64/sysdep.S [USE_TLS && HAVE___THREAD] [! PIC]:
Use direct-%fs form of TLS access for errno.
* sysdeps/unix/sysv/linux/i386/i686/sysdep.h: File removed, since
the i386 version has all the same asm now.
* sysdeps/i386/elf/configure.in: Add @GOTNTPOFF and @NTPOFF uses to
the TLS support check.
* sysdeps/i386/elf/configure: Regenerated.
* sysdeps/unix/sysv/linux/i386/sysdep.h [USE_TLS && HAVE___THREAD]
(SYSCALL_ERROR_HANDLER): Use direct-%gs form of TLS access for errno.
* sysdeps/unix/i386/sysdep.S (syscall_error)
[USE_TLS && HAVE___THREAD]: Use TLS access for errno.
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-26 Ulrich Drepper <drepper@redhat.com>
* elf/dynamic-link.h (elf_get_dynamic_info): Relocate DT_HASH entry
if necessary.
* elf/dl-lookup.c (_dl_setup_hash): DT_HASH entry is already relocated.
* elf/dl-addr.c (_dl_addr): Use .hash[1] entry to determine end of the
symbol table if necessary.
(libc: GLIBC_2.0) [USE_TLS && HAVE___THREAD]: Remove _errno, errno.
(libc: GLIBC_2.3) [USE_TLS && HAVE___THREAD]: Put errno here instead.
* resolv/Versions: Use %include <tls.h> to get USE_TLS defined.
(libc: GLIBC_2.0) [USE_TLS && HAVE___THREAD]: Remove _h_errno, h_errno,
and _res.
(libc: GLIBC_2.3) [USE_TLS && HAVE___THREAD]: Put h_errno, _res here.
* elf/tls-macros.h [__x86_64__] (TLS_LE, TLS_IE, TLS_LD, TLS_GD):
New macros for x86-64.
* sysdeps/unix/sysv/linux/alpha/bits/time.h: File removed.
It was indentical to the linux/bits/time.h file.
* nscd/nscd_gethst_r.c (nscd_gethst_r): Add a cast to silence warning.
* resolv/gethnamaddr.c (gethostbyaddr): Use socklen_t for SIZE.
* sysdeps/generic/utmp_file.c (setutent_file): Invalidate last_entry
also on platforms with !HAVE_UT_TYPE.
(proc_utmp_eq): Remove function.
(internal_getut_r, pututline_file): Call __utmp_equal instead.
2002-09-20 Bruno Haible <bruno@clisp.org>
* abi-tags: Add support for FreeBSD with ABI OS value 3.
* elf/cache.c (print_entry): Support the GNU/FreeBSD ABI tag.
the __ctype_* compat symbols, so the relocs generated bind to the
right versioned global symbol in the shared object.
* elf/do-rel.h (elf_dynamic_do_rel): Mask off 0x8000 bit (hidden flag)
from the value taken from the DT_VERSYM table.
* elf/dl-runtime.c (fixup, profile_fixup): Likewise.
* sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Likewise.
(RESOLVE_GOTSYM): Likewise.
* sysdeps/mach/hurd/_exit.c: Add libc_hidden_def.
* sysdeps/generic/_exit.c: Likewise.
2002-09-12 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (struct dl_start_final_info): New.
(_dl_start_final): Change second argument to struct
dl_start_final_info *. Set start_time from info.
(_dl_start): Remove bootstrap_map variable, add info.
Define bootstrap_map as macro. If not DONT_USE_BOOTSTRAP_MAP,
store HP_TIMING_NOW result into info.start_time.
* elf/cache.c (print_entry): Add case for FLAG_POWERPC_LIB64.
Remove per-machine conditionals for FLAG_* cases.
* sysdeps/unix/sysv/linux/powerpc/ldconfig.h: New file.
* sysdeps/unix/sysv/linux/powerpc/readelflib.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h: New file.
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.
* sysdeps/mach/hurd/pwrite64.c: No libc_hidden_def (__libc_pwrite64).
* sysdeps/mach/hurd/dl-sysdep.c (__GI_abort): Define alias for abort.
* include/assert.h (__assert_perror_fail): Declare it, do hidden_proto.
* assert/assert-perr.c: Add libc_hidden_def.
* elf/dl-minimal.c [! NDEBUG] (__assert_perror_fail): New function.
* sysdeps/gnu/errlist-compat.awk: Don't fail if there are no versions
found at all.
* sysdeps/gnu/Versions: File removed. Moved all #errlist-compat
sys_errlist stuff to ...
* sysdeps/unix/sysv/linux/Versions: ... here.
* mach/mach.h: Include <features.h>.
2002-08-25 Ulrich Drepper <drepper@redhat.com>
* elf/tst-tlsmod1.c (in_dso): Make sure the TLS variable access is
not moved ahead of the fputs call.
* elf/tst-tlsmod2.c (in_dso): Likewise.
* elf/tst-tlsmod3.c (in_dso2): Likewise.
* elf/tst-tlsmod4.c (in_dso): Likewise.
resetting handler, to avoid the possibility of a spurious SIGALRM
delivered to the user's handler.
Reported by Amit D. Chaudhary <amitc@brocade.com>,
* misc/Makefile (CFLAGS-init-misc.c): Varaible removed. It served to
set -fkeep-inline-functions, which is not needed for the current file.
* sysdeps/generic/ldsodefs.h: Add attribute_hidden to *_internal decls.
(_dl_setup_hash): Add attribute_hidden.
(_dl_sysdep_start, _dl_sysdep_start_cleanup): Likewise.
(_dl_sysdep_read_whole_file, _dl_dprintf): Likewise.
(_dl_new_object, _dl_map_object_deps): Likewise.
(_dl_map_object_deps_internal): Remove decl.
* elf/rtld.c (__mempcpy, _exit): Redeclare locally as hidden.
* sysdeps/i386/dl-machine.h [PI_STATIC_AND_HIDDEN
&& HAVE_VISIBILITY_ATTRIBUTE && HAVE_HIDDEN
&& !HAVE_BROKEN_VISIBILITY_ATTRIBUTE]
(elf_machine_dynamic, elf_machine_load_address): Rewritten without asm,
instead relying on the compiler to produce only GOTOFF variable refs.
* elf/rtld.c (_dl_start_final): Move defn before _dl_start so it can
be inlined. Declare it with always_inline if [DONT_USE_BOOTSTRAP_MAP]
and with noinline otherwise. Remove hack alloca use to prevent
inlining, we can ask for it explicitly nowadays.
* elf/rtld.c (start_time): New global variable. Moved from _dl_start.
(DONT_USE_BOOTSTRAP_MAP): Define if we can use non-exported symbols
before relocation.
(_dl_start): Don't use local bootstrap_map variable if
DONT_USE_BOOTSTRAP_MAP is defined. Use GL(dl_rtld_map). Don't
pass bootstrap_map to _dl_start_final in this case either. Don't
pass start_time to _dl_start_final ever.
(_dl_start_final): Don't copy bootstrap_map of DONT_USE_BOOTSTRAP_MAP.
* elf/dl-deps.c (_dl_map_object_deps): Revert patch from 2002-05-28.
This cripples the scope lists necessary to search for symbols in
dependencies which are not in the global scope.
partially overlapping mappings. Remove unneeded (char *) casts.
Never allow duplication of ranges in mapped areas.
2002-08-20 Roland McGrath <roland@redhat.com>
* elf/Makefile ($(objpfx)ld.so): Separate commands in rule so errors
can be detected by make. Reported by H.J. Lu <hjl@gnu.org>.
(dl_main): Pass extra argument 0 to TLS_INIT_TP.
* elf/rtld.c (_dl_start): Pass extra argument 1 to TLS_INIT_TP.
(dl_main): Padd extra argument 0 to TLS_INIT_TP.
* sysdeps/generic/libc-tls.c (__libc_setup_tls): Pass extra
argument 1 to TLS_INIT_TP.
* sysdeps/generic/tls.h (TLS_INIT_TP): Describe new parameter.
* locale/loadarchive.c (_nl_load_locale_from_archive): Store strdup of
2002-08-20 Ulrich Drepper <drepper@redhat.com>
* elf/Versions [ld] (GLIBC_PRIVATE): Add _dl_get_tls_static_info.
* sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Move dtv
memory allocation to...
(allocate_dtv): ...here. New function.
(_dl_allocate_tls): Change to take parameter. If parameter is non-NULL
call allocate_dtv instead of _dl_allocate_tls_storage.
(_dl_deallocate_tls): New parameter. Deallocate TCB only if true.
(_dl_get_tls_static_info): New function.
* sysdeps/generic/ldsodefs.h: Adjust prototypes of _dl_allocate_tls
and _dl_deallocate_tls. Add prototype for _dl_get_tls_static_info.