diff options
-rw-r--r-- | llvm/lib/Object/ModuleSymbolTable.cpp | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 9 |
2 files changed, 4 insertions, 7 deletions
diff --git a/llvm/lib/Object/ModuleSymbolTable.cpp b/llvm/lib/Object/ModuleSymbolTable.cpp index c8b1bb6b775..90488007ff5 100644 --- a/llvm/lib/Object/ModuleSymbolTable.cpp +++ b/llvm/lib/Object/ModuleSymbolTable.cpp @@ -166,6 +166,8 @@ uint32_t ModuleSymbolTable::getSymbolFlags(Symbol S) const { } if (dyn_cast_or_null<Function>(GV->getBaseObject())) Res |= BasicSymbolRef::SF_Executable; + if (isa<GlobalAlias>(GV)) + Res |= BasicSymbolRef::SF_Indirect; if (GV->hasPrivateLinkage()) Res |= BasicSymbolRef::SF_FormatSpecific; if (!GV->hasLocalLinkage()) diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index 33385e9953e..381bca4514e 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/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<IRObjectFile>(&Obj)) { - const GlobalValue *GV = IR->getSymbolGV(Sym.getRawDataRefImpl()); - if (GV && isa<GlobalAlias>(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. |