summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbdump/Diff.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2017-05-03 17:11:11 +0000
committerZachary Turner <zturner@google.com>2017-05-03 17:11:11 +0000
commit2d5c2cd3ce208ebfac2bceb4c73157bef4e00fdc (patch)
treef3a5c0de380443aa47cc2d67fc0badacbceaf3d9 /llvm/tools/llvm-pdbdump/Diff.cpp
parent761bcdaf066f55075989dac2dbf0ebb148198ee0 (diff)
downloadbcm5719-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.cpp26
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;
OpenPOWER on IntegriCloud