LLVM: include/llvm/BinaryFormat/SFrame.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_BINARYFORMAT_SFRAME_H
16#define LLVM_BINARYFORMAT_SFRAME_H
17
23
24namespace llvm {
25
26template struct EnumEntry;
27
29
31
33
35#define HANDLE_SFRAME_VERSION(CODE, NAME) NAME = CODE,
36#include "llvm/BinaryFormat/SFrameConstants.def"
37};
38
40#define HANDLE_SFRAME_FLAG(CODE, NAME) NAME = CODE,
41#include "llvm/BinaryFormat/SFrameConstants.def"
42 V2AllFlags = FDESorted | FramePointer | FDEFuncStartPCRel,
44};
45
47#define HANDLE_SFRAME_ABI(CODE, NAME) NAME = CODE,
48#include "llvm/BinaryFormat/SFrameConstants.def"
49};
50
51
53#define HANDLE_SFRAME_FRE_TYPE(CODE, NAME) NAME = CODE,
54#include "llvm/BinaryFormat/SFrameConstants.def"
55};
56
57
59#define HANDLE_SFRAME_FDE_TYPE(CODE, NAME) NAME = CODE,
60#include "llvm/BinaryFormat/SFrameConstants.def"
61};
62
63
64
66#define HANDLE_SFRAME_AARCH64_PAUTH_KEY(CODE, NAME) NAME = CODE,
67#include "llvm/BinaryFormat/SFrameConstants.def"
68};
69
70
72#define HANDLE_SFRAME_FRE_OFFSET(CODE, NAME) NAME = CODE,
73#include "llvm/BinaryFormat/SFrameConstants.def"
74};
75
76
81
83template <typename T, endianness E>
86}
87
93
105};
106
109
117 Info = ((PAuthKey & 1) << 5) | ((static_cast<uint8_t>(FDE) & 1) << 4) |
118 (static_cast<uint8_t>(FRE) & 0xf);
119 }
121};
122
132
135
156 Info = ((RA & 1) << 7) | ((static_cast<uint8_t>(Sz) & 3) << 5) |
157 ((N & 0xf) << 1) | (static_cast<uint8_t>(Reg) & 1);
158 }
160};
161
166
170
179
180}
181}
182
183#endif
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
SI optimize exec mask operations pre RA
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
support::detail::packed_endian_specific_integral< T, E, support::unaligned > packed
Definition SFrame.h:84
AArch64PAuthKey
Speficies key used for signing return addresses.
Definition SFrame.h:65
BaseReg
Stack frame base register. Bit 0 of FREInfo.Info.
Definition SFrame.h:77
@ FP
Definition SFrame.h:78
@ SP
Definition SFrame.h:79
Flags
Definition SFrame.h:39
@ LLVM_MARK_AS_BITMASK_ENUM
Definition SFrame.h:43
@ V2AllFlags
Definition SFrame.h:42
ABI
Definition SFrame.h:46
LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()
LLVM_ABI ArrayRef< EnumEntry< ABI > > getABIs()
FrameRowEntry< uint32_t, E > FrameRowEntryAddr4
Definition SFrame.h:169
FREOffset
Size of stack offsets. Bits 6-7 of FREInfo.Info.
Definition SFrame.h:71
FDEType
SFrame FDE Types. Bit 4 of FuncDescEntry.Info.
Definition SFrame.h:58
FrameRowEntry< uint8_t, E > FrameRowEntryAddr1
Definition SFrame.h:167
LLVM_ABI ArrayRef< EnumEntry< BaseReg > > getBaseRegisters()
LLVM_ABI ArrayRef< EnumEntry< FREOffset > > getFREOffsets()
LLVM_ABI ArrayRef< EnumEntry< FDEType > > getFDETypes()
LLVM_ABI ArrayRef< EnumEntry< Flags > > getFlags()
constexpr uint16_t Magic
Definition SFrame.h:32
LLVM_ABI ArrayRef< EnumEntry< AArch64PAuthKey > > getAArch64PAuthKeys()
FrameRowEntry< uint16_t, E > FrameRowEntryAddr2
Definition SFrame.h:168
LLVM_ABI ArrayRef< EnumEntry< FREType > > getFRETypes()
FREType
SFrame FRE Types. Bits 0-3 of FuncDescEntry.Info.
Definition SFrame.h:52
Version
Definition SFrame.h:34
LLVM_ABI ArrayRef< EnumEntry< Version > > getVersions()
This is an optimization pass for GlobalISel generic memory operations.
uint8_t getPAuthKey() const
Definition SFrame.h:110
detail::packed< uint8_t, E > Info
Definition SFrame.h:108
void setPAuthKey(uint8_t P)
Definition SFrame.h:113
void setFREType(FREType R)
Definition SFrame.h:115
FREType getFREType() const
Definition SFrame.h:112
void setFDEType(FDEType D)
Definition SFrame.h:114
FDEType getFDEType() const
Definition SFrame.h:111
uint8_t getFuncInfo() const
Definition SFrame.h:120
void setFuncInfo(uint8_t PAuthKey, FDEType FDE, FREType FRE)
Definition SFrame.h:116
uint8_t getFREInfo() const
Definition SFrame.h:159
FREOffset getOffsetSize() const
Definition SFrame.h:137
void setReturnAddressSigned(bool RA)
Definition SFrame.h:142
detail::packed< uint8_t, E > Info
Definition SFrame.h:134
BaseReg getBaseRegister() const
Definition SFrame.h:141
void setBaseRegister(BaseReg Reg)
Definition SFrame.h:152
void setFREInfo(bool RA, FREOffset Sz, uint8_t N, BaseReg Reg)
Definition SFrame.h:155
void setOffsetSize(FREOffset Sz)
Definition SFrame.h:145
void setOffsetCount(uint8_t N)
Definition SFrame.h:149
uint8_t getOffsetCount() const
Definition SFrame.h:140
bool isReturnAddressSigned() const
Definition SFrame.h:136
detail::packed< uint8_t, E > StartAddress
Definition SFrame.h:163
FREInfo< E > Info
Definition SFrame.h:164
detail::packed< uint32_t, E > StartFREOff
Definition SFrame.h:126
FDEInfo< E > Info
Definition SFrame.h:128
detail::packed< uint32_t, E > Size
Definition SFrame.h:125
detail::packed< uint16_t, E > Padding2
Definition SFrame.h:130
detail::packed< uint32_t, E > NumFREs
Definition SFrame.h:127
detail::packed< int32_t, E > StartAddress
Definition SFrame.h:124
detail::packed< uint8_t, E > RepSize
Definition SFrame.h:129
detail::packed< uint16_t, E > Magic
Definition SFrame.h:89
detail::packed< enum Version, E > Version
Definition SFrame.h:90
detail::packed< enum Flags, E > Flags
Definition SFrame.h:91