2010-07-22 Mark Hatle * src/dso.c: Add DSO_READONLY conditionals * src/dso-readonly.c: remove * src/Makefile.am: switch RTLD dep to dso.c, pass DSO_READONLY * configure.in: Add AM_PROG_CC_C_O 2010-07-22 Mark Hatle * Merge to upstream r185 * Resync dso-readonly.c from dso.c 2010-06-18 Mark Hatle * Sync src/dso-readonly.c and ... * Integrate patch from 2010-05-06 Andrew Stubbs * src/dso.c (adjust_dso): Support MIPS debug sections. * src/prelink.h (SHT_MIPS_DWARF): New define. 2009-06-15 Mark Hatle * Merge to upstream r184 * Resync dso-readonly.c from dso.c * Cleanup ChangeLog.cross 2009-06-15 Mark Hatle * Integrate prelinker/cross-prelinking patches 2009-09-01 Maciej W. Rozycki Issue #5273 * src/arch-mips.c (mips_prelink_reloc): Resolve R_MIPS_TLS_DTPMOD32 and R_MIPS_TLS_DTPMOD64 relocations in executables. 2009-04-27 Maciej W. Rozycki Issue #5165 * src/ld-libs.c (load_ld_so_conf): Fix a buffer overrun. Don't record empty paths. 2009-04-23 Maciej W. Rozycki Issue #5165 * src/ld-lookup.c (rtld_elf_hash): Handle an initial NULL character correctly. Reformat for consistency with rtld_elf_gnu_hash() 2009-04-23 Maciej W. Rozycki Issue #5165 * src/ld-do-lookup.h (FCT): Remove the hash argument and calculate the value within the function. Call do_lookup_get_first() and do_lookup_get_next() to iterate over symbols. * src/prelink.h (dynamic_info_is_set): Convert macro to a function. Return 1 for success rather than the bit set. * src/ld-libs.h (ldlibs_link_map): Add l_gnu_hash, l_maskword64, l_nmaskwords, l_shift and l_maskwords members. * src/ld-libs.c (create_ldlibs_link_map): Handle the GNU hash. * src/ld-lookup.c (rtld_elf_gnu_hash): New function. (rtld_elf_any_hash): Likewise. (rtld_elf_hash): Move above "ld-do-lookup.h" inclusions. (do_lookup_get_first, do_lookup_get_next): New functions. (rtld_lookup_symbol): Remove hash calculation. (rtld_lookup_symbol_versioned): Likewise. 2009-04-23 Maciej W. Rozycki Issue #5165 * src/execle_open.c (execve_open): Add missing pid initialisation. 2010-06-15 Mark Hatle * Merge to upstream r174 * src/arch-mips.c, src/conflict.c, src/cxx.c, src/main.c, src/verify.c: fix items missed in the merge * Resync dso-readonly.c from dso.c 2010-06-14 Mark Hatle * Integrate prelinker/cross-prelinking patches 2009-08-06 Joseph Myers * src/dwarf2.c (dwarf2_write_le64, dwarf2_write_be64): Shift by 56 not 58 for MSB. 2009-03-19 Joseph Myers Issue #4626 * src/cache.c, src/dso-readonly.c, src/dso.c, src/execstack.c, src/gather.c, src/layout.c, src/mapfile.c, src/verify.c: fsync file descriptors before closing them. 2008-09-23 Joseph Myers * src/arch-arm.c (arm_prelink_conflict_rela): Correct R_ARM_TLS_TPOFF32 handling. 2008-09-18 Joseph Myers * src/ld-libs.c (reloc_type_class, determine_tlsoffsets): Handle SPARC. * src/arch-sparc64.c (sparc64_prelink_rela, sparc64_prelink_conflict_rela, sparc64_undo_prelink_rela, sparc64_reloc_class): Handle TLS relocations. (PL_ARCH(sparc64)): Update mmap_base and mmap_end for TASK_UNMAPPED_BASE change to 0xfffff80100000000. 2008-10-02 Maciej W. Rozycki * src/arch-mips.c (mips_prelink_reloc): Do not complain about TLS_DTPMOD32 or TLS_DTPMOD64 relocations found in executables. 2008-09-03 Maciej W. Rozycki * src/prelink.h (Elf64_Byte): New definition. (R_MIPS_TLS_DTPMOD64): New macro. (R_MIPS_TLS_DTPREL64): Likewise. (R_MIPS_TLS_TPREL64): Likewise. (RSS_UNDEF): Likewise. (PL_ARCH): Use plarch_##F as the name of the struct in all variants. * src/reloc-info.c: New file. * src/reloc-info.h: Likewise. * src/arch-mips.c (mips_buf_read_addr): New function. (mips_buf_write_addr): Likewise. (mips_arch_adjust): Replace calls to buf_read_une32() and buf_write_ne32() with ones to mips_buf_read_addr() and mips_buf_write_addr() respectively. (mips_read_addend): Rename to... (mips_read_32bit_addend): ... this. (mips_write_addend): Rename to... (mips_write_32bit_addend): ... this. (mips_read_64bit_addend): New function. (mips_write_64bit_addend): Likewise. (mips_adjust_reloc): Handle 64-bit REL relocations. Use reloc_r_sym() and reloc_r_type() in place of GELF_R_SYM() and GELF_R_TYPE() respectively. (mips_prelink_64bit_reloc): New function. (mips_prelink_reloc): Handle 64-bit REL and GLOB_DAT relocations. Handle TLS_DTPMOD64, TLS_DTPREL64 and TLS_TPREL64 relocations. Use reloc_r_sym() and reloc_r_type(). (mips_prelink_rel): Handle 64-bit REL relocations. Use reloc_r_sym(), reloc_r_type() and reloc_r_info_ext() (replacing GELF_R_INFO()). (mips_prelink_conflict_reloc): Handle 64-bit REL relocations. Handle TLS_DTPMOD64, TLS_DTPREL64 and TLS_TPREL64 relocations. Use reloc_r_sym(), reloc_r_type() and reloc_r_info_ext(). (mips_arch_prelink_conflict): Use mips_buf_read_addr(). Use reloc_r_info_ext(). (mips_apply_conflict_rela): Handle 64-bit REL relocations. Use reloc_r_type(). Use mips_buf_read_addr() and mips_buf_write_addr(). (mips_apply_reloc): Handle 64-bit REL relocations. Use reloc_r_sym() and reloc_r_type(). (mips_rel_to_rela): Handle 64-bit REL relocations. Handle TLS_DTPMOD64, TLS_DTPREL64 and TLS_TPREL64 relocations. Use reloc_r_sym() and reloc_r_type(). (mips_rela_to_rel): Handle 64-bit REL and GLOB_DAT relocations. Handle TLS_DTPMOD64, TLS_DTPREL64 and TLS_TPREL64 relocations. Use reloc_r_sym() and reloc_r_type(). (mips_need_rel_to_rela): Use data obtained with gelfx_getshdr() to determine the size of a relocation entry. Use gelfx_getrel() to retrieve them. Handle 64-bit REL relocations. Handle TLS_DTPMOD64, TLS_DTPREL64 and TLS_TPREL64 relocations. Use reloc_r_sym() and reloc_r_type() instead of ELF32_R_SYM() and ELF32_R_TYPE() respectively. (mips_reloc_class): Handle TLS_DTPMOD64, TLS_DTPREL64 and TLS_TPREL64 relocations. (mips_arch_prelink): Use mips_buf_read_addr() and mips_buf_write_addr(). (mips_arch_undo_prelink): Likewise. (mips_undo_prelink_rel): Handle 64-bit GLOB_DAT relocations. Use reloc_r_sym(), reloc_r_type() and reloc_r_info_ext(). (mips64): New PL_ARCH. * src/prelink.c (prelink_prepare): Handle SHT_MIPS_OPTIONS. * src/conflict.c (conflict_rela_cmp_dso): New variable. (conflict_rela_cmp): Use conflict_rela_cmp_dso and reloc_r_sym(). (get_relocated_mem): Use reloc_r_type(). (prelink_add_copy_rel): Use reloc_r_sym() and reloc_r_type(). (prelink_build_conflicts): Use reloc_r_sym(), reloc_r_type() and reloc_r_info(). Pass dso to conflict_rela_cmp() through conflict_rela_cmp_dso. (prelink_find_copy_rela): Use reloc_r_type(). * src/cxx.c (remove_redundant_cxx_conflicts): Use reloc_r_sym(), reloc_r_type() and reloc_r_info(). * src/ld-libs.c (do_rel_section): Use reloc_r_sym() and reloc_r_type(). * src/Makefile.am (common_SOURCES): Add reloc-info.c and reloc-info.h. (prelink_rtld_SOURCES): Likewise. * src/Makefile.in: Regenerate. * configure.in: Check for the Elf64_Byte type. Require autoconf 2.50. * configure: Regenerate. 2008-09-03 Maciej W. Rozycki * src/arch-mips.c (mips_undo_prelink_rel): Fix formatting. 2008-09-03 Maciej W. Rozycki * src/arch-mips.c (mips_init_local_got_iterator): Use ELF_T_ADDR to determine the width of GOT entries. (mips_init_global_got_iterator): Likewise. 2008-09-03 Maciej W. Rozycki * src/data.c (buf_read_une##nn): Fix the width of the data transfer used. 2008-03-06 Daniel Jacobowitz * src/ld-do-lookup.h: Check for STO_MIPS_PLT on MIPS. * src/ld-libs.c (reloc_type_class): Handle copy and PLT relocs. * src/prelink.h (R_MIPS_TLS_DTPMOD32, R_MIPS_TLS_DTPREL32) (R_MIPS_TLS_TPREL32, R_MIPS_GLOB_DAT): Remove duplicate definitions. (R_MIPS_COPY, R_MIPS_JUMP_SLOT, STO_MIPS_PLT, DT_MIPS_PLTGOT) (DT_MIPS_PLTNO, DT_MIPS_RWPLT): Define. (DSO): Add info_DT_MIPS_PLTGOT. * src/arch-mips.c (mips_prelink_reloc): Handle R_MIPS_JUMP_SLOT and R_MIPS_COPY. (mips_prelink_conflict_reloc): Handle R_MIPS_COPY. (mips_apply_conflict_rela): Handle R_MIPS_JUMP_SLOT. (mips_apply_reloc): Handle R_MIPS_JUMP_SLOT and R_MIPS_COPY. (mips_rel_to_rela, mips_rela_to_rel): Handle R_MIPS_COPY. (mips_need_rel_to_rela): Handle R_MIPS_COPY and R_MIPS_JUMP_SLOT. Correct error message. (mips_reloc_class): Handle R_MIPS_COPY and R_MIPS_JUMP_SLOT. Use RTYPE_CLASS_VALID by default. (mips_arch_prelink): Save .plt in gotplt[1]. (mips_arch_undo_prelink): Clear gotplt[1]. (mips_undo_prelink_rel): Undo R_MIPS_JUMP_SLOT relocations. (PL_ARCH): Set R_COPY and R_JMP_SLOT. * src/dso.c (read_dynamic): Save DT_MIPS_PLTGOT. * src/dso-readonly.c (read_dynamic): ditto 2007-07-09 Daniel Jacobowitz Issue #1816 * src/wrap-file.c (chroot_canon): Delete. (sysroot_file_name): Use canon_filename. (unsysroot_file_name): Make global. (wrap_canonicalize_file_name): Delete. * src/ld-libs.c (load_dsos): Use prelink_canonicalize. * src/canonicalize.c (canon_filename): Make global. Add chroot, allow_last_link, allow_missing arguments. Handle links inside a chroot. Handle canonicalizing the current directory. Remove debugging output. (prelink_canonicalize): Update. Use unsysroot_file_name. * src/prelink.h (wrap_canonicalize_file_name): Delete prototype. 2007-03-02 Sandra Loosemore * doc/prelink.8: Copy edit. Add entry for --root option. Update list of unsupported systems. 2007-02-16 Daniel Jacobowitz * src/prelink.h (sysroot_file_name): Declare. * src/ld-libs.c (load_dsos): Take host_paths argument. Do not attempt to canonicalize host filenames within the sysroot. Always set canon_filename. (process_one_dso): Update call to load_dsos. Do not redo call to wrap_canonicalize_file_name. 2006-11-30 Mark Shinwell * configure.in: Recognize --with-pkgversion and ---with-bugurl. * src/Makefile.am: Pass package version and bug URL through AM_CFLAGS, together with the new EXECSTACK_PROG. * src/main.c: Use PKGVERSION and REPORT_BUGS_TO. * src/execstack.c: Likewise. Also use EXECSTACK_PROG. Mark Hatle * src/ld-libs.c: Use PRELINK_RTLD_PROG, PKGVERSION and REPORT_BUGS_TO * src/execstack.c: Use EXECSTACK_PROG in (argp_doc) 2006-11-30 Mark Shinwell * wrap-file.c (wrap_stat_body): New. (wrap_lstat64, wrap_stat64): Use wrap_stat_body. 2006-11-28 Mark Shinwell * src/layout.c (layout_libs): Add assertion to check for buffer overflow. * src/ld-libs.c (find_lib_in_path): Add "machine" argument. Skip libraries whose ELF machine type field does not match that argument. (find_lib_by_soname): Add "machine" argument. Pass it to find_lib_in_path. (load_dsos): Determine machine type of input DSO. Pass it to find_lib_by_soname. 2006-11-28 Mark Shinwell * src/gather.c (maybe_pie): New. (gather_func): Use it. 2006-11-28 Mark Shinwell * src/canonicalize.c: Add prelink.h include directive. Use wrap_readlink and wrap_lstat64. * src/prelink.h: Declare wrap_readlink. * src/wrap-file.c (wrap_readlink): New. 2006-10-13 Daniel Jacobowitz * src/execle_open.c (execve_open): Add an error message if execve fails. 2006-10-03 Richard Sandiford * configure.in (AC_CANONICAL_HOST): Remove in favour of... (AC_CANONICAL_SYSTEM): ...this new directive. (AC_ARG_PROGRAM): New directive. * src/Makefile.am (AM_CFLAGS): Define PRELINK_PROG, PRELINK_RTLD_PROG and EXEEXT. (execstack_LDADD): Add -liberty. * src/execstack.c (program_path, prelink_path): New variables. (execstack_make_rdwr): Initialize prelink_path if it has not been set yet. Use make_relative_prefix, PRELINK_PROG and EXEEXT to get the full pathname of the prelink executable. Pass this path to execl() as the name of executable file. (main): Initialize program_path. * src/main.c (argp_program_version, argp_doc): Use PRELINK_PROG as the program name. (main): Handle empty --rtld= arguments first. Always use make_relative_prefix to work out the path of the defalt rtld executable. Also use PRELINK_RTLD and EXEEXT for this purpose. 2010-06-14 Mark Hatle * configure.in: Add option to disable selinux * src/Makefile.am: Stop static linking 2007-08-08 Mark Hatle * src/arch-mips.c: add /lib32/ld.so.1 as an alternative 32-bit linker * src/ld-libs.c: add a check for MIPS n32, and adjust ld_dirs as necessary 2007-10-11 Richard Sandiford * src/space.c (find_readonly_space): If a new PT_LOAD header is needed, first try removing a PT_NULL header. 2006-12-04 Mark Hatle * Merge code from: Richard Sandiford * src/ld-libs.c (reloc_type_class): Handle EM_MIPS. (do_mips_global_relocs): New function. (handle_relocs_in_entry): Call it. (determine_tlsoffsets): Handle EM_MIPS. Richard Sandiford * src/ld-libs.c (do_reloc): New function, split out from do_rel_section. Take the symbol and relocation type as arguments. (do_rel_section): Call it. (handle_relocs_in_entry): New function. (handle_relocs): Call it. 2006-12-04 Mark Hatle * src/elf.h: Update to the latest version of elf.h for MIPS prelink 2006-12-01 Mark Hatle * merge to 20061201 (r151) * src/arch-arm.c: remove read_une32, write_ne32, buf_write_ne32, buf_read_une32 * src/dso-readonly.c: sync to changes in src/dso.c 2006-08-18 Mark Hatle * arch-arm.c: remove prelink_conflict_rela * arch-arm.c: Add big-endian arm support, based on arch-sh.c 2006-08-17 Mark Hatle * data.c, dso.c, prelink.h: when using elfutils/libelf, we need to byte swap only if the type is ELF_T_BYTE. * dso-readonly.c: add get_data prototype change for byteswapping * ld-libs.c: add get_data prototype change for byteswapping 2006-08-10 Mark Hatle * testsuite/Makefile.in: Allow testsuite to run using cross prelink. Disable the run-time tests, but keep all basic prelink testing. * testsuite/ccx1.sh, testsuite/cycle1.sh, testsuite/cycle2.sh testsuite/deps1.sh, testsuite/deps2.sh, testuite/functions.sh testuite/layout1.sh, testuite/layout2.sh, testsuite/movelibs.sh testsuite/quick1.sh, testsuite/quick2.sh, testsuite/quick3.sh testsuite/reloc1.sh, testsuite/reloc2.sh, testsuite/reloc3.sh testsuite/reloc4.sh, testsuite/reloc5.sh, testsuite/reloc6.sh testsuite/reloc7.sh, testsuite/reloc8.sh, testsuite/reloc9.sh testsuite/reloc10.sh, testsuite/reloc11.sh, testsuite/shuffle1.sh testsuite/shuffle2.c, testsuite/shuffle2.sh, testsuite/shuffle3.sh testsuite/shuffle4.sh, testsuite/shuffle5.sh, testsuite/shuffle6.sh testsuite/shuffle7.sh, testsuite/shuffle8.sh, testsuite/tls1.sh testsuite/tls2.sh, testsuite/tls3.sh, testsuite/tls4.sh testsuite/tls5.sh, testsuite/tls6.sh, testsuite/tls7.sh testsuite/undo1.sh: ditto 2006-08-09 Mark Hatle * execstack.c: add WR versioning * ld-libs.c: add argp option processing and WR versioning * main.c: add WR versioning 2006-08-09 Mark Hatle * ld-libs.c: Add --root argument to prelink-rtld 2006-08-09 Mark Hatle * cross-prelink code merged and upreved original code from: MontaVista Software, Inc. CodeSourcery, LLC. * Makefile.am: add prelink-rtld, libiberty * dso-readonly.c: new file based on dso.c * gather.c: use cross-rtld * get.c: use cross-rtld * ld-do-lookup.h: Add ld-do-lookup.h from glibc * ld-libs.c: add cross-rtld functionality * ld-libs.h: ditto * ld-lookup.c: ditto * ld-lookup64.c: ditto * main.c: Add rtld option * prelink.h: add extern rtld variable 2006-08-09 CodeSourcery, LLC. * main.c: if we modified /sbin/init, re-run init 2006-08-08 CodeSourcery, LLC. * arch-arm.c: add ARM EABI support, dynamic_linker_alt * src/dso.c: STT_ARM_TFUNC support * src/get.c: ld-linux.so.3 to the list of ldso names 2006-08-08 CodeSourcery, LLC. * gather.c: add new dynamic_linker_alt * prelink.h: ditto 2006-08-08 MontaVista Software, Inc. * main.c: Add relative sysroot support 2006-08-08 Montavista Software, Inc. * Makefile.am: Add function wrapper support for sysroots * main.c: add --root option * cache.c, doit.c, dso.c, execstack.c, gather.c, get.c, prelink.h, undoall.c, verify.c: Add functional wrappers for sysroot * wrap-file.c: add function wrapper definitions 2006-07-28 Alexandre Oliva * src/cache.c: Avoid SEGFAULT when sorting cache entries (#197451) 2006-07-21 MontaVista Software, Inc. * prelink.c: add PRELINK_TIMESTAMP support 2006-07-21 MontaVista Software, Inc. * dso.c: Don't adjust reloc for debug info 2006-06-30 Mark Hatle * src/elf.h: Make available the elf.h file from glibc 2.3.6 2006-06-10 MontaVista Software, Inc. * arch-sh.c: Fix R_SH_RELATIVE endian swap problem, change max page size