LLDB mainline
ABIX86.cpp File Reference
#include "ABIMacOSX_i386.h"
#include "ABISysV_i386.h"
#include "ABISysV_x86_64.h"
#include "ABIWindows_x86_64.h"
#include "ABIX86.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Target/Process.h"
#include <optional>

Go to the source code of this file.

Classes

struct  RegData

Macros

#define GPRh(l)
#define GPR(r16)
#define GPR64(n)
#define STMM(n)
#define YMM(n)

Typedefs

typedef llvm::SmallDenseMap< llvm::StringRef, llvm::SmallVector< RegData, 4 >, 64 > BaseRegToRegsMap

Functions

static void addPartialRegisters (std::vector< DynamicRegisterInfo::Register > &regs, llvm::ArrayRef< RegData * > subregs, uint32_t base_size, lldb::Encoding encoding, lldb::Format format, uint32_t subreg_size, uint32_t subreg_offset=0)
static void addCombinedRegisters (std::vector< DynamicRegisterInfo::Register > &regs, llvm::ArrayRef< RegData * > subregs1, llvm::ArrayRef< RegData * > subregs2, uint32_t base_size, lldb::Encoding encoding, lldb::Format format)
BaseRegToRegsMap makeBaseRegMap (bool is64bit)

Macro Definition Documentation

◆ GPR

#define GPR ( r16)
Value:
{ \
is64bit ? BaseRegToRegsMap::value_type("r" r16, \
{{GPR32, "e" r16, std::nullopt}, \
{GPR16, r16, std::nullopt}, \
{GPR8, r16 "l", std::nullopt}}) \
: BaseRegToRegsMap::value_type( \
"e" r16, \
{{GPR16, r16, std::nullopt}, {GPR8, r16 "l", std::nullopt}}) \
}
llvm::SmallDenseMap< llvm::StringRef, llvm::SmallVector< RegData, 4 >, 64 > BaseRegToRegsMap
Definition ABIX86.cpp:130
struct _GPR32 GPR32

Definition at line 145 of file ABIX86.cpp.

Referenced by RegisterInfoPOSIX_ppc64le::GetGPRSize(), and makeBaseRegMap().

◆ GPR64

#define GPR64 ( n)
Value:
{ \
BaseRegToRegsMap::value_type("r" #n, {{GPR32, "r" #n "d", std::nullopt}, \
{GPR16, "r" #n "w", std::nullopt}, \
{GPR8, "r" #n "l", std::nullopt}}) \
}

Definition at line 156 of file ABIX86.cpp.

Referenced by RegisterContextFreeBSD_powerpc64::GetGPRSize(), and makeBaseRegMap().

◆ GPRh

#define GPRh ( l)
Value:
{ \
is64bit ? BaseRegToRegsMap::value_type("r" l "x", \
{{GPR32, "e" l "x", std::nullopt}, \
{GPR16, l "x", std::nullopt}, \
{GPR8h, l "h", std::nullopt}, \
{GPR8, l "l", std::nullopt}}) \
: BaseRegToRegsMap::value_type("e" l "x", \
{{GPR16, l "x", std::nullopt}, \
{GPR8h, l "h", std::nullopt}, \
{GPR8, l "l", std::nullopt}}) \
}

Definition at line 132 of file ABIX86.cpp.

Referenced by makeBaseRegMap().

◆ STMM

#define STMM ( n)
Value:
{ BaseRegToRegsMap::value_type("st" #n, {{MM, "mm" #n, std::nullopt}}) }

Definition at line 163 of file ABIX86.cpp.

Referenced by makeBaseRegMap().

◆ YMM

#define YMM ( n)
Value:
{BaseRegToRegsMap::value_type("ymm" #n "h", \
{{YMM_YMMh, "ymm" #n, std::nullopt}})}, \
{ \
BaseRegToRegsMap::value_type("xmm" #n, \
{{YMM_XMM, "ymm" #n, std::nullopt}}) \
}

Definition at line 166 of file ABIX86.cpp.

Referenced by makeBaseRegMap().

Typedef Documentation

◆ BaseRegToRegsMap

typedef llvm::SmallDenseMap<llvm::StringRef, llvm::SmallVector<RegData, 4>, 64> BaseRegToRegsMap

Definition at line 130 of file ABIX86.cpp.

Function Documentation

◆ addCombinedRegisters()

void addCombinedRegisters ( std::vector< DynamicRegisterInfo::Register > & regs,
llvm::ArrayRef< RegData * > subregs1,
llvm::ArrayRef< RegData * > subregs2,
uint32_t base_size,
lldb::Encoding encoding,
lldb::Format format )
static

◆ addPartialRegisters()

void addPartialRegisters ( std::vector< DynamicRegisterInfo::Register > & regs,
llvm::ArrayRef< RegData * > subregs,
uint32_t base_size,
lldb::Encoding encoding,
lldb::Format format,
uint32_t subreg_size,
uint32_t subreg_offset = 0 )
static

◆ makeBaseRegMap()

BaseRegToRegsMap makeBaseRegMap ( bool is64bit)

Definition at line 174 of file ABIX86.cpp.

References GPR, GPR64, GPRh, STMM, and YMM.

Referenced by ABIX86::AugmentRegisterInfo().