diff options
| author | Reid Kleckner <rnk@google.com> | 2019-05-15 20:53:39 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2019-05-15 20:53:39 +0000 |
| commit | 7c438c5b07a306d1861a89842743e13b835a9603 (patch) | |
| tree | 893d2e9f9dda20fb2fad207877a5e6a6638e2f6b /llvm/lib/DebugInfo/CodeView | |
| parent | 14a90661f89c785ca8591a085eed46fdea9edf1d (diff) | |
| download | bcm5719-llvm-7c438c5b07a306d1861a89842743e13b835a9603.tar.gz bcm5719-llvm-7c438c5b07a306d1861a89842743e13b835a9603.zip | |
[codeview] Finish support for reading and writing S_ANNOTATION records
Implement dumping via llvm-pdbutil and llvm-readobj.
llvm-svn: 360813
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView')
| -rw-r--r-- | llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp b/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp index 783b85409f7..44ce04a49e9 100644 --- a/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp +++ b/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp @@ -630,6 +630,18 @@ Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, return Error::success(); } +Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, + AnnotationSym &Annot) { + W.printHex("Offset", Annot.CodeOffset); + W.printHex("Segment", Annot.Segment); + + ListScope S(W, "Strings"); + for (StringRef Str : Annot.Strings) + W.printString(Str); + + return Error::success(); +} + Error CVSymbolDumperImpl::visitUnknownSymbol(CVSymbol &CVR) { W.printNumber("Length", CVR.length()); return Error::success(); diff --git a/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp b/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp index 36d77965daf..70889839ef4 100644 --- a/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp +++ b/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp @@ -471,6 +471,18 @@ Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, return Error::success(); } +Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, + AnnotationSym &Annot) { + + error(IO.mapInteger(Annot.CodeOffset)); + error(IO.mapInteger(Annot.Segment)); + error(IO.mapVectorN<uint16_t>( + Annot.Strings, + [](CodeViewRecordIO &IO, StringRef &S) { return IO.mapStringZ(S); })); + + return Error::success(); +} + RegisterId codeview::decodeFramePtrReg(EncodedFramePtrReg EncodedReg, CPUType CPU) { assert(unsigned(EncodedReg) < 4); |

