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]

[GOLD][PATCH] Support NOLOAD section type in scripts.


Hi Ian,

    This patch add support for NOLOAD section type in scripts, which
is used in the ARM compressed Linux kernel.  The other section types
(COPY, DSECT, INFO and OVERLAY) are recognized but not supported yet.

-Doug

2010-04-09  Doug Kwan  <dougkwan@google.com>

        * layout.cc (Layout::choose_output_section): Handle script section
        types.
        (Layout::make_output_section_for_script): Add section type parameter.
        Handle script section types.
        * layout.h (Layout::make_output_section_for_script): Add section
        type parameter.
        * output.cc (Output_section::Output_section): Initialize data member
        is_noload_.
        (Output_section::do_reset_address_and_file_offset): Do not set address
        to 0 if section is a NOLOAD section.
        * output.h (Output_section::is_noload): New method.
        (Output_section::set_is_noload): Ditto.
        (Output_section::is_noload_): New data member.
        * script-c.h (Script_section_type): New enum type.
        (struct Parser_output_section_header): Add new file section_type.
        * script-sections.cc (Sections_element::output_section_name): Add
        parameter for returning script section type.
        (Output_section_definition::output_section_name): Ditto.
        (Output_section_definition::section_type)P; New method.
        (Output_section_definiton::script_section_type_name): Ditto.
        (Output_section_definition::script_section_type_): New data member.
        (Output_section_definition::Output_section_definition): Initialize
        data member Output_section_definition::script_section_type_.
        (Output_section_definition::create_sections): Pass script section type
        to Layout::make_output_section_for_script.
        (Output_section_definition::output_section_name): Return script
        section type to caller.
        (Output_section_definition::set_section_address): Do not advance
        dot value and load address if section type is NOLOAD.  Set address
        of NOLOAD sections regardless of section flags.
        (Output_section_definition::print): Print section type if it is
        not SCRIPT_SECTION_TYPE_NONE.
        (Output_section_definition::section_type): New method.
        (Output_section_definition::script_section_type_name): Ditto.
        (Script_sections::output_section_name): Add new parameter
        PSECTION_TYPE for returning script section type.  Pass it to
        section elements.  Handle discard sections.
        (Sort_output_sections::operator()): Handle NOLOAD sections.
        * script-sections.h (Script_sections::Section_type): New enum type.
        (Script_sections::output_section_name): Add a new parameter for
        returning script section type.
        * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
        INFO and NOLOAD.
        * yyscript.y (union): Add new field SECTION_TYPE.
        (COPY, DSECT, INFO, NOLOAD): New tokens.
        (opt_address_and_section_type): Change type to output_section_header.
        (section_type): New non-terminal
        (section_header): Handle section type.
        (opt_address_and_section_type): Return section type value.

Attachment: patch-noload.txt
Description: Text document


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