aboutsummaryrefslogtreecommitdiff
path: root/elf/rtld.c
AgeCommit message (Collapse)Author
2004-09-23Update.Ulrich Drepper
2004-09-23 Ulrich Drepper <drepper@redhat.com> * sysdeps/generic/bits/dlfcn.h: Add RTLD_DEEPBIND. * elf/dl-object.c (_dl_new_object): Add new parameter mode. If mode has RTLD_DEEPBIND set add local searchlist before global scope. * sysdeps/generic/ldsodefs.h (_dl_new_object): Adjust prototype. * elf/rtld.c: Adjust callers of _dl_new_object. * elf/dl-load.c: Likewise. (_dl_map_object_from_fd): If RTLD_DEEPBIND is used, don't do anything for DF_SYMBOLIC. * elf/dl-open.c (dl_open_writer): Pass RTLD_DEEPBIND flag on to _dl_map_object_deps. * elf/tst-deep1.c: New file. * elf/tst-deep1mod1.c: New file. * elf/tst-deep1mod2.c: New file. * elf/tst-deep1mod3.c: New file. * elf/Makefile: Add rules to build and run new tests. * elf/dl-deps.c: Pretty printing.
2004-09-20Update.Ulrich Drepper
2004-09-20 Ulrich Drepper <drepper@redhat.com> * elf/dl-load.c (_dl_map_object_from_fd): Add some error checking. Reorder code slightly. * elf/rtld.c (dl_main): No need to check whether l_info[DT_HASH] is non-null, _dl_setup_hash will do that.
2004-09-18Update.Ulrich Drepper
2004-09-17 Ulrich Drepper <drepper@redhat.com> * include/link.h (struct link_map): Add l_used element. * sysdeps/generic/ldsodefs.h: Define DL_DEBUG_UNUSED. * elf/rtld.c (process_dl_debug): Recognize unused. (dl_main): When unused debug flag is set check for unused direct dependencies. When printing dependencies and SONAME starts with /, omit the SONAME => part. * elf/dl-lookup.c (_dl_lookup_symbol_x): Mark object in which the symbol has been found as used. * elf/ldd.bash.in: Add -u option.
2004-09-02(dl_main): First check existence of ld.so.preload with access.Ulrich Drepper
2004-07-10Update.Ulrich Drepper
2004-07-10 Ulrich Drepper <drepper@redhat.com> * elf/ldconfig.c: Define PROCINFO_CLASS as static before including ldsodefs.h. * sysdeps/generic/ldsodefs.h: Only define PROCINFO_CLASS if it is not already defined. * sysdeps/i386/dl-procinfo.c: Define PROCINFO_CALLS only if not already defined. * elf/rtld.c (print_statistics): Mark with noinline attribute. * sysdeps/i386/dl-machine.h (elf_machine_rel): Mark with always_inline attribute. (elf_machine_rel_relative): Likewise. * include/string.h: Add libc_hidden_proto for __strtok_r and __strsep_g. * sysdeps/generic/strsep.c: Add libc_hidden_def. * sysdeps/generic/strtok_r.c: Likewise. * sysdeps/i386/strtok_r.S: Add alias for internal symbol. * sysdeps/i386/i686/strtok_r.S: Likewise. * sysdeps/x86_64/strtok_r.S: Likewise. 2004-07-09 Alexandre Oliva <aoliva@redhat.com> * inet/getnetgrent_r.c (internal_setnetgrent): Make it hidden instead of internal-linkage, such that we can alias to it. (internal_endnetgrent, internal_getnetgrent_r): Likewise.
2004-07-06Update.Ulrich Drepper
2004-07-05 Ulrich Drepper <drepper@redhat.com> * elf/dl-init.c: Don't define and use _dl_starting_up if HAVE_INLINED_SYSCALLS is defined and the variable is not used. * elf/dl-support.c: Likewise. * elf/rtld.c: Likewise. * elf/dl-misc.c (_dl_debug_vdprintf): Use writev syscall directly if HAVE_INLINED_SYSCALLS is defined. * sysdeps/powerpc/powerpc64/dl-machine.h: Don't rest _dl_starting_up here. * sysdeps/powerpc/powerpc32/dl-start.S: Likewise. * sysdeps/unix/sysv/linux/configure.in: Define HAVE_INLINED_SYSCALLS. * config.h.in: Add entry for HAVE_INLINED_SYSCALLS. * sysdeps/posix/profil.c: If compiled for ld.so, omit code which is needed to stop profiling. * elf/dl-open.c (dl_open_worker): If a newly opened object is to be profile make sure it cannot be unloaded. * sysdeps/unix/sysv/linux/dl-origin.c: Inline readlink syscall. * sysdeps/unix/sysv/linux/fcntl.c: If compiled without cancellation support, make sure the helper function is inlined. * sysdeps/unix/sysv/linux/pread.c: Likewise. * sysdeps/unix/sysv/linux/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c: Likewise.
2004-07-05Update.Ulrich Drepper
2004-07-05 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c (dl_main): Mark dyn_temp with attribute_relro.
2004-03-27Update.Ulrich Drepper
2004-03-26 Ulrich Drepper <drepper@redhat.com> * elf/dl-caller.c: New file. * include/caller.h: New file. * Makefile (distribute): Add include/caller.h. * elf/Makefile (dl-routines): Add dl-caller. * elf/dl-load.c (_dl_map_object_from_fd): Record l_text_end. * elf/dl-open.c (check_libc_caller): Removed. (dl_open_worker): Use __check_caller instead. * elf/rtld.c (_rtld_global_ro): Initialize _dl_check_caller. (_dl_start_final): Record l_text_end for ld.so map. (dl_main): Record l_text_end for main object and vdso. * include/link.h (struct link_map): Add l_text_end field. * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Add _dl_check_caller field. Define enum allowmask. Add declaration of _dl_check_caller. * sysdeps/unix/sysv/linux/dl-execstack.c: Also use __check_caller test.
2004-03-08* elf/rtld.c (_rtld_global_ro) [MAP_COPY]: Don't set _dl_unload_cache.Roland McGrath
* sysdeps/mach/hurd/dl-sysdep.c (_dl_important_hwcaps): Don't use INTUSE with _dl_signal_error.
2004-03-07Update.Ulrich Drepper
2004-03-07 Ulrich Drepper <drepper@redhat.com> * sysdeps/generic/ldsodefs.h: Move _dl_initial_searclist, _dl_hp_timing_overhead, _dl_init_all_dirs, and the content of dl-procinfo.c from _rtld_global to _rtld_global_ro. * elf/rtld.c: Adjust initializer for _rtld_global_ro. * elf/dl-close.c: Use GLRO instead of GL where appropriate. * elf/dl-libc.c: Likewise. * elf/dl-load.c: Likewise. * sysdeps/i386/dl-procinfo.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. * sysdeps/ia64/hp-timing.h: Likewise. * sysdeps/sparc/sparc32/sparcv9/hp-timing.h: Likewise. * sysdeps/sparc/sparc64/hp-timing.h: Likewise. * sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Likewise. * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h: Likewise.
2004-03-07Update.Ulrich Drepper
2004-03-06 Ulrich Drepper <drepper@redhat.com> * elf/dl-lookup.c: We don't need for specialized lookup functions. Combining the functionality does not slow down relocation processing, it might even speed it up a little. * sysdeps/generic/ldsodefs.h: Adjust prototypes for lookup function. Add only one function pointer to rtlf_global_ro. * elf/do-lookup.h: Replace #ifs with ifs. * elf/dl-libc.c: Adjust _dl_lookup_* callers. * elf/dl-reloc.c: Likewise. * elf/dl-runtime.c: Likewise. * elf/dl-sym.c: Likewise. * elf/rtld.c: Likewise. Adjust _rtld_global_ro initialization. * sysdeps/generic/ldsodefs.h (__rtld_local_attribute__, __rtld_global_attribute__): Undef after use. (_rtld_local_ro): Define __rtld_local_attribute__ with just hidden if available. * sysdeps/alpha/Subdirs: New file. * sysdeps/alpha/soft-fp/Makefile: New file. * sysdeps/alpha/soft-fp/Versions: New file. * sysdeps/alpha/soft-fp/local-soft-fp.h: New file. * sysdeps/alpha/soft-fp/ots_add.c: New file. * sysdeps/alpha/soft-fp/ots_cmp.c: new file. * sysdeps/alpha/soft-fp/ots_cmpe.c: New file. * sysdeps/alpha/soft-fp/ots_cvtqux.c: New file. * sysdeps/alpha/soft-fp/ots_cvtqx.c: New file. * sysdeps/alpha/soft-fp/ots_cvttx.c: New file. * sysdeps/alpha/soft-fp/ots_cvtxq.c: New file. * sysdeps/alpha/soft-fp/ots_cvtxt.c: New file. * sysdeps/alpha/soft-fp/ots_div.c: New file. * sysdeps/alpha/soft-fp/ots_mul.c: New file. * sysdeps/alpha/soft-fp/ots_nintxq.c: New file. * sysdeps/alpha/soft-fp/ots_sub.c: New file.
2004-03-06Update.Ulrich Drepper
* elf/dl-fini.c (_dl_fini): Combine _dl_debug_printf calls. * elf/rtld.c (print_statistics): Likewise.
2004-03-06Update.Ulrich Drepper
2004-03-06 Ulrich Drepper <drepper@redhat.com> * elf/dl-open.c: No need to pass any parameter to _dl_start_profile. They are the same in both places. * elf/dl-profile.c: Likewise. * elf/rtld.c: Likewise. * sysdeps/generic/ldsodefs.h: Likewise. * elf/dl-support.c: Define _dl_profile_output variable. Initialize it.
2004-03-06Update.Ulrich Drepper
* elf/Versions: Remove functions which are not exported anymore. * dlfcn/dlerror.c: Call ld.so functions through GLSO. * dlfcn/dlinfo.c: Likewise. * elf/dl-close.c: Likewise. * elf/dl-libc.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-sym.c: Likewise. * sysdeps/generic/libc-start.c: Likewise. * elf/dl-debug.c: Remove *_internal definition. Don't use INTUSE for functions which are not exported anymore. * elf/dl-deps.c: Likewise. * elf/dl-dst.h: Likewise. * elf/dl-error.c: Likewise. * elf/dl-fini.c: Likewise. * elf/dl-init.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-misc.c: Likewise. * elf/dl-profile.c: Likewise. * elf/dl-profstub.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/dl-runtime.c: Likewise. * elf/dl-version.c: Likewise. * elf/do-lookup.h: Likewise. * include/dlfcn.h: Likewise. * sysdeps/generic/dl-cache.c: Likewise. * sysdeps/generic/dl-fptr.c: Likewise. * sysdeps/generic/dl-origin.c: Likewise. * sysdeps/generic/dl-sysdep.c: Likewise. * sysdeps/generic/dl-tls.c: Likewise. * sysdeps/generic/ldsodefs.h: Likewise. * sysdeps/i386/dl-tls.h: Likewise. * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. * elf/rtld.c: Likewise. Export function though _rtld_global_ro. * generic/dl-fptr.c: Likewise. * mach/hurd/dl-sysdep.c: Likewise. * unix/sysv/linux/ia64/dl-static.c: Likewise. * unix/sysv/linux/ia64/getpagesize.c: Likewise. * unix/sysv/linux/m68k/getpagesize.c: Likewise. * unix/sysv/linux/sparc/sparc32/getpagesize.c: Likewise.
2004-03-05Update.Ulrich Drepper
* sysdeps/generic/ldsodefs.h (struct rtld_global): Move dl_debug_fd to rtld_global_ro. * elf/rtld.c: Use GLRO instead of GL for dl_debug_fd. * elf/dl-misc.c: Likewise.
2004-03-05Update.Ulrich Drepper
* sysdeps/sparc/sparc64/dl-machine.h: Likewise. * sysdeps/sparc/sparc32/dl-machine.h: Likewise. * sysdeps/s390/s390-64/dl-machine.h: Likewise. * sysdeps/s390/s390-32/dl-machine.h: Likewise. * sysdeps/powerpc/powerpc64/dl-machine.h: Likewise. * sysdeps/powerpc/powerpc32/dl-machine.c: Likewise. * sysdeps/m68k/dl-machine.h: Likewise. * sysdeps/ia64/dl-machine.h: Likewise. * sysdeps/arm/dl-machine.h: Likewise. * sysdeps/alpha/dl-machine.h: Likewise.
2004-02-28Update.Ulrich Drepper
* elf/rtld.c (dl_main): Adjust l->l_ld of the vDSO by l->l_addr. * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Only set GL(dl_sysinfo) if non-zero.
2004-02-26Update.Ulrich Drepper
2004-02-26 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c (dl_main): Correctly set up l_map_end and l_addr in vDSO's link_map, don't assume l_addr == 0. Set GL(dl_sysinfo) from e_entry only if AT_SYSINFO not present and adjust by l_addr. Take vDSO into account when inserting rtld into _dl_loaded chain.
2004-02-20Update.Ulrich Drepper
2004-02-19 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/generic/libc-start.c [LIBC_START_DISABLE_INLINE] (STATIC): Define as static. * sysdeps/powerpc/elf/libc-start.c: Define LIBC_START_DISABLE_INLINE because gcc does not allow inline of functions that call setjmp. 2004-02-19 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/powerpc64/Makefile: Use -finline-limit. 2004-02-19 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c (_dl_argv): If DL_ARGV_NOT_RELRO defined, don't use attribute_relro for _dl_argv. * sysdeps/alpha/dl-machine.h (DL_ARGV_NOT_RELRO): Define. * sysdeps/ia64/dl-machine.h (DL_ARGV_NOT_RELRO): Define. * sysdeps/sparc/sparc32/dl-machine.h (DL_ARGV_NOT_RELRO): Define. * sysdeps/sparc/sparc64/dl-machine.h (DL_ARGV_NOT_RELRO): Define. vfork instead of fork.
2004-02-17Update.Ulrich Drepper
* elf/rtld.c (dl_main): Don't fail execution if file named in ld.so.preload is not present.
2004-01-27Update.Ulrich Drepper
2004-01-26 David Mosberger <davidm@hpl.hp.com> * elf/link.h (struct dl_phdr_info): Fix typo in comment. * elf/rtld.c (dl_main): After incrementing dl_nloaded, also increment dl_load_adds. * elf/dl-iteratephdr.c (__dl_iterate_phdr): Replace GL(dl_load_subs) with equivalent GL(dl_load_adds - GL(dl_nloaded). (dl_iterate_phdr): Likewise. * elf/dl-close.c (_dl_close): Delete increment of GL(dl_load_subs). * elf/dl-support.c: Remove global variable _dl_load_subs. * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove _dl_load_subs member. 2004-01-27 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c (_dl_start_final): Don't set l_relro_* here. (_dl_start): And neither here. (dl_main): Set GL(dl_loaded)->l_relro_* and GL(dl_rtld_map)->l_relro_*.
2004-01-24Update.Ulrich Drepper
2004-01-22 Jakub Jelinek <jakub@redhat.com> * elf/dl-reloc.c (_dl_relocate_object): Move PT_GNU_RELRO protection into... (_dl_protect_relro): New routine. * sysdeps/generic/ldsodefs.h (_dl_protect_relro): New prototype. * elf/rtld.c (_dl_start_final): Copy l_relro_addr and l_relro_size from bootstrap_map. (_dl_main): Don't set GL(_dl_loaded)->l_relro_{addr,size} here. Call _dl_protect_relro for libraries if prelinking.
2004-01-16Update.Ulrich Drepper
2004-01-15 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c: Handle platforms with HP_TIMING_NONAVAIL defined.
2004-01-15Update.Ulrich Drepper
* elf/rtld.c: Initialize _dl_argv to allow aliasing.
2004-01-15Update.Ulrich Drepper
2004-01-14 Ulrich Drepper <drepper@redhat.com> * configure.in: Define HAVE_Z_RELRO if the linker supports -z relro. * config.h.in: Add entry for HAVE_Z_RELRO. * include/libc-symbols.h: Define attribute_relro. * elf/dl-load.c: Add attribute_relro to env_path_list, capstr, ncapstr, max_capstrlen, and max_dirnamelen definitions. * elf/rtld.c: Add attribute_relro to _dl_argc, _dl_argv, _dl_skip_args, load_time, start_time, library_path, preloadlist, version_info, any_debug. Remove rtld_total_time. Make it a local variable. Pass pointer to it to print_statistics. Change print_statistics accordingly. * sysdeps/generic/dl-sysdep.c: Add attribute_relro to _dl_auxv. Use attribute_relro instead of explicitly assigning variable to the .data.rel.ro section for __libc_enable_secure and __libc_stack_end. * sysdeps/generic/ldsodefs.h: Declare __libc_stack_end, _dl_argc, _dl_argv, _dl_argv_internal with attribute_relro.
2004-01-14Update.Ulrich Drepper
2004-01-13 Ulrich Drepper <drepper@redhat.com> * sysdeps/x86_64/dl-machine.h: Include <tls.h>. * elf/rtld.c (_dl_start_final): Initialze __libc_stack_end here. * sysdeps/generic/dl-sysdep.c: Define __libc_stack_end with rtld_hidden_def and move into .data.rel.ro section. * sysdeps/generic/ldsodefs.h: Declare __libc_stack_end with rtld_hidden_proto. * sysdeps/generic/libc-start.c: Only initialize __libc_stack_end here if !SHARED. * sysdeps/unix/sysv/linux/dl-execstack.c (_dl_make_stack_executable): Move common code in front. Use __builtin_expect.
2004-01-13Update.Ulrich Drepper
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.
2003-12-20Update.Ulrich Drepper
2003-12-20 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Define. * sysdeps/unix/sysv/linux/getpid.c: New file.
2003-12-17Update.Ulrich Drepper
2003-12-17 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c: Don't use strong_alias to define _rtld_local. This removes the visibility attributes which might be defined earlier for some gcc versions. Instead spell out what strong_alias does plus the visibility.
2003-12-10Update.Ulrich Drepper
2003-12-02 David Mosberger <davidm@hpl.hp.com> * sysdeps/ia64/elf/initfini.c: Add unwind info. * sysdeps/ia64/dl-machine.h (elf_machine_matches_host): Mark with attribute "unused". (elf_machine_dynamic): Mark with attributes "unused" and "const". (elf_machine_runtime_setup): Likewise. * sysdeps/generic/dl-fptr.c (make_fptr_table): Mark with attribute "always_inline". * sysdeps/ia64/dl-machine.h (__ia64_init_bootstrap_fdesc_table): Likewise. * configure.in: Check whether compiler has libunwind support. * config.make.in (have-cc-with-libunwind): New variable. * config.h.in (HAVE_CC_WITH_LIBUNWIND): New macro. * Makeconfig (gnulib): If have-cc-withh-libunwind is "yes", also mention -lunwind. 003-11-12 David Mosberger <davidm@hpl.hp.com> * sysdeps/unix/sysv/linux/ia64/sysdep.h: Define DO_CALL_VIA_BREAK. Redefine DO_CALL to use vdso if supported, otherwise DO_CALL_VIA_BREAK. Likewise for DO_INLINE_SYSCALL. Make INTERNAL_SYSCALL use DO_INLINE_SYSCALL. * sysdeps/unix/sysv/linux/ia64/vfork.S: Use DO_CALL_VIA_BREAK() instead of DO_CALL(). * sysdeps/unix/sysv/linux/ia64/clone2.S: Use break directly instead of DO_CALL(). * sysdeps/unix/sysv/linux/ia64/brk.S (__curbrk): Restructure it to take advantage of DO_CALL() macro. * sysdeps/unix/sysv/linux/ia64/setcontext.S: Likewise. * sysdeps/unix/sysv/linux/ia64/getcontext.S: Likewise. * elf/rtld.c (dl_main): Restrict dl_sysinfo_dso check to first program header. On ia64, the check failed previously because there are two program headers. * sysdeps/generic/s_nexttowardf.c: Likewise. * math/bug-nexttoward.c: New file.
2003-11-26Update.Ulrich Drepper
2003-11-25 Ulrich Drepper <drepper@redhat.com> * posix/runptests.c (main): Make errors fatal. * posix/PTESTS: One test in GA135 and GA136 check functionality which seems not guaranteed. 2003-11-25 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (re_search_internal): If prune_impossible_nodes returned REG_NOMATCH, set match_last to -1. Don't initialize pmatch[0] needlessly. Fix comment. (prune_impossible_nodes): Don't segfault on NULL state_log entry. (set_regs): Fix comment. * posix/regcomp.c (parse_bracket_exp): Only set has_plural_match if adding both SIMPLE_BRACKET and COMPLEX_BRACKET. (build_charclass_op): Set has_plural_match if adding both SIMPLE_BRACKET and COMPLEX_BRACKET. * posix/bug-regex11.c (tests): Fix register values for one commented out test. Add new tests. * posix/regex_internal.c (re_string_allocate): Make sure init_len is at least dfa->mb_cur_max. (re_string_reconstruct): If is_utf8, don't fall back into re_string_skip_chars just because idx points into a middle of valid UTF-8 character. Instead, set the wcs bytes which correspond to the partial character bytes to WEOF. * posix/regexec.c (re_search_internal): Allocate input.bufs_len + 1 instead of dfa->nodes_len + 1 state_log entries initially. * posix/bug-regex20.c (main): Uncomment backwards case insensitive tests.
2003-10-27Update.Ulrich Drepper
* elf/rtld.c (map_doit): Pass __RTLD_OPENEXEC in last parameter to _dl_map_object.
2003-10-27Update.Ulrich Drepper
* include/dlfcn.h (__RTLD_OPENEXEC): Define. * elf/dl-load.c (_dl_map_object_from_fd): Don't allow loading executables unless __RTLD_OPENEXEC flag is present. * elf/rtld.c (dl_main): Pass __RTLD_OPENEXEC flag to _dl_map_object when loading the executable. reverse lookup format for IPv6 addresses is using bitstring and * resolv/ns_name.c: Implement encoding and decoding bitstring in
2003-10-15Update.Ulrich Drepper
2003-10-15 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c (print_statistics): Print also number of relative relocations.
2003-10-092003-10-09 Roland McGrath <roland@redhat.com>Roland McGrath
* elf/rtld.c (dl_main): Don't set l_name for sysinfo DSO, since there is no file to name.
2003-10-01* elf/rtld.c (dl_main): Add cast in last change.Roland McGrath
2003-09-30Update.Ulrich Drepper
2003-09-30 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c (dl_main): Also set l_map_start. 2003-09-30 Daniel Jacobowitz <drow@mvista.com> * elf/rtld.c (dl_main): Set l_libname and l_name for the sysinfo DSO to work around kernel problem.
2003-09-24* elf/rtld.c (dl_main): In rtld_is_main case, reinitializeRoland McGrath
GL(dl_stack_flags) according to rtld's own PT_GNU_STACK. Move GL(dl_make_stack_executable_hook) initialization up. * elf/tst-execstack-prog.c: New file. * elf/Makefile (tests-execstack-yes): Add it. (LDFLAGS-tst-execstack-prog): New variable.
2003-09-232003-09-23 Roland McGrath <roland@redhat.com>Roland McGrath
* sysdeps/generic/ldsodefs.h (struct rtld_global): Add _dl_stack_flags and _dl_make_stack_executable_hook. Declare _dl_make_stack_executable. * elf/rtld.c (_rtld_global): Add initializer for _dl_stack_flags. (dl_main): Reset _dl_stack_flags according to PT_GNU_STACK phdr. Initialize _dl_make_stack_executable_hook. * elf/dl-support.c: Define those new variables. (_dl_non_dynamic_init): Scan phdrs for PT_GNU_STACK. (_dl_phdr): Fix type. * elf/dl-load.c (_dl_map_object_from_fd): Grok PT_GNU_STACK phdr and enable execute permission for the stack if necessary. * sysdeps/generic/dl-execstack.c: New file. * elf/Makefile (dl-routines): Add it. * elf/Versions (ld: GLIBC_PRIVATE): Add _dl_make_stack_executable. * sysdeps/unix/sysv/linux/dl-execstack.c: New file.
2003-08-08Update.Ulrich Drepper
2003-08-07 Jakub Jelinek <jakub@redhat.com> * sysdeps/generic/ldsodefs.h (_rtld_global): Add _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive. * elf/rtld.c (rtld_lock_default_lock_recursive, rtld_lock_default_unlock_recursive): New functions. (dl_main): Initialize _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive. 2003-08-05 Jakub Jelinek <jakub@redhat.com> * elf/ldconfig.c (main): Append SLIBDIR and LIBDIR to config_file directories instead of prepending.
2003-07-31Update.Ulrich Drepper
2003-07-31 Jakub Jelinek <jakub@redhat.com> * dlfcn/dlerror.c (once): New. (dlerror): Call __libc_once. (_dlerror_run): Remove once. 2003-07-31 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext): Sync with 2.5.7 and 2.5.73 kernel changes. 2003-07-31 Jakub Jelinek <jakub@redhat.com> * dlfcn/eval.c (funcall): Add noinline attribute to shut up warnings. * elf/rtld.c (dl_main): Cast ElfW(Addr) arguments with %Zx/%Zd formats to size_t. * elf/dl-lookup.c (_dl_debug_bindings): Likewise. * elf/tst-tls6.c (do_test): Use %zd format for l_tls_modid. * elf/tst-tls8.c (do_test): Use %zd format for modid1 and modid2. * gmon/tst-sprofil.c (main): Add parens to shut up warning. * iconv/tst-iconv3.c (main): Use %td instead of %zd for pointer difference argument. * stdio-common/tst-wc-printf.c (main): Cast arguments with %C format to wint_t. * stdlib/tst-limits.c (main): For WORD_BIT and LONG_BIT, use %d format and cast expected value to int. * sysdeps/generic/libc-start.c (STATIC): Add __attribute__((always_inline) if LIBC_START_MAIN is already defined. * sysdeps/powerpc/fpu/w_sqrt.c (a_nan, a_inf): Change from uint32_t to ieee_float_shape_type. (__sqrt): Avoid type punning. * sysdeps/powerpc/fpu/w_sqrtf.c (a_nan, a_inf): Change from uint32_t to ieee_float_shape_type. (__sqrtf): Avoid type punning. * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Don't define refsym if in dl-conflict.c. * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise. * sysdeps/unix/sysv/linux/i386/semctl.c (union semun): Add __old_buf. (__new_semctl): Shut up warning. * sysdeps/unix/sysv/linux/semctl.c (union semun): Add __old_buf. (__new_semctl): Shut up warning. * sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Wrap long lines. Change old into union of __old_shmid_ds and __old_shminfo structs. Adjust all users. * wcsmbs/wcsmbs-tst1.c (main): Cast arguments with %C format to wint_t. 2003-07-31 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/utimes.c (__utimes): Fix actime and modtime computation. * sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise. * sysdeps/posix/utimes.c (__utimes): Likewise.
2003-07-31Update.Ulrich Drepper
2003-07-30 Jakub Jelinek <jakub@redhat.com> * elf/dl-reloc.c (_dl_allocate_static_tls): Don't return any value, call dl_signal_error directly. If already relocated, call GL(dl_init_static_tls) directly, otherwise queue it for later. (CHECK_STATIC_TLS): Undo 2003-07-24 change. * elf/rtld.c (dl_main): Initialize GL(dl_init_static_tls). * elf/dl-open.c (dl_open_worker): Call GL_dl_init_static_tls for all static TLS initializations delayed in _dl_allocate_static_tls. * elf/dl-support.c (_dl_init_static_tls): New variable. * include/link.h (struct link_map): Add l_need_tls_init. * sysdeps/generic/ldsodefs.h (_rtld_global): Add _dl_init_static_tls. (_dl_nothread_init_static_tls): New prototype. (_dl_allocate_static_tls): Adjust prototype. * elf/tls-macros.h (VAR_INT_DEF): Add alignment directive. elf_machine_rela_relative): Adjust. (CHECK_STATIC_TLS): _dl_allocate_static_tls can fail now.
2003-07-24Update.Ulrich Drepper
2003-07-24 Ulrich Drepper <drepper@redhat.com> * include/link.h (struct link_map): Add l_tls_firstbyte_offset field. * sysdeps/generic/dl-tls.c [TLS_TCB_AT_TP] (_dl_determine_tlsoffset): Fix calculation of offsets to take misalignment of first byte in file into account. * elf/dl-load.c (_dl_map_object_from_fd): Initialize l_tls_firstbyte_offset field. * elf/rtld.c (_dl_start_final, _dl_start, dl_main): Likewise. * elf/dl-reloc.c (_dl_allocate_static_tls): Change return type to int. Take l_tls_firstbyte_offset information into account. (CHECK_STATIS_TLS): _dl_allocate_static_tls can fail now. * sysdeps/generic/ldsodefs.h: Adjust _dl_allocate_static_tls prototype. * elf/Makefile: Add rules to build and run tst-tls14. * elf/tst-tls14.c: New file. * elf/tst-tlsmod14a.c: New file. * elf/tst-tlsmod14b.c: New file.
2003-06-16Update.Ulrich Drepper
2003-06-16 Ulrich Drepper <drepper@redhat.com> * elf/rtld.c (dl_main): Use l_map_start not l_addr in Phdr computation so that prelinking wroks. * inet/netinet/ip6.h (IP6OPT_PAD1, IP6OPT_PADN): Define.
2003-06-16Update.Ulrich Drepper
* elf/dl-iteratephdr.c (__dl_iterate_phdr): Don't skip dynamic linker's map. * elf/rtld.c (dl_main): Initialize l_phdr and l_phnum of of the dynamic linker's map.
2003-05-20Update.Update.Ulrich Drepper
2003-05-20 Jakub Jelinek <jakub@redhat.com> * elf/dynamic-link.h (elf_get_dynamic_info): Add temp argument. If temp != NULL, copy dynamic entries which need relocation to temp array before relocating. (DL_RO_DYN_TEMP_CNT): Define. * elf/dl-load.c (_dl_map_object_from_fd): Adjust caller. * elf/rtld.c (_dl_start): Likewise. (dl_main): Likewise. Add dyn_temp static variable.
2003-05-14Update.Ulrich Drepper
2003-05-14 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c (dl_main): For LD_TRACE_PRELINKING print search scope even if no DT_NEEDED is present.
2003-05-04Update.Ulrich Drepper
2003-04-22 Roland McGrath <roland@redhat.com> * elf/elf.h (AT_SYSINFO_EHDR): New macro, replaces AT_SYSINFO_EH_FRAME. * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove dl_sysinfo_eh_frame member, add dl_sysinfo_dso member instead. * elf/dl-support.c: Update defn. * sysdeps/generic/libc-start.c: Don't call __register_frame_info_bases. * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]: Set GL(dl_sysinfo_dso) from AT_SYSINFO_EHDR. (_dl_show_auxv): Grok AT_SYSINFO_EHDR, not AT_SYSINFO_EH_FRAME. * elf/rtld.c (dl_main) [NEED_DL_SYSINFO]: If GL(dl_sysinfo_dso) is set, set up a link_map for the preloaded, prelinked object.
2003-04-25Update.Ulrich Drepper
2003-04-22 Jakub Jelinek <jakub@redhat.com> * include/link.h (NO_TLS_OFFSET): Define to 0 if not defined. * elf/dl-close.c (_dl_close): Use NO_TLS_OFFSET. * elf/dl-object.c (_dl_new_object): Initialize l_tls_offset to NO_TLS_OFFSET. * elf/rtld.c (_dl_start_final, _dl_start): Likewise. * elf/dl-reloc.c (CHECK_STATIC_TLS): Use NO_TLS_OFFSET. * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Likewise. * sysdeps/powerpc/dl-tls.h (TLS_TPREL_VALUE): Don't subtract TLS_TCB_SIZE.
2003-04-06Update.Ulrich Drepper
2003-04-06 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c: Revert 2003-03-14 change. * elf/dl-conflict.c (_dl_resolve_conflicts): Move #if ! ELF_MACHINE_NO_RELA conditional into the routine.