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

Side by Side Diff: include/llvm/Bitcode/NaCl/NaClBitcodeHeader.h

Issue 23753003: Report fatal translator errors to the browser (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: split errors from streamable readBytes and Header ReadPrefix Created 7 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | lib/Bitcode/NaCl/Reader/NaClBitcodeHeader.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===-- llvm/Bitcode/NaCl/NaClBitcodeHeader.h - ----------------*- C++ -*-===// 1 //===-- llvm/Bitcode/NaCl/NaClBitcodeHeader.h - ----------------*- C++ -*-===//
2 // NaCl Bitcode header reader. 2 // NaCl Bitcode header reader.
3 // 3 //
4 // The LLVM Compiler Infrastructure 4 // The LLVM Compiler Infrastructure
5 // 5 //
6 // This file is distributed under the University of Illinois Open Source 6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details. 7 // License. See LICENSE.TXT for details.
8 // 8 //
9 //===----------------------------------------------------------------------===// 9 //===----------------------------------------------------------------------===//
10 // 10 //
11 // This header defines interfaces to read and write NaCl bitcode wire format 11 // This header defines interfaces to read and write NaCl bitcode wire format
12 // file headers. 12 // file headers.
13 // 13 //
14 //===----------------------------------------------------------------------===// 14 //===----------------------------------------------------------------------===//
15 15
16 #ifndef LLVM_BITCODE_NACL_NACLBITCODEHEADER_H 16 #ifndef LLVM_BITCODE_NACL_NACLBITCODEHEADER_H
17 #define LLVM_BITCODE_NACL_NACLBITCODEHEADER_H 17 #define LLVM_BITCODE_NACL_NACLBITCODEHEADER_H
18 18
19 #include "llvm/ADT/StringRef.h"
19 #include "llvm/Support/Compiler.h" 20 #include "llvm/Support/Compiler.h"
20 #include "llvm/Support/DataTypes.h" 21 #include "llvm/Support/DataTypes.h"
21 #include <string> 22 #include <string>
22 #include <vector> 23 #include <vector>
23 24
24 namespace llvm { 25 namespace llvm {
25 class StreamableMemoryObject; 26 class StreamableMemoryObject;
26 27
27 // Class representing a variable-size metadata field in the bitcode header. 28 // Class representing a variable-size metadata field in the bitcode header.
28 // Also contains the list of known (typed) Tag IDs. 29 // Also contains the list of known (typed) Tag IDs.
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 // Defines the PNaCl version defined by the header file. 142 // Defines the PNaCl version defined by the header file.
142 uint32_t PNaClVersion; 143 uint32_t PNaClVersion;
143 144
144 public: 145 public:
145 static const int WordSize = NaClBitcodeHeaderField::WordSize; 146 static const int WordSize = NaClBitcodeHeaderField::WordSize;
146 147
147 NaClBitcodeHeader(); 148 NaClBitcodeHeader();
148 ~NaClBitcodeHeader(); 149 ~NaClBitcodeHeader();
149 150
150 /// \brief Installs the fields of the header, defining if the header 151 /// \brief Installs the fields of the header, defining if the header
151 /// is readable and supported. 152 /// is readable and supported. Sets UnsupportedMessage on failure.
152 void InstallFields(); 153 void InstallFields();
153 154
154 /// \brief Adds a field to the list of fields in a header. Takes ownership 155 /// \brief Adds a field to the list of fields in a header. Takes ownership
155 /// of fields added. 156 /// of fields added.
156 void push_back(NaClBitcodeHeaderField *Field) { 157 void push_back(NaClBitcodeHeaderField *Field) {
157 Fields.push_back(Field); 158 Fields.push_back(Field);
158 } 159 }
159 160
160 /// \brief Read the PNaCl bitcode header, The format of the header is: 161 /// \brief Read the PNaCl bitcode header, The format of the header is:
161 /// 162 ///
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 /// (0 if no such field). 203 /// (0 if no such field).
203 NaClBitcodeHeaderField *GetField(size_t index) const; 204 NaClBitcodeHeaderField *GetField(size_t index) const;
204 205
205 /// \brief Returns the PNaClVersion, as defined by the header. 206 /// \brief Returns the PNaClVersion, as defined by the header.
206 uint32_t GetPNaClVersion() const { return PNaClVersion; } 207 uint32_t GetPNaClVersion() const { return PNaClVersion; }
207 208
208 private: 209 private:
209 // Reads and verifies the first 8 bytes of the header, consisting 210 // Reads and verifies the first 8 bytes of the header, consisting
210 // of the magic number 'PEXE', and the value defining the number 211 // of the magic number 'PEXE', and the value defining the number
211 // of fields and number of bytes used to hold fields. 212 // of fields and number of bytes used to hold fields.
212 // Returns false if successful. 213 // Returns false if successful, sets UnsupportedMessage otherwise.
213 bool ReadPrefix(const unsigned char *BufPtr, const unsigned char *BufEnd, 214 bool ReadPrefix(const unsigned char *BufPtr, const unsigned char *BufEnd,
214 unsigned &NumFields, unsigned &NumBytes); 215 unsigned &NumFields, unsigned &NumBytes);
215 216
216 // Reads and verifies the fields in the header. 217 // Reads and verifies the fields in the header.
217 // Returns false if successful. 218 // Returns false if successful, sets UnsupportedMessage otherwise.
218 bool ReadFields(const unsigned char *BufPtr, const unsigned char *BufEnd, 219 bool ReadFields(const unsigned char *BufPtr, const unsigned char *BufEnd,
219 unsigned NumFields, unsigned NumBytes); 220 unsigned NumFields, unsigned NumBytes);
220 221
222 // Sets the Unsupported error message and returns true.
223 bool UnsupportedError(StringRef Message) {
224 UnsupportedMessage = Message.str();
225 return true;
226 }
227
221 }; 228 };
222 229
223 } // namespace llvm 230 } // namespace llvm
224 231
225 #endif 232 #endif
OLDNEW
« no previous file with comments | « no previous file | lib/Bitcode/NaCl/Reader/NaClBitcodeHeader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698