Index: ELF/MarkLive.cpp =================================================================== --- ELF/MarkLive.cpp +++ ELF/MarkLive.cpp @@ -69,7 +69,7 @@ RelT &Rel) { SymbolBody &B = Sec.getFile()->getRelocTargetSym(Rel); auto *D = dyn_cast>(&B); - if (!D || !D->Section) + if (!D || !D->Section || D->Section == &InputSectionBase::Discarded) return {nullptr, 0}; typename ELFT::uint Offset = D->Value; if (D->isSection()) @@ -176,7 +176,8 @@ if (isValidCIdentifier(S)) return true; - return S.startswith(".ctors") || S.startswith(".dtors") || + return S.startswith(".comment") || S.startswith(".ctors") || + S.startswith(".debug") || S.startswith(".dtors") || S.startswith(".init") || S.startswith(".fini") || S.startswith(".jcr"); } Index: test/ELF/gc-sections.s =================================================================== --- test/ELF/gc-sections.s +++ test/ELF/gc-sections.s @@ -14,6 +14,8 @@ # NOGC: Name: .dtors # NOGC: Name: .init # NOGC: Name: .fini +# NOGC: Name: .debug_pubtypes +# NOGC: Name: .comment # NOGC: Name: a # NOGC: Name: b # NOGC: Name: c @@ -100,3 +102,9 @@ .section .eh_frame,"a",@unwind .quad 0 + +.section .debug_pubtypes,"",@progbits + .quad 0 + +.section .comment,"MS",@progbits,8 + .quad 0