diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-04-28 23:47:27 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-04-28 23:47:27 +0000 |
commit | 1573b242aeef45124c68a22a995fbc4bff2cc868 (patch) | |
tree | 0b791a51232db3c209c16dd4bf8092005ab7d08c /llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp | |
parent | f84547c6e0ec638cdfe7367572cd5d57712ea0b9 (diff) | |
download | bcm5719-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.cpp | 37 |
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); |