diff options
| author | Reid Spencer <rspencer@reidspencer.com> | 2006-08-25 17:43:11 +0000 |
|---|---|---|
| committer | Reid Spencer <rspencer@reidspencer.com> | 2006-08-25 17:43:11 +0000 |
| commit | f25aebf8cfc3a6fba60b8f42baa3a9f150605ff7 (patch) | |
| tree | e52d574d694ae018651e6345c9af7960ab01c590 /llvm/lib/Bytecode/Archive | |
| parent | 8cca95cf5db9036fa88f785ff2bc742dfac68eea (diff) | |
| download | bcm5719-llvm-f25aebf8cfc3a6fba60b8f42baa3a9f150605ff7.tar.gz bcm5719-llvm-f25aebf8cfc3a6fba60b8f42baa3a9f150605ff7.zip | |
For PR797:
Remove exception throwing/handling from lib/Bytecode, and adjust its users
to compensate for changes in the interface.
llvm-svn: 29875
Diffstat (limited to 'llvm/lib/Bytecode/Archive')
| -rw-r--r-- | llvm/lib/Bytecode/Archive/ArchiveReader.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/Bytecode/Archive/ArchiveWriter.cpp | 5 |
2 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/Bytecode/Archive/ArchiveReader.cpp b/llvm/lib/Bytecode/Archive/ArchiveReader.cpp index 38aa07243c7..e4769cac888 100644 --- a/llvm/lib/Bytecode/Archive/ArchiveReader.cpp +++ b/llvm/lib/Bytecode/Archive/ArchiveReader.cpp @@ -475,14 +475,16 @@ Archive::findModuleDefiningSymbol(const std::string& symbol, const char* modptr = base + fileOffset; ArchiveMember* mbr = parseMemberHeader(modptr, base + mapfile->size(),ErrMsg); if (!mbr) - return false; + return 0; // Now, load the bytecode module to get the ModuleProvider std::string FullMemberName = archPath.toString() + "(" + mbr->getPath().toString() + ")"; ModuleProvider* mp = getBytecodeBufferModuleProvider( (const unsigned char*) mbr->getData(), mbr->getSize(), - FullMemberName, 0); + FullMemberName, ErrMsg, 0); + if (!mp) + return 0; modules.insert(std::make_pair(fileOffset, std::make_pair(mp, mbr))); @@ -523,7 +525,7 @@ Archive::findModulesDefiningSymbols(std::set<std::string>& symbols, std::string FullMemberName = archPath.toString() + "(" + mbr->getPath().toString() + ")"; ModuleProvider* MP = GetBytecodeSymbols((const unsigned char*)At, - mbr->getSize(), FullMemberName, symbols); + mbr->getSize(), FullMemberName, symbols, error); if (MP) { // Insert the module's symbols into the symbol table @@ -537,7 +539,7 @@ Archive::findModulesDefiningSymbols(std::set<std::string>& symbols, } else { if (error) *error = "Can't parse bytecode member: " + - mbr->getPath().toString(); + mbr->getPath().toString() + ": " + *error; delete mbr; return false; } diff --git a/llvm/lib/Bytecode/Archive/ArchiveWriter.cpp b/llvm/lib/Bytecode/Archive/ArchiveWriter.cpp index 3746dbff8a1..096a9993a81 100644 --- a/llvm/lib/Bytecode/Archive/ArchiveWriter.cpp +++ b/llvm/lib/Bytecode/Archive/ArchiveWriter.cpp @@ -223,7 +223,7 @@ Archive::writeMember( member.getPath().toString() + ")"; ModuleProvider* MP = GetBytecodeSymbols( - (const unsigned char*)data,fSize,FullMemberName, symbols); + (const unsigned char*)data,fSize,FullMemberName, symbols, ErrMsg); // If the bytecode parsed successfully if ( MP ) { @@ -247,7 +247,8 @@ Archive::writeMember( delete mFile; } if (ErrMsg) - *ErrMsg = "Can't parse bytecode member: " + member.getPath().toString(); + *ErrMsg = "Can't parse bytecode member: " + member.getPath().toString() + + ": " + *ErrMsg; return true; } } |

