aboutsummaryrefslogtreecommitdiff
path: root/elf/rtld.c
AgeCommit message (Collapse)Author
2003-01-07Update.Ulrich Drepper
2003-01-07 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c (_rtld_global): Remove _dl_dynamic_weak initializer. * elf/dl-support.c (_dl_dynamic_weak): Initialize to 0.
2002-12-28Update.Ulrich Drepper
2002-12-28 Ulrich Drepper <drepper@redhat.com> * descr.h (struct pthread): Move header.data.list to the back of the struct. * sysdeps/i386/tls.h (tcbhead_t): Move list to the back of the struct. (MULTIPLE_THREADS_OFFSET): Adjust offset. (SYSINFO_OFFSEET): Likewise. 2002-12-27 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h (USE_DL_SYSINFO): Define. (DL_SYSINFO_DEFAULT): Cast to uintptr_t to avoid warnings. * sysdeps/unix/sysv/linux/i386/dl-sysdep.h (NEED_DL_SYSINFO, DL_SYSINFO_DEFAULT, DL_SYSINFO_IMPLEMENTATION): Define. (USE_DL_SYSINFO): Undef. 2002-12-22 Jakub Jelinek <jakub@redhat.com> * Makefile (tests-reverse): Use $(objpfx)../libc.so instead of $(common-objpfx)libc.so. * tst-cancel4.c (tf_write, tf_writev): Increase buf sizes so that it is bigger than pipe buffer size even on arches with bigger page size. (tf_usleep): Cast usleep argument to useconds_t to avoid warnings.
2002-12-19Update.Ulrich Drepper
2002-12-19 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/sysdep.h: Add support to use AT_SYSINFO information for system calls. * sysdeps/generic/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO to 1 only for ld.so. * elf/rtld.c (_dl_start) [USE___THREAD]: Define initdtv.
2002-12-19Update.Ulrich Drepper
2002-12-19 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c: Don't initialize _dl_dynamic_weak to 1 if RTLD_CORRECT_DYNAMIC_WEAK is defined.
2002-12-19Update.Ulrich Drepper
2002-12-18 Ulrich Drepper <drepper@redhat.com> * elf/dl-support.c [NEED_DL_SYSINFO]: Define and initialize _dl_sysinfo. [DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed code. * elf/rtld.c [DL_NEED_SYSINFO]: Initialize _dl_sysinfo element of _rtld_global. [DL_SYSINFO_IMPLEMENTATION]: If defined use it to generate the needed code. * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]: Check for AT_SYSINFO and set _dl_sysinfo appropriately. * sysdeps/generic/ldsodefs.h (struct rtld_global) [NEED_DL_SYSINFO]: Add _dl_sysinfo.
2002-12-06Update.Ulrich Drepper
2002-12-06 Ulrich Drepper <drepper@redhat.com> * misc/syslog.c (log_cleanup): New function. (openlog): Use log_cleanup instead of __libc_mutex_unlock. (closelog): Likewise. * elf/dl-close.c: Use __rtld_lock_* macros instead of __libc_lock_*. * elf/dl-iteratephdr.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-misc.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-support.c: Likewise. * elf/rtld.c: Likewise. * sysdeps/generic/ldsodefs.h: Likewise. * sysdeps/generic/bits/libc-lock.h: Define __rtld_lock_* macros. * sysdeps/mach/bits/libc-lock.h: Likewise. * sysdeps/mach/hurd/bits/libc-lock.h: Likewise. * dirent/bug-readdir1.c (main): Don't call closedir, just close
2002-12-06* sysdeps/generic/libc-tls.c (__libc_setup_tls): Cope with zero ALIGN.Roland McGrath
* malloc/hooks.c [_LIBC && (USE___THREAD || (USE_TLS && !SHARED))] (malloc_starter, memalign_starter, free_starter): Don't define these. * malloc/malloc.c [_LIBC && (USE___THREAD || (USE_TLS && !SHARED))]: Don't declare them either. * malloc/arena.c (ptmalloc_init) [_LIBC && USE_TLS]: Don't call __pthread_initialize, so no need to set hooks to *_starter. (ptmalloc_init_minimal): New function, broken out of ptmalloc_init. [_LIBC && SHARED && USE_TLS && !USE___THREAD] (__libc_malloc_pthread_startup): New function. * malloc/Versions (libc: GLIBC_PRIVATE): New set, add that function. * malloc/hooks.c (memalign_starter): New function. * malloc/malloc.c: Declare it. * malloc/arena.c (save_memalign_hook): New variable. (ptmalloc_init): Set __memalign_hook to memalign_starter. * elf/dl-minimal.c (free): Clear the memory. (calloc): Just call malloc, knowing all memory it returns is cleared. * sysdeps/generic/dl-tls.c (allocate_dtv): Use calloc instead of malloc and memset; calloc can avoid the zeroing when redundant. (_dl_tls_setup): Likewise. * elf/dl-load.c (decompose_rpath): Likewise. * sysdeps/generic/libc-tls.c (__libc_setup_tls): Comment out memset call, since memory from sbrk at startup is already zero. * elf/rtld.c (_dl_start, dl_main): TLS_INIT_TP macro now returns an error string for failure, null for success. Update callers. * sysdeps/generic/libc-tls.c (__libc_setup_tls): Likewise. * elf/dl-load.c (_dl_map_object_from_fd): Likewise.
2002-12-04* sysdeps/generic/ldsodefs.h (struct rtld_global): Move all [USE_TLS]Roland McGrath
members to the end, so a libpthread compiled with !USE_TLS will still find other members properly. * sysdeps/i386/i486/bits/string.h (__strcpy_g): Add dummy output operand for DEST memory. Fix dummy input operand to use SRC. Reported by Davin McCall <davmac@ozonline.com.au>. * sysdeps/generic/libc-tls.c (__libc_setup_tls): Account for TCB alignment when initializing the DTV entry. * elf/dl-load.c (_dl_map_object_from_fd): If we hit a TLS segment when TLS has not been set up, try to set it up if we can. * elf/tst-tls4.c: Revert last change. * elf/tst-tls5.c: Likewise. * elf/tst-tls6.c: Likewise. * elf/tst-tls7.c: Likewise. * elf/tst-tls8.c: Likewise. * elf/tst-tls9.c: Likewise. * sysdeps/generic/dl-tls.c [SHARED] (_dl_tls_setup): New function. * sysdeps/generic/ldsodefs.h: Declare it. * elf/Versions (ld: GLIBC_PRIVATE): Add it. * sysdeps/generic/libc-tls.c (init_slotinfo): New static inline function, broken out of __libc_setup_tls. (init_static_tls): Likewise. (__libc_setup_tls): Call them. (_dl_tls_setup): New function, uses new subroutines. * elf/dl-close.c (free_slotinfo): Make argument pointer to pointer. Clear the pointer when returning true. (libc_freeres_fn) [SHARED]: If GL(dl_initial_dtv) is null, free the first element of the slotinfo list too. * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Define only if [SHARED]. * sysdeps/generic/ldsodefs.h (_dl_next_tls_modid): Declare as hidden. (_dl_determine_tlsoffset): Likewise. * elf/rtld.c (_dl_initial_error_catch_tsd): Renamed from startup_error_tsd, made global. (dl_main): Update initialization. * elf/dl-tsd.c: Likewise. * sysdeps/generic/ldsodefs.h: Declare it.
2002-12-03* elf/tst-tls4.c: Define an unused TLS variable here, so that no lazyRoland McGrath
TLS setup is required. * elf/tst-tls5.c: Likewise. * elf/tst-tls6.c: Likewise. * elf/tst-tls7.c: Likewise. * elf/tst-tls8.c: Likewise. * elf/tst-tls9.c: Likewise. * elf/rtld.c (dl_main): Remove [! SHARED] conditional from `if (GL(dl_tls_max_dtv_idx) > 0)' tests for doing TLS setup. * elf/dl-close.c (libc_freeres_fn): Check GL(dl_tls_dtv_slotinfo_list) for being null before calling free_slotinfo. * elf/dl-load.c (_dl_map_object_from_fd) [SHARED]: For PT_TLS in dynamic loading, bail with error if GL(dl_tls_max_dtv_idx) is zero.
2002-11-24* sysdeps/posix/readv.c: Include <errno.h>, use __set_errno macro.Roland McGrath
* sysdeps/posix/writev.c: Likewise. From Momchil Velikov <velco@fadata.bg>. * elf/dl-error.c [! _LIBC_REENTRANT]: Use a static variable instead of calling *GL(dl_error_catch_tsd) for a thread-local location. * elf/rtld.c (startup_error_tsd): Conditionalize on [_LIBC_REENTRANT]. (dl_main): Same for GL(dl_error_catch_tsd) initialization. * elf/dl-tsd.c: Conditionalize contents on [_LIBC_REENTRANT]. * libio/iofflush.c: Add libc_hidden_def. * libio/iofwrite.c: Likewise. * sysdeps/generic/sigtimedwait.c: Likewise. * sysdeps/generic/sigwaitinfo.c: Likewise. * sysdeps/posix/sigwait.c: Likewise. Reported by Momchil Velikov <velco@fadata.bg>. * inet/inet_lnaof.c (inet_lnaof): Change return type to in_addr_t to match <arpa/inet.h> declaration. * inet/inet_netof.c (inet_netof): Likewise. * inet/inet_mkadr.c (inet_makeaddr): Likewise for argument types. Reported by Momchil Velikov <velco@fadata.bg>.
2002-10-11* sysdeps/generic/bits/libc-tsd.h [USE___THREAD]: ConditionalRoland McGrath
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.
2002-09-29* elf/rtld.c (_dl_start): Fix conditional for declaring CNT.Roland McGrath
* aclocal.m4 (LIBC_PROG_BINUTILS): Don't clobber $RANLIB with ranlib before we check it.
2002-09-17* sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): Add a cast.Roland McGrath
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (INLINE_SYSCALL): New macro. * elf/rtld.c [HP_TIMING_NONAVAIL]: Fix last change for this case.
2002-09-17* include/unistd.h: Uncomment libc_hidden_proto for _exit.Roland McGrath
* 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.
2002-09-12* elf/rtld.c (_dl_start_final): Move _begin, _end decls outside the fn.Roland McGrath
(_dl_start) [DONT_USE_BOOTSTRAP_MAP]: Use &_begin instead of l_addr to find the ELF header.
2002-09-12* elf/rtld.c (dl_main) [USE_TLS]: Adjust l_tls_initimage of mainRoland McGrath
executable if needed, in case it's actually a shared object.
2002-09-022002-09-02 Jakub Jelinek <jakub@redhat.com>Roland McGrath
* elf/rtld.c (dl_main): If prelinking succeeded, mark all objects as relocated.
2002-08-26* locale/programs/ld-ctype.c (ctype_read): When given a repertoireRoland McGrath
name of "", store a null pointer instead. * configure.in (elf): Set to yes for freebsd*, netbsd*. * configure: Regenerated. * locale/xlocale.c [! (USE_TLS && HAVE___THREAD)] (__libc_tsd_LOCALE): Initialize this instead of __libc_tsd_LOCALE_data. * sysdeps/unix/grantpt.c (pts_name): Convert ENOTTY return from ptsname_r to EINVAL. * sysdeps/generic/ptsname.c (__ptsname_r): Return ENOSYS instead of 0. * rt/Makefile: Revert last change, it was inappropriate to presume aio implementations depend on pthreads. * rt/tst-aio.c (do_test): Exit happy if first failure is ENOSYS. * rt/tst-aio64.c (do_test): Likewise. * rt/tst-aio2.c (do_test): Likewise. * rt/tst-aio3.c (do_test): Likewise. * rt/tst-aio4.c (do_test): Likewise. * rt/tst-aio5.c (do_test): Likewise. * rt/tst-aio6.c (do_test): Likewise. * rt/tst-aio7.c (do_test): Likewise. * sysdeps/generic/bits/libc-lock.h (__libc_setspecific): Use a cast to void so as to avoid compiler warnings. * libio/oldstdfiles.c [! _IO_MTSAFE_IO] (DEF_STDFILE): Don't define _IO_wide_data_FD, which is never used here. * libio/iofread.c [! _IO_MTSAFE_IO] (fread_unlocked): Add libc_hidden_ver defn. * libio/iofputs.c [! _IO_MTSAFE_IO] (fputs_unlocked): Likewise. * libio/iofgets.c [! _IO_MTSAFE_IO] (fgets_unlocked): Likewise. * include/resolv.h [! _LIBC_REENTRANT] (_res): #undef it before decl. * include/netdb.h [! _LIBC_REENTRANT] (h_errno): Declare normal extern. * misc/syslog.c (openlog): Conditionalize locking on [_LIBC_REENTRANT]. (closelog): Likewise. 2002-07-06 Bruno Haible <bruno@clisp.org> * sysdeps/alpha/fpu/fpu_control.h: Comment fix. * sysdeps/unix/sysv/linux/alpha/pipe.S: Moved to ... * sysdeps/unix/alpha/pipe.S: ... here. * sysdeps/unix/bsd/osf/alpha/pipe.S: File removed. * sysdeps/unix/i386/brk.S: Rename local label to '.Lhere' in ELF. * sysdeps/unix/i386/brk.S: Add PSEUDO_END invocation. * sysdeps/unix/i386/fork.S: Likewise. * sysdeps/unix/i386/pipe.S: Likewise. * sysdeps/unix/i386/wait.S: Likewise. * sysdeps/unix/fork.S: Fix PSEUDO_END argument. * sysdeps/unix/arm/fork.S: Likewise. * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO): Swap DO_CALL arguments. (DO_CALL): Swap argument order. * sysdeps/unix/sysv/linux/hppa/sysdep.h (PSEUDO): Swap DO_CALL arguments. (DO_CALL): Swap argument order. * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Swap DO_CALL arguments. (DO_CALL): Swap argument order. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO): Swap DO_CALL arguments. (DO_CALL): Swap argument order. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (PSEUDO): Swap DO_CALL arguments. (DO_CALL): Swap argument order. * sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO): Swap DO_CALL arguments. (DO_CALL): Swap argument order. * sysdeps/unix/sysv/linux/x86_64/sysdep.h (PSEUDO): Swap DO_CALL arguments. (DO_CALL): Swap argument order. * sysdeps/i386/sysdep.h (PSEUDO): Fix syntax error. (L): Define right for ELF. * sysdeps/unix/sysv/linux/i386/sysdep.h (L): Remove definition. Now defined in sysdeps/i386/sysdep.h. * sysdeps/posix/readv.c: Ansify function definition. * sysdeps/posix/writev.c: Likewise. * stdio-common/tst-fseek.c (main): Don't assume that off_t and size_t have the same size. Avoid direct cast from size_t to off_t. * login/tst-utmp.c (simulate_login): Don't leave garbage after the nul byte in entry[n].ut_user. (simulate_logout): Likewise. * login/programs/utmpdump.c (print_entry): Test _HAVE_UT_TYPE, _HAVE_UT_PID, _HAVE_UT_ID, _HAVE_UT_HOST, instead of assuming the existence of corresponding members of 'struct utmp'. * login/tst-utmp.c: Trivialize the test if testing 'struct utmp' and !_HAVE_UT_TYPE. * sysdeps/unix/opendir.c (__opendir): If st_blksize is 0 or too small, allocate a buffer of at least BUFSIZ bytes, not just of sizeof (struct dirent). * sysdeps/generic/glob.c: Include <limits.h>. (NAME_MAX): Define a fallback. (glob_in_dir): Allocate enough room for a 'struct dirent64' on the stack. * posix/tst-dir.c: Include <stddef.h>, for offsetof. (main): Allocate enough room for a 'struct dirent64' on the stack. * posix/tst-gnuglob.c (my_DIR): Allocate enough room for a 'struct dirent'. * sysdeps/unix/sysv/linux/init-first.c: Don't include kernel-features.h. * inet/htontest.c: Include <sys/types.h>. * sysdeps/generic/sys/sysinfo.h: Surround with __{BEGIN,END}_DECLS. * include/sys/sysctl.h: Comment fix. * elf/rtld.c (_rtld_global) [! _LIBC_REENTRANT]: Don't initialize _dl_load_lock. * libio/fileno.c (fileno_unlocked): Define regardless of _IO_MTSAFE_IO. * sysdeps/unix/bsd/bsd4.4/syscalls.list (__sigaltstack): New alias. * sysdeps/unix/inet/syscalls.list (__connect_internal): New alias. (__getpeername): New alias. (__getsockname): New alias. (__socket): New alias. * sysdeps/unix/common/syscalls.list (getpgid): Remove. * sysdeps/unix/syscalls.list (__chown_internal): New alias. (__fcntl_internal): New alias. (__profil): New alias.
2002-08-25* sysdeps/generic/utmp_file.c (UNLOCK_FILE): Clear alarm beforeRoland McGrath
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.
2002-08-25Update.Ulrich Drepper
* elf/rtld.c: Also test for HAVE_VISIBILITY_ATTRIBUTE before defining DONT_USE_BOOTSTRAP_MAP.
2002-08-25Update.Ulrich Drepper
2002-08-25 Ulrich Drepper <drepper@redhat.com> * sysdeps/i386/elf/configure.in: Unconditionally define PI_STATIC_AND_HIDDEN. * elf/rtld.c (DONT_USE_BOOTSTRAP_MAP): Define only if PI_STATIC_AND_HIDDEN is defined as well. * config.h.in: Add PI_STATIC_AND_HIDDEN entry. * elf/rtld.c (dl_main): Likewise.
2002-08-222002-08-21 Roland McGrath <roland@redhat.com>Roland McGrath
* 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.
2002-08-21Update.Ulrich Drepper
* 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.
2002-08-21Update.Ulrich Drepper
2002-08-20 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c (_dl_start): Pass zero to TLS_INIT_TP. Set bootstrap_map.l_tls_tp_initialized to 1 if TLS_INIT_TP was called. (_dl_start_final): Copy l_tls_tp_initialized to GL(dl_rtld_map). (dl_main): If HAVE___THREAD is not defined pass l_tls_tp_initialized to TL_INIT_TP. Otherwise pass 1. * include/link.h (struct link_map): Add l_tls_tp_initialized. * sysdeps/generic/libc-tls.c (__libc_setup_tls): Pass 0 to TL_INIT_TP. 2002-08-20 Brian Youmans <3diff@gnu.org> * manual/contrib.texi: Removed licenses, added acknowledgements for contributions by Intel, IBM, Craig Metz. * LICENSES: New file, contains the text of all non-FSF licenses in the * sysdeps/mach/hurd/net/if_ppp.h: Replaced CMU license with a new one modelled on the modern BSD license, per recent letter of permission from CMU. * sysdeps/unix/sysv/linux/net/if_ppp.h: Likewise. * sysdeps/ieee754/dbl-64/MathLib.h: Changed the copyright holder from IBM to FSF, per the recent Software Letter. Changed the distribution terms from GPL to LGPL. * sysdeps/ieee754/dbl-64/asincos.tbl: Added FSF copyright and copying permission notice (Lesser GPL), per recent IBM Software Letter. * sysdeps/ieee754/dbl-64/powtwo.tbl: Likewise. * sysdeps/ieee754/dbl-64/root.tbl: Likewise. * sysdeps/ieee754/dbl-64/sincos.tbl: Likewise. * sysdeps/ieee754/dbl-64/uatan.tbl: Likewise. * sysdeps/ieee754/dbl-64/uexp.tbl: Likewise. * sysdeps/ieee754/dbl-64/ulog.tbl: Likewise. * sysdeps/ieee754/dbl-64/upow.tbl: Likewise. * sysdeps/ieee754/dbl-64/utan.tbl: Likewise. * sysdeps/ieee754/dbl-64/atnat.h: Changed the copyright holder * sysdeps/ieee754/dbl-64/atnat2.h: Likewise. * sysdeps/ieee754/dbl-64/branred.h: Likewise. * sysdeps/ieee754/dbl-64/dla.h: Likewise. * sysdeps/ieee754/dbl-64/doasin.h: Likewise. * sysdeps/ieee754/dbl-64/dosincos.h: Likewise. * sysdeps/ieee754/dbl-64/mpa.h: Likewise. * sysdeps/ieee754/dbl-64/mpa2.h: Likewise. * sysdeps/ieee754/dbl-64/mpatan.h: Likewise. * sysdeps/ieee754/dbl-64/mpexp.h: Likewise. * sysdeps/ieee754/dbl-64/mplog.h: Likewise. * sysdeps/ieee754/dbl-64/mpsqrt.h: Likewise. * sysdeps/ieee754/dbl-64/mydefs.h: Likewise. * sysdeps/ieee754/dbl-64/sincos32.h: Likewise. * sysdeps/ieee754/dbl-64/uasncs.h: Likewise. * sysdeps/ieee754/dbl-64/uexp.h: Likewise. * sysdeps/ieee754/dbl-64/ulog.h: Likewise. * sysdeps/ieee754/dbl-64/upow.h: Likewise. * sysdeps/ieee754/dbl-64/urem.h: Likewise. * sysdeps/ieee754/dbl-64/uroot.h: Likewise. * sysdeps/ieee754/dbl-64/usncs.h: Likewise. * sysdeps/ieee754/dbl-64/utan.h: Likewise. * sysdeps/ieee754/dbl-64/branred.c: Corrected the text of the copying * sysdeps/ieee754/dbl-64/doasin.c: Likewise. * sysdeps/ieee754/dbl-64/dosincos.c: Likewise. * sysdeps/ieee754/dbl-64/e_asin.c: Likewise. * sysdeps/ieee754/dbl-64/e_atan2.c: Likewise. * sysdeps/ieee754/dbl-64/e_exp.c: Likewise. * sysdeps/ieee754/dbl-64/e_log.c: Likewise. * sysdeps/ieee754/dbl-64/e_pow.c: Likewise. * sysdeps/ieee754/dbl-64/e_remainder.c: Likewise. * sysdeps/ieee754/dbl-64/e_sqrt.c: Likewise. * sysdeps/ieee754/dbl-64/halfulp.c: Likewise. * sysdeps/ieee754/dbl-64/mpa.c: Likewise. * sysdeps/ieee754/dbl-64/mpatan.c: Likewise. * sysdeps/ieee754/dbl-64/mpatan2.c: Likewise. * sysdeps/ieee754/dbl-64/mpexp.c: Likewise. * sysdeps/ieee754/dbl-64/mplog.c: Likewise. * sysdeps/ieee754/dbl-64/mpsqrt.c: Likewise. * sysdeps/ieee754/dbl-64/mptan.c: Likewise. * sysdeps/ieee754/dbl-64/s_atan.c: Likewise. * sysdeps/ieee754/dbl-64/s_sin.c: Likewise. * sysdeps/ieee754/dbl-64/s_tan.c: Likewise. * sysdeps/ieee754/dbl-64/sincos32.c: Likewise. * sysdeps/ieee754/dbl-64/slowexp.c: Likewise. * sysdeps/ieee754/dbl-64/slowpow.c: Likewise.
2002-08-20Update.Ulrich Drepper
* 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-15Update.Ulrich Drepper
2002-08-15 Ulrich Drepper <drepper@redhat.com> * csu/Makefile: Define elide-routines.os not static-only-routines. * include/sched.h (__clone): Add varargs at the end. * elf/rtld.c (_dl_start): All TLS_INIT_TP to fail and stop in that case. (TLS_INIT_HELPER): If defined use it. * sysdeps/generic/libc-tls.c (TLS_INIT_HELPER): Likewise. * locale/loadarchive.c (archfname): Add missing slash. * sysdeps/generic/strtold.c (__strtold_internal): Add libc_hidden_def. * wcsmbs/wcstold.c (__wcstold_internal): Add libc_hidden_def.
2002-08-08Update.Ulrich Drepper
* sysdeps/generic/libc-tls.c: Likewise.
2002-08-06Update.Ulrich Drepper
2002-08-05 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c (_dl_start): Don't use memset. Use same tricks as for the other memset call in this function. * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Store dtv pointer at correct index. Clear BSS region now that memalign is used. * include/wchar.h (wcrtomb, wcscmp, wcsftime, wcsspn, wcschr, wcscoll, wcspbrk): Add libc_hidden_proto. * time/strftime.c (my_strftime): Add libc_hidden_def. (strftime): Remove libc_hidden_def. * wcsmbs/wcschr.c (wcschr): Add libc_hidden_def. * wcsmbs/wcspbrk.c (wcspbrk): Likewise. * wcsmbs/wcsspn.c (wcsspn): Likewise. * wcsmbs/wcscmp.c (wcscmp): Likewise. * wcsmbs/wcrtomb.c (wcrtomb): Add libc_hidden_weak. * wcsmbs/wcscoll.c (wcscoll): Likewise. * include/rpc/rpc.h (__rpc_thread_svc_max_pollfd, __rpc_thread_svc_pollfd, __rpc_thread_svc_fdset, __rpc_thread_createerr): Add libc_hidden_proto. * sunrpc/rpc_thread.c (__rpc_thread_svc_max_pollfd, __rpc_thread_svc_pollfd, __rpc_thread_svc_fdset, __rpc_thread_createerr): Add libc_hidden_def. * include/rpc/clnt.h (clnt_sperrno, clnt_spcreateerror, clnt_perror, clnt_sperror, _rpc_dtablesize): Add libc_hidden_proto. * sunrpc/clnt_perr.c (clnt_sperrno, clnt_spcreateerror, clnt_perror, clnt_sperror): Add libc_hidden_def. * sunrpc/rpc_dtable.c (_rpc_dtablesize): Likewise. * include/rpc/des_crypt.h (des_setparity, ecb_crypt, cbc_crypt): Add libc_hidden_proto. * sunrpc/des_crypt.c (ecb_crypt, cbc_crypt): Add libc_hidden_proto. * sunrpc/des_soft.c (des_setparity): Likewise. * include/rpc/auth.h (key_encryptsession_pk, key_decryptsession_pk): Add libc_hidden_proto. * sunrpc/key_call.c (key_encryptsession_pk, key_decryptsession_pk): Add libc_hidden_def.
2002-08-052002-08-05 Jakub Jelinek <jakub@redhat.com>Roland McGrath
* include/wchar.h (wcrtomb, wcscmp, wcsftime, wcsspn, wcschr, wcscoll, wcspbrk): Add libc_hidden_proto. * time/strftime.c (my_strftime): Add libc_hidden_def. (strftime): Remove libc_hidden_def. * wcsmbs/wcschr.c (wcschr): Add libc_hidden_def. * wcsmbs/wcspbrk.c (wcspbrk): Likewise. * wcsmbs/wcsspn.c (wcsspn): Likewise. * wcsmbs/wcscmp.c (wcscmp): Likewise. * wcsmbs/wcrtomb.c (wcrtomb): Add libc_hidden_weak. * wcsmbs/wcscoll.c (wcscoll): Likewise. * include/rpc/rpc.h (__rpc_thread_svc_max_pollfd, __rpc_thread_svc_pollfd, __rpc_thread_svc_fdset, __rpc_thread_createerr): Add libc_hidden_proto. * sunrpc/rpc_thread.c (__rpc_thread_svc_max_pollfd, __rpc_thread_svc_pollfd, __rpc_thread_svc_fdset, __rpc_thread_createerr): Add libc_hidden_def. * include/rpc/clnt.h (clnt_sperrno, clnt_spcreateerror, clnt_perror, clnt_sperror, _rpc_dtablesize): Add libc_hidden_proto. * sunrpc/clnt_perr.c (clnt_sperrno, clnt_spcreateerror, clnt_perror, clnt_sperror): Add libc_hidden_def. * sunrpc/rpc_dtable.c (_rpc_dtablesize): Likewise. * include/rpc/des_crypt.h (des_setparity, ecb_crypt, cbc_crypt): Add libc_hidden_proto. * sunrpc/des_crypt.c (ecb_crypt, cbc_crypt): Add libc_hidden_proto. * sunrpc/des_soft.c (des_setparity): Likewise. * include/rpc/auth.h (key_encryptsession_pk, key_decryptsession_pk): Add libc_hidden_proto. * sunrpc/key_call.c (key_encryptsession_pk, key_decryptsession_pk): Add libc_hidden_def.
2002-08-052002-08-05 Roland McGrath <roland@redhat.com>Roland McGrath
* sysdeps/generic/ldsodefs.h (struct rtld_global): Replace member `bool _dl_initial_dtv_malloced' with `void *_dl_initial_dtv'. * elf/rtld.c (dl_main): Set it to the new dtv for the main thread. * sysdeps/generic/dl-tls.c (__tls_get_addr): When reallocating the dtv, check if it matches _dl_initial_dtv; if so, malloc and copy the old data, abandoning the original memory allocated by rtld at startup, instead of calling realloc normally.
2002-08-05* Makerules (cpp-srcs-left): When setting this to runRoland McGrath
cppflags-iterator.mk, must append .c to $(tests) and $(xtests) words. Combine the two loops into one on the concatenated list, including those as well as $(test-srcs). * elf/dl-minimal.c (__libc_memalign): Guts of malloc moved here, since we align here with optimally minimal waste anyway. (malloc): Just call that. * sysdeps/generic/libc-tls.c (__libc_setup_tls): Set l_tls_offset to the right variable. * elf/dl-load.c (_dl_map_object_from_fd): Use p_vaddr, not p_offset, to compute memory location for l_tls_initimage. * elf/rtld.c (_dl_start): Likewise. * sysdeps/generic/libc-tls.c (__libc_setup_tls): Likewise. * libio/oldiopopen.c: Move #include's before #if SHLIB_COMPAT, because the .d file is generated in the non-shared case and so fails to catch them otherwise. * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): New function, split out of _dl_allocate_tls. (_dl_allocate_tls_init): Likewise. (_dl_allocate_tls): Call those. * sysdeps/generic/ldsodefs.h: Declare them with attribute_hidden. * elf/rtld.c (dl_main): Call them separately instead of calling _dl_allocate_tls. Delay _dl_allocate_tls_init until after relocation is finished, so that the initializer data has been relocated before we copy it into the main thread's TLS block. * sysdeps/generic/dl-tls.c (_dl_allocate_tls): Fix off-by-one error in loop conditions, prevented the last used module from being initialized.
2002-07-31* elf/rtld.c (dl_main): Fix typo in error message.Roland McGrath
2002-07-31 Roland McGrath <roland@frob.com>
2002-07-20Update.Ulrich Drepper
2002-07-19 Ulrich Drepper <drepper@redhat.com> * configure.in: Add test for __thread support in compiler. * config.h.in: Add HAVE___THREAD. * Makefile (headers): Remove errno.h, sys/errno.h, and bits/errno.h. * include/sys/errno.h: Moved to... * stdlib/sys/errno.h: ...here. New file. * stdlib/errno.h: New file. Moved from... * include/errno.h: ...here. Changed into an internal header defining libc-local things like __set_errno. * stdlib/Makefile (headers): Add errno.h, sys/errno.h, and bits/errno.h. * elf/dl-minimal.c: Include <tls.h>. Define errno as thread-local variable if USE_TLS && HAVE___THREAD. Don't define __errno_location either. * elf/rtld.c (_dl_start): Add code to initialize TLS for ld.so from... (_dl_start_final): ...here. Add code to initialize tls elements from bootstrap_map. * sysdeps/generic/errno-loc.c: Define errno as thread-local variable if USE_TLS && HAVE___THREAD. * sysdeps/generic/bits/errno.h: Remove __set_errno definition. * sysdeps/mach/hurd/bits/errno.h: Likewise. * sysdeps/standalone/arm/bits/errno.h: Likewise. * sysdeps/standalone/bits/errno.h: Likewise. * sysdeps/unix/bsd/bsd4.4/bits/errno.h: Likewise. * sysdeps/unix/sysv/aix/bits/errno.h: Likewise. * sysdeps/unix/sysv/hpux/bits/errno.h: Likewise. * sysdeps/unix/sysv/linux/bits/errno.h: Likewise. * sysdeps/unix/sysv/linux/hppa/bits/errno.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/errno.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/bits/errno.h: Likewise. * sysdeps/i386/dl-machine.c (elf_machine_rel) [RTLD_BOOTSTRAP]: Don't use GL(dl_rtld_map), use map parameter. * sysdeps/sh/dl-machine.h (elf_machine_rela): Likewise. * sysdeps/unix/sysv/linux/i386/sysdep.S: Define errno in .tbss if USE_TLS && HAVE___THREAD. * sysdeps/unix/sysv/linux/i386/sysdep.h: Unify SETUP_PIC_REG definitions. If USE_TLS && HAVE___THREAD store errooor value using TLS code sequence. * sysdeps/unix/sysv/linux/i386/i686/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/getcwd.c: No real need to restore errno. * sysdeps/unix/sysv/linux/grantpt.c: Likewise. * sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise. * sysdeps/unix/sysv/linux/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/readv.c: Likewise. * sysdeps/unix/sysv/linux/writev.c: Likewise.
2002-06-22Update.Ulrich Drepper
2002-06-17 Jakub Jelinek <jakub@redhat.com> * elf/dl-lookup.c (_dl_debug_bindings): Use type_class 4 for TLS lookups. * elf/rtld.c (dl_main): Move TLS setup code before LD_TRACE_PRELINKING code. Print TLS modid and offset for modules containing PT_TLS segments. 2002-06-09 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/i386/dl-brk.c: Move... * sysdeps/unix/sysv/linux/dl-brk.c: ...here. * sysdeps/unix/sysv/linux/i386/dl-sbrk.c: Move... * sysdeps/unix/sysv/linux/dl-sbrk.c: ...here. 2002-06-07 Jakub Jelinek <jakub@redhat.com> * nss/getXXbyYY_r.c (NEW, NEW1): Define. (NEW (REENTRANT_NAME)): Strong alias to INTERNAL (REENTRANT_NAME). (REENTRANT_NAME@@GLIBC_2.1.2): Use NEW (REENTRANT_NAME). * nss/getXXent_r.c (NEW, NEW1): Define. (NEW (REENTRANT_GETNAME)): Strong alias to INTERNAL (REENTRANT_GETNAME). (REENTRANT_GETNAME@@GLIBC_2.1.2): Use NEW (REENTRANT_GETNAME). 2002-06-21 Ulrich Drepper <drepper@redhat.com> * libio/fileops.c (_IO_file_setbuf_mmap): New function. (_IO_file_jumps_mmap): Use it. * libio/iosetvbuf.c: Don't call _IO_WSETBUF. * libio/libioP.h: Remove _IO_wdefault_setbuf and _IO_wdefault_setbuf_internal prorotypes. Add _IO_file_setbuf_mmap prototype. * libio/wfileops.c (_IO_wfile_setbuf): Removed. (_IO_wfile_jumps_mmap): Don't use it anymore. * libio/wgenops.c (_IO_wdefault_setbuf): Removed. * libio/memstream.c (_IO_wmem_jumps): Use _IO_default_setbuf not _IO_wdefault_setbuf. * libio/vswprintf.c (_IO_wstrn_jumps): Likewise. * libio/wstrops.c (_IO_wstr_jumps): Likewise. * stdio-common/vfprintf.c (_IO_helper_jumps): Likewise. 2002-06-05 Jakub Jelinek <jakub@redhat.com> * libio/Makefile (tests): Add tst-mmap-setvbuf. * libio/tst-mmap-setvbuf.c: New test.
2002-04-08Update.Ulrich Drepper
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.
2002-03-15Update.Ulrich Drepper
* elf/rtld.c: Declare _environ as hidden. * sysdeps/generic/dl-environ.c: Likewise. * sysdeps/generic/dl-sysdep.c: Likewise. * sysdeps/generic/ldsodefs.h: Declare _dl_debug_state_internal and _dl_mcount_internal as hidden. * elf/Makefile (rtld-routines): Add dl-sbrk and dl-brk. * sysdeps/generic/dl-brk.c: New file. * sysdeps/generic/dl-sbrk.c: New file. * sysdeps/unix/sysv/linux/i386/dl-brk.c: New file. * sysdeps/unix/sysv/linux/i386/dl-sbrk.c: New file.
2002-03-15Update.Ulrich Drepper
2002-03-14 Ulrich Drepper <drepper@redhat.com> * elf/dl-minimal.c (malloc): Declare _end as hidden. (__errno_location): New function. Declare errno as hidden. * elf/rtld.c (_dl_argc): Define as hidden. (_dl_skip_args): Define as hidden. (_begin, _end): Declare as hidden. * sysdeps/generic/dl-sysdep.c (_end): Declare as hidden. * sysdeps/generic/entry.h (_start): Declare as hidden. * sysdeps/generic/ldsodefs.h (_dl_argc): Declare as hidden. * sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Declare _dl_runtime_resolve and _dl_runtime_profile as hidden. (RTLD_START): Use GOTOFF to access _dl_skip_args and _dl_fini.
2002-03-01Update.Ulrich Drepper
2002-03-01 Ulrich Drepper <drepper@redhat.com> * elf/Makefile (dl-routines): Add dl-origin. (elide-routines.os): Add dl-origin. * elf/Versions [ld] (GLIBC_PRIVATE): Add _dl_get_origin. * elf/dl-debug.c (_dl_debug_initialize): Add missing INTUSE around _dl_debug_state. * include/libc-symbols.c: Define attribute_hidden depending on HAVE_VISIBILITY_ATTRIBUTE. Add definition of INTVARDEF. * elf/dl-deps.c: Use INTUSE with __libc_enable_secure. * elf/dl-load.c: Likewise. * elf/rtld.c: Likewise. * include/unistd.h: Declare __libc_enable_secure_internal. * sysdeps/generic/dl-sysdep.c: Use INTVARDEF with __libc_enable_secure. Use INTUSE with __libc_enable_secure. * sysdeps/mach/hurd/dl-sysdep.c: Likewise. * elf/dl-deps.c: Use INTUSE with _dl_out_of_memory. * elf/dl-error.c: Likewise, * sysdeps/generic/ldsodefs.h: Declare _dl_out_of_memory_internal. * elf/dl-dst.h [_RTLD_GLOBAL]: Define _dl_get_origin to use INTUSE. * sysdeps/generic/dl-origin.c: Undefine _dl_get_origin macro before function definition. Use INTDEF with _dl_get_origin. * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. * elf/dl-init.c: Use INTUSE with _dl_starting_up. * elf/rtld.c: Likewise. Use INTVARDEF for _dl_starting_up. * elf/dl-profile.c: Use INTDEF for _dl_mcount. * elf/dl-runtime.c: Use INTUSE with _dl_mcount. * sysdeps/generic/ldsodefs.h: Declare _dl_mcount_internal. * elf/dl-conflict.c: Use rtld_progrname instead of _dl_argv[0]. * 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-reloc.c: Likewise. * elf/dl-version.c: Likewise. * elf/do-lookup.h: Likewise. * sysdeps/arm/dl-machine.h: Likewise. * sysdeps/cris/dl-machine.h: Likewise. * sysdeps/hppa/dl-machine.h: Likewise. * sysdeps/i386/dl-machine.h: Likewise. * sysdeps/m68k/dl-machine.h: Likewise. * sysdeps/powerpc/dl-machine.h: Likewise. * sysdeps/s390/s390-32/dl-machine.h: Likewise. * sysdeps/s390/s390-64/dl-machine.h: Likewise. * sysdeps/sh/dl-machine.h: Likewise. * sysdeps/sparc/sparc-32/dl-machine.h: Likewise. * sysdeps/sparc/sparc-64/dl-machine.h: Likewise. * sysdeps/x86_64/dl-machine.h: Likewise. * elf/rtld.c: Use INTDEF for _dl_argv. Use rtld_progrname instead of _dl_argv[0]. Use INTUSE with _dl_argv. * sysdeps/generic/dl-sysdep.c: Use INTUSE with _dl_argv. * sysdeps/generic/ldsodefs.h: Define rtld_progname macro.
2002-02-28Update.Ulrich Drepper
2002-02-28 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c (_rtld_global): Remove .protected. (_rtld_local): Strong alias to _rtld_global. * elf/Makefile (CFLAGS-.os): Add -D_RTLD_LOCAL if compiling rtld only .os object. * sysdeps/generic/ldsodefs.h (GL): If SHARED and _RTLD_LOCAL, use _rtld_local instead of _rtld_global. (_rtld_local): Add hidden extern, possibly in .sdata section. * configure.in: Add tests for visibility attribute and .sdata. * config.h.in: Add HAVE_VISIBILITY_ATTRIBUTE and HAVE_SDATA_SECTION. * sysdeps/alpha/dl-machine.h: Use _rtld_local instead of _rtld_global. * sysdeps/arm/dl-machine.h: Likewise. * sysdeps/generic/ldsodefs.h: Likewise. * sysdeps/hppa/dl-machine.h: Likewise. * sysdeps/cris/dl-machine.h: Likewise. * sysdeps/i386/dl-machine.h: Likewise. * sysdeps/ia64/dl-machine.h: Likewise. * sysdeps/m68k/dl-machine.h: Likewise. * sysdeps/mips/mips64/dl-machine.h: Likewise. * sysdeps/mips/dl-machine.h: Likewise. * sysdeps/sparc/sparc32/dl-machine.h: Likewise. * sysdeps/sparc/sparc64/dl-machine.h: Likewise. * sysdeps/sh/dl-machine.h: Likewise. * sysdeps/s390/s390-32/dl-machine.h: Likewise. * sysdeps/s390/s390-64/dl-machine.h: Likewise. * sysdeps/x86_64/dl-machine.h: Likewise.
2002-02-23Update.Ulrich Drepper
2002-02-22 Ulrich Drepper <drepper@redhat.com> * elf/Versions: Add _dl_allocate_tls and _dl_deallocate_tls. * elf/rtld.c (dl_main): Use _dl_allocate_tls with INTUSE. * sysdeps/generic/dl-tls.c: Add INTDEF for _dl_allocate_tls. (_dl_deallocate_tls): New function. * sysdeps/generic/ldsodefs.h: Declare _dl_allocate_tls_internal and _dl_deallocate_tls.
2002-02-13Update.Ulrich Drepper
2002-02-12 Ulrich Drepper <drepper@redhat.com> * sysdeps/generic/dl-tls.c (TLS_DTV_UNALLOCATED): Renamed from TLS_DTV_UNALLOCATE. (oom): New function. (_dl_next_tls_modid): Rewrite to handle dl_tls_dtv_slotinfo_list. (_dl_determine_tlsoffset): Likewise. (_dl_allocate_tls): Likewise. (__TLS_GET_ADDR): Define if not already defined. (_dl_tls_symaddr): New function. (allocate_and_init): New function. (__tls_get_addr): Actually implement handling of generation counter and deferred allocation. * sysdeps/generic/ldsodefs.h (_rtld_global): Remove _dl_initimage_list, add _dl_tls_dtv_slotinfo_list, _dl_tls_static_nelem, and _dl_tls_generation. Define TLS_SLOTINFO_SURPLUS and DTV_SURPLUS. Declare _dl_tls_symaddr. * sysdeps/i386/dl-tls.h: Disable __tls_get_addr handling unless SHARED. * include/link.h (struct link_map): Remove l_tls_nextimage and l_tls_previmage. * elf/dl-sym.c (_dl_sym): After successful lookup call _dl_tls_symaddr instead of DL_SYMBOL_ADDRESS for STT_TLS symbols. (_dl_vsym): Likewise. * elf/rtld.c (_dl_start_final): Adjust initdtv initialization for new layout. (dl_main): Allow PT_TLS be present for empty segment. Remove nextimage list handling. Instead add all modules using TLS to dl_tls_dtv_slotinfo_list. * elf/dl-open.c (dl_open_worker): After successfully loading all objects add those with TLS to the dl_tls_dtv_slotinfo_list list. * elf/dl-load.c (_dl_map_object_from_fd): If PT_TLS entry is for an empty segment don't do anything. Remove handling of initimage list. * elf/Versions [ld] (GLIBC_2.0): Add __libc_memalign. (GLIBC_PRIVATE): Add _dl_tls_symaddr. * elf/dl-minimal.c: Define __libc_memalign. * elf/dl-support.c: Remove _dl_initimage_list. Add _dl_tls_dtv_slotinfo_list, _dl_tls_static_nelem, and _dl_tls_generation. * include/stdlib.h: Declare __libc_memalign. * elf/Makefile: Add rules to build and run tst-tls4 and tst-tls5. * elf/tst-tls4.c: New file. * elf/tst-tls5.c: New file. * elf/tst-tlsmod2.c: New file. * elf/tls-macros.h: asms using ___tls_get_addr destroy %ecx and %edx. * elf/tst-tlsmod1.c: Don't define variables unles USE_TLS. * elf/tst-tls1.c: Use test-skeleton.c. * elf/tst-tls2.c: Likewise. * elf/tst-tls3.c: Likewise. * elf/dl-conflict.c (RESOLVE_MAP): Return NULL not 0. * sysdeps/mips/machine-gmon.h: Update MCOUNT for current GCC behavior.
2002-02-10Update.Ulrich Drepper
* elf/dl-deps.c (struct openaux_args): Add open_mode element. (openaux): Pass open_mode as new last argument to _dl_map_object. (_dl_map_object_deps): Add new argument open_mode. Initialize open_mode element of args variable with it. * elf/dl-open.c (dl_open_worker): Pass __RTLD_DLOPEN flag is set to _dl_map_object_deps. * elf/rtld.c (dl_main): Add zero as last parameter to _dl_map_object_deps call. * sysdeps/generic/ldsodefs.h: Adjust prototype of _dl_map_object_deps. * elf/nodlopen2.c: New file. * elf/nodlopenmod2.c: New file. * elf/Makefile: Add rules to build and run nodlopen2. * elf/tls-macros.hgg: ...here. New file. 2002-02-08 Richard Henderson <rth@redhat.com>
2002-02-10Update.Ulrich Drepper
* elf/Makefile (tests): Add tst-tls1. * elf/tst-tls1.c: New file. * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Don't handle alignment of TCB for now. * elf/rtld.c (dl_main): Use p_vaddr as address of TLS initialization image for the application itself. loop to initialize TLS block.
2002-02-09Update.Ulrich Drepper
2002-02-08 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c (_dl_start_final): Install DTV explicitly. (dl_main): Move dtv/static TLS handling before relocation. Unconditionally call _dl_tlsoffset. Call _dl_allocate_tls and TLS_INIT_TP to allocate and install the dtv/static TLS block. * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): If no object so far uses TLS initialize GL(dl_tls_static_size) and GL(dl_tls_static_align) to account for the TCB. (_dl_allocate_tls): New function. * sysdeps/generic/ldsodefs.h (rtld_global): Add _dl_initial_dtv_malloced. * configure.in: Test for __builtin_memset more realistically. * csu/version.c (banner): If TLS support available say so.
2002-02-07Update.Ulrich Drepper
2002-02-07 Andreas Schwab <schwab@suse.de> * configure.in: Fix check for -zcombreloc. 2002-02-06 H.J. Lu <hjl@gnu.org> * config.h.in (HAVE_BUILTIN_MEMSET): New. * configure.in: Check if __builtin_memset really works. * elf/rtld.c (_dl_start): Check HAVE_BUILTIN_MEMSET instead of __GNUC_PREREQ (2, 96) before using __builtin_memset. 2002-02-06 Jakub Jelinek <jakub@redhat.com> * io/bug-ftw3.c (main): Don't try the test if root. 2002-02-06 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/unix/sysv/linux/s390/brk.c (__brk): Correct inline assembly constraints. * sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h (RLIMIT_LOCKS): Add RLIMIT_LOCKS and adjust RLIMIT_NLIMITS. * sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h (RLIMIT_LOCKS): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/clone.S (clone): Make clone a weak alias for __clone. * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (clone): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h: Fix typo. * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Add framestate. * sysdeps/unix/sysv/linux/s390/s390-64/Versions: New file. * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap64): Make __mmap a weak alias for __mmap64. * sysdeps/mips/atomicity.h (exchange_and_add): Not use branch likely. * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Likewise. * sysdeps/generic/dl-tls.c: Don't read TLS header if TLS is not needed.
2002-02-07Update.Ulrich Drepper
2002-02-06 Ulrich Drepper <drepper@redhat.com> * Versions.def [ld]: Add GLIBC_2.3. * elf/Versions [ld]: Add __tls_get_addr to GLIBC_2.3. * elf/Makefile (dl-routines): Add dl-tls. (distribute): Add dl-tls.h. * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove _dl_tls_module_cnt, add _dl_tls_max_dtv_idx and _dl_tls_dtv_gaps. Add prototypes for _dl_next_tls_modid and _dl_determine_tlsoffset. * elf/dl-load.c (_dl_map_object_from_fd): Store alignment requirement along with the other info in the link map. Change queueing of init images for double linked list. Use _dl_next_tls_modid to compute l_tls_modid. * elf/rtld.c (_dl_start_final): Store alignment requirement along with the other info in rtld map and executable map. (dl_main): Add ld.so to the init image list if necessary. Compute final module ID with _dl_next_tls_modid. * include/link.h (struct link_map): Add l_tls_previmage and l_tls_align. * eld/dl-support.c: Define _dl_tls_max_dtv_idx and _dl_tls_dtv_gaps. * sysdeps/i386/elf/Versions: New file. * sysdeps/generic/dl-tls.c: New file. * sysdeps/generic/dl-tls.h: New file. * sysdeps/i386/dl-tls.h: New file. attribute((packed)) to counter stupid people misusing gcc options.
2002-02-06Update.Andreas Jaeger
2002-02-06 Andreas Jaeger <aj@suse.de> * include/libc-symbols.h (INTUSE): Renamed from INT. * elf/dl-deps.c: Change users. * sysdeps/generic/dl-sysdep.c: Likewise. * sysdeps/generic/dl-cache.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/rtld.c: Likewise. * elf/dl-version.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-dst.h: Likewise. * elf/dl-init.c: Likewise.
2002-02-06(dl_main): Correct indentation. Use bool as type for the variables which ↵Ulrich Drepper
are used as booleans.
2002-02-06Update.Ulrich Drepper
* elf/rtld.c (process_dl_debug): Correct printing help message. * elf/dl-misc.c (_dl_debug_vdprintf): Implement precision handling for %s.
2002-02-05Update.Ulrich Drepper
* elf/rtld.c (_dl_start_final): Determine load address to locate ehdr with GL(dl_rtld_map).l_map_start.