10 #ifndef LLVM_DEBUGINFO_CODEVIEW_TYPERECORD_H
11 #define LLVM_DEBUGINFO_CODEVIEW_TYPERECORD_H
56 :
Attrs(static_cast<uint16_t>(Access)) {}
59 Attrs =
static_cast<uint16_t
>(Access);
107 : ContainingType(ContainingType), Representation(Representation) {}
140 Modifiers(Modifiers) {}
161 CallConv(CallConv), Options(Options), ParameterCount(ParameterCount),
162 ArgumentList(ArgumentList) {}
191 ClassType(ClassType), ThisType(ThisType), CallConv(CallConv),
192 Options(Options), ParameterCount(ParameterCount),
193 ArgumentList(ArgumentList),
194 ThisPointerAdjustment(ThisPointerAdjustment) {}
226 FunctionType(FunctionType), Name(Name) {}
280 Attrs(calcAttrs(PK, PM, PO, Size)) {}
391 IndexType(IndexType), Size(Size), Name(Name) {}
413 :
TypeRecord(Kind), MemberCount(MemberCount), Options(Options),
414 FieldList(FieldList), Name(Name), UniqueName(UniqueName) {}
451 :
TagRecord(Kind, MemberCount, Options, FieldList, Name, UniqueName),
452 DerivationList(DerivationList), VTableShape(VTableShape), Size(Size) {}
461 return static_cast<HfaKind>(Value);
491 return static_cast<HfaKind>(Value);
507 UnderlyingType(UnderlyingType) {}
522 BitOffset(BitOffset) {}
607 FunctionType(FunctionType), Name(Name) {}
630 SourceFile(SourceFile), LineNumber(LineNumber) {}
652 SourceFile(SourceFile), LineNumber(LineNumber), Module(Module) {}
673 ArgIndices(ArgIndices.
begin(), ArgIndices.
end()) {}
691 OverriddenVFTable(OverriddenVFTable), VFPtrOffset(VFPtrOffset) {
722 VFTableOffset(VFTableOffset), Name(Name) {}
726 Attrs(Access, MK, Options), VFTableOffset(VFTableOffset), Name(Name) {}
772 NumOverloads(NumOverloads), MethodList(MethodList), Name(Name) {}
844 Value(std::move(Value)), Name(Name) {}
847 Value(std::move(Value)), Name(Name) {}
908 uint64_t
Offset, uint64_t Index)
909 :
TypeRecord(Kind), Attrs(Attrs), BaseType(BaseType),
913 uint64_t
Offset, uint64_t Index)
941 ContinuationIndex(ContinuationIndex) {}
954 #endif // LLVM_DEBUGINFO_CODEVIEW_TYPERECORD_H
PointerKind
Equivalent to CV_ptrtype_e.
const_iterator end(StringRef path)
Get end iterator over path.
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap. Returns false if a type index is not in the map...
uint16_t getNumOverloads() const
CallingConvention getCallConv() const
UdtSourceLineRecord(TypeRecordKind Kind)
MemberAttributes(MemberAccess Access)
StringRef getName() const
TypeIndex getBaseType() const
VirtualBaseClassRecord(TypeRecordKind Kind)
TypeIndex getArgumentList() const
BuildInfoRecord(TypeRecordKind Kind)
TypeIndex getSourceFile() const
MemberFunctionRecord(TypeIndex ReturnType, TypeIndex ClassType, TypeIndex ThisType, CallingConvention CallConv, FunctionOptions Options, uint16_t ParameterCount, TypeIndex ArgumentList, int32_t ThisPointerAdjustment)
MethodKind getMethodKind() const
A Module instance is used to store all the information related to an LLVM module. ...
TypeLeafKind
Duplicate copy of the above enum, but using the official CV names.
TagRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, StringRef Name, StringRef UniqueName)
MethodOverloadListRecord(ArrayRef< OneMethodRecord > Methods)
static const uint32_t PointerSizeMask
StaticDataMemberRecord(MemberAttributes Attrs, TypeIndex Type, StringRef Name)
VirtualBaseClassRecord(TypeRecordKind Kind, MemberAttributes Attrs, TypeIndex BaseType, TypeIndex VBPtrType, uint64_t Offset, uint64_t Index)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
MethodOptions getFlags() const
Get the flags that are not included in access control or method properties.
MethodOptions getOptions() const
WindowsRTClassKind getWinRTKind() const
StringIdRecord(TypeIndex Id, StringRef String)
ArrayRef< TypeIndex > getArgs() const
BuildInfoRecord(ArrayRef< TypeIndex > ArgIndices)
NestedTypeRecord(TypeRecordKind Kind)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
OverloadedMethodRecord(TypeRecordKind Kind)
PointerRecord(TypeIndex ReferentType, uint32_t Attrs)
ClassRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, TypeIndex DerivationList, TypeIndex VTableShape, uint64_t Size, StringRef Name, StringRef UniqueName)
TypeIndex getElementType() const
const_iterator begin(StringRef path)
Get begin iterator over path.
FieldListRecord(TypeRecordKind Kind)
FieldListRecord(ArrayRef< uint8_t > Data)
PointerRecord(TypeIndex ReferentType, uint32_t Attrs, const MemberPointerInfo &Member)
static const uint32_t PointerSizeShift
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
TypeServer2Record(TypeRecordKind Kind)
BitFieldRecord(TypeIndex Type, uint8_t BitSize, uint8_t BitOffset)
std::vector< TypeIndex > StringIndices
TypeIndex getFunctionType() const
OneMethodRecord(TypeIndex Type, MemberAttributes Attrs, int32_t VFTableOffset, StringRef Name)
BitFieldRecord(TypeRecordKind Kind)
ArgListRecord(TypeRecordKind Kind)
TypeIndex getOverriddenVTable() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
CallingConvention getCallConv() const
uint32_t getLineNumber() const
OneMethodRecord(TypeIndex Type, MemberAccess Access, MethodKind MK, MethodOptions Options, int32_t VFTableOffset, StringRef Name)
EnumRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, StringRef Name, StringRef UniqueName, TypeIndex UnderlyingType)
MemberFunctionRecord(TypeRecordKind Kind)
uint64_t getVBPtrOffset() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
PointerRecord(TypeIndex ReferentType, PointerKind PK, PointerMode PM, PointerOptions PO, uint8_t Size)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
TypeIndex OverriddenVFTable
MemberAccess getAccess() const
DataMemberRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t Offset, StringRef Name)
ArgListRecord(TypeRecordKind Kind, ArrayRef< TypeIndex > Indices)
uint64_t getBaseOffset() const
TypeRecordKind getKind() const
TypeIndex getClassType() const
struct fuzzer::@269 Flags
MemberAttributes()=default
ArrayRef< T > makeArrayRef(const T &OneElt)
Construct an ArrayRef from a single element.
StringRef getName() const
MemberAccess getAccess() const
StringRef getString() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool isPointerToMember() const
ArrayRef< VFTableSlotKind > SlotsRef
StringRef getName() const
TypeIndex getReturnType() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool isIntroducingVirtual() const
TypeIndex getBaseType() const
CVRecord< TypeLeafKind > CVType
TypeIndex getParentScope() const
TypeIndex getContainingType() const
Class to represent function types.
VirtualBaseClassRecord(TypeRecordKind Kind, MemberAccess Access, TypeIndex BaseType, TypeIndex VBPtrType, uint64_t Offset, uint64_t Index)
OneMethodRecord(TypeRecordKind Kind)
ModifierOptions
Equivalent to CV_modifier_t.
uint16_t getMemberCount() const
TypeIndex getThisType() const
UdtSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
TypeIndex ContinuationIndex
VFTableRecord(TypeIndex CompleteClass, TypeIndex OverriddenVFTable, uint32_t VFPtrOffset, StringRef Name, ArrayRef< StringRef > Methods)
TypeIndex getFunctionType() const
uint16_t getParameterCount() const
MemberAccess getAccess() const
MethodKind
Part of member attribute flags. (CV_methodprop_e)
ModifierRecord(TypeIndex ModifiedType, ModifierOptions Modifiers)
StringRef getName() const
TypeIndex getReturnType() const
size_t size() const
size - Get the array size.
ModifierRecord(TypeRecordKind Kind)
EnumeratorRecord(TypeRecordKind Kind)
StringRef getName() const
TypeIndex getContinuationIndex() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
VFTableRecord(TypeRecordKind Kind)
TypeRecordKind
Distinguishes individual records in .debug$T section or PDB type stream.
static const int WinRTKindMask
uint16_t getParameterCount() const
static const uint32_t PointerKindMask
TypeIndex getVBPtrType() const
ListContinuationRecord(TypeRecordKind Kind)
static const uint32_t PointerKindShift
bool isVirtual() const
Is this method virtual.
PointerToMemberRepresentation getRepresentation() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool hasUniqueName() const
The instances of the Type class are immutable: once they are created, they are never changed...
PointerRecord(TypeRecordKind Kind)
StringRef getName() const
Optional< MemberPointerInfo > MemberInfo
NestedTypeRecord(TypeIndex Type, StringRef Name)
TypeServer2Record(StringRef Guid, uint32_t Age, StringRef Name)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
StringRef getName() const
LF_INDEX - Used to chain two large LF_FIELDLIST or LF_METHODLIST records together.
uint32_t getLineNumber() const
TypeIndex getType() const
FuncIdRecord(TypeRecordKind Kind)
TypeIndex getType() const
ArrayRef< OneMethodRecord > getMethods() const
TagRecord(TypeRecordKind Kind)
static const int WinRTKindShift
For method overload sets. LF_METHOD.
OverloadedMethodRecord(uint16_t NumOverloads, TypeIndex MethodList, StringRef Name)
StringRef getName() const
FuncIdRecord(TypeIndex ParentScope, TypeIndex FunctionType, StringRef Name)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
uint8_t getBitSize() const
MemberPointerInfo()=default
std::vector< StringRef > MethodNames
ModifierOptions Modifiers
ArrayRecord(TypeRecordKind Kind)
FunctionOptions getOptions() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool empty() const
empty - Check if the array is empty.
UdtModSourceLineRecord(TypeRecordKind Kind)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
bool isIntroducedVirtual() const
Does this member introduce a new virtual method.
ArrayRef< StringRef > getMethodNames() const
uint16_t getModule() const
BaseClassRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t Offset)
uint32_t getEntryCount() const
ListContinuationRecord(TypeIndex ContinuationIndex)
CallingConvention CallConv
MemberAccess getAccess() const
Get the access specifier. Valid for any kind of member.
ModifierOptions getModifiers() const
ProcedureRecord(TypeIndex ReturnType, CallingConvention CallConv, FunctionOptions Options, uint16_t ParameterCount, TypeIndex ArgumentList)
ClassOptions getOptions() const
PointerOptions
Equivalent to misc lfPointerAttr bitfields.
int32_t ThisPointerAdjustment
MethodOverloadListRecord(TypeRecordKind Kind)
detail::packed_endian_specific_integral< int32_t, little, unaligned > little32_t
TypeIndex getCompleteClass() const
UnionRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, uint64_t Size, StringRef Name, StringRef UniqueName)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
StaticDataMemberRecord(MemberAccess Access, TypeIndex Type, StringRef Name)
TypeIndex getIndexType() const
CallingConvention CallConv
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
TypeIndex getClassType() const
MemberAccess getAccess() const
PointerMode getMode() const
DataMemberRecord(MemberAccess Access, TypeIndex Type, uint64_t Offset, StringRef Name)
MethodKind getMethodKind() const
Indicates if a method is defined with friend, virtual, static, etc.
EnumeratorRecord(MemberAccess Access, APSInt Value, StringRef Name)
TypeRecord(TypeRecordKind Kind)
PointerMode
Equivalent to CV_ptrmode_e.
VFTableShapeRecord(ArrayRef< VFTableSlotKind > Slots)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
TypeIndex getVTableShape() const
static const uint32_t PointerModeMask
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
MemberFuncIdRecord(TypeRecordKind Kind)
detail::packed_endian_specific_integral< uint16_t, little, unaligned > ulittle16_t
ClassRecord(TypeRecordKind Kind)
MethodOptions
Equivalent to CV_fldattr_t bitfield.
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
TypeIndex getFieldList() const
static const uint32_t PointerOptionMask
std::vector< OneMethodRecord > Methods
static const uint32_t PointerModeShift
MemberFuncIdRecord(TypeIndex ClassType, TypeIndex FunctionType, StringRef Name)
static const int HfaKindShift
StringRef getName() const
TypeIndex getModifiedType() const
TypeIndex getType() const
VFTableShapeRecord(std::vector< VFTableSlotKind > Slots)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
ArrayRef< TypeIndex > getIndices() const
TypeIndex getArgumentList() const
SmallVector< TypeIndex, 4 > ArgIndices
StringRef getName() const
msf::VarStreamArray< CVType > CVTypeArray
FunctionOptions getOptions() const
uint32_t getVFPtrOffset() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
VFTableShapeRecord(TypeRecordKind Kind)
StaticDataMemberRecord(TypeRecordKind Kind)
MemberPointerInfo getMemberInfo() const
ArrayRecord(TypeIndex ElementType, TypeIndex IndexType, uint64_t Size, StringRef Name)
StringRef getGuid() const
TypeIndex getType() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
PointerRecord(TypeIndex ReferentType, PointerKind PK, PointerMode PM, PointerOptions PO, uint8_t Size, const MemberPointerInfo &Member)
EnumeratorRecord(MemberAttributes Attrs, APSInt Value, StringRef Name)
TypeIndex getNestedType() const
PointerToMemberRepresentation
Equivalent to CV_pmtype_e.
VFPtrRecord(TypeIndex Type)
PointerKind getPointerKind() const
ProcedureRecord(TypeRecordKind Kind)
StringIdRecord(TypeRecordKind Kind)
MemberAccess
Source-level access specifier. (CV_access_e)
DataMemberRecord(TypeRecordKind Kind)
TypeIndex getMethodList() const
std::vector< VFTableSlotKind > Slots
detail::packed_endian_specific_integral< uint32_t, little, unaligned > ulittle32_t
BaseClassRecord(MemberAccess Access, TypeIndex Type, uint64_t Offset)
uint64_t getFieldOffset() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
MemberAccess getAccess() const
uint8_t getBitOffset() const
BaseClassRecord(TypeRecordKind Kind)
Equvalent to CV_fldattr_t in cvinfo.h.
UnionRecord(TypeRecordKind Kind)
LLVM Value Representation.
TypeIndex getSourceFile() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
EnumRecord(TypeRecordKind Kind)
CallingConvention
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
ArrayRef< VFTableSlotKind > getSlots() const
PointerOptions getOptions() const
VFPtrRecord(TypeRecordKind Kind)
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
StringRef - Represent a constant reference to a string, i.e.
TypeIndex getUnderlyingType() const
StringRef getUniqueName() const
int32_t getVFTableOffset() const
TypeIndex getType() const
MemberAccess getAccess() const
int32_t getThisPointerAdjustment() const
bool remapTypeIndices(ArrayRef< TypeIndex > IndexMap)
Rewrite member type indices with IndexMap.
UdtModSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber, uint16_t Module)
static GCRegistry::Add< ErlangGC > A("erlang","erlang-compatible garbage collector")
TypeIndex getDerivationList() const
uint64_t getVTableIndex() const
MemberPointerInfo(TypeIndex ContainingType, PointerToMemberRepresentation Representation)
MemberAttributes(MemberAccess Access, MethodKind Kind, MethodOptions Flags)
PointerToMemberRepresentation Representation
TypeIndex getReferentType() const
StringRef getName() const
static const int HfaKindMask
StringRef getName() const