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

Side by Side Diff: lib/Bitcode/NaCl/Reader/NaClBitcodeHeader.cpp

Issue 940243003: PNaCl localmod mods in LLVM to 223109 (local files only) (Closed)
Patch Set: xx 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 unified diff | Download patch
OLDNEW
1 //===- NaClBitcodeHeader.cpp ----------------------------------------------===// 1 //===- NaClBitcodeHeader.cpp ----------------------------------------------===//
2 // PNaCl bitcode header reader. 2 // PNaCl 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 #include "llvm/Bitcode/NaCl/NaClBitcodeHeader.h" 11 #include "llvm/Bitcode/NaCl/NaClBitcodeHeader.h"
12 #include "llvm/Bitcode/NaCl/NaClReaderWriter.h" 12 #include "llvm/Bitcode/NaCl/NaClReaderWriter.h"
13 #include "llvm/Bitcode/ReaderWriter.h" 13 #include "llvm/Bitcode/ReaderWriter.h"
14 #include "llvm/Support/ErrorHandling.h" 14 #include "llvm/Support/ErrorHandling.h"
15 #include "llvm/Support/Format.h" 15 #include "llvm/Support/Format.h"
16 #include "llvm/Support/raw_ostream.h" 16 #include "llvm/Support/raw_ostream.h"
17 #include "llvm/Support/StreamableMemoryObject.h" 17 #include "llvm/Support/StreamingMemoryObject.h"
18 18
19 #include <limits> 19 #include <limits>
20 #include <cstring> 20 #include <cstring>
21 #include <iomanip> 21 #include <iomanip>
22 22
23 using namespace llvm; 23 using namespace llvm;
24 24
25 NaClBitcodeHeaderField::NaClBitcodeHeaderField() 25 NaClBitcodeHeaderField::NaClBitcodeHeaderField()
26 : ID(kInvalid), FType(kBufferType), Len(0), Data(0) {} 26 : ID(kInvalid), FType(kBufferType), Len(0), Data(0) {}
27 27
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 return true; // ReadPrefix sets UnsupportedMessage 183 return true; // ReadPrefix sets UnsupportedMessage
184 BufPtr += 2 * WordSize; 184 BufPtr += 2 * WordSize;
185 185
186 if (ReadFields(BufPtr, BufEnd, NumFields, NumBytes)) 186 if (ReadFields(BufPtr, BufEnd, NumFields, NumBytes))
187 return true; // ReadFields sets UnsupportedMessage 187 return true; // ReadFields sets UnsupportedMessage
188 BufPtr += NumBytes; 188 BufPtr += NumBytes;
189 InstallFields(); 189 InstallFields();
190 return false; 190 return false;
191 } 191 }
192 192
193 bool NaClBitcodeHeader::Read(StreamableMemoryObject *Bytes) { 193 bool NaClBitcodeHeader::Read(MemoryObject *Bytes) {
194 unsigned NumFields; 194 unsigned NumFields;
195 unsigned NumBytes; 195 unsigned NumBytes;
196 // First, read the prefix, which is 2 * WordSize, to determine the
197 // NumBytes and NumFields.
196 { 198 {
197 unsigned char Buffer[2 * WordSize]; 199 unsigned char Buffer[2 * WordSize];
198 if (Bytes->readBytes(0, sizeof(Buffer), Buffer)) 200 if (Bytes->readBytes(Buffer, sizeof(Buffer), 0) != sizeof(Buffer))
199 return UnsupportedError("Bitcode read failure"); 201 return UnsupportedError("Bitcode read failure");
200 if (ReadPrefix(Buffer, Buffer + sizeof(Buffer), NumFields, NumBytes)) 202 if (ReadPrefix(Buffer, Buffer + sizeof(Buffer), NumFields, NumBytes))
201 return true; // ReadPrefix sets UnsupportedMessage 203 return true; // ReadPrefix sets UnsupportedMessage
202 } 204 }
205 // Then read the rest, starting after the 2 * WordSize of the prefix.
203 uint8_t *Header = new uint8_t[NumBytes]; 206 uint8_t *Header = new uint8_t[NumBytes];
204 bool failed = 207 bool failed =
205 Bytes->readBytes(2 * WordSize, NumBytes, Header) || 208 Bytes->readBytes(Header, NumBytes, 2 * WordSize) != NumBytes ||
206 ReadFields(Header, Header + NumBytes, NumFields, NumBytes); 209 ReadFields(Header, Header + NumBytes, NumFields, NumBytes);
207 delete[] Header; 210 delete[] Header;
208 if (failed) 211 if (failed)
209 return UnsupportedError("Bitcode read failure"); 212 return UnsupportedError("Bitcode read failure");
210 InstallFields(); 213 InstallFields();
211 return false; 214 return false;
212 } 215 }
213 216
214 NaClBitcodeHeaderField * 217 NaClBitcodeHeaderField *
215 NaClBitcodeHeader::GetTaggedField(NaClBitcodeHeaderField::Tag ID) const { 218 NaClBitcodeHeader::GetTaggedField(NaClBitcodeHeaderField::Tag ID) const {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 << PNaClVersion << "\n"; 263 << PNaClVersion << "\n";
261 UnsupportedStream.flush(); 264 UnsupportedStream.flush();
262 } 265 }
263 if (Fields.size() != 1) { 266 if (Fields.size() != 1) {
264 IsSupportedFlag = false; 267 IsSupportedFlag = false;
265 IsReadableFlag = false; 268 IsReadableFlag = false;
266 if (!UpdatedUnsupportedMessage) 269 if (!UpdatedUnsupportedMessage)
267 UnsupportedMessage = "Unknown header field(s) found"; 270 UnsupportedMessage = "Unknown header field(s) found";
268 } 271 }
269 } 272 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698