LLVM 22.0.0git
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)
#define HANDLE_SFRAME_FLAG(CODE, NAME)
#define HANDLE_SFRAME_ABI(CODE, NAME)
#define HANDLE_SFRAME_FRE_TYPE(CODE, NAME)
#define HANDLE_SFRAME_FDE_TYPE(CODE, NAME)
#define HANDLE_SFRAME_AARCH64_PAUTH_KEY(CODE, NAME)
#define HANDLE_SFRAME_FRE_OFFSET(CODE, NAME)

Typedefs

template<typename T, endianness E>
using llvm::sframe::detail::packed
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
enum class  llvm::sframe::Flags : uint8_t { llvm::sframe::V2AllFlags = FDESorted | FramePointer | FDEFuncStartPCRel , llvm::sframe::LLVM_MARK_AS_BITMASK_ENUM =(0xff) }
enum class  llvm::sframe::ABI : uint8_t
enum class  llvm::sframe::FREType : uint8_t
 SFrame FRE Types. Bits 0-3 of FuncDescEntry.Info. More...
enum class  llvm::sframe::FDEType : uint8_t
 SFrame FDE Types. Bit 4 of FuncDescEntry.Info. More...
enum class  llvm::sframe::AArch64PAuthKey : uint8_t
 Speficies key used for signing return addresses. More...
enum class  llvm::sframe::FREOffset : uint8_t
 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 )
Value:
NAME = CODE,

Definition at line 66 of file SFrame.h.

◆ HANDLE_SFRAME_ABI

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

Definition at line 47 of file SFrame.h.

◆ HANDLE_SFRAME_FDE_TYPE

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

Definition at line 59 of file SFrame.h.

◆ HANDLE_SFRAME_FLAG

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

Definition at line 40 of file SFrame.h.

◆ HANDLE_SFRAME_FRE_OFFSET

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

Definition at line 72 of file SFrame.h.

◆ HANDLE_SFRAME_FRE_TYPE

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

Definition at line 53 of file SFrame.h.

◆ HANDLE_SFRAME_VERSION

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

Definition at line 35 of file SFrame.h.