Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Unified Diff: include/llvm/Bitcode/NaCl/NaClObjDumpStream.h

Issue 986453002: Additional clean ups on errors in bitcode parsing. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Fix comment. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/llvm/Bitcode/NaCl/NaClBitstreamReader.h ('k') | lib/Bitcode/NaCl/Analysis/NaClBitcodeAnalyzer.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/llvm/Bitcode/NaCl/NaClObjDumpStream.h
diff --git a/include/llvm/Bitcode/NaCl/NaClObjDumpStream.h b/include/llvm/Bitcode/NaCl/NaClObjDumpStream.h
index 8ff6460b6c67f70521e668def6f89e21b6819c1e..fa8575f7951d2d0b5a9ae71dd92889fa43aae1de 100644
--- a/include/llvm/Bitcode/NaCl/NaClObjDumpStream.h
+++ b/include/llvm/Bitcode/NaCl/NaClObjDumpStream.h
@@ -672,9 +672,9 @@ class RecordTextFormatter : public TextFormatter {
RecordTextFormatter(const RecordTextFormatter&) = delete;
RecordTextFormatter &operator=(const RecordTextFormatter&) = delete;
public:
- /// The address write width used to print the number of
- /// bytes in the record bit address, when printing records.
- static const unsigned AddressWriteWidth = 8;
+ /// The address write width used to print a bit address, when
+ /// printing records.
+ static const unsigned AddressWriteWidth = 10;
explicit RecordTextFormatter(ObjDumpStream *ObjDump);
@@ -708,6 +708,9 @@ private:
StartClusteringDirective StartCluster;
// End clustering tokens.
FinishClusteringDirective FinishCluster;
+
+ // Generates an address label with padding to match AddressWriteWidth;
+ std::string getBitAddress(uint64_t Bit);
};
/// Implements a stream to print out bitcode records, assembly code,
@@ -806,53 +809,40 @@ public:
/// then returns the comments stream. In general, warnings will be
/// printed after the next record, unless a call to Flush is made.
raw_ostream &Warning() {
- return Warning(LastKnownBit);
+ return WarningAt(LastKnownBit);
}
/// Prints "Warning(Bit/8:Bit%8): " onto the comments stream, and
/// then returns the comments stream. In general, warnings will be
/// printed after the next record, unless a call to Flush is made.
- raw_ostream &Warning(uint64_t Bit) {
+ raw_ostream &WarningAt(uint64_t Bit) {
LastKnownBit = Bit;
- return PrintMessagePrefix("Warning", Bit);
+ return naclbitc::ErrorAt(Comments(), naclbitc::Warning, Bit);
}
- /// Prints "Error(Bit/8:Bit%8): " onto the comments stream, records
- /// that an error has occurred, and then returns the comments
- /// stream. In general errors will be printed after the next record,
- /// unless a call to Flush is made.
+ /// Prints "Error(Bit/8:Bit%8): " onto the comments stream using the
+ /// last know bit position of the input. Then, it records that an
+ /// error has occurred and returns the comments stream. In general
+ /// errors will be printed after the next record, unless a call to
+ /// Flush is made.
raw_ostream &Error() {
- return Error(LastKnownBit);
- }
-
- /// Prints "Error(Bit/8:Bit%8): " onto the comments stream, records
- /// that an error has occurred, and then returns the comments
- /// stream. In general errors will be printed after the next record,
- /// unless a call to Flush is made.
- raw_ostream &Error(uint64_t Bit);
-
- /// Write a fatal error message to the dump stream, and then
- /// stop the executable. If any assembly, comments, or errors have
- /// been buffered, they will be printed first.
- LLVM_ATTRIBUTE_NORETURN
- void Fatal(const std::string &Message) {
- Fatal(LastKnownBit, Message);
- }
-
- /// Write a fatal error message to the dump stream, and then
- /// stop the executable. If any assembly, comments, or errors have
- /// been buffered, they will be printed first. Associates fatal error
- /// Message with the given Bit.
- LLVM_ATTRIBUTE_NORETURN
- void Fatal(uint64_t Bit, const std::string &Message);
-
- /// Write a fatal error message to the dump stream, and then
- /// stop the executable. If any assembly, comments, or errors have
- /// been buffered, they will be printed first, along with the given record.
- LLVM_ATTRIBUTE_NORETURN
- void Fatal(uint64_t Bit,
- const llvm::NaClBitcodeRecordData &Record,
- const std::string &Message);
+ return ErrorAt(LastKnownBit);
+ }
+
+ /// Prints "Error(Bit/8:Bit%8): " onto the comments stream at the
+ /// given Bit position. Then, it records that an error has occurred
+ /// and returns the comments stream. In general errors will be
+ /// printed after the next record, unless a call to Flush is made.
+ raw_ostream &ErrorAt(uint64_t Bit) {
+ return ErrorAt(naclbitc::Error, Bit);
+ }
+
+ /// Prints "Level(Bit/8:Bit%8): " onto the comments stream at the
+ /// given bit position and severity Level. Then, it records that an
+ /// error has occurred and then returns the comments stream. In
+ /// general errors will be printed after the next record, unless a
+ /// call to Flush is made.
+ raw_ostream &ErrorAt(naclbitc::ErrorLevel Level, uint64_t Bit);
/// Dumps a record (at the given bit), along with all buffered assembly,
/// comments, and errors, into the objdump stream.
@@ -869,6 +859,11 @@ public:
/// corresponding record, into the objdump stream.
void Flush();
+ /// Flushes out the last record and/or error, and then stops
+ /// the executable. Should be called immediately after generating
+ /// the error message using ErrorAt(naclbitc::Fatal,...).
+ void FlushThenQuit();
+
/// Increments the record indent by one.
void IncRecordIndent() {
RecordFormatter.Inc();
@@ -920,8 +915,7 @@ public:
}
/// Changes the internal state, to assume one is processing a record
- /// at the given bit. Used by Error() and Fatal(Message) to fill in
- /// the corresponding bit to associate with the error message.
+ /// at the given bit.
void SetRecordBitAddress(uint64_t Bit) {
LastKnownBit = Bit;
}
@@ -965,12 +959,6 @@ private:
AssemblyBuffer.clear();
MessageBuffer.clear();
}
-
- // Returns the message stream with 'Label(Bit/8:Bit%8): '.
- raw_ostream &PrintMessagePrefix(const char *Label, uint64_t Bit) {
- return Comments() << Label << "(" << NaClBitstreamReader::getBitAddress(Bit)
- << "): ";
- }
};
}
« no previous file with comments | « include/llvm/Bitcode/NaCl/NaClBitstreamReader.h ('k') | lib/Bitcode/NaCl/Analysis/NaClBitcodeAnalyzer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698