From b0224b1f1d06987c56a5a57fd5ccaec0c2abb151 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Fri, 1 Mar 2019 10:15:18 +0000 Subject: [PATCH] Attempt to fix buildbot after r354972 [#2]. NFCI. llvm-svn: 355192 --- llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp index 63f9693..9a39c30 100644 --- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -201,7 +201,20 @@ static bool parseCommand(StringRef InputString, bool &IsData, static uint64_t getModuleSectionIndexForAddress(const std::string &ModuleName, uint64_t Address) { - Expected> BinaryOrErr = createBinary(ModuleName); + // following ModuleName processing was copied from + // LLVMSymbolizer::getOrCreateModuleInfo(). + // it needs to be refactored to avoid code duplication. + std::string BinaryName = ModuleName; + size_t ColonPos = ModuleName.find_last_of(':'); + // Verify that substring after colon form a valid arch name. + if (ColonPos != std::string::npos) { + std::string ArchStr = ModuleName.substr(ColonPos + 1); + if (Triple(ArchStr).getArch() != Triple::UnknownArch) { + BinaryName = ModuleName.substr(0, ColonPos); + } + } + + Expected> BinaryOrErr = createBinary(BinaryName); if (error(BinaryOrErr)) return object::SectionedAddress::UndefSection; -- 2.7.4