This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi Ian, This is the final part of the EXIDX fix-up. In the first relaxation pass, we generate a list of non-empty text sections in ascending order of addresses. We do this by sorting the output sections by addresses and than appending their text sections in that order. The sorted list is then passed to EXIDX output section's fix_exidx_coverage(), which is the main code for the fix-up. -Doug 2010-01-22 Doug Kwan <dougkwan@google.com> * arm.cc (set): Include. (class Arm_exidx_fixup): Change type of last_input_section_ to const pointer type. (Arm_output_section::Text_section_list): New type. (Arm_output_section::append_text_sections_to_list): New method. (Arm_output_section::fix_exidx_coverage): Ditto. (Arm_relobj::Arm_relobj): Initialize exidx_section_map_. (Arm_relobj::convert_input_section_to_relaxed_section): Use Relobj::set_section_offset() instead of Sized_relobj::invalidate_section_offset(). (Arm_relobj::section_needs_reloc_stub_scanning): Add an extra parameter for section headers. Ignore relocation sections for unallocated sections and EXIDX sections. (Target_arm::fix_exidx_coverage): New method. (Target_arm::output_section_address_less_than): New type. (Arm_exidx_fixup::add_exidx_cantunwind_as_needed): Use index of the linked text section instead of the EXIDX section. (Arm_output_section::create_stub_group): Add an assertion to check that this is not an EXIDX output section. (Arm_output_section::append_text_sections_to_list): New method. (Arm_output_section::fix_exidx_coverage): Ditto. (Arm_relobj::scan_sections_for_stubs): Adjust call to Arm_relobj::section_needs_reloc_stub_scanning. (Target_arm::do_relax): Fix EXIDX output section coverage in the first pass. (Target_arm::fix_exidx_coverage): New method. * object.h (Relobj::set_output_section): New method. (Sized_relobj::invalidate_section_offset): Remove method. (Sized_relobj::do_invalidate_section_offset): Remove method. (Sized_relobj::do_set_section_offset): Handle offset value -1.
Attachment:
patch-exidx-final.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |