diff options
Diffstat (limited to 'lib/Bitcode/NaCl/Reader')
-rw-r--r-- | lib/Bitcode/NaCl/Reader/NaClBitcodeHeader.cpp | 6 | ||||
-rw-r--r-- | lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp | 2 | ||||
-rw-r--r-- | lib/Bitcode/NaCl/Reader/NaClBitcodeReader.h | 9 |
3 files changed, 10 insertions, 7 deletions
diff --git a/lib/Bitcode/NaCl/Reader/NaClBitcodeHeader.cpp b/lib/Bitcode/NaCl/Reader/NaClBitcodeHeader.cpp index aa73b9cffa..2dd2af5dc3 100644 --- a/lib/Bitcode/NaCl/Reader/NaClBitcodeHeader.cpp +++ b/lib/Bitcode/NaCl/Reader/NaClBitcodeHeader.cpp @@ -249,8 +249,12 @@ void NaClBitcodeHeader::InstallFields() { if (PNaClVersion != 1) { IsSupportedFlag = false; IsReadableFlag = false; - UnsupportedMessage = "Unsupported Version"; UpdatedUnsupportedMessage = true; + UnsupportedMessage.clear(); + raw_string_ostream UnsupportedStream(UnsupportedMessage); + UnsupportedStream << "Unsupported PNaCl bitcode version: " + << PNaClVersion << "\n"; + UnsupportedStream.flush(); } if (Fields.size() != 1) { IsSupportedFlag = false; diff --git a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp index 09a94c08cf..c7eb1ac683 100644 --- a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp +++ b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp @@ -1504,7 +1504,7 @@ bool NaClBitcodeReader::ParseBitcodeInto(Module *M) { M->setDataLayout("e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-" "f32:32:32-f64:64:64-p:32:32:32-v128:32:32"); - if (InitStream()) return true; + if (InitStream()) return Error(Header.Unsupported()); // We expect a number of well-defined blocks, though we don't necessarily // need to understand them all. diff --git a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.h b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.h index 3b9d8982d5..fe7b5c1e9e 100644 --- a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.h +++ b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.h @@ -207,15 +207,11 @@ public: virtual bool MaterializeModule(Module *M, std::string *ErrInfo = 0); virtual void Dematerialize(GlobalValue *GV); - bool Error(const char *Str) { - ErrorString = Str; - return true; - } bool Error(const std::string &Str) { ErrorString = Str; return true; } - const char *getErrorString() const { return ErrorString.c_str(); } + const std::string &getErrorString() const { return ErrorString; } /// @brief Main interface to parsing a bitcode buffer. /// @returns true if an error occurred. @@ -227,6 +223,9 @@ private: return !(Header.IsSupported() || (!AcceptSupportedBitcodeOnly && Header.IsReadable())); } + uint32_t GetPNaClVersion() const { + return Header.GetPNaClVersion(); + } Type *getTypeByID(unsigned ID); // Returns the value associated with ID. The value must already exist, // or a forward referenced value created by getOrCreateFnVaueByID. |