Index: llvm/trunk/lib/Object/ModuleSymbolTable.cpp =================================================================== --- llvm/trunk/lib/Object/ModuleSymbolTable.cpp +++ llvm/trunk/lib/Object/ModuleSymbolTable.cpp @@ -166,6 +166,8 @@ } 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()) Index: llvm/trunk/tools/llvm-nm/llvm-nm.cpp =================================================================== --- llvm/trunk/tools/llvm-nm/llvm-nm.cpp +++ llvm/trunk/tools/llvm-nm/llvm-nm.cpp @@ -998,13 +998,8 @@ 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.