From: Peter Collingbourne Date: Thu, 1 Dec 2016 07:00:35 +0000 (+0000) Subject: Object: Set SF_Indirect in ModuleSymbolTable. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e3134b8c5ce70b5c4036b83d3909f96412af20cc;p=llvm Object: Set SF_Indirect in ModuleSymbolTable. This lets us remove the last use of IRObjectFile::getSymbolGV() in llvm-nm. Differential Revision: https://reviews.llvm.org/D27076 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288321 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Object/ModuleSymbolTable.cpp b/lib/Object/ModuleSymbolTable.cpp index c8b1bb6b775..90488007ff5 100644 --- a/lib/Object/ModuleSymbolTable.cpp +++ b/lib/Object/ModuleSymbolTable.cpp @@ -166,6 +166,8 @@ uint32_t ModuleSymbolTable::getSymbolFlags(Symbol S) const { } if (dyn_cast_or_null(GV->getBaseObject())) Res |= BasicSymbolRef::SF_Executable; + if (isa(GV)) + Res |= BasicSymbolRef::SF_Indirect; if (GV->hasPrivateLinkage()) Res |= BasicSymbolRef::SF_FormatSpecific; if (!GV->hasLocalLinkage()) diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index 33385e9953e..381bca4514e 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -998,13 +998,8 @@ dumpSymbolNamesFromObject(SymbolicFile &Obj, bool printName, uint32_t SymFlags = Sym.getFlags(); if (!DebugSyms && (SymFlags & SymbolRef::SF_FormatSpecific)) continue; - if (WithoutAliases) { - if (IRObjectFile *IR = dyn_cast(&Obj)) { - const GlobalValue *GV = IR->getSymbolGV(Sym.getRawDataRefImpl()); - if (GV && isa(GV)) - continue; - } - } + if (WithoutAliases && (SymFlags & SymbolRef::SF_Indirect)) + continue; // If a "-s segname sectname" option was specified and this is a Mach-O // file and this section appears in this file, Nsect will be non-zero then // see if this symbol is a symbol from that section and if not skip it.