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] |
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] |