summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-04-28 23:47:27 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-04-28 23:47:27 +0000
commit1573b242aeef45124c68a22a995fbc4bff2cc868 (patch)
tree0b791a51232db3c209c16dd4bf8092005ab7d08c /llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
parentf84547c6e0ec638cdfe7367572cd5d57712ea0b9 (diff)
downloadbcm5719-llvm-1573b242aeef45124c68a22a995fbc4bff2cc868.tar.gz
bcm5719-llvm-1573b242aeef45124c68a22a995fbc4bff2cc868.zip
[llvm-pdbdump] Restore error messages, handle bad block sizes
We lost the ability to report errors, bring it back. Also, correctly validate the block size. llvm-svn: 267955
Diffstat (limited to 'llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp')
-rw-r--r--llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp37
1 files changed, 23 insertions, 14 deletions
diff --git a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
index 4d4987611b9..b91d8685715 100644
--- a/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
+++ b/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
@@ -308,20 +308,7 @@ static void dumpStructure(RawSession &RS) {
}
}
-static void dumpInput(StringRef Path) {
- std::unique_ptr<IPDBSession> Session;
- if (opts::DumpHeaders || !opts::DumpStreamData.empty()) {
- PDB_ErrorCode Error = loadDataForPDB(PDB_ReaderType::Raw, Path, Session);
- if (Error == PDB_ErrorCode::Success) {
- RawSession *RS = static_cast<RawSession *>(Session.get());
- dumpStructure(*RS);
- }
-
- outs().flush();
- return;
- }
-
- PDB_ErrorCode Error = loadDataForPDB(PDB_ReaderType::DIA, Path, Session);
+static void reportError(StringRef Path, PDB_ErrorCode Error) {
switch (Error) {
case PDB_ErrorCode::Success:
break;
@@ -347,6 +334,28 @@ static void dumpInput(StringRef Path) {
<< "'. An unknown error occured.\n";
return;
}
+}
+
+static void dumpInput(StringRef Path) {
+ std::unique_ptr<IPDBSession> Session;
+ if (opts::DumpHeaders || !opts::DumpStreamData.empty()) {
+ PDB_ErrorCode Error = loadDataForPDB(PDB_ReaderType::Raw, Path, Session);
+ if (Error == PDB_ErrorCode::Success) {
+ RawSession *RS = static_cast<RawSession *>(Session.get());
+ dumpStructure(*RS);
+ }
+
+ reportError(Path, Error);
+ outs().flush();
+ return;
+ }
+
+ PDB_ErrorCode Error = loadDataForPDB(PDB_ReaderType::DIA, Path, Session);
+ if (Error != PDB_ErrorCode::Success) {
+ reportError(Path, Error);
+ return;
+ }
+
if (opts::LoadAddress)
Session->setLoadAddress(opts::LoadAddress);
OpenPOWER on IntegriCloud