LLVM 22.0.0git
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
SFrame.h File Reference

This file contains data-structure definitions and constants to support unwinding based on .sframe sections. More...

#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitmaskEnum.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/Endian.h"
#include "llvm/BinaryFormat/SFrameConstants.def"

Go to the source code of this file.

Classes

struct  llvm::sframe::Preamble< E >
 
struct  llvm::sframe::Header< E >
 
struct  llvm::sframe::FDEInfo< E >
 
struct  llvm::sframe::FuncDescEntry< E >
 
struct  llvm::sframe::FREInfo< E >
 
struct  llvm::sframe::FrameRowEntry< T, E >
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
namespace  llvm::sframe
 
namespace  llvm::sframe::detail
 

Macros

#define HANDLE_SFRAME_VERSION(CODE, NAME)   NAME = CODE,
 
#define HANDLE_SFRAME_FLAG(CODE, NAME)   NAME = CODE,
 
#define HANDLE_SFRAME_ABI(CODE, NAME)   NAME = CODE,
 
#define HANDLE_SFRAME_FRE_TYPE(CODE, NAME)   NAME = CODE,
 
#define HANDLE_SFRAME_FDE_TYPE(CODE, NAME)   NAME = CODE,
 
#define HANDLE_SFRAME_AARCH64_PAUTH_KEY(CODE, NAME)   NAME = CODE,
 
#define HANDLE_SFRAME_FRE_OFFSET(CODE, NAME)   NAME = CODE,
 

Typedefs

template<typename T , endianness E>
using llvm::sframe::detail::packed = support::detail::packed_endian_specific_integral< T, E, support::unaligned >
 
template<endianness E>
using llvm::sframe::FrameRowEntryAddr1 = FrameRowEntry< uint8_t, E >
 
template<endianness E>
using llvm::sframe::FrameRowEntryAddr2 = FrameRowEntry< uint16_t, E >
 
template<endianness E>
using llvm::sframe::FrameRowEntryAddr4 = FrameRowEntry< uint32_t, E >
 

Enumerations

enum class  llvm::sframe::Version : uint8_t { llvm::sframe::HANDLE_SFRAME_VERSION }
 
enum class  llvm::sframe::Flags : uint8_t { llvm::sframe::HANDLE_SFRAME_FLAG , llvm::sframe::V2AllFlags = FDESorted | FramePointer | FDEFuncStartPCRel , llvm::sframe::LLVM_MARK_AS_BITMASK_ENUM =(0xff) }
 
enum class  llvm::sframe::ABI : uint8_t { llvm::sframe::HANDLE_SFRAME_ABI }
 
enum class  llvm::sframe::FREType : uint8_t { llvm::sframe::HANDLE_SFRAME_FRE_TYPE }
 SFrame FRE Types. Bits 0-3 of FuncDescEntry.Info. More...
 
enum class  llvm::sframe::FDEType : uint8_t { llvm::sframe::HANDLE_SFRAME_FDE_TYPE }
 SFrame FDE Types. Bit 4 of FuncDescEntry.Info. More...
 
enum class  llvm::sframe::AArch64PAuthKey : uint8_t { llvm::sframe::HANDLE_SFRAME_AARCH64_PAUTH_KEY }
 Speficies key used for signing return addresses. More...
 
enum class  llvm::sframe::FREOffset : uint8_t { llvm::sframe::HANDLE_SFRAME_FRE_OFFSET }
 Size of stack offsets. Bits 6-7 of FREInfo.Info. More...
 
enum class  llvm::sframe::BaseReg : uint8_t { llvm::sframe::FP = 0 , llvm::sframe::SP = 1 }
 Stack frame base register. Bit 0 of FREInfo.Info. More...
 

Functions

 llvm::sframe::LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE ()
 
LLVM_ABI ArrayRef< EnumEntry< Version > > llvm::sframe::getVersions ()
 
LLVM_ABI ArrayRef< EnumEntry< Flags > > llvm::sframe::getFlags ()
 
LLVM_ABI ArrayRef< EnumEntry< ABI > > llvm::sframe::getABIs ()
 
LLVM_ABI ArrayRef< EnumEntry< FREType > > llvm::sframe::getFRETypes ()
 
LLVM_ABI ArrayRef< EnumEntry< FDEType > > llvm::sframe::getFDETypes ()
 
LLVM_ABI ArrayRef< EnumEntry< AArch64PAuthKey > > llvm::sframe::getAArch64PAuthKeys ()
 
LLVM_ABI ArrayRef< EnumEntry< FREOffset > > llvm::sframe::getFREOffsets ()
 
LLVM_ABI ArrayRef< EnumEntry< BaseReg > > llvm::sframe::getBaseRegisters ()
 

Variables

constexpr uint16_t llvm::sframe::Magic = 0xdee2
 

Detailed Description

This file contains data-structure definitions and constants to support unwinding based on .sframe sections.

This only supports SFRAME_VERSION_2 as described at https://sourceware.org/binutils/docs/sframe-spec.html

Definition in file SFrame.h.

Macro Definition Documentation

◆ HANDLE_SFRAME_AARCH64_PAUTH_KEY

#define HANDLE_SFRAME_AARCH64_PAUTH_KEY (   CODE,
  NAME 
)    NAME = CODE,

Definition at line 66 of file SFrame.h.

◆ HANDLE_SFRAME_ABI

#define HANDLE_SFRAME_ABI (   CODE,
  NAME 
)    NAME = CODE,

Definition at line 47 of file SFrame.h.

◆ HANDLE_SFRAME_FDE_TYPE

#define HANDLE_SFRAME_FDE_TYPE (   CODE,
  NAME 
)    NAME = CODE,

Definition at line 59 of file SFrame.h.

◆ HANDLE_SFRAME_FLAG

#define HANDLE_SFRAME_FLAG (   CODE,
  NAME 
)    NAME = CODE,

Definition at line 40 of file SFrame.h.

◆ HANDLE_SFRAME_FRE_OFFSET

#define HANDLE_SFRAME_FRE_OFFSET (   CODE,
  NAME 
)    NAME = CODE,

Definition at line 72 of file SFrame.h.

◆ HANDLE_SFRAME_FRE_TYPE

#define HANDLE_SFRAME_FRE_TYPE (   CODE,
  NAME 
)    NAME = CODE,

Definition at line 53 of file SFrame.h.

◆ HANDLE_SFRAME_VERSION

#define HANDLE_SFRAME_VERSION (   CODE,
  NAME 
)    NAME = CODE,

Definition at line 35 of file SFrame.h.