[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/23016] assert in output.h on mix of .eh_frame types for x86_64

From: cvs-commit at gcc dot gnu.org
Subject: [Bug gold/23016] assert in output.h on mix of .eh_frame types for x86_64
Date: Tue, 03 Apr 2018 02:07:57 +0000


--- Comment #2 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Cary Coutant <address@hidden>:


commit bce5a025d2ed7eda2c5bbb85bd9b33333ca5d556
Author: Cary Coutant <address@hidden>
Date:   Mon Apr 2 16:12:10 2018 -0700

    Fix problem where mixed section types can cause internal error during a -r

    During a -r (or --emit-relocs) link, if two sections had the same name but
    different section types, gold would put relocations for both sections into
    the same relocation section even though the data sections remained

    For .eh_frame sections, when one section is PROGBITS and another is
    X86_64_UNWIND, we really should be using the UNWIND section type and
    combining the sections anyway.  For other sections, we should be
    creating one relocation section for each output data section.

        PR gold/23016
        * incremental.cc (can_incremental_update): Check for unwind section
        * layout.h (Layout::layout): Add sh_type parameter.
        * layout.cc (Layout::layout): Likewise.
        (Layout::layout_reloc): Create new output reloc section if data
        section does not already have one.
        (Layout::layout_eh_frame): Check for unwind section type.
        (Layout::make_eh_frame_section): Use unwind section type for .eh_frame
        and .eh_frame_hdr.
        * object.h (Sized_relobj_file::Shdr_write): New typedef.
        (Sized_relobj_file::layout_section): Add sh_type parameter.
        (Sized_relobj_file::Deferred_layout::Deferred_layout): Add sh_type
        * object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
        unwind section type.
        (Sized_relobj_file::layout_section): Add sh_type parameter; pass it
        to Layout::layout.
        (Sized_relobj_file::do_layout): Make local copy of sh_type.
        Force .eh_frame sections to unwind section type.
        Pass sh_type to layout_section.
        (Sized_relobj_file<size, big_endian>::do_layout_deferred_sections):
        Pass sh_type to layout_section.
        * output.cc (Output_section::Output_section): Initialize
        * output.h (Output_section::reloc_section): New method.
        (Output_section::set_reloc_section): New method.
        (Output_section::reloc_section_): New data member.
        * target.h (Target::unwind_section_type): New method.
        (Target::Target_info::unwind_section_type): New data member.

        * aarch64.cc (aarch64_info): Add unwind_section_type.
        * arm.cc (arm_info, arm_nacl_info): Likewise.
        * i386.cc (i386_info, i386_nacl_info, iamcu_info): Likewise.
        * mips.cc (mips_info, mips_nacl_info): Likewise.
        * powerpc.cc (powerpc_info): Likewise.
        * s390.cc (s390_info): Likewise.
        * sparc.cc (sparc_info): Likewise.
        * tilegx.cc (tilegx_info): Likewise.
        * x86_64.cc (x86_64_info, x86_64_nacl_info): Likewise.

        * testsuite/Makefile.am (pr23016_1, pr23016_2): New test cases.
        * testsuite/Makefile.in: Regenerate.
        * testsuite/testfile.cc: Add unwind_section_type.
        * testsuite/pr23016_1.sh: New test script.
        * testsuite/pr23016_1a.s: New source file.
        * testsuite/pr23016_1b.s: New source file.
        * testsuite/pr23016_2.sh: New test script.
        * testsuite/pr23016_2a.s: New source file.
        * testsuite/pr23016_2b.s: New source file.

You are receiving this mail because:
You are on the CC list for the bug.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]