Index: include/llvm/Object/ELFObjectFile.h =================================================================== --- include/llvm/Object/ELFObjectFile.h +++ include/llvm/Object/ELFObjectFile.h @@ -440,6 +440,12 @@ auto SymStrTabOrErr = EF.getStringTable(StringTableSec); if (!SymStrTabOrErr) return SymStrTabOrErr.takeError(); + if (ESym->getType() == ELF::STT_SECTION) { + StringRef SecName; + auto Sec = getSymbolSection(Sym); + if (Sec && !Sec.get()->getName(SecName)) + return SecName; + } return ESym->getName(*SymStrTabOrErr); } Index: test/Object/nm-trivial-object.test =================================================================== --- test/Object/nm-trivial-object.test +++ test/Object/nm-trivial-object.test @@ -18,6 +18,8 @@ RUN: | FileCheck %s -check-prefix WEAK-ELF64 RUN: llvm-nm %p/Inputs/absolute.elf-x86-64 \ RUN: | FileCheck %s -check-prefix ABSOLUTE-ELF64 +RUN: llvm-nm -a %p/Inputs/IsNAN.o \ +RUN: | FileCheck %s -check-prefix ELF64-DEBUG-SYMS RUN: llvm-nm %p/Inputs/trivial-object-test.macho-i386 \ RUN: | FileCheck %s -check-prefix macho RUN: llvm-nm -U %p/Inputs/trivial-object-test.macho-i386 \ @@ -113,6 +115,14 @@ ABSOLUTE-ELF64: 0000000000000123 a a1 ABSOLUTE-ELF64: 0000000000000123 A a2 +ELF64-DEBUG-SYMS: 00000000 N .debug_abbrev +ELF64-DEBUG-SYMS: 00000000 N .debug_aranges +ELF64-DEBUG-SYMS: 00000000 N .debug_frame +ELF64-DEBUG-SYMS: 00000000 N .debug_info +ELF64-DEBUG-SYMS: 00000000 N .debug_line +ELF64-DEBUG-SYMS: 00000000 N .debug_pubnames +ELF64-DEBUG-SYMS: 00000000 n .note.GNU-stack + macho: U _SomeOtherFunction macho: 00000000 T _main macho: U _puts