mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
Avoid including CodeView/SymbolRecord.h from MCStreamer.h
Move the types needed out so they can be forward declared instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375325 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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() {}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user