diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2017-07-19 22:27:28 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2017-07-19 22:27:28 +0000 |
commit | c398e67fedaf2d0bdd7e1ad39e52e5200cecd577 (patch) | |
tree | fa77355e93d01080ffd34cc23a8d7c39c7e584b4 /llvm/tools/obj2yaml/dwarf2yaml.cpp | |
parent | 967d4aa7a0a1da8b5a18a0a9a65af1b79e205041 (diff) | |
download | bcm5719-llvm-c398e67fedaf2d0bdd7e1ad39e52e5200cecd577.tar.gz bcm5719-llvm-c398e67fedaf2d0bdd7e1ad39e52e5200cecd577.zip |
Use delegation instead of inheritance.
This changes DwarfContext to delegate to DwarfObject instead of having
pure virtual methods.
With this DwarfContextInMemory is replaced with an implementation of
DwarfObject that is local to a .cpp file.
llvm-svn: 308543
Diffstat (limited to 'llvm/tools/obj2yaml/dwarf2yaml.cpp')
-rw-r--r-- | llvm/tools/obj2yaml/dwarf2yaml.cpp | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/llvm/tools/obj2yaml/dwarf2yaml.cpp b/llvm/tools/obj2yaml/dwarf2yaml.cpp index d97eda30c03..9a9dcd86656 100644 --- a/llvm/tools/obj2yaml/dwarf2yaml.cpp +++ b/llvm/tools/obj2yaml/dwarf2yaml.cpp @@ -24,7 +24,7 @@ void dumpInitialLength(DataExtractor &Data, uint32_t &Offset, InitialLength.TotalLength64 = Data.getU64(&Offset); } -void dumpDebugAbbrev(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +void dumpDebugAbbrev(DWARFContext &DCtx, DWARFYAML::Data &Y) { auto AbbrevSetPtr = DCtx.getDebugAbbrev(); if (AbbrevSetPtr) { for (auto AbbrvDeclSet : *AbbrevSetPtr) { @@ -48,8 +48,8 @@ void dumpDebugAbbrev(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { } } -void dumpDebugStrings(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { - StringRef RemainingTable = DCtx.getStringSection(); +void dumpDebugStrings(DWARFContext &DCtx, DWARFYAML::Data &Y) { + StringRef RemainingTable = DCtx.getDWARFObj().getStringSection(); while (RemainingTable.size() > 0) { auto SymbolPair = RemainingTable.split('\0'); RemainingTable = SymbolPair.second; @@ -57,8 +57,9 @@ void dumpDebugStrings(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { } } -void dumpDebugARanges(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { - DataExtractor ArangesData(DCtx.getARangeSection(), DCtx.isLittleEndian(), 0); +void dumpDebugARanges(DWARFContext &DCtx, DWARFYAML::Data &Y) { + DataExtractor ArangesData(DCtx.getDWARFObj().getARangeSection(), + DCtx.isLittleEndian(), 0); uint32_t Offset = 0; DWARFDebugArangeSet Set; @@ -79,7 +80,7 @@ void dumpDebugARanges(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { } } -void dumpPubSection(DWARFContextInMemory &DCtx, DWARFYAML::PubSection &Y, +void dumpPubSection(DWARFContext &DCtx, DWARFYAML::PubSection &Y, StringRef Section) { DataExtractor PubSectionData(Section, DCtx.isLittleEndian(), 0); uint32_t Offset = 0; @@ -97,21 +98,22 @@ void dumpPubSection(DWARFContextInMemory &DCtx, DWARFYAML::PubSection &Y, } } -void dumpDebugPubSections(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +void dumpDebugPubSections(DWARFContext &DCtx, DWARFYAML::Data &Y) { + const DWARFObject &D = DCtx.getDWARFObj(); Y.PubNames.IsGNUStyle = false; - dumpPubSection(DCtx, Y.PubNames, DCtx.getPubNamesSection()); + dumpPubSection(DCtx, Y.PubNames, D.getPubNamesSection()); Y.PubTypes.IsGNUStyle = false; - dumpPubSection(DCtx, Y.PubTypes, DCtx.getPubTypesSection()); + dumpPubSection(DCtx, Y.PubTypes, D.getPubTypesSection()); Y.GNUPubNames.IsGNUStyle = true; - dumpPubSection(DCtx, Y.GNUPubNames, DCtx.getGnuPubNamesSection()); + dumpPubSection(DCtx, Y.GNUPubNames, D.getGnuPubNamesSection()); Y.GNUPubTypes.IsGNUStyle = true; - dumpPubSection(DCtx, Y.GNUPubTypes, DCtx.getGnuPubTypesSection()); + dumpPubSection(DCtx, Y.GNUPubTypes, D.getGnuPubTypesSection()); } -void dumpDebugInfo(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +void dumpDebugInfo(DWARFContext &DCtx, DWARFYAML::Data &Y) { for (const auto &CU : DCtx.compile_units()) { DWARFYAML::Unit NewUnit; NewUnit.Length.setLength(CU->getLength()); @@ -235,7 +237,7 @@ bool dumpFileEntry(DataExtractor &Data, uint32_t &Offset, return true; } -void dumpDebugLines(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +void dumpDebugLines(DWARFContext &DCtx, DWARFYAML::Data &Y) { for (const auto &CU : DCtx.compile_units()) { auto CUDIE = CU->getUnitDIE(); if (!CUDIE) @@ -243,8 +245,8 @@ void dumpDebugLines(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { if (auto StmtOffset = dwarf::toSectionOffset(CUDIE.find(dwarf::DW_AT_stmt_list))) { DWARFYAML::LineTable DebugLines; - DataExtractor LineData(DCtx.getLineSection().Data, DCtx.isLittleEndian(), - CU->getAddressByteSize()); + DataExtractor LineData(DCtx.getDWARFObj().getLineSection().Data, + DCtx.isLittleEndian(), CU->getAddressByteSize()); uint32_t Offset = *StmtOffset; dumpInitialLength(LineData, Offset, DebugLines.Length); uint64_t LineTableLength = DebugLines.Length.getLength(); @@ -344,7 +346,7 @@ void dumpDebugLines(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { } } -std::error_code dwarf2yaml(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +std::error_code dwarf2yaml(DWARFContext &DCtx, DWARFYAML::Data &Y) { dumpDebugAbbrev(DCtx, Y); dumpDebugStrings(DCtx, Y); dumpDebugARanges(DCtx, Y); |