Index: COFF/Writer.cpp =================================================================== --- COFF/Writer.cpp +++ COFF/Writer.cpp @@ -210,7 +210,8 @@ // If name is too long, write offset into the string table as a name. sprintf(Hdr->Name, "/%d", StringTableOff); } else { - assert(!Config->Debug || Name.size() <= COFF::NameSize); + assert((!Config->Debug || (Name == ".eh_frame" && Config->MinGW)) || + Name.size() <= COFF::NameSize); strncpy(Hdr->Name, Name.data(), std::min(Name.size(), (size_t)COFF::NameSize)); } @@ -540,6 +541,8 @@ StringRef Name = Sec->getName(); if (Name.size() <= COFF::NameSize) continue; + if (Name == ".eh_frame" && Config->MinGW) + continue; Sec->setStringTableOff(addEntryToStringTable(Name)); } Index: test/COFF/long-section-name.test =================================================================== --- test/COFF/long-section-name.test +++ test/COFF/long-section-name.test @@ -2,9 +2,17 @@ # RUN: lld-link /debug /out:%t.exe /entry:main %t.obj # RUN: llvm-readobj -sections %t.exe | FileCheck %s +# RUN: lld-link /lldmingw /debug /out:%t.exe /entry:main %t.obj +# RUN: llvm-readobj -sections %t.exe | FileCheck -check-prefix=MINGW %s + # CHECK: Name: .data_long_section_name +# CHECK: Name: .eh_frame # CHECK: Name: .text_long_section_name +# MINGW: Name: .data_long_section_name +# MINGW: Name: .eh_fram ( +# MINGW: Name: .text_long_section_name + --- !COFF header: Machine: IMAGE_FILE_MACHINE_AMD64 @@ -18,6 +26,10 @@ Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] Alignment: 4 SectionData: "00" + - Name: .eh_frame + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] + Alignment: 4 + SectionData: "00" symbols: - Name: "@comp.id" Value: 10394907 @@ -49,6 +61,18 @@ NumberOfLinenumbers: 0 CheckSum: 0 Number: 0 + - Name: .eh_frame + Value: 0 + SectionNumber: 3 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 0 + NumberOfRelocations: 0 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 0 - Name: main Value: 0 SectionNumber: 1