diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp --- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp @@ -308,6 +308,7 @@ << " SID: " << SectionID << " Offset: " << format("%p", (uintptr_t)Addr) << " flags: " << *FlagsOrErr << "\n"); + assert(!Name.empty()); // Should not enter an empty symbol GlobalSymbolTable[Name] = SymbolTableEntry(SectionID, Addr, *JITSymFlags); } else if (SymType == object::SymbolRef::ST_Function || SymType == object::SymbolRef::ST_Data || @@ -340,6 +341,7 @@ << " SID: " << SectionID << " Offset: " << format("%p", (uintptr_t)SectOffset) << " flags: " << *FlagsOrErr << "\n"); + assert(!Name.empty()); // Should not enter an empty symbol GlobalSymbolTable[Name] = SymbolTableEntry(SectionID, SectOffset, *JITSymFlags); } @@ -769,6 +771,7 @@ LLVM_DEBUG(dbgs() << "Allocating common symbol " << Name << " address " << format("%p", Addr) << "\n"); + assert(!Name.empty()); // Should not enter an empty symbol GlobalSymbolTable[Name] = SymbolTableEntry(SectionID, Offset, std::move(*JITSymFlags)); Offset += Size; @@ -930,6 +933,8 @@ if (Loc == GlobalSymbolTable.end()) { ExternalSymbolRelocations[SymbolName].push_back(RE); } else { + assert(!SymbolName.empty() && + "Empty symbol should not be in GlobalSymbolTable"); // Copy the RE since we want to modify its addend. RelocationEntry RECopy = RE; const auto &SymInfo = Loc->second; @@ -1107,6 +1112,8 @@ // New entries may have been added to the relocation list. i = ExternalSymbolRelocations.find(Name); } else { + assert(!Name.empty() && + "Empty symbol should not be in GlobalSymbolTable"); // We found the symbol in our global table. It was probably in a // Module that we loaded previously. const auto &SymInfo = Loc->second;