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

94template struct Header {

105};

106

107template struct FDEInfo {

109

117 Info = ((PAuthKey & 1) << 5) | ((static_cast<uint8_t>(FDE) & 1) << 4) |

118 (static_cast<uint8_t>(FRE) & 0xf);

119 }

121};

122

132

133template struct FREInfo {

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