diff --git a/llvm/test/tools/dsymutil/Inputs/private/tmp/thinlto/bar.o b/llvm/test/tools/dsymutil/Inputs/private/tmp/thinlto/bar.o new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@&1 | FileCheck %s --allow-empty +CHECK-NOT: could not find object file symbol for symbol __ZZ9function2vE12magic_static +CHECK-NOT: could not find object file symbol for symbol __ZGVZ9function2vE12magic_static diff --git a/llvm/tools/dsymutil/MachODebugMapParser.cpp b/llvm/tools/dsymutil/MachODebugMapParser.cpp --- a/llvm/tools/dsymutil/MachODebugMapParser.cpp +++ b/llvm/tools/dsymutil/MachODebugMapParser.cpp @@ -462,6 +462,17 @@ } } + // ThinLTO adds a unique suffix to exported private symbols. + for (auto Iter = CurrentObjectAddresses.begin(); + Iter != CurrentObjectAddresses.end(); ++Iter) { + llvm::StringRef SymbolName = Iter->getKey(); + auto Pos = SymbolName.rfind(".llvm."); + if (Pos != llvm::StringRef::npos && SymbolName.substr(0, Pos) == Name) { + ObjectSymIt = Iter; + break; + } + } + if (ObjectSymIt == CurrentObjectAddresses.end()) { Warning("could not find object file symbol for symbol " + Twine(Name)); return;