aboutsummaryrefslogtreecommitdiffstats
path: root/ChangeLog.1
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog.1')
-rw-r--r--ChangeLog.1729
1 files changed, 729 insertions, 0 deletions
diff --git a/ChangeLog.1 b/ChangeLog.1
new file mode 100644
index 0000000..c24ba7b
--- /dev/null
+++ b/ChangeLog.1
@@ -0,0 +1,729 @@
+2013-10-05 Jakub Jelinek <jakub@redhat.com>
+
+ * src/arch-s390.c (s390_prelink_conflict_rela): For R_390_IRELATIVE,
+ always use that relocation type in the conflict section.
+
+2013-10-01 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/ifunc.h (IFUNC_ASM): Add s390x and s390 version.
+
+2013-09-30 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
+
+ * src/arch-s390.c (s390_prelink_conflict_rela): Fix handling of
+ R_390_IRELATIVE.
+ * src/arch-s390x.c (s390x_prelink_conflict_rela): Likewise.
+
+2013-07-19 Marek Polacek <polacek@redhat.com>
+
+ * doc/prelink.8 (--usage): Document it.
+ (--layout-page-size=): Likewise.
+
+2013-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ * src/cache.c (prelink_save_cache_check): For ET_CACHE_DYN
+ or ET_UNPRELINKABLE dependencies, call prelink_save_cache_check
+ recursively.
+ * testsuite/Makefile.am (TESTS): Add unprel1.sh.
+ * testsuite/Makefile.in: Regenerated.
+ * testsuite/unprel1.sh: New test.
+ * testsuite/unprel1.c: New file.
+ * testsuite/unprel1lib1.c: New file.
+ * testsuite/unprel1lib2.c: New file.
+
+ * src/prelink.h (R_390_IRELATIVE): Define if not defined.
+
+2013-04-25 Jakub Jelinek <jakub@redhat.com>
+
+ * src/arch-s390.c (s390_adjust_rela, s390_prelink_rela,
+ s390_apply_conflict_rela, s390_prelink_conflict_rela,
+ s390_undo_prelink_rela): Handle R_390_IRELATIVE.
+ * src/arch-s390x.c (s390x_adjust_rela, s390x_prelink_rela,
+ s390x_apply_conflict_rela, s390x_prelink_conflict_rela,
+ s390x_undo_prelink_rela, s390x_reloc_size): Likewise.
+
+2013-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/reloc4.sh: Add libraries to link lines to make
+ testsuite work both with --no-add-needed and with --add-needed,
+ including latest ld.bfd.
+ * testsuite/reloc5.sh: Likewise.
+ * testsuite/reloc8.sh: Likewise.
+ * testsuite/reloc9.sh: Likewise.
+
+2013-04-17 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/ifunc.h (IFUNC_DECL): Fix up .size on ppc64.
+ * testsuite/cxx1.sh: Add libraries to link lines to make
+ testsuite work both with --no-add-needed and with --add-needed,
+ including latest ld.bfd.
+ * testsuite/cxx2.sh: Likewise.
+ * testsuite/cxx3.sh: Likewise.
+ * testsuite/deps1.sh: Likewise.
+ * testsuite/deps2.sh: Likewise.
+ * testsuite/ifunc1.sh: Likewise.
+ * testsuite/ifunc2.sh: Likewise.
+ * testsuite/ifunc3.sh: Likewise.
+ * testsuite/quick1.sh: Likewise.
+ * testsuite/quick2.sh: Likewise.
+ * testsuite/quick3.sh: Likewise.
+ * testsuite/reloc1.sh: Likewise.
+ * testsuite/reloc10.sh: Likewise.
+ * testsuite/reloc11.sh: Likewise.
+ * testsuite/reloc3.sh: Likewise.
+ * testsuite/reloc6.sh: Likewise.
+ * testsuite/reloc7.sh: Likewise.
+ * testsuite/shuffle1.sh: Likewise.
+ * testsuite/shuffle2.sh: Likewise.
+ * testsuite/shuffle3.sh: Likewise.
+ * testsuite/shuffle4.sh: Likewise.
+ * testsuite/shuffle5.sh: Likewise.
+ * testsuite/shuffle6.sh: Likewise.
+ * testsuite/shuffle7.sh: Likewise.
+ * testsuite/shuffle8.sh: Likewise.
+ * testsuite/shuffle9.sh: Likewise.
+ * testsuite/tls1.sh: Likewise.
+ * testsuite/tls2.sh: Likewise.
+ * testsuite/tls3.sh: Likewise.
+ * testsuite/tls4.sh: Likewise.
+ * testsuite/tls5.sh: Likewise.
+ * testsuite/tls6.sh: Likewise.
+ * testsuite/undo1.sh: Likewise.
+
+2012-06-28 Jakub Jelinek <jakub@redhat.com>
+
+ * src/get.c (is_ldso_soname): Add arm dynamic linker SONAMEs.
+
+ * src/dwarf2.h (DW_FORM_GNU_ref_alt,
+ DW_FORM_GNU_strp_alt): Define.
+ * src/dwarf2.c (read_abbrev): Allow those forms.
+ (adjust_attributes): Handle them.
+
+2012-04-10 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dwarf2.c (DEBUG_MACRO): Define.
+ (debug_sections): Add .debug_macro entry.
+
+2012-04-02 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dwarf2.c (adjust_attributes): For DWARF4+ treat
+ DW_AT_data_member_location with DW_FORM_data[48] as
+ large constant instead of loclistptr.
+
+2011-10-12 Jakub Jelinek <jakub@redhat.com>
+
+ * src/main.c (layout_page_size): New variable.
+ (OPT_LAYOUT_PAGE_SIZE): Define.
+ (options): Add --layout-page-size option.
+ (set_default_layout_page_size): New function in i?86/x86_64
+ resp. empty macro on other architectures.
+ (main): Call it.
+ * src/arch-i386.c (i386_layout_libs_init): Fail if
+ l->max_page_size is larger than 2MB and exec_shield is true.
+ Compute reg0s as REG0S rounded up to l->max_page_size
+ boundary and use it instead of REG0S.
+ (i386_layout_libs_pre): Compute reg0s as REG0S rounded up to
+ l->max_page_size boundary and use it instead of REG0S.
+ Fix up a pasto in computation of virt parameter for
+ third i386_find_free_addr call.
+ * src/prelink.h (layout_page_size): New decl.
+ * src/layout.c (layout_libs): Set max_page_size and
+ l.max_page_size to maximum of plarch->max_page_size
+ and layout_page_size. Fail if mmap_base or mmap_end
+ aren't max_page_size aligned.
+ * src/arch-ppc.c (ppc_layout_libs_pre): Give up if
+ l->max_page_size is larger than 64KB.
+
+2011-08-26 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/cxx3.sh: Expect fewer conflicts.
+
+ * src/arch-arm.c (PL_ARCH): Change .dynamic_linker to
+ /lib/ld-linux.so.3.
+
+2011-08-25 Jakub Jelinek <jakub@redhat.com>
+
+ * src/gather.c (gather_func): When looking for PT_PHDR header,
+ skip any PT_LOPROC ... PR_HIPROC phdrs.
+
+ * testsuite/cxx1.sh: Don't check for any "Removing C++ conflict"
+ messages on arm.
+ * testsuite/cxx2.sh: Likewise.
+ * testsuite/cxx3.sh: New test.
+ * testsuite/cxx3.C: New file.
+ * testsuite/cxx3.h: New file.
+ * testsuite/cxx3lib1.C: New file.
+ * testsuite/cxx3lib2.C: New file.
+ * testsuite/Makefile.am (TESTS): Add cxx3.sh.
+ * testsuite/Makefile.in: Regenerated.
+
+2011-08-25 William Cohen <wcohen@redhat.com>
+
+ * testsuite/shuffle2.c: Use %nobits instead of @nobits
+ to be arm assembler friendly.
+ * testsuite/shuffle9.c: Likewise.
+ * testsuite/reloc5.c (main): Likewise.
+
+2011-06-22 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dwarf2.h (DW_OP_GNU_parameter_ref): Define.
+ * src/dwarf2.c (adjust_location_list): Handle
+ DW_OP_GNU_parameter_ref.
+
+2011-05-11 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dwarf2.h (DW_OP_GNU_const_type, DW_OP_GNU_regval_type,
+ DW_OP_GNU_deref_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret):
+ Define.
+ * src/dwarf2.c (adjust_location_list): Handle DW_OP_GNU_const_type,
+ DW_OP_GNU_retval_type, DW_OP_GNU_defer_type, DW_OP_GNU_convert and
+ DW_OP_GNU_reinterpret.
+
+2011-04-01 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dwarf2.h (DW_TAG_GNU_template_template_param,
+ DW_TAG_GNU_template_parameter_pack, DW_TAG_GNU_formal_parameter_pack,
+ DW_TAG_GNU_call_site, DW_TAG_GNU_call_site_parameter,
+ DW_AT_GNU_vector, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
+ DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
+ DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required,
+ DW_AT_GNU_odr_signature, DW_AT_GNU_template_name,
+ DW_AT_GNU_call_site_value, DW_AT_GNU_call_site_data_value,
+ DW_AT_GNU_call_site_target, DW_AT_GNU_call_site_target_clobbered,
+ DW_AT_GNU_tail_call, DW_AT_GNU_all_tail_call_sites,
+ DW_AT_GNU_all_call_sites, DW_AT_GNU_all_source_call_sites,
+ DW_OP_GNU_entry_value): Define.
+ * src/dwarf2.c (adjust_location_list): Handle DW_OP_GNU_entry_value.
+ (adjust_attributes): Handle DW_AT_GNU_call_site_value,
+ DW_AT_GNU_call_site_data_value, DW_AT_GNU_call_site_target and
+ DW_AT_GNU_call_site_target_clobbered.
+
+2010-11-23 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dwarf2.h (DW_OP_GNU_implicit_pointer): Define.
+ * src/dwarf2.c (adjust_location_list): Add CU argument, fix
+ handling of DW_OP_call_ref, handle DW_OP_GNU_implicit_pointer.
+ (adjust_dwarf2_loc): Add CU argument, adjust adjust_location_list
+ caller.
+ (adjust_attributes): Adjust adjust_location_list and
+ adjust_dwarf2_loc callers.
+ (adjust_dwarf2_frame): Likewise.
+
+2010-11-22 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dso.c: Include sys/xattr.h.
+ (copy_xattrs): New function.
+ (set_security_context): Call it.
+
+2010-07-14 Jakub Jelinek <jakub@redhat.com>
+
+ * src/prelink.h (copy_fd_to_file): New prototype.
+ * src/undo.c (prelink_undo): If undo_output and .gnu.prelink_undo
+ section is not present, don't reopen_dso, just return 0.
+ * src/main.c (main): If dso isn't writable with undo_output,
+ copy_fd_to_file dso->fd.
+ * src/dso.c (copy_fd_to_file): New function.
+ (update_dso): Use it.
+
+2010-04-13 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/reloc8.sh: Don't use -Wl,-z,nocopyreloc on
+ sparc64.
+ * testsuite/reloc9.sh: Likewise.
+
+ * src/dwarf2.c (DEBUG_TYPES): Define.
+ (debug_sections): Add .debug_types entry.
+ (read_abbrev): Handle new DWARF4 forms.
+ (adjust_attributes): DW_AT_segment can be a loclistptr.
+ DW_AT_byte_size, DW_AT_bit_offset, DW_AT_bit_size,
+ DW_AT_string_length, DW_AT_lower_bound, DW_AT_return_addr,
+ DW_AT_bit_stride, DW_AT_upper_bound, DW_AT_count,
+ DW_AT_segment, DW_AT_static_link, DW_AT_use_location,
+ DW_AT_allocated, DW_AT_associated, DW_AT_data_location
+ and DW_AT_byte_stride can be exprloc. Handle new DWARF4 forms.
+ (adjust_dwarf2_line): Handle adjusting DWARF4 .debug_line
+ sections.
+ (adjust_dwarf2_frame): Handle adjusting DWARF4 .debug_frame
+ section.
+ (adjust_dwarf2_info): New function, moved from adjust_dwarf2.
+ Handle DWARF4 .debug_info and handle .debug_types too.
+ (adjust_dwarf2): Call it for .debug_info and .debug_types
+ sections.
+ * src/dwarf2.h (DW_TAG_type_unit, DW_TAG_rvalue_reference_type,
+ DW_TAG_template_alias, DW_FORM_sec_offset, DW_FORM_exprloc,
+ DW_FORM_flag_present, DW_FORM_ref_sig8, DW_AT_bit_stride,
+ DW_AT_byte_stride, DW_AT_description, DW_AT_binary_scale,
+ DW_AT_decimal_scale, DW_AT_small, DW_AT_decimal_sign,
+ DW_AT_digit_count, DW_AT_picture_string, DW_AT_mutable,
+ DW_AT_threads_scaled, DW_AT_explicit, DW_AT_object_pointer,
+ DW_AT_endianity, DW_AT_elemental, DW_AT_pure, DW_AT_recursive,
+ DW_AT_signature, DW_AT_main_subprogram, DW_AT_data_bit_offset,
+ DW_AT_const_expr, DW_AT_enum_class, DW_AT_linkage_name,
+ DW_LNS_set_prologue_end, DW_LNS_set_epilogue_begin,
+ DW_LNS_set_isa, DW_LNE_set_discriminator, DW_LANG_Python): Define.
+
+ * src/prelink.h (send_file): New prototype.
+ * src/execstack.c (send_file): New dummy function.
+ * src/verify.c (send_file): No longer static. Don't loop forever
+ if write or read return 0.
+ * src/undo.c (prelink_undo): If undo_output is -, use /tmp/undo
+ instead of - as temp file prefix.
+ * src/dso.c (set_security_context): Drop unused dso argument, add
+ ignore_errors argument. If it is non-zero, don't error if
+ setfilecon failed.
+ (update_dso): If orig_name is non-NULL, don't error if fchown or
+ fchmod fails. If rename fails or name1 is - and orig_name is
+ non-NULL, copy the temporary file to name1 (or to stdout if
+ name1 is -) instead of failing.
+
+2010-01-06 Jakub Jelinek <jakub@redhat.com>
+
+ * src/arch-s390.c (s390_prelink_conflict_rela) <case R_390_PC32DBL>:
+ Ensure negative addends are sign-extended to 64-bits, instead of
+ zero-extended.
+
+2010-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ * src/arch-s390.c (s390_prelink_rela, s390_apply_rela,
+ s390_prelink_conflict_rela, s390_prelink_conflict_rela,
+ s390_undo_prelink_rela, s390_reloc_size): Handle
+ R_390_{PC32DBL,16,PC16,PC16DBL,8} relocs.
+
+2009-12-16 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/reloc2.sh: Don't assume textrel works if getenforce
+ exists, but doesn't print Permissive or Disabled.
+ * testsuite/reloc8.sh: Likewise.
+ * testsuite/reloc9.sh: Likewise.
+ * testsuite/tls3.sh: Likewise.
+
+2009-11-03 Jakub Jelinek <jakub@redhat.com>
+
+ * src/arch-x86_64.c (x86_64_reloc_size): Handle R_X86_64_IRELATIVE.
+
+ * src/prelink.h (R_PPC_IRELATIVE, R_PPC64_IRELATIVE,
+ R_PPC64_JMP_IREL): Define if not defined.
+ * src/undo.c (undo_sections, prelink_undo): Allow .iplt section to
+ change from SHT_NOBITS to SHT_PROGBITS.
+ * src/arch-ppc.c (ppc_adjust_rela, ppc_prelink_rela,
+ ppc_apply_conflict_rela, ppc_undo_prelink_rela): Handle
+ R_PPC_IRELATIVE.
+ (ppc_prelink_conflict_rela): Handle R_PPC_IRELATIVE and
+ conflict->ifunc conflicts.
+ * src/arch-ppc64.c (ppc64_adjust_rela, ppc64_prelink_rela,
+ ppc64_undo_prelink_rela): Handle R_PPC64_IRELATIVE and
+ R_PPC64_JMP_IREL.
+ (ppc64_apply_conflict_rela, ppc64_reloc_size): Handle
+ R_PPC64_IRELATIVE.
+ (ppc64_prelink_conflict_rela): Handle R_PPC64_IRELATIVE,
+ R_PPC64_JMP_IREL and conflict->ifunc conflicts.
+ * testsuite/ifunc.h (IFUNC_ASM): Add powerpc definition.
+ (IFUNC_DECL): Define.
+ (IFUNC): Use IFUNC_DECL.
+
+2009-10-19 Joseph Myers <joseph@codesourcery.com>
+
+ * src/conflict.c (prelink_build_conflicts): Use >= not > to
+ determine whether a relocation points outside the first bss
+ section.
+
+ * m4/libelf.m4: Resync with version of code in aclocal.m4.
+
+2009-09-25 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dwarf2.c (adjust_location_list) <case DW_OP_implicit_value>: Add
+ missing break statement.
+
+2009-08-06 Joseph Myers <joseph@codesourcery.com>
+
+ * src/dwarf2.c (dwarf2_write_le64, dwarf2_write_be64): Shift by 56
+ not 58 for MSB.
+
+2009-07-09 Jakub Jelinek <jakub@redhat.com>
+
+ * src/conflict.c (prelink_build_conflicts): Don't call
+ prelink_conflict_rel{,a} on .gnu.conflict section in executables.
+
+2009-06-15 Jakub Jelinek <jakub@redhat.com>
+
+ * src/prelink.h (R_386_IRELATIVE, R_X86_64_IRELATIVE): Define
+ if not defined.
+ (struct PLArch): Add dest_addr argument to apply_conflict_rela
+ hook.
+ (struct prelink_conflict): Change used type from int to unsigned
+ char, add ifunc field.
+ (get_relocated_mem): Add dest_addr argument.
+ * src/get.c (prelink_record_relocations): Handle lookups resolving
+ to STT_GNU_IFUNC symbols.
+ * src/conflict.c (get_relocated_mem): Add dest_addr argument, pass
+ it through to the apply_conflict_rela hook. Fail if
+ apply_conflict_rela hook failed.
+ (prelink_build_conflicts): Build conflicts even in the executable,
+ and for libraries even if no conflicts were reported by the dynamic
+ linker. In the executable ignore any unused conflicts except for
+ ifunc conflicts. Adjust get_relocated_mem callers.
+ * src/cxx.c (remove_redundant_cxx_conflicts): Adjust
+ get_relocated_mem callers.
+ * arch-alpha.c (alpha_apply_conflict_rela): Add dest_addr argument.
+ (alpha_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-arm.c (arm_apply_conflict_rela): Add dest_addr argument.
+ (arm_prelink_conflict_rel, arm_prelink_conflict_rela): Return early
+ if info->dso == dso.
+ * arch-cris.c (cris_apply_conflict_rela): Add dest_addr argument.
+ (cris_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-ia64.c (ia64_apply_conflict_rela): Add dest_addr argument.
+ (ia64_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-ppc.c (ppc_apply_conflict_rela): Add dest_addr argument.
+ (ppc_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-ppc64.c (ppc64_apply_conflict_rela): Add dest_addr argument.
+ (ppc64_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-s390.c (s390_apply_conflict_rela): Add dest_addr argument.
+ (s390_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-s390x.c (s390x_apply_conflict_rela): Add dest_addr argument.
+ (s390x_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-sh.c (sh_apply_conflict_rela): Add dest_addr argument.
+ (sh_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-sparc.c (sparc_apply_conflict_rela): Add dest_addr argument.
+ (sparc_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-sparc64.c (sparc64_apply_conflict_rela): Add dest_addr argument.
+ (sparc64_prelink_conflict_rela): Return early if info->dso == dso.
+ * arch-mips.c (mipz_apply_conflict_rela): Add dest_addr argument.
+ (mips_prelink_conflict_reloc, mips_arch_prelink_conflict): Return
+ early if info->dso == dso.
+ * arch-i386.c (i386_adjust_rel, i386_adjust_rela, i386_prelink_rel,
+ i386_prelink_rela, i386_rel_to_rela, i386_undo_prelink_rel,
+ i386_rela_to_rel): Handle R_386_IRELATIVE.
+ (i386_apply_conflict_rela): Add dest_addr argument, handle
+ R_386_IRELATIVE.
+ (i386_prelink_conflict_rel, i386_prelink_conflict_rela): Handle
+ R_386_IRELATIVE and conflict->ifunc conflicts.
+ * arch-x86_64.c (x86_64_adjust_rela, x86_64_prelink_rela,
+ x86_64_undo_prelink_rela): Handle R_X86_64_IRELATIVE.
+ (x86_64_apply_conflict_rela): Handle R_X86_64_IRELATIVE and
+ conflict->ifunc conflicts.
+ * testsuite/Makefile.am (TESTS): Add ifunc1.sh, ifunc2.sh and
+ ifunc3.sh.
+ * testsuite/Makefile.in: Regenerated.
+ * testsuite/ifunc1.sh: New test.
+ * testsuite/ifunc2.sh: New test.
+ * testsuite/ifunc3.sh: New test.
+ * testsuite/ifunc1.c: New file.
+ * testsuite/ifunc1lib1.c: New file.
+ * testsuite/ifunc1lib2.c: New file.
+ * testsuite/ifunc3.c: New file.
+ * testsuite/ifunc3lib1.c: New file.
+ * testsuite/ifunc.h: New file.
+ * testsuite/ifunctest.c: New file.
+
+ * src/Makefile.am (DEFS, AM_CFLAGS): Add -Wno-pointer-sign.
+ * src/Makefile.in: Regenerated.
+ * src/data.c (reopen_dso): Initialize data variable to avoid
+ warnings.
+
+ * src/dwarf2.h (DW_TAG_condition, DW_TAG_shared_type): Define.
+ (DW_OP_form_tls_address, DW_OP_call_frame_cfa, DW_OP_bit_piece,
+ DW_OP_implicit_value, DW_OP_stack_value, DW_OP_GNU_uninit,
+ DW_OP_GNU_encoded_addr): Define.
+ (DW_ATE_packed_decimal, DW_ATE_numeric_string, DW_ATE_edited,
+ DW_ATE_signed_fixed, DW_ATE_unsigned_fixed, DW_ATE_decimal_float):
+ Define.
+ (DW_CFA_val_offset, DW_CFA_val_offset_sf, DW_CFA_val_expression):
+ Define.
+ (DW_LANG_PLI, DW_LANG_ObjC, DW_LANG_ObjC_plus_plus, DW_LANG_UPC,
+ DW_LANG_D): Define.
+ * src/dwarf2.c (debug_sections): Add .debug_pubtypes.
+ (DEBUG_PUBTYPES): Define.
+ (DEBUG_MACINFO, DEBUG_LOC, DEBUG_STR, DEBUG_FRAME, DEBUG_RANGES):
+ Adjust.
+ (struct cu_data): Add cu_version field.
+ (read_abbrev): Adjust error messages not to be DWARF-2 specific.
+ (adjust_location_list): Likewise. Fix up DW_OP_call_ref handling,
+ handle DW_OP_form_tls_address, DW_OP_call_frame_cfa,
+ DW_OP_GNU_uninit, DW_OP_bit_piece, DW_OP_stack_value and
+ DW_OP_implicit_value.
+ (adjust_attributes): For cu->cu_version == 2 skip ptr_size bytes
+ instead of just 4. Adjust error messages not to be DWARF-2
+ specific.
+ (adjust_dwarf2_line): Handle version 3 of .debug_line.
+ (adjust_dwarf2_frame): Just that CIE version is 1 or 3, for
+ version 1 skip just one byte instead of uleb128 for return address
+ column. Handle DW_CFA_val_offset, DW_CFA_val_offset_sf and
+ DW_CFA_val_expression.
+ (adjust_dwarf2): Handle version 3 of .debug_info, initialize
+ cu.cu_version. Adjust error messages not to be DWARF-2 specific.
+ Note that .debug_pubtypes doesn't need adjustments.
+
+2009-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ * src/prelink.h (PLArch): Add rtype_class_valid field.
+ * src/get.c (prelink_record_relocations): If not /4, or
+ dso->arch->rtype_class_valid instead of RTYPE_CLASS_VALID
+ into reloc_class.
+ * src/cxx.c (remove_redundant_cxx_conflicts): Use
+ info->dso->arch->rtype_class_valid instead of RTYPE_CLASS_VALID.
+ * src/arch-ppc64.c (ppc64_reloc_class): For R_PPC64_COPY return
+ RTYPE_CLASS_COPY | RTYPE_CLASS_PLT, for non-TLS relocs return
+ RTYPE_CLASS_PLT.
+ (PL_ARCH): Set rtype_class_valid to RTYPE_CLASS_PLT.
+ * src/arch-alpha.c (PL_ARCH): Set rtype_class_valid to
+ RTYPE_CLASS_VALID.
+ * src/arch-arm.c (PL_ARCH): Likewise.
+ * src/arch-cris.c (PL_ARCH): Likewise.
+ * src/arch-i386.c (PL_ARCH): Likewise.
+ * src/arch-ia64.c (PL_ARCH): Likewise.
+ * src/arch-mips.c (PL_ARCH): Likewise.
+ * src/arch-ppc.c (PL_ARCH): Likewise.
+ * src/arch-s390.c (PL_ARCH): Likewise.
+ * src/arch-s390x.c (PL_ARCH): Likewise.
+ * src/arch-sh.c (PL_ARCH): Likewise.
+ * src/arch-sparc.c (PL_ARCH): Likewise.
+ * src/arch-sparc64.c (PL_ARCH): Likewise.
+ * src/arch-x86_64.c (PL_ARCH): Likewise.
+
+2009-03-04 Joseph Myers <joseph@codesourcery.com>
+
+ * testsuite/reloc2.sh, testsuite/tls3.sh: Add ARM to architectures
+ requiring PIC shared libraries.
+
+2009-03-04 Daniel Jacobowitz <dan@codesourcery.com>
+ Joseph Myers <joseph@codesourcery.com>
+
+ * src/arch-arm.c (arm_prelink_rel, arm_prelink_rela,
+ arm_prelink_conflict_rel, arm_prelink_conflict_rela, arm_rel_to_rela,
+ arm_rela_to_rel, arm_need_rel_to_rela, arm_undo_prelink_rel,
+ arm_reloc_class): Handle TLS relocations.
+ * src/prelink.h (R_ARM_TLS_DTPMOD32, R_ARM_TLS_DTPOFF32,
+ R_ARM_TLS_TPOFF32): Define if R_ARM_TLS_DTPMOD32 not already
+ defined.
+
+2009-03-04 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * src/arch-arm.c (arm_adjust_dyn, arm_adjust_rel, arm_adjust_rela,
+ arm_prelink_rel, arm_prelink_rela, arm_apply_conflict_rela,
+ arm_apply_rel, arm_apply_rela, arm_prelink_conflict_rela,
+ arm_rel_to_rela, arm_rela_to_rel, arm_need_rel_to_rela,
+ arm_arch_prelink, arm_arch_undo_prelink, arm_undo_prelink_rel):
+ Use endian-neutral functions.
+
+2008-09-29 Joseph Myers <joseph@codesourcery.com>
+
+ * src/arch-sparc64.c (sparc64_prelink_rela,
+ sparc64_prelink_conflict_rela, sparc64_undo_prelink_rela,
+ sparc64_reloc_class): Handle TLS relocations.
+ (PL_ARCH): Update mmap_base and mmap_end for TASK_UNMAPPED_BASE
+ change to 0xfffff80100000000.
+
+2007-12-04 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * src/gather.c (gather_object): Print an error if nftw64 fails.
+
+2007-10-09 Jakub Jelinek <jakub@redhat.com>
+
+ * src/cxx.c (remove_redundant_cxx_conflicts): Allow .sdata
+ section as well.
+
+ * src/prelink.h (struct prelink_conflict): Add next2 field.
+ (struct prelink_conflicts): Add hash2 field.
+ * src/get.c (prelink_record_relocations): Clear next2 fields.
+ * src/prelink.c (free_info): Also free hash2 table.
+ * src/cxx.c (remove_redundant_cxx_conflicts): Populate hash2
+ if not populated yet, use it to speed up pltref checking.
+
+ * src/prelink.h (struct prelink_conflicts): New type.
+ (struct prelink_info): Change type of conflicts and curconflicts
+ fields to struct prelink_conflicts *.
+ * src/get.c (conflict_hash_init): New function.
+ (prelink_record_relocations): Adjust initialization of conflicts
+ array. If conflict linked lists has more than 15 entries, use
+ hash table with chains.
+ * src/prelink.c (free_info): Handle freeing conflict list using a hash
+ table.
+ * src/fptr.c (opd_init): Only walk corresponding hash chain if
+ conflict list is using a hash table.
+ * src/conflict.c (prelink_conflict): Likewise.
+ (prelink_build_conflicts): Handle conflict list using a hash table.
+ * src/cxx.c (remove_redundant_cxx_conflicts): Likewise. Only walk
+ corresponding hash chain if conflict list is using a hash table.
+
+ * src/doit.c (find_ents): Clear e->u.tmp.
+ (clear_ent_marks, find_unlisted_dependency): Remove.
+ (prelink_ent): More efficient non-recursive check for
+ unlisted dependencies.
+
+ * src/cxx.c (find_cxx_sym): If fcs->lastndx != -1, search first
+ among symbols around it.
+
+2007-10-08 Jakub Jelinek <jakub@redhat.com>
+
+ * src/space.c (find_readonly_space): Disallow section insertion in
+ between adjacent SHT_NOTE sections. When creating new PT_LOAD,
+ handle multiple consecutive SHT_NOTE sections with just one PT_NOTE
+ segment for them.
+ * testsuite/Makefile.am (TESTS): Add shuffle9.sh.
+ * testsuite/Makefile.in: Regenerated.
+ * testsuite/shuffle9.sh: New test.
+ * testsuite/shuffle9.c: New.
+
+ * testsuite/shuffle2.c: Add .previous at the end of __asm.
+ * testsuite/reloc5.c (main): Likewise.
+
+ * testsuite/tls3.sh: If libs aren't built with -fpic,
+ disable the test under SELinux in enforcing mode.
+
+ * src/cxx.c: Include alloca.h.
+ (specials): Moved out of remove_redundant_cxx_conflicts to toplevel.
+ Remove section fields.
+ (find_cxx_sym_valsize, find_cxx_sym_cache): New structs.
+ (struct find_cxx_sym): Add cache and lastndx fields.
+ (cachecmp, create_cache): New functions.
+ (find_cxx_sym): Add cache argument. If cache[n] is NULL, call
+ create_cache. Do a binary search in cache[n]->vals array instead
+ of always reading the whole symbol table.
+ (remove_redundant_cxx_conflicts): Adjust find_cxx_sym caller.
+ Check if secname is ".data" or ".data.rel.ro" instead of comparing
+ it against specials[k].secname. Use binary search in binsymcache
+ when doing check_pltref checks.
+ * testsuite/Makefile.am (TESTS): Add cxx2.sh.
+ * testsuite/Makefile.in: Regenerated.
+ * testsuite/cxx1.sh: Check that some conflicts are optimized out
+ by C++ optimizations.
+ * testsuite/cxx2.sh: New test.
+ * testsuite/cxx2.C: New.
+
+2007-10-04 Jakub Jelinek <jakub@redhat.com>
+
+ * src/prelink.h (read_config): New prototype.
+ (gather_config, blacklist_from_config): Remove argument.
+ * src/gather.c (struct config_line): New type.
+ (config_lines, config_end): New variables.
+ (read_config): New function.
+ (gather_config, blacklist_from_config): Walk config_lines
+ chain instead of reading the config file.
+ * src/verify.c (prelink_verify): Call read_config. Don't
+ pass any argument to gather_config.
+ * src/main.c (main): Likewise. Also for blacklist_from_config.
+ * testsuite/quick2.sh: Use new -c etc/prelink.conf.d/*.conf
+ feature in prelink.conf and multiple config snippets.
+
+2007-06-27 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/reloc2.sh: If libs aren't built with -fpic,
+ disable the test under SELinux in enforcing mode.
+
+2007-03-02 Sandra Loosemore <sandra@codesourcery.com>
+
+ * doc/prelink.8: Spelling and grammar fixes.
+
+2006-12-01 Jakub Jelinek <jakub@redhat.com>
+
+ * src/verify.c (prelink_verify): Unlink ent->filename in case of
+ failures between closing the unprelinked dso and unlinking
+ ent->filename.
+
+2006-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ * src/prelink.h (READWRITEPROTOSIZE): Undef after use.
+
+2006-10-24 Richard Sandiford <richard@codesourcery.com>
+
+ * testsuite/tls3.sh: Use -fpic for MIPS too.
+ * testsuite/reloc2.sh: Likewise.
+
+ * testsuite/reloc4.sh: Use -mxgot when compiling for MIPS targets.
+ * testsuite/reloc5.c (main): Make the printed inline asm globalize
+ testzero.
+
+ * testsuite/shuffle2.c (testzero): Globalize asm definition.
+
+ * src/Makefile.am (arch_SOURCES): Add arch-mips.c
+ * src/Makefile.in: Regenerate.
+ * src/arch-mips.c: New file.
+
+ * src/prelink.h (DT_MIPS_RLD_VERSION): Define.
+ (DT_MIPS_TIME_STAMP): Likewise.
+ (DT_MIPS_ICHECKSUM): Likewise.
+ (DT_MIPS_IVERSION): Likewise.
+ (DT_MIPS_FLAGS): Likewise.
+ (DT_MIPS_BASE_ADDRESS): Likewise.
+ (DT_MIPS_CONFLICT): Likewise.
+ (DT_MIPS_LIBLIST): Likewise.
+ (DT_MIPS_LOCAL_GOTNO): Likewise.
+ (DT_MIPS_CONFLICTNO): Likewise.
+ (DT_MIPS_LIBLISTNO): Likewise.
+ (DT_MIPS_SYMTABNO): Likewise.
+ (DT_MIPS_UNREFEXTNO): Likewise.
+ (DT_MIPS_GOTSYM): Likewise.
+ (DT_MIPS_HIPAGENO): Likewise.
+ (DT_MIPS_RLD_MAP): Likewise.
+ (R_MIPS_TLS_DTPMOD): Likewise.
+ (R_MIPS_TLS_DTPREL): Likewise.
+ (R_MIPS_TLS_TPREL): Likewise.
+ (R_MIPS_GLOB_DAT): Likewise.
+ (DSO): Add info_DT_MIPS_LOCAL_GOTNO, info_DT_MIPS_GOTSYM,
+ and info_DT_MIPS_SYMTABNO.
+
+ * src/dso.c (read_dynamic): Initialize the new DSO fields.
+ (adjust_symbol_p): Handle stub values on MIPS.
+ * src/prelink.c (prelink_prepare): Handle SHT_DYNAMIC and
+ SHT_MIPS_REGINFO on MIPS.
+ * src/space.c (find_readonly_space): Don't place the new section
+ in the PT_PHDR segment.
+
+ * src/prelink.h (data_iterator): New structure.
+ (init_data_iterator): Declare.
+ (get_data_from_iterator): Likewise.
+ (get_sym_from_iterator): Likewise.
+ * src/data.c (init_data_iterator): New function.
+ (get_data_from_iterator): Likewise.
+ (get_sym_from_iterator): Likewise.
+
+ * src/prelink.h (READWRITEPROTOSIZE): New macro. Instantiate
+ READWRITEPROTO for big and little endian. Add prototypes for
+ native-endian functions (buf_read_uneNN, read_uneNN, buf_write_neNN
+ and write_neNN). Replace uses of READWRITEPROTO with uses of
+ this macro.
+ * src/data.c (BUFREADUNE, READUNE, WRITENE, BUFWRITENE): New macros.
+ (READWRITESIZE): New macro. Instantiate READWRITE for big and
+ little endian. Instantiate BUFREADUNE, READUNE, WRITENE
+ and BUFWRITENE. Replace uses of READWRITE with uses of this macro.
+ * src/arch-sh.c (read_une32, write_ne32, buf_write_ne32): Delete.
+
+ * src/prelink.h (PLArch): Add an arch_prelink_conflict callback.
+ * src/conflict.c (prelink_build_conflicts): If defined, call it
+ for each dependency.
+
+ * src/prelink.h (PLArch): Make the arch_prelink callback take
+ a "struct prelink_info *" argument, not a "DSO *" argument.
+ * src/prelink.c (prelink): Adjust call accordingly.
+ * src/arch-alpha.c (alpha_arch_prelink): Adjust definition accordingly.
+ * src/arch-arm.c (arm_arch_prelink): Likewise.
+ * src/arch-cris.c (cris_arch_prelink): Likewise.
+ * src/arch-i386.c (i386_arch_prelink): Likewise.
+ * src/arch-ia64.c (ia64_arch_prelink): Likewise.
+ * src/arch-ppc.c (ppc_arch_prelink): Likewise.
+ * src/arch-s390.c (s390_arch_prelink): Likewise
+ * src/arch-s390x.c (s390x_arch_prelink): Likewise
+ * src/arch-sh.c (sh_arch_prelink): Likewise.
+ * src/arch-sparc64.c (sparc64_arch_prelink): Likewise.
+ * src/arch-sparc.c (sparc_arch_prelink): Likewise
+ * src/arch-x86_64.c (x86_64_arch_prelink): Likewise.
+
+ * src/prelink.h (PLArch): Add an arch_adjust callback.
+ * src/dso.c (adjust_dso): Use it, if defined.
+
+ * src/prelink.h (adjust_symbol_p): Declare.
+ * src/dso.c (adjust_symbol_p): New function, extracted from...
+ (adjust_symtab): ...here.
+
+2006-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ * src/dwarf2.c (adjust_dwarf2_ranges): Fix adjusting if end of range
+ is at the end of some section and there is padding before the
+ following one.
+
+2006-07-28 Alexandre Oliva <aoliva@redhat.com>
+
+ * src/cache.c (deps_cmp): Avoid segfault if both a and b are NULL.
+
+2001-05-24 Jakub Jelinek <jakub@redhat.com>
+
+ * The beginning.