https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81733

            Bug ID: 81733
           Summary: stage1 libgcc_s.dylib fails to link on Darwin
                    11/x86_64
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ro at gcc dot gnu.org
                CC: iains at gcc dot gnu.org, mrs at gcc dot gnu.org
  Target Milestone: ---
            Target: x86_64-apple-darwin11.4.2

Created attachment 41932
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41932&action=edit
hack to allow the build to finish

Since roughly 20170707, Darwin 11/x86_64 bootstrap is broken.  The stage1
libgcc_s.dylib fails to link with and ld64 assertion failure:

Assertion failed: (cfiStartsArray[i] != cfiStartsArray[i-1]), function parse,
file /SourceCache/ld64/ld64-128.2/src/ld/parsers/macho_relocatable_file.cpp,
line 1519.
0  0x10443f1df  __assert_rtn + 79
1  0x10445aae5 
mach_o::relocatable::Parser<x86_64>::parse(mach_o::relocatable::ParserOptions
const&) + 917
2  0x10444832e  mach_o::relocatable::Parser<x86_64>::parse(unsigned char
const*, unsigned long long, char const*, long, unsigned int,
mach_o::relocatable::ParserOptions const&) + 286
3  0x104444b2b  mach_o::relocatable::parse(unsigned char const*, unsigned long
long, char const*, long, unsigned int, mach_o::relocatable::ParserOptions
const&) + 91
4  0x10447d6fd  ld::tool::InputFiles::makeFile(Options::FileInfo const&, bool)
+ 653
5  0x10447ecfb  ld::tool::InputFiles::InputFiles(Options&, char const**) + 651
6  0x10443f426  main + 358
7  0x10442f6a4  start + 52
collect2: error: ld returned 1 exit status
make[3]: *** [libgcc_s.dylib] Error 1
make[2]: *** [all-stage1-target-libgcc] Error 2
make[1]: *** [stage1-bubble] Error 2

The failure is similar to the one from PR target/57438.

When I check the input objects with dwarfdump --eh-frame --verify, I find

2 errors found in EH frame for _addvsi3_s.o (x86_64).
2 errors found in EH frame for _subvsi3_s.o (x86_64).
2 errors found in EH frame for _mulvsi3_s.o (x86_64).
2 errors found in EH frame for _negvsi2_s.o (x86_64).
1 errors found in EH frame for _negvdi2_s.o (x86_64).
1 errors found in EH frame for enable-execute-stack_s.o (x86_64).
10 errors found in EH frame for unwind-dw2_s.o (x86_64).
2 errors found in EH frame for emutls_s.o (x86_64)

Looking at the enable-execute-stack_s.o case, I find:

----------------------------------------------------------------------
 File: enable-execute-stack_s.o (x86_64)
----------------------------------------------------------------------
Verifying EH Frame... error: FDE row for address 0xfffffffffffffffb is not in
the FDE address range.

0x00000048: FDE
        length: 0x00000024
   CIE_pointer: 0x00000000
    start_addr: 0x000000000000005d ___cold_sect_of___enable_execute_stack
    range_size: 0x0000000000000005 (end_addr = 0x0000000000000062)
  Instructions: 0x000000000000005d: CFA=rsp+8     rip=[rsp]
                DW_CFA_set_loc (0xffffffffffffff9e)
                DW_CFA_def_cfa_offset (16)
                DW_CFA_offset (rbx, -16)
                DW_CFA_nop
                DW_CFA_nop
                0xfffffffffffffffb: CFA=rsp+16    rbx=[rsp]  rip=[rsp+8]



1 errors found in EH frame for enable-execute-stack_s.o (x86_64).

When I compile the corresponding source with -fno-reorder-blocks-and-partition,
the dwarfdump error is gone.

The attached hack allows the build to finish.

  Rainer

Reply via email to