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

Side by Side Diff: lib/Bitcode/NaCl/Analysis/NaClObjDump.cpp

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 issues in patch set 5. 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 //===-- NaClObjDump.cpp - Dump PNaCl bitcode contents ---------------------===// 1 //===-- NaClObjDump.cpp - Dump PNaCl bitcode contents ---------------------===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 9
10 #include "llvm/ADT/STLExtras.h" 10 #include "llvm/ADT/STLExtras.h"
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 // Be sure to flush any remaining errors. 582 // Be sure to flush any remaining errors.
583 ObjDump.Flush(); 583 ObjDump.Flush();
584 } 584 }
585 585
586 // Returns the number of errors that were sent to the ObjDump. 586 // Returns the number of errors that were sent to the ObjDump.
587 unsigned GetNumErrors() { 587 unsigned GetNumErrors() {
588 return ObjDump.GetNumErrors(); 588 return ObjDump.GetNumErrors();
589 } 589 }
590 590
591 /// Generates an error with the given message. 591 /// Generates an error with the given message.
592 bool ErrorAt(uint64_t Bit, const std::string &Message) final { 592 bool ErrorAt(naclbitc::ErrorLevel Level, uint64_t Bit,
593 // Use local error routine so that all errors are treated uniformly. 593 const std::string &Message) final {
594 ObjDump.Error(Bit) << Message << "\n"; 594 ObjDump.ErrorAt(Level, Bit) << Message << "\n";
Karl 2015/03/09 18:10:54 Here is where FlushThenQuit is called.
jvoung (off chromium) 2015/03/09 18:50:22 Interesting, there used to be a special case for O
Karl 2015/03/09 19:49:25 There was. See GetFunctionType on line 660. Howeve
595 if (Level == naclbitc::Fatal)
596 ObjDump.FlushThenQuit();
595 return true; 597 return true;
596 } 598 }
597 599
598 /// Flushes out objdump and then exits with fatal error.
599 LLVM_ATTRIBUTE_NORETURN
600 void Fatal() {
601 NaClBitcodeParser::Fatal();
602 }
603
604 /// Flushes out objdump and then exits with fatal error, using
605 /// the given message.
606 LLVM_ATTRIBUTE_NORETURN
607 void FatalAt(uint64_t Bit, const std::string &Message) final {
608 ObjDump.Fatal(Bit, Message);
609 }
610
611 /// Parses the top-level module block. 600 /// Parses the top-level module block.
612 bool ParseBlock(unsigned BlockID) override; 601 bool ParseBlock(unsigned BlockID) override;
613 602
614 /// Installs the given type to the next available type index. 603 /// Installs the given type to the next available type index.
615 void InstallType(Type *Ty) { 604 void InstallType(Type *Ty) {
616 TypeIdType.push_back(Ty); 605 TypeIdType.push_back(Ty);
617 } 606 }
618 607
619 /// Returns the type associated with the given type index. 608 /// Returns the type associated with the given type index.
620 Type *GetType(uint32_t Index) { 609 Type *GetType(uint32_t Index) {
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 } 1347 }
1359 1348
1360 raw_ostream &Errors() { 1349 raw_ostream &Errors() {
1361 return Context->Errors(); 1350 return Context->Errors();
1362 } 1351 }
1363 1352
1364 raw_ostream &Warnings() { 1353 raw_ostream &Warnings() {
1365 return Context->Warnings(); 1354 return Context->Warnings();
1366 } 1355 }
1367 1356
1368 void Fatal() { 1357 bool ErrorAt(naclbitc::ErrorLevel Level, uint64_t Bit,
1369 return Context->Fatal(); 1358 const std::string &Message) final {
1370 } 1359 return Context->ErrorAt(Level, Bit, Message);
1371
1372 void FatalAt(uint64_t Bit, const std::string &Message) override {
1373 return Context->FatalAt(Bit, Message);
1374 } 1360 }
1375 1361
1376 const std::string &GetAssemblyIndent() const { 1362 const std::string &GetAssemblyIndent() const {
1377 return Context->GetAssemblyIndent(); 1363 return Context->GetAssemblyIndent();
1378 } 1364 }
1379 1365
1380 unsigned GetAssemblyNumTabs() const { 1366 unsigned GetAssemblyNumTabs() const {
1381 return Context->GetAssemblyNumTabs(); 1367 return Context->GetAssemblyNumTabs();
1382 } 1368 }
1383 1369
(...skipping 2188 matching lines...) Expand 10 before | Expand all | Expand 10 after
3572 ObjDump.Error() << "Expected 1 top level block in bitcode: Found:" 3558 ObjDump.Error() << "Expected 1 top level block in bitcode: Found:"
3573 << NumBlocksRead << "\n"; 3559 << NumBlocksRead << "\n";
3574 ErrorsFound = true; 3560 ErrorsFound = true;
3575 } 3561 }
3576 3562
3577 ObjDump.Flush(); 3563 ObjDump.Flush();
3578 return ErrorsFound || Parser.GetNumErrors() > 0; 3564 return ErrorsFound || Parser.GetNumErrors() > 0;
3579 } 3565 }
3580 3566
3581 } 3567 }
OLDNEW
« no previous file with comments | « lib/Bitcode/NaCl/Analysis/NaClCompress.cpp ('k') | lib/Bitcode/NaCl/Analysis/NaClObjDumpStream.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698