Patch to do reorder text and data sections according to a user specified sequence.

H.J. Lu hjl.tools@gmail.com
Wed Jun 2 17:17:00 GMT 2010


On Tue, Jun 1, 2010 at 4:40 PM, Sriraman Tallam <tmsriram@google.com> wrote:
> Hi Ian,
>
>     I committed the patch after making the changes you mentioned. I
> did not add a warning when using the SORT clause and
> --section-ordering file. Like you said, I will do this as a separate
> patch after I figure out how to do this effectively.
>
> 2010-06-01  Sriraman Tallam  <tmsriram@google.com>
>
>        * gold.h (is_wildcard_string): New function.
>        * layout.cc (Layout::layout): Pass this pointer to add_input_section.
>        (Layout::layout_eh_frame): Ditto.
>        (Layout::find_section_order_index): New method.
>        (Layout::read_layout_from_file): New method.
>        * layout.h (Layout::find_section_order_index): New method.
>        (Layout::read_layout_from_file): New method.
>        (Layout::input_section_position_): New private member.
>        (Layout::input_section_glob_): New private member.
>        * main.cc (main): Call read_layout_from_file here.
>        * options.h (--section-ordering-file): New option.
>        * output.cc (Output_section::input_section_order_specified_): New
>        member.
>        (Output_section::Output_section): Initialize new member.
>        (Output_section::add_input_section): Add new parameter.
>        Keep input sections when --section-ordering-file is used.
>        (Output_section::set_final_data_size): Sort input sections when
>        section ordering file is specified.
>        (Output_section::Input_section_sort_entry): Add new parameter.
>        Check sorting type.
>        (Output_section::Input_section_sort_entry::compare_section_ordering):
>        New method.
>        (Output_section::Input_section_sort_compare::operator()): Change to
>        consider section_order_index.
>        (Output_section::Input_section_sort_init_fini_compare::operator()):
>        Change to consider section_order_index.
>        (Output_section::Input_section_sort_section_order_index_compare
>        ::operator()): New method.
>        (Output_section::sort_attached_input_sections): Change to sort
>        according to section order when specified.
>        (Output_section::add_input_section<32, true>): Add new parameter.
>        (Output_section::add_input_section<64, true>): Add new parameter.
>        (Output_section::add_input_section<32, false>): Add new parameter.
>        (Output_section::add_input_section<64, false>): Add new parameter.
>        * output.h (Output_section::add_input_section): Add new parameter.
>        (Output_section::input_section_order_specified): New
>        method.
>        (Output_section::set_input_section_order_specified): New method.
>        (Input_section::Input_section): Initialize section_order_index_.
>        (Input_section::section_order_index): New method.
>        (Input_section::set_section_order_index): New method.
>        (Input_section::section_order_index_): New member.
>        (Input_section::Input_section_sort_section_order_index_compare): New
>        struct.
>        (Output_section::input_section_order_specified_): New member.
>        * script-sections.cc (is_wildcard_string): Delete and move modified
>        method to gold.h.
>        (Output_section_element_input::Output_section_element_input): Modify
>        call to is_wildcard_string.
>        (Output_section_element_input::Input_section_pattern
>        ::Input_section_pattern): Ditto.
>        (Output_section_element_input::Output_section_element_input): Ditto.
>        * testsuite/Makefile.am (final_layout): New test case.
>        * testsuite/Makefile.in: Regenerate.
>        * testsuite/final_layout.cc: New file.
>        * testsuite/final_layout.sh: New file.
>
>

testsuite/final_layout.sh failed on Linux/x86-64:

http://www.sourceware.org/bugzilla/show_bug.cgi?id=11658

-- 
H.J.



More information about the Binutils mailing list