diff options
| author | Zachary Turner <zturner@google.com> | 2017-05-03 17:11:11 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2017-05-03 17:11:11 +0000 |
| commit | 2d5c2cd3ce208ebfac2bceb4c73157bef4e00fdc (patch) | |
| tree | f3a5c0de380443aa47cc2d67fc0badacbceaf3d9 /llvm/tools/llvm-pdbdump/Diff.cpp | |
| parent | 761bcdaf066f55075989dac2dbf0ebb148198ee0 (diff) | |
| download | bcm5719-llvm-2d5c2cd3ce208ebfac2bceb4c73157bef4e00fdc.tar.gz bcm5719-llvm-2d5c2cd3ce208ebfac2bceb4c73157bef4e00fdc.zip | |
[llvm-readobj] Update readobj to re-use parsing code.
llvm-readobj hand rolls some CodeView parsing code for string
tables, so this patch updates it to re-use some of the newly
introduced parsing code in LLVMDebugInfoCodeView.
Differential Revision: https://reviews.llvm.org/D32772
llvm-svn: 302052
Diffstat (limited to 'llvm/tools/llvm-pdbdump/Diff.cpp')
| -rw-r--r-- | llvm/tools/llvm-pdbdump/Diff.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/llvm/tools/llvm-pdbdump/Diff.cpp b/llvm/tools/llvm-pdbdump/Diff.cpp index ddae9b708b6..418c2361ac3 100644 --- a/llvm/tools/llvm-pdbdump/Diff.cpp +++ b/llvm/tools/llvm-pdbdump/Diff.cpp @@ -394,11 +394,17 @@ Error DiffStyle::diffStringTable() { StringRef S1, S2; if (I < IdList1.size()) { Id1 = IdList1[I]; - S1 = ST1.getStringForID(*Id1); + if (auto Result = ST1.getStringForID(*Id1)) + S1 = *Result; + else + return Result.takeError(); } if (I < IdList2.size()) { Id2 = IdList2[I]; - S2 = ST2.getStringForID(*Id2); + if (auto Result = ST2.getStringForID(*Id2)) + S2 = *Result; + else + return Result.takeError(); } if (Id1 == Id2 && S1 == S2) continue; @@ -418,10 +424,18 @@ Error DiffStyle::diffStringTable() { std::vector<StringRef> Strings1, Strings2; Strings1.reserve(IdList1.size()); Strings2.reserve(IdList2.size()); - for (auto ID : IdList1) - Strings1.push_back(ST1.getStringForID(ID)); - for (auto ID : IdList2) - Strings2.push_back(ST2.getStringForID(ID)); + for (auto ID : IdList1) { + auto S = ST1.getStringForID(ID); + if (!S) + return S.takeError(); + Strings1.push_back(*S); + } + for (auto ID : IdList2) { + auto S = ST2.getStringForID(ID); + if (!S) + return S.takeError(); + Strings2.push_back(*S); + } SmallVector<StringRef, 64> OnlyP; SmallVector<StringRef, 64> OnlyQ; |

