Index: lib/MC/MCParser/ELFAsmParser.cpp =================================================================== --- lib/MC/MCParser/ELFAsmParser.cpp +++ lib/MC/MCParser/ELFAsmParser.cpp @@ -488,6 +488,8 @@ Flags |= ELF::SHF_ALLOC; if (SectionName == ".fini" || SectionName == ".init") Flags |= ELF::SHF_EXECINSTR; + if (SectionName.startswith(".text")) + Flags |= ELF::SHF_EXECINSTR | ELF::SHF_ALLOC; if (getLexer().is(AsmToken::Comma)) { Lex(); @@ -565,6 +567,8 @@ Type = ELF::SHT_FINI_ARRAY; else if (SectionName == ".preinit_array") Type = ELF::SHT_PREINIT_ARRAY; + else if (SectionName.startswith(".text")) + Type = ELF::SHT_PROGBITS; } else { if (TypeName == "init_array") Type = ELF::SHT_INIT_ARRAY; Index: test/MC/ELF/section.s =================================================================== --- test/MC/ELF/section.s +++ test/MC/ELF/section.s @@ -215,3 +215,20 @@ // CHECK-NEXT: Size: // CHECK-NEXT: Link: 22 // CHECK-NEXT: Info: 0 + +.section .text.foo +// CHECK: Section { +// CHECK: Name: .text.foo +// CHECK-NEXT: Type: SHT_PROGBITS +// CHECK-NEXT: Flags [ +// CHECK-NEXT: SHF_ALLOC +// CHECK-NEXT: SHF_EXECINSTR +// CHECK-NEXT: ] +// CHECK-NEXT: Address: 0x0 +// CHECK-NEXT: Offset: +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Link: 0 +// CHECK-NEXT: Info: 0 +// CHECK-NEXT: AddressAlignment: 1 +// CHECK-NEXT: EntrySize: 0 +// CHECK-NEXT: }