X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2FChangeLog;h=46e90c127744086d846d8eecd43969c5f5c58f74;hb=6b2cc1401c75fb337cc4092d22eac4ccf491a0a9;hp=16639c6520fdaf5e0c656b814ba5e0b1e1ee3b42;hpb=6b60be102a1e09b903a1e4c9335201c449c51f32;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 16639c6520..46e90c1277 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,301 @@ +2007-12-15 Richard Sandiford + + * elf-bfd.h (eh_cie_fde): Move add_fde_encoding and + per_encoding_relative to u.cie. Add commentary. + * elf-eh-frame.c (cie): Remove make_relative. + (extra_augmentation_string_bytes): Update use of add_fde_encoding. + (extra_augmentation_data_bytes): Likewise. Use an FDE's own + add_augmentation_size field, rather than referring to the CIE. + (_bfd_elf_parse_eh_frame): Don't set the struct cie + make_relative field; set the eh_cie_fde field directly. + Update setting of add_fde_encoding and per_encoding_relative. + Copy make_relative and add_augmentation_size from the CIE + to the FDE. + (_bfd_elf_discard_section_eh_frame): Use the FDE's own + make_relative field. + (_bfd_elf_eh_frame_section_offset): Likewise. + (_bfd_elf_write_section_eh_frame): Update accesses to + add_fde_encoding and per_encoding_relative. Use the FDE's + own make_relative and add_augmentation_size fields. + +2007-12-15 Richard Sandiford + + * elf-bfd.h (eh_cie_fde): Remove need_lsda_relative. + Move make_lsda_relative to u.cie. + * elf-eh-frame.c (cie): Rename make_lsda_relative to + can_make_lsda_relative. + (_bfd_elf_parse_eh_frame): Don't set the old eh_cie_fde + make_lsda_relative field. Update after cie renaming. + Set u.cie.make_lsda_relative if can_make_lsda_relative + and if we find a relocation against the LSDA. + (_bfd_elf_discard_section_eh_frame): Copy make_lsda_relative when + changing a CIE's group representative. + (_bfd_elf_eh_frame_section_offset): Don't set need_ldsa_relative here. + (_bfd_elf_write_section_eh_frame): Check u.cie.make_lsda_relative + rather than need_lsda_relative. + +2007-12-15 Richard Sandiford + + * elf-bfd.h (eh_cie_fde): Add u.fde.next_for_section and + u.cie.gc_mark. + (bfd_elf_section_data): Add fde_list. + (elf_fde_list): New macro. + (elf_obj_tdata): Add eh_frame_section. + (elf_eh_frame_section): New macro. + (_bfd_elf_gc_mark_reloc): Remove last parameter. + (_bfd_elf_gc_mark_fdes): Declare. + * elf-eh-frame.c (_bfd_elf_get_eh_frame_sec_info): Chain the FDEs + for each input section. + (mark_entry, _bfd_elf_gc_mark_fdes): New functions. + * elflink.c (_bfd_elf_gc_mark_reloc): Remove is_eh parameter. + (_bfd_elf_gc_mark): Update call accordingly. Mark the relocations + againts the section's FDEs. Don't mark the bfd's elf_eh_frame_section. + (bfd_elf_gc_sections): Parse each input bfd's .eh_frame before + marking any input sections. Remove the current EH handling. + * section.c (bfd_section): Remove gc_mark_from_eh. + * ecoff.c (bfd_debug_section): Update initializer accordingly. + +2007-12-15 Richard Sandiford + + * elf-bfd.h (eh_cie_fde): Add u.cie. Document how u.fde.cie_inf + changes when removed == 0. + (eh_frame_hdr_info): Add parsed_eh_frames. + (_bfd_elf_begin_eh_frame_parsing): Declare. + (_bfd_elf_parse_eh_frame): Declare. + (_bfd_elf_end_eh_frame_parsing): Declare. + * elf-eh-frame.c (_bfd_elf_begin_eh_frame_parsing): New function. + (_bfd_elf_parse_eh_frame): New function, split out from + _bfd_elf_discard_section_eh_frame. Make a first pass through the + buffer to calculate the number of entries and CIEs. Allocate memory + for them before the main loop. Replace current extended cie + representation with a pair of pointers, one to the local eh_cie_fde + and one to the full struct cie. Allocate a separate array of struct + cies if not merging. Merge CIEs during the main loop and set up each + u.cie.merged field. Point an FDE's cie_inf field directly at the + local CIE. Initially assume that all entries should be removed. + (_bfd_elf_end_eh_frame_parsing): New function. + (_bfd_elf_discard_section_eh_frame): Assume that the section has + already been parsed. Use a separate pass to mark entries that + need to be kept. Use the u.cie.merged field to track a CIE's + group representative. + * elflink.c (bfd_elf_discard_info): Call _bfd_elf_parse_eh_frame + before _bfd_elf_discard_section_eh_frame. Wrap loop with calls to + _bfd_elf_begin_eh_frame_parsing and _bfd_elf_end_eh_frame_parsing. + +2007-12-15 Richard Sandiford + + * elf-bfd.h (eh_cie_fde): Put cie_inf in a union. Add a reloc_index + field. Use bitfields for fde_encoding, lsda_encoding and lsda_offset. + * elf-eh-frame.c (extra_augmentation_data_bytes): Adjust cie_inf + accesses after the above change. + (_bfd_elf_eh_frame_section_offset): Likewise. + (_bfd_elf_write_section_eh_frame): Likewise. + (_bfd_elf_discard_section_eh_frame): Likewise. Set up reloc_index. + +2007-12-15 Richard Sandiford + + * elf-bfd.h (_bfd_elf_gc_mark_rsec, _bfd_elf_gc_mark_reloc): Declare. + (_bfd_elf_gc_mark): Use elf_gc_mark_hook_fn. + * elflink.c (init_reloc_cookie, fini_reloc_cookie) + (init_reloc_cookie_rels, fini_reloc_cookie_rels): New functions, + split out from... + (bfd_elf_discard_info): ...here. + (init_reloc_cookie_for_section): New function. + (fini_reloc_cookie_for_section): Likewise. + (_bfd_elf_gc_mark_rsec, _bfd_elf_gc_mark_reloc): New functions, + split out from... + (_bfd_elf_gc_mark): ...here. Use init_reloc_cookie_for_section + and fini_reloc_cookie_for_section. + +2007-12-12 Bob Wilson + + * elf32-xtensa.c (elf_xtensa_do_reloc): Update self_address along with + address. + (print_action_list): Fix name for ta_convert_longcall. + +2007-12-11 Catherine Moore + + * elf.c (_bfd_elf_copy_private_symbol_data): Don't copy shndx if + the symbol's section is the undefined section. + +2007-12-11 Alan Modra + + * elf.c (elf_fake_sections): Add "warning:" to "..changed to PROGBITS" + message. + +2007-12-07 Bob Wilson + + * elf32-xtensa.c (elf_howto_table): Add R_XTENSA_32_PCREL. + (elf_xtensa_reloc_type_lookup): Handle BFD_RELOC_32_PCREL. + (elf_xtensa_check_relocs): Use default case for all relocations that + need nothing done here. + (elf_xtensa_do_reloc): Compute self_address for all relocation types. + Handle R_XTENSA_32_PCREL. + (elf_xtensa_relocate_section): Check for R_XTENSA_32_PCREL for dynamic + symbols. + (check_section_ebb_pcrels_fit): Ignore R_XTENSA_32_PCREL relocations. + +2007-12-05 Alan Modra + + * elf32-spu.c (spu_elf_size_stubs): Do consider branches to + non-function symbols for overlay stubs. + +2007-12-04 Bob Wilson + + * elf32-xtensa.c (elf_xtensa_size_dynamic_sections): Create DT_PLTGOT + entry for all dynamic objects. + +2007-12-04 Alan Modra + + * elf32-spu.c (spu_elf_size_stubs): Correct section alignment. + +2007-11-30 Richard Sandiford + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Use the + ELF header to choose between 32-bit and 64-bit relocation structures. + +2007-11-29 Mark Shinwell + + * archures.c (bfd_mach_mips_loongson_2e): New. + (bfd_mach_mips_loongson_2f): New. + * bfd-in2.h (bfd_mach_mips_loongson_2e): New. + (bfd_mach_mips_loongson_2f): New. + * cpu-mips.c: Add I_loongson_2e and I_loongson_2f to + anonymous enum. + (arch_info_struct): Add Loongson-2E and Loongson-2F entries. + * elfxx-mips.c (_bfd_elf_mips_mach): Handle Loongson-2E + and Loongson-2F flags. + (mips_set_isa_flags): Likewise. + (mips_mach_extensions): Add Loongson-2E and Loongson-2F + entries. + +2007-11-29 Nick Clifton + + PR ld/5398 + * elf32-arm.c (bfd_elf32_arm_process_before_allocation): Do not + complain if there is no glue bfd, just return. + +2007-11-28 Nick Clifton + + * elf-m10300.c (mn10300_elf_relax_section): Extend previous fix to + cover forward jumps. + +2007-11-21 Nick Clifton + + * elf-m10300.c (mn10300_elf_relax_section): Allow for alignment + relocs when computing whether instructions can be relaxed. + +2007-11-16 Tristan Gingold + + * elflink.c (elf_link_output_extsym): Weaken assertion: if + --gc-section is set, there may be no TLS segment. + +2007-11-19 Alan Modra + + * elf-bfd.h (bfd_elf_perform_complex_relocation): Update prototype. + * elflink.c (bfd_elf_perform_complex_relocation): Return status. + Don't print reloc overflow message. + * elf32-mep.c (mep_elf_relocate_section): Handle status from + bfd_elf_perform_complex_relocation. + +2007-11-17 Thiemo Seufer + + * elfxx-mips.c (mips_elf_merge_obj_attributes): Handle -mips32r2 + -mfp64 attribute. + +2007-11-16 Nick Clifton + + * elf-m10300.c (mn10300_elf_check_relocs): Fix memory leak and + check that bfd_elf_get_elf_syms is only called once. + +2007-11-16 Ulrich Weigand + + * elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Set udata.p of + synthetic symbol to point to the ELF symbol it was derived from. + +2007-11-15 Alan Modra + + PR 5328 + * opncls.c (separate_debug_file_exists): Use fopen/fread + rather than open/read and open in binary mode. + +2007-11-14 Richard Sandiford + + * elfxx-mips.c (mips_got_page_range): New structure. + (mips_got_page_entry): Likewise. + (mips_got_info): Add page_gotno and got_page_entries fields. + (mips_elf_got_per_bfd_arg): Add max_pages field. Delete + primary_count and current_count fields. + (mips_got_page_entry_hash, mips_got_page_entry_eq): New functions. + (mips_elf_pages_for_range, mips_elf_record_got_page_entry): Likewise. + (mips_elf_get_got_for_bfd): New function, split out from + mips_elf_make_got_per_bfd. Initialize the page_gotno and + got_page_entries fields when creating a new GOT structure. + (mips_elf_make_got_pages_per_bfd): New function. + (mips_elf_merge_got_with): New function, split out from + mips_elf_make_got_per_bfd. Merge page entries as well as + non-page entries. Use the minimum of max_pages and the sum + of the page_gotnos to estimate the number of page entries. + (mips_elf_merge_gots): Use the minimum of max_pages and the + bfd's page_gotno to estimate the number of page entries. + Use the above functions. + (mips_elf_multi_got): Add page entries as well as non-page entries + to the individual per-bfd GOTs. Initialize got_per_bfd_arg.max_pages. + Initialize the page_gotno and got_page_entries fields when creating + a new primary GOT. Use the minimum of pages and page_gotno when + adding the number of pages entries to local_gotno. + (mips_elf_create_got_section): Initialize the page_gotno and + got_page_entries fields of the GOT structure. + (mips_elf_rel_relocation_p, mips_elf_read_rel_addend) + (mips_elf_add_lo16_rel_addend, mips_elf_get_section_contents): New + functions, split out from... + (_bfd_mips_elf_relocate_section): ...here. + (_bfd_mips_elf_check_relocs): Record GOT page entries too. + (_bfd_mips_relax_section): Use mips_elf_get_section_contents. + (_bfd_mips_elf_always_size_sections): Use the smaller of the + loadable_size- and page_gotno-derived estimates. + +2007-11-14 Thiemo Seufer + + * elfxx-mips.c (mips_elf_merge_obj_attributes): Prevent + unwanted fallthroughs in case statement. + +2007-11-13 H.J. Lu + + PR binutils/5307 + * peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Don't + copy input subsystem if output is different from input. + +2007-11-13 Nick Clifton + + * elf-m10300.c (mn10300_elf_final_link_relocate): Prevent the + accidental termination of DWARF location list entries. + (mn10300_elf_relax_delete_bytes): Stop deletion if an align reloc + is encountered that is larger than or not a mutliple of the number + of bytes being deleted. + When adjusting symbols, any symbols inside the region being + deleted must be moved to the end of the region. + Move align relocs forward if there is room for them after the + deletion of the region. + +2007-11-13 Alan Modra + + PR 5233 + * elf.c (rewrite_elf_program_header): Formatting. Add + first_matching_lma and first_suggested_lma booleans and use + instead of testing matching_lma and suggested_lma for zero. + +2007-11-12 H.J. Lu + + PR binutils/5299 + * peicode.h (pe_bfd_object_p): Save and restore previous bfd + state when calling coff_object_p. + +2007-11-12 Alan Modra + + * elf.c (_bfd_elf_get_synthetic_symtab): Only bump the symbol + pointer when we have a valid symbol. Init udata.p to NULL. + 2007-11-09 Nathan Sidwell * elf-vxworks.c (elf_vxworks_emit_relocs): Don't clobber @@ -484,9 +782,9 @@ (read_rangelist): Change interface to accept a callback and data to allow caller to select the action peformed on a new range list read. (scan_unit_for_symbols): Use new interface of read_rangelist. - (parse_comp_unit): Create an arange set for each new comp unit. Use new - interface of read_rangelist. Replace call to arange_add with that to - dwarf2_comp_unit_arange_add. + (parse_comp_unit): Create an arange set for each new comp unit. + Use new interface of read_rangelist. Replace call to arange_add + with that to dwarf2_comp_unit_arange_add. (comp_unit_contains_address): Replace sequential search with a call to arange_set_lookup_address, which can handles large set efficiently. (stash_copy_local_aranges, stash_maybe_enable_arange_set,