summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bytecode/Archive/ArchiveReader.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-11-17 18:25:21 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-11-17 18:25:21 +0000
commitb58bf5fa28e0c13db7001ecc8ad2965da90be21c (patch)
tree722ff7acb31c9fc7a7d8e10fa9bad0da9e144bd5 /llvm/lib/Bytecode/Archive/ArchiveReader.cpp
parentd5f5288066738197e04000ffa6d3ae05f2931ddb (diff)
downloadbcm5719-llvm-b58bf5fa28e0c13db7001ecc8ad2965da90be21c.tar.gz
bcm5719-llvm-b58bf5fa28e0c13db7001ecc8ad2965da90be21c.zip
Make sure we parse bytecode with a module identifier that reflects the full
name of the module: "Archive.a(object.o)" llvm-svn: 17917
Diffstat (limited to 'llvm/lib/Bytecode/Archive/ArchiveReader.cpp')
-rw-r--r--llvm/lib/Bytecode/Archive/ArchiveReader.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/Bytecode/Archive/ArchiveReader.cpp b/llvm/lib/Bytecode/Archive/ArchiveReader.cpp
index 2dae5b65397..615df2bf5f2 100644
--- a/llvm/lib/Bytecode/Archive/ArchiveReader.cpp
+++ b/llvm/lib/Bytecode/Archive/ArchiveReader.cpp
@@ -282,8 +282,10 @@ Archive::getAllModules(std::vector<Module*>& Modules, std::string* ErrMessage) {
for (iterator I=begin(), E=end(); I != E; ++I) {
if (I->isBytecode() || I->isCompressedBytecode()) {
+ std::string FullMemberName = archPath.get() +
+ "(" + I->getPath().get() + ")";
Module* M = ParseBytecodeBuffer((const unsigned char*)I->getData(),
- I->getSize(), I->getPath().get(), ErrMessage);
+ I->getSize(), FullMemberName, ErrMessage);
if (!M)
return true;
@@ -391,9 +393,11 @@ Archive::findModuleDefiningSymbol(const std::string& symbol) {
ArchiveMember* mbr = parseMemberHeader(modptr, base + mapfile->size());
// Now, load the bytecode module to get the ModuleProvider
+ std::string FullMemberName = archPath.get() + "(" +
+ mbr->getPath().get() + ")";
ModuleProvider* mp = getBytecodeBufferModuleProvider(
(const unsigned char*) mbr->getData(), mbr->getSize(),
- mbr->getPath().get(), 0);
+ FullMemberName, 0);
modules.insert(std::make_pair(fileOffset,std::make_pair(mp,mbr)));
@@ -428,8 +432,10 @@ Archive::findModulesDefiningSymbols(const std::set<std::string>& symbols,
if (mbr->isBytecode() || mbr->isCompressedBytecode()) {
// Get the symbols
std::vector<std::string> symbols;
+ std::string FullMemberName = archPath.get() + "(" +
+ mbr->getPath().get() + ")";
ModuleProvider* MP = GetBytecodeSymbols((const unsigned char*)At,
- mbr->getSize(), mbr->getPath().get(),symbols);
+ mbr->getSize(), FullMemberName, symbols);
if (MP) {
// Insert the module's symbols into the symbol table
OpenPOWER on IntegriCloud