diff options
author | Reid Kleckner <rnk@google.com> | 2019-10-19 01:44:09 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2019-10-19 01:44:09 +0000 |
commit | 7bbe711fb1b9057e48dec3c15b084eee7f8ff5fb (patch) | |
tree | f5e31022914e589f039593f5de907cc03050f5e9 /llvm | |
parent | 14a3f77ba1034d551e5f8a5bc4cd3ae131738773 (diff) | |
download | bcm5719-llvm-7bbe711fb1b9057e48dec3c15b084eee7f8ff5fb.tar.gz bcm5719-llvm-7bbe711fb1b9057e48dec3c15b084eee7f8ff5fb.zip |
Avoid including CodeView/SymbolRecord.h from MCStreamer.h
Move the types needed out so they can be forward declared instead.
llvm-svn: 375325
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h | 56 | ||||
-rw-r--r-- | llvm/include/llvm/MC/MCStreamer.h | 16 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/MC/MCAsmStreamer.cpp | 17 | ||||
-rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 9 | ||||
-rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 9 |
6 files changed, 62 insertions, 53 deletions
diff --git a/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h b/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h index 41062456343..1aafa3ca9f1 100644 --- a/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h +++ b/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h @@ -469,61 +469,61 @@ public: uint32_t RecordOffset = 0; }; +struct DefRangeRegisterHeader { + ulittle16_t Register; + ulittle16_t MayHaveNoName; +}; + // S_DEFRANGE_REGISTER class DefRangeRegisterSym : public SymbolRecord { public: - struct Header { - ulittle16_t Register; - ulittle16_t MayHaveNoName; - }; - explicit DefRangeRegisterSym(SymbolRecordKind Kind) : SymbolRecord(Kind) {} explicit DefRangeRegisterSym(uint32_t RecordOffset) : SymbolRecord(SymbolRecordKind::DefRangeRegisterSym), RecordOffset(RecordOffset) {} - uint32_t getRelocationOffset() const { return RecordOffset + sizeof(Header); } + uint32_t getRelocationOffset() const { return RecordOffset + sizeof(DefRangeRegisterHeader); } - Header Hdr; + DefRangeRegisterHeader Hdr; LocalVariableAddrRange Range; std::vector<LocalVariableAddrGap> Gaps; uint32_t RecordOffset = 0; }; +struct DefRangeSubfieldRegisterHeader { + ulittle16_t Register; + ulittle16_t MayHaveNoName; + ulittle32_t OffsetInParent; +}; + // S_DEFRANGE_SUBFIELD_REGISTER class DefRangeSubfieldRegisterSym : public SymbolRecord { public: - struct Header { - ulittle16_t Register; - ulittle16_t MayHaveNoName; - ulittle32_t OffsetInParent; - }; - explicit DefRangeSubfieldRegisterSym(SymbolRecordKind Kind) : SymbolRecord(Kind) {} explicit DefRangeSubfieldRegisterSym(uint32_t RecordOffset) : SymbolRecord(SymbolRecordKind::DefRangeSubfieldRegisterSym), RecordOffset(RecordOffset) {} - uint32_t getRelocationOffset() const { return RecordOffset + sizeof(Header); } + uint32_t getRelocationOffset() const { return RecordOffset + sizeof(DefRangeSubfieldRegisterHeader); } - Header Hdr; + DefRangeSubfieldRegisterHeader Hdr; LocalVariableAddrRange Range; std::vector<LocalVariableAddrGap> Gaps; uint32_t RecordOffset = 0; }; +struct DefRangeFramePointerRelHeader { + little32_t Offset; +}; + // S_DEFRANGE_FRAMEPOINTER_REL class DefRangeFramePointerRelSym : public SymbolRecord { static constexpr uint32_t RelocationOffset = 8; public: - struct Header { - little32_t Offset; - }; - explicit DefRangeFramePointerRelSym(SymbolRecordKind Kind) : SymbolRecord(Kind) {} explicit DefRangeFramePointerRelSym(uint32_t RecordOffset) @@ -534,22 +534,22 @@ public: return RecordOffset + RelocationOffset; } - Header Hdr; + DefRangeFramePointerRelHeader Hdr; LocalVariableAddrRange Range; std::vector<LocalVariableAddrGap> Gaps; uint32_t RecordOffset = 0; }; +struct DefRangeRegisterRelHeader { + ulittle16_t Register; + ulittle16_t Flags; + little32_t BasePointerOffset; +}; + // S_DEFRANGE_REGISTER_REL class DefRangeRegisterRelSym : public SymbolRecord { public: - struct Header { - ulittle16_t Register; - ulittle16_t Flags; - little32_t BasePointerOffset; - }; - explicit DefRangeRegisterRelSym(SymbolRecordKind Kind) : SymbolRecord(Kind) {} explicit DefRangeRegisterRelSym(uint32_t RecordOffset) : SymbolRecord(SymbolRecordKind::DefRangeRegisterRelSym), @@ -567,9 +567,9 @@ public: bool hasSpilledUDTMember() const { return Hdr.Flags & IsSubfieldFlag; } uint16_t offsetInParent() const { return Hdr.Flags >> OffsetInParentShift; } - uint32_t getRelocationOffset() const { return RecordOffset + sizeof(Header); } + uint32_t getRelocationOffset() const { return RecordOffset + sizeof(DefRangeRegisterRelHeader); } - Header Hdr; + DefRangeRegisterRelHeader Hdr; LocalVariableAddrRange Range; std::vector<LocalVariableAddrGap> Gaps; diff --git a/llvm/include/llvm/MC/MCStreamer.h b/llvm/include/llvm/MC/MCStreamer.h index c703afe223a..6b48580ae57 100644 --- a/llvm/include/llvm/MC/MCStreamer.h +++ b/llvm/include/llvm/MC/MCStreamer.h @@ -18,7 +18,6 @@ #include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringRef.h" -#include "llvm/DebugInfo/CodeView/SymbolRecord.h" #include "llvm/MC/MCDirectives.h" #include "llvm/MC/MCLinkerOptimizationHint.h" #include "llvm/MC/MCSymbol.h" @@ -55,6 +54,13 @@ class MCSubtargetInfo; class raw_ostream; class Twine; +namespace codeview { +struct DefRangeRegisterRelHeader; +struct DefRangeSubfieldRegisterHeader; +struct DefRangeRegisterHeader; +struct DefRangeFramePointerRelHeader; +} + using MCSectionSubPair = std::pair<MCSection *, const MCExpr *>; /// Target specific streamer interface. This is used so that targets can @@ -873,19 +879,19 @@ public: virtual void EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeRegisterRelSym::Header DRHdr); + codeview::DefRangeRegisterRelHeader DRHdr); virtual void EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeSubfieldRegisterSym::Header DRHdr); + codeview::DefRangeSubfieldRegisterHeader DRHdr); virtual void EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeRegisterSym::Header DRHdr); + codeview::DefRangeRegisterHeader DRHdr); virtual void EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeFramePointerRelSym::Header DRHdr); + codeview::DefRangeFramePointerRelHeader DRHdr); /// This implements the CodeView '.cv_stringtable' assembler directive. virtual void EmitCVStringTableDirective() {} diff --git a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp index 012da940f89..c6457f3626d 100644 --- a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp @@ -2654,7 +2654,7 @@ void CodeViewDebug::emitLocalVariable(const FunctionInfo &FI, (bool(Flags & LocalSymFlags::IsParameter) ? (EncFP == FI.EncodedParamFramePtrReg) : (EncFP == FI.EncodedLocalFramePtrReg))) { - DefRangeFramePointerRelSym::Header DRHdr; + DefRangeFramePointerRelHeader DRHdr; DRHdr.Offset = Offset; OS.EmitCVDefRangeDirective(DefRange.Ranges, DRHdr); } else { @@ -2664,7 +2664,7 @@ void CodeViewDebug::emitLocalVariable(const FunctionInfo &FI, (DefRange.StructOffset << DefRangeRegisterRelSym::OffsetInParentShift); } - DefRangeRegisterRelSym::Header DRHdr; + DefRangeRegisterRelHeader DRHdr; DRHdr.Register = Reg; DRHdr.Flags = RegRelFlags; DRHdr.BasePointerOffset = Offset; @@ -2673,13 +2673,13 @@ void CodeViewDebug::emitLocalVariable(const FunctionInfo &FI, } else { assert(DefRange.DataOffset == 0 && "unexpected offset into register"); if (DefRange.IsSubfield) { - DefRangeSubfieldRegisterSym::Header DRHdr; + DefRangeSubfieldRegisterHeader DRHdr; DRHdr.Register = DefRange.CVRegister; DRHdr.MayHaveNoName = 0; DRHdr.OffsetInParent = DefRange.StructOffset; OS.EmitCVDefRangeDirective(DefRange.Ranges, DRHdr); } else { - DefRangeRegisterSym::Header DRHdr; + DefRangeRegisterHeader DRHdr; DRHdr.Register = DefRange.CVRegister; DRHdr.MayHaveNoName = 0; OS.EmitCVDefRangeDirective(DefRange.Ranges, DRHdr); diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp index dd27d0bc8a5..2d9c2cb2125 100644 --- a/llvm/lib/MC/MCAsmStreamer.cpp +++ b/llvm/lib/MC/MCAsmStreamer.cpp @@ -11,6 +11,7 @@ #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/Twine.h" +#include "llvm/DebugInfo/CodeView/SymbolRecord.h" #include "llvm/MC/MCAsmBackend.h" #include "llvm/MC/MCAsmInfo.h" #include "llvm/MC/MCAssembler.h" @@ -263,19 +264,19 @@ public: void EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeRegisterRelSym::Header DRHdr) override; + codeview::DefRangeRegisterRelHeader DRHdr) override; void EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeSubfieldRegisterSym::Header DRHdr) override; + codeview::DefRangeSubfieldRegisterHeader DRHdr) override; void EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeRegisterSym::Header DRHdr) override; + codeview::DefRangeRegisterHeader DRHdr) override; void EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeFramePointerRelSym::Header DRHdr) override; + codeview::DefRangeFramePointerRelHeader DRHdr) override; void EmitCVStringTableDirective() override; void EmitCVFileChecksumsDirective() override; @@ -1438,7 +1439,7 @@ void MCAsmStreamer::PrintCVDefRangePrefix( void MCAsmStreamer::EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeRegisterRelSym::Header DRHdr) { + codeview::DefRangeRegisterRelHeader DRHdr) { PrintCVDefRangePrefix(Ranges); OS << ", reg_rel, "; OS << DRHdr.Register << ", " << DRHdr.Flags << ", " @@ -1448,7 +1449,7 @@ void MCAsmStreamer::EmitCVDefRangeDirective( void MCAsmStreamer::EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeSubfieldRegisterSym::Header DRHdr) { + codeview::DefRangeSubfieldRegisterHeader DRHdr) { PrintCVDefRangePrefix(Ranges); OS << ", subfield_reg, "; OS << DRHdr.Register << ", " << DRHdr.OffsetInParent; @@ -1457,7 +1458,7 @@ void MCAsmStreamer::EmitCVDefRangeDirective( void MCAsmStreamer::EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeRegisterSym::Header DRHdr) { + codeview::DefRangeRegisterHeader DRHdr) { PrintCVDefRangePrefix(Ranges); OS << ", reg, "; OS << DRHdr.Register; @@ -1466,7 +1467,7 @@ void MCAsmStreamer::EmitCVDefRangeDirective( void MCAsmStreamer::EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeFramePointerRelSym::Header DRHdr) { + codeview::DefRangeFramePointerRelHeader DRHdr) { PrintCVDefRangePrefix(Ranges); OS << ", frame_ptr_rel, "; OS << DRHdr.Offset; diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index ca6bc252a0d..b59ac08ad6c 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -22,6 +22,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/ADT/Twine.h" #include "llvm/BinaryFormat/Dwarf.h" +#include "llvm/DebugInfo/CodeView/SymbolRecord.h" #include "llvm/MC/MCAsmInfo.h" #include "llvm/MC/MCCodeView.h" #include "llvm/MC/MCContext.h" @@ -3908,7 +3909,7 @@ bool AsmParser::parseDirectiveCVDefRange() { parseAbsoluteExpression(DRRegister)) return Error(Loc, "expected register number"); - codeview::DefRangeRegisterSym::Header DRHdr; + codeview::DefRangeRegisterHeader DRHdr; DRHdr.Register = DRRegister; DRHdr.MayHaveNoName = 0; getStreamer().EmitCVDefRangeDirective(Ranges, DRHdr); @@ -3921,7 +3922,7 @@ bool AsmParser::parseDirectiveCVDefRange() { parseAbsoluteExpression(DROffset)) return Error(Loc, "expected offset value"); - codeview::DefRangeFramePointerRelSym::Header DRHdr; + codeview::DefRangeFramePointerRelHeader DRHdr; DRHdr.Offset = DROffset; getStreamer().EmitCVDefRangeDirective(Ranges, DRHdr); break; @@ -3938,7 +3939,7 @@ bool AsmParser::parseDirectiveCVDefRange() { parseAbsoluteExpression(DROffsetInParent)) return Error(Loc, "expected offset value"); - codeview::DefRangeSubfieldRegisterSym::Header DRHdr; + codeview::DefRangeSubfieldRegisterHeader DRHdr; DRHdr.Register = DRRegister; DRHdr.MayHaveNoName = 0; DRHdr.OffsetInParent = DROffsetInParent; @@ -3963,7 +3964,7 @@ bool AsmParser::parseDirectiveCVDefRange() { parseAbsoluteExpression(DRBasePointerOffset)) return Error(Loc, "expected base pointer offset value"); - codeview::DefRangeRegisterRelSym::Header DRHdr; + codeview::DefRangeRegisterRelHeader DRHdr; DRHdr.Register = DRRegister; DRHdr.Flags = DRFlags; DRHdr.BasePointerOffset = DRBasePointerOffset; diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 38d4b177e28..b8278cb1107 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -12,6 +12,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/ADT/Twine.h" #include "llvm/BinaryFormat/COFF.h" +#include "llvm/DebugInfo/CodeView/SymbolRecord.h" #include "llvm/MC/MCAsmBackend.h" #include "llvm/MC/MCAsmInfo.h" #include "llvm/MC/MCCodeView.h" @@ -347,7 +348,7 @@ void MCStreamer::EmitCVDefRangeDirective( void MCStreamer::EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeRegisterRelSym::Header DRHdr) { + codeview::DefRangeRegisterRelHeader DRHdr) { SmallString<20> BytePrefix; copyBytesForDefRange(BytePrefix, codeview::S_DEFRANGE_REGISTER_REL, DRHdr); EmitCVDefRangeDirective(Ranges, BytePrefix); @@ -355,7 +356,7 @@ void MCStreamer::EmitCVDefRangeDirective( void MCStreamer::EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeSubfieldRegisterSym::Header DRHdr) { + codeview::DefRangeSubfieldRegisterHeader DRHdr) { SmallString<20> BytePrefix; copyBytesForDefRange(BytePrefix, codeview::S_DEFRANGE_SUBFIELD_REGISTER, DRHdr); @@ -364,7 +365,7 @@ void MCStreamer::EmitCVDefRangeDirective( void MCStreamer::EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeRegisterSym::Header DRHdr) { + codeview::DefRangeRegisterHeader DRHdr) { SmallString<20> BytePrefix; copyBytesForDefRange(BytePrefix, codeview::S_DEFRANGE_REGISTER, DRHdr); EmitCVDefRangeDirective(Ranges, BytePrefix); @@ -372,7 +373,7 @@ void MCStreamer::EmitCVDefRangeDirective( void MCStreamer::EmitCVDefRangeDirective( ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, - codeview::DefRangeFramePointerRelSym::Header DRHdr) { + codeview::DefRangeFramePointerRelHeader DRHdr) { SmallString<20> BytePrefix; copyBytesForDefRange(BytePrefix, codeview::S_DEFRANGE_FRAMEPOINTER_REL, DRHdr); |