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: Gold patch to create separate output sections for certain text section prefixes


Ping.

* layout.cc (Layout::default_section_order): Check for text section
prefixes.
(Layout::text_section_name_mapping): New static member.
(Layout::text_section_name_mapping_count): New static member.
(Layout::match_section_name): New static function.
(Layout::output_section_name): Check for text section prefixes.
* layout.h (Output_section_order::ORDER_TEXT_HOT): New enum value.
(Output_section_order::ORDER_TEXT_STARTUP): New enum value.
(Output_section_order::ORDER_TEXT_EXIT): New enum value.
(Output_section_order::ORDER_TEXT_UNLIKELY): New enum value.
(Layout::text_section_name_mapping): New static member.
(Layout::text_section_name_mapping_count): New static member.
(Layout::match_section_name): New static function.
* options.h (keep_text_section_prefix): New -z option.
* testsuite/Makefile.am (keep_text_section_prefix): New test.
* testsuite/Makefile.in: Regenerate.
* testsuite/keep_text_section_prefix.cc: New test source.
* testsuite/keep_text_section_prefix.sh: New test script.



On Mon, Feb 26, 2018 at 10:14 AM, Sriraman Tallam <tmsriram@google.com> wrote:
> Ping.
>
> * layout.cc (Layout::default_section_order): Check for text section
> prefixes.
> (Layout::text_section_name_mapping): New static member.
> (Layout::text_section_name_mapping_count): New static member.
> (Layout::match_section_name): New static function.
> (Layout::output_section_name): Check for text section prefixes.
> * layout.h (Output_section_order::ORDER_TEXT_HOT): New enum value.
> (Output_section_order::ORDER_TEXT_STARTUP): New enum value.
> (Output_section_order::ORDER_TEXT_EXIT): New enum value.
> (Output_section_order::ORDER_TEXT_UNLIKELY): New enum value.
> (Layout::text_section_name_mapping): New static member.
> (Layout::text_section_name_mapping_count): New static member.
> (Layout::match_section_name): New static function.
> * options.h (keep_text_section_prefix): New -z option.
> * testsuite/Makefile.am (keep_text_section_prefix): New test.
> * testsuite/Makefile.in: Regenerate.
> * testsuite/keep_text_section_prefix.cc: New test source.
> * testsuite/keep_text_section_prefix.sh: New test script.
>
> On Thu, Feb 22, 2018 at 1:07 PM, Sriraman Tallam <tmsriram@google.com> wrote:
>> Ping.
>>
>>
>> * layout.cc (Layout::default_section_order): Check for text section
>> prefixes.
>> (Layout::text_section_name_mapping): New static member.
>> (Layout::text_section_name_mapping_count): New static member.
>> (Layout::match_section_name): New static function.
>> (Layout::output_section_name): Check for text section prefixes.
>> * layout.h (Output_section_order::ORDER_TEXT_HOT): New enum value.
>> (Output_section_order::ORDER_TEXT_STARTUP): New enum value.
>> (Output_section_order::ORDER_TEXT_EXIT): New enum value.
>> (Output_section_order::ORDER_TEXT_UNLIKELY): New enum value.
>> (Layout::text_section_name_mapping): New static member.
>> (Layout::text_section_name_mapping_count): New static member.
>> (Layout::match_section_name): New static function.
>> * options.h (keep_text_section_prefix): New -z option.
>> * testsuite/Makefile.am (keep_text_section_prefix): New test.
>> * testsuite/Makefile.in: Regenerate.
>> * testsuite/keep_text_section_prefix.cc: New test source.
>> * testsuite/keep_text_section_prefix.sh: New test script.
>>
>> On Tue, Feb 20, 2018 at 9:28 AM, Sriraman Tallam <tmsriram@google.com> wrote:
>>> Ping.
>>>
>>> * layout.cc (Layout::default_section_order): Check for text section
>>> prefixes.
>>> (Layout::text_section_name_mapping): New static member.
>>> (Layout::text_section_name_mapping_count): New static member.
>>> (Layout::match_section_name): New static function.
>>> (Layout::output_section_name): Check for text section prefixes.
>>> * layout.h (Output_section_order::ORDER_TEXT_HOT): New enum value.
>>> (Output_section_order::ORDER_TEXT_STARTUP): New enum value.
>>> (Output_section_order::ORDER_TEXT_EXIT): New enum value.
>>> (Output_section_order::ORDER_TEXT_UNLIKELY): New enum value.
>>> (Layout::text_section_name_mapping): New static member.
>>> (Layout::text_section_name_mapping_count): New static member.
>>> (Layout::match_section_name): New static function.
>>> * options.h (keep_text_section_prefix): New -z option.
>>> * testsuite/Makefile.am (keep_text_section_prefix): New test.
>>> * testsuite/Makefile.in: Regenerate.
>>> * testsuite/keep_text_section_prefix.cc: New test source.
>>> * testsuite/keep_text_section_prefix.sh: New test script.
>>>
>>>
>>>
>>> On Thu, Feb 15, 2018 at 5:20 PM, Sriraman Tallam <tmsriram@google.com> wrote:
>>>> Hi,
>>>>
>>>> This patch creates separate output sections for .text.hot,
>>>> .text.startup, .text.exit and .text.unlikely and is controlled by
>>>> -z,keep-text-section-prefix.  With this feature, the PT_LOAD segment
>>>> would look like this:
>>>>
>>>>  Section to Segment mapping:
>>>>   Segment Sections...
>>>>    00
>>>>    01     .interp
>>>>    02     .interp  ... .rela.dyn .rela.plt .init .plt .text.hot .text
>>>> .text.startup .text.exit .text.unlikely .fini .rodata .eh_frame
>>>> .eh_frame_hdr ...
>>>> ....
>>>>
>>>> This feature would be useful to:
>>>>
>>>> a) Map only a subset of  the text sections to huge pages.
>>>> b) m(un)lock a subset  the text sections.
>>>> c) Code layout verification.
>>>>
>>>> I added -z,text-unlikely-segment here:
>>>> https://sourceware.org/ml/binutils/2017-10/msg00023.html for similar
>>>> reasons.
>>>>
>>>> However, we found out that creating multiple executable ELF segments
>>>> has other issues as some other tools like symbolizers make assumptions
>>>> about ELF binaries having just one executable segment and this breaks
>>>> them.  We are looking at fixing these but an alternate approach gives
>>>> us flexibility in deploying this.
>>>>
>>>> Thoughts?  Patch attached.
>>>>
>>>> * layout.cc (Layout::default_section_order): Check for text section
>>>> prefixes.
>>>> (Layout::text_section_name_mapping): New static member.
>>>> (Layout::text_section_name_mapping_count): New static member.
>>>> (Layout::match_section_name): New static function.
>>>> (Layout::output_section_name): Check for text section prefixes.
>>>> * layout.h (Output_section_order::ORDER_TEXT_HOT): New enum value.
>>>> (Output_section_order::ORDER_TEXT_STARTUP): New enum value.
>>>> (Output_section_order::ORDER_TEXT_EXIT): New enum value.
>>>> (Output_section_order::ORDER_TEXT_UNLIKELY): New enum value.
>>>> (Layout::text_section_name_mapping): New static member.
>>>> (Layout::text_section_name_mapping_count): New static member.
>>>> (Layout::match_section_name): New static function.
>>>> * options.h (keep_text_section_prefix): New -z option.
>>>> * testsuite/Makefile.am (keep_text_section_prefix): New test.
>>>> * testsuite/Makefile.in: Regenerate.
>>>> * testsuite/keep_text_section_prefix.cc: New test source.
>>>> * testsuite/keep_text_section_prefix.sh: New test script.
>>>>
>>>> Thanks
>>>> Sri

Attachment: keep_text_section_prefix_patch.txt
Description: Text document


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