[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
diff --git a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
index f3e28e0..ec1325f 100644
--- a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
+++ b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
@@ -525,14 +525,17 @@
DictScope D(P, "String Table");
for (uint32_t I : IS->name_ids()) {
- StringRef S = IS->getStringForID(I);
- if (!S.empty()) {
- llvm::SmallString<32> Str;
- Str.append("'");
- Str.append(S);
- Str.append("'");
- P.printString(Str);
- }
+ auto ES = IS->getStringForID(I);
+ if (!ES)
+ return ES.takeError();
+
+ if (ES->empty())
+ continue;
+ llvm::SmallString<32> Str;
+ Str.append("'");
+ Str.append(*ES);
+ Str.append("'");
+ P.printString(Str);
}
return Error::success();
}
@@ -688,8 +691,11 @@
const auto &ST = *ExpectedST;
for (const auto &E : Tpi->getHashAdjusters()) {
DictScope DHA(P);
- StringRef Name = ST.getStringForID(E.first);
- P.printString("Type", Name);
+ auto Name = ST.getStringForID(E.first);
+ if (!Name)
+ return Name.takeError();
+
+ P.printString("Type", *Name);
P.printHex("TI", E.second);
}
}