aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2016-05-24 18:55:14 +0000
committerZachary Turner <zturner@google.com>2016-05-24 18:55:14 +0000
commit9e33e6f89bbe8f12856f3744e598470302dcf611 (patch)
tree9ce7c4eed026670ae7248897cc9b1d8bd4f0418f /llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
parentf4edae6076d9c09f2c759b0b26bddf6e2eab8b13 (diff)
downloadllvm-9e33e6f89bbe8f12856f3744e598470302dcf611.zip
llvm-9e33e6f89bbe8f12856f3744e598470302dcf611.tar.gz
llvm-9e33e6f89bbe8f12856f3744e598470302dcf611.tar.bz2
[codeview, pdb] Dump symbol records in publics stream
Differential Revision: http://reviews.llvm.org/D20580 Reviewed By: ruiu llvm-svn: 270597
Diffstat (limited to 'llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp')
-rw-r--r--llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
index 2e0b8971..af3cff3 100644
--- a/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
+++ b/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
@@ -181,19 +181,13 @@ Error PublicsStream::reload() {
return Error::success();
}
-std::vector<std::string> PublicsStream::getSymbols() const {
+iterator_range<codeview::SymbolIterator> PublicsStream::getSymbols() const {
+ using codeview::SymbolIterator;
auto SymbolS = Pdb.getPDBSymbolStream();
- if (SymbolS.takeError())
- return {};
+ if (SymbolS.takeError()) {
+ return llvm::make_range<SymbolIterator>(SymbolIterator(), SymbolIterator());
+ }
SymbolStream &SS = SymbolS.get();
- std::vector<std::string> Ret;
- for (const HashRecord &HR : HashRecords) {
- // For some reason, symbol offset is biased by one.
- Expected<std::string> Name = SS.getSymbolName(HR.Off - 1);
- if (Name.takeError())
- return Ret;
- Ret.push_back(std::move(Name.get()));
- }
- return Ret;
+ return SS.getSymbols();
}