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]

Re: Map ".text.hot" and ".text.unlikely" input section prefixes to separate output sections.


On Thu, Dec 20, 2012 at 10:26 PM, Ian Lance Taylor <iant@google.com> wrote:
> On Thu, Dec 20, 2012 at 2:38 PM, Cary Coutant <ccoutant@google.com> wrote:
>> This patch fixes the problems I've been seeing. It sets the "may sort
>> attached input sections" flag for the .text section, which ensures
>> that we track all input sections for that output section. The problem
>> was that we can't start tracking input sections in mid-stream. We may
>> not want to do this unconditionally for .text, so maybe you'll want a
>> linker option to enable this reordering?
>
> Thanks for tracking this down.
>
> It would be nice to avoid doing it for .text, but I don't see how to
> do that while remaining compatible with GNU ld.
>
> I reimplemented this code in a different way that I think fits in
> better with the existing section ordering code.  Committed to
> mainline.
>
> Ian
>
>
> 2012-12-20  Ian Lance Taylor  <iant@google.com>
>
>         * layout.cc (Layout::special_ordering_of_input_section): New
>         function.
>         (Layout::layout): If input section requires special ordering, must
>         sort input sections.
>         (Layout::make_output_section): May sort .text input sections.
>         (Layout::is_section_name_prefix_grouped): Remove.
>         * layout.h (class Layout): Declare
>         special_ordering_of_input_section.  Don't declare
>         is_section_name_prefix_grouped.
>         * output.cc (Output_section::add_input_section): Revert last
>         change.
>         (Output_section::Input_section_sort::match_file_name): Don't crash
>         if called on output section data.
>         (Output_section::Input_section_sort_compare): Sort based on
>         special ordering.
>         (Output_section::Input_section_sort_section_order_index_compare):
>         Revert last patch.
>         (Output_section::sort_attached_input_sections): Likewise.

It doesn't fix regressions with x32 gold:

`echo g++ -mx32  -W -Wall    -Werror -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -fmerge-constants   -static-libstdc++
-static-libgcc  -o incremental_test_2 | sed -e
's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'` -Wl,--incremental-update
-Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o
two_file_test_2_ndebug.o two_file_test_main_ndebug.o
gcctestdir/ld: internal error in convert_types, at
/export/gnu/import/git/binutils/gold/gold.h:192
collect2: error: ld returned 1 exit status
make[3]: *** [incremental_test_2] Error 1


-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]