This is the mail archive of the 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 commit] PR gold/17005: Fix problem with optimization of .eh_frame section and --sort-section option.

When --sort-section=name is used, gold will sort the linker-generated
contents of .eh_frame (after optimization) after the endcap provided
by crtendS.o. This causes two problems: the .eh_frame_hdr section is
generated assuming that the optimized .eh_frame contents will be
placed at the very beginning of the section, and the endcap no longer
appears at the end of the section.

This patch fixes the first problem by adjusting FDE offsets to take
into account the actual starting offset within the output section, and
fixes the second problem by sorting linker-generated
(Output_section_data) sections based on the name of the output


        PR gold/17005
        * (Fde::write): Add output_offset parameter.
        (Cie::write): Likewise.
        (Eh_frame::set_final_data_size): Account for offset within output
        (Eh_frame::do_sized_write): Likewise.
        * ehframe.h (Fde::write): Add output_offset parameter.
        (Cie::write): Likewise.
        * (Output_section::Input_section_sort_entry): Remove
        section_has_name_; add output_section_name parameter. Use
        output section name for non-input sections.
        (Output_section::Input_section_sort_entry::section_has_name): Remove.
        (Output_section::Input_section_sort_entry::section_has_name_): Remove.
        (Output_section::Input_section_sort_compare): Remove logic for
        sections without names.
        (Output_section::Input_section_sort_init_fini_compare): Likewise.
        (Output_section::Input_section_sort_section_name_compare): Likewise.

Attachment: gold-ehframe-sort-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]