From: Reid Spencer Date: Mon, 13 Dec 2004 02:59:03 +0000 (+0000) Subject: Implement error handling in OpenAndLoad* functions so the Linker can handle it. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5af46883f27eb66ada1ca01e011e80bfb838f08e;p=oota-llvm.git Implement error handling in OpenAndLoad* functions so the Linker can handle it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18853 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Archive/ArchiveReader.cpp b/lib/Archive/ArchiveReader.cpp index b00487f0ded..a813371958d 100644 --- a/lib/Archive/ArchiveReader.cpp +++ b/lib/Archive/ArchiveReader.cpp @@ -280,13 +280,17 @@ Archive::loadArchive() { // Open and completely load the archive file. Archive* -Archive::OpenAndLoad(const sys::Path& file) { - - Archive* result = new Archive(file, true); - - result->loadArchive(); - - return result; +Archive::OpenAndLoad(const sys::Path& file, std::string* ErrorMessage) { + try { + Archive* result = new Archive(file, true); + result->loadArchive(); + return result; + } catch (const std::string& msg) { + if (ErrorMessage) { + *ErrorMessage = msg; + } + return 0; + } } // Get all the bytecode modules from the archive @@ -371,12 +375,17 @@ Archive::loadSymbolTable() { // Open the archive and load just the symbol tables Archive* -Archive::OpenAndLoadSymbols(const sys::Path& file) { - Archive* result = new Archive(file, true); - - result->loadSymbolTable(); - - return result; +Archive::OpenAndLoadSymbols(const sys::Path& file, std::string* ErrorMessage) { + try { + Archive* result = new Archive(file, true); + result->loadSymbolTable(); + return result; + } catch (const std::string& msg) { + if (ErrorMessage) { + *ErrorMessage = msg; + } + return 0; + } } // Look up one symbol in the symbol table and return a ModuleProvider for the diff --git a/lib/Bytecode/Archive/ArchiveReader.cpp b/lib/Bytecode/Archive/ArchiveReader.cpp index b00487f0ded..a813371958d 100644 --- a/lib/Bytecode/Archive/ArchiveReader.cpp +++ b/lib/Bytecode/Archive/ArchiveReader.cpp @@ -280,13 +280,17 @@ Archive::loadArchive() { // Open and completely load the archive file. Archive* -Archive::OpenAndLoad(const sys::Path& file) { - - Archive* result = new Archive(file, true); - - result->loadArchive(); - - return result; +Archive::OpenAndLoad(const sys::Path& file, std::string* ErrorMessage) { + try { + Archive* result = new Archive(file, true); + result->loadArchive(); + return result; + } catch (const std::string& msg) { + if (ErrorMessage) { + *ErrorMessage = msg; + } + return 0; + } } // Get all the bytecode modules from the archive @@ -371,12 +375,17 @@ Archive::loadSymbolTable() { // Open the archive and load just the symbol tables Archive* -Archive::OpenAndLoadSymbols(const sys::Path& file) { - Archive* result = new Archive(file, true); - - result->loadSymbolTable(); - - return result; +Archive::OpenAndLoadSymbols(const sys::Path& file, std::string* ErrorMessage) { + try { + Archive* result = new Archive(file, true); + result->loadSymbolTable(); + return result; + } catch (const std::string& msg) { + if (ErrorMessage) { + *ErrorMessage = msg; + } + return 0; + } } // Look up one symbol in the symbol table and return a ModuleProvider for the