LLDB
mainline
llvm-project
lldb
source
Plugins
Process
Utility
RegisterContextNetBSD_i386.cpp
Go to the documentation of this file.
1
//===-- RegisterContextNetBSD_i386.cpp --------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "
RegisterContextNetBSD_i386.h
"
10
#include "
RegisterContext_x86.h
"
11
#include "
lldb-x86-register-enums.h
"
12
#include "
lldb/lldb-defines.h
"
13
14
using namespace
lldb_private
;
15
using namespace
lldb
;
16
17
// this needs to match 'struct reg'
18
struct
GPR
{
19
uint32_t
eax
;
20
uint32_t
ecx
;
21
uint32_t
edx
;
22
uint32_t
ebx
;
23
uint32_t
esp
;
24
uint32_t
ebp
;
25
uint32_t
esi
;
26
uint32_t
edi
;
27
uint32_t
eip
;
28
uint32_t
eflags
;
29
uint32_t
cs
;
30
uint32_t
ss
;
31
uint32_t
ds
;
32
uint32_t
es
;
33
uint32_t
fs
;
34
uint32_t
gs
;
35
};
36
37
struct
FPR_i386
{
38
uint16_t
fctrl
;
// FPU Control Word (fcw)
39
uint16_t
fstat
;
// FPU Status Word (fsw)
40
uint16_t
ftag
;
// FPU Tag Word (ftw)
41
uint16_t
fop
;
// Last Instruction Opcode (fop)
42
union
{
43
struct
{
44
uint64_t
fip
;
// Instruction Pointer
45
uint64_t
fdp
;
// Data Pointer
46
}
x86_64
;
47
struct
{
48
uint32_t
fioff
;
// FPU IP Offset (fip)
49
uint32_t
fiseg
;
// FPU IP Selector (fcs)
50
uint32_t
fooff
;
// FPU Operand Pointer Offset (foo)
51
uint32_t
foseg
;
// FPU Operand Pointer Selector (fos)
52
}
i386_
;
// Added _ in the end to avoid error with gcc defining i386 in some
53
// cases
54
}
ptr
;
55
uint32_t
mxcsr
;
// MXCSR Register State
56
uint32_t
mxcsrmask
;
// MXCSR Mask
57
MMSReg
stmm
[8];
// 8*16 bytes for each FP-reg = 128 bytes
58
XMMReg
xmm
[8];
// 8*16 bytes for each XMM-reg = 128 bytes
59
uint32_t
padding
[56];
60
};
61
62
struct
UserArea
{
63
GPR
gpr
;
64
FPR_i386
i387
;
65
uint32_t
u_debugreg
[8];
// Debug registers (DR0 - DR7).
66
uint32_t
tlsbase
;
67
};
68
69
#define DR_SIZE sizeof(((UserArea *)NULL)->u_debugreg[0])
70
#define DR_OFFSET(reg_index) \
71
(LLVM_EXTENSION offsetof(UserArea, u_debugreg[reg_index]))
72
73
// Include RegisterInfos_i386 to declare our g_register_infos_i386 structure.
74
#define DECLARE_REGISTER_INFOS_I386_STRUCT
75
#include "
RegisterInfos_i386.h
"
76
#undef DECLARE_REGISTER_INFOS_I386_STRUCT
77
78
RegisterContextNetBSD_i386::RegisterContextNetBSD_i386
(
79
const
ArchSpec
&target_arch)
80
:
RegisterInfoInterface
(target_arch) {}
81
82
size_t
RegisterContextNetBSD_i386::GetGPRSize
()
const
{
return
sizeof
(
GPR
); }
83
84
const
RegisterInfo
*
RegisterContextNetBSD_i386::GetRegisterInfo
()
const
{
85
switch
(
GetTargetArchitecture
().GetMachine()) {
86
case
llvm::Triple::x86:
87
case
llvm::Triple::x86_64:
88
return
g_register_infos_i386;
89
default
:
90
assert(
false
&&
"Unhandled target architecture."
);
91
return
nullptr
;
92
}
93
}
94
95
uint32_t
RegisterContextNetBSD_i386::GetRegisterCount
()
const
{
96
return
static_cast<
uint32_t
>
(
sizeof
(g_register_infos_i386) /
97
sizeof
(g_register_infos_i386[0]));
98
}
GPR
#define GPR(r16)
Definition
ABIX86.cpp:145
ecx
@ ecx
Definition
CompactUnwindInfo.cpp:969
eip
@ eip
Definition
CompactUnwindInfo.cpp:976
eax
@ eax
Definition
CompactUnwindInfo.cpp:968
edx
@ edx
Definition
CompactUnwindInfo.cpp:970
esp
@ esp
Definition
CompactUnwindInfo.cpp:973
edi
@ edi
Definition
CompactUnwindInfo.cpp:975
ebx
@ ebx
Definition
CompactUnwindInfo.cpp:971
esi
@ esi
Definition
CompactUnwindInfo.cpp:974
ebp
@ ebp
Definition
CompactUnwindInfo.cpp:972
FPR_i386
FXSAVE FPR_i386
Definition
RegisterContextFreeBSD_i386.cpp:48
RegisterContextNetBSD_i386.h
GPR
struct _GPR GPR
RegisterContext_x86.h
RegisterInfos_i386.h
RegisterContextNetBSD_i386::GetRegisterInfo
const lldb_private::RegisterInfo * GetRegisterInfo() const override
Definition
RegisterContextNetBSD_i386.cpp:84
RegisterContextNetBSD_i386::GetGPRSize
size_t GetGPRSize() const override
Definition
RegisterContextNetBSD_i386.cpp:82
RegisterContextNetBSD_i386::GetRegisterCount
uint32_t GetRegisterCount() const override
Definition
RegisterContextNetBSD_i386.cpp:95
RegisterContextNetBSD_i386::RegisterContextNetBSD_i386
RegisterContextNetBSD_i386(const lldb_private::ArchSpec &target_arch)
Definition
RegisterContextNetBSD_i386.cpp:78
lldb_private::ArchSpec
An architecture specification class.
Definition
ArchSpec.h:32
lldb_private::RegisterInfoInterface::GetTargetArchitecture
const lldb_private::ArchSpec & GetTargetArchitecture() const
Definition
RegisterInfoInterface.h:40
lldb_private::RegisterInfoInterface::RegisterInfoInterface
RegisterInfoInterface(const lldb_private::ArchSpec &target_arch)
Definition
RegisterInfoInterface.h:23
lldb-defines.h
lldb-x86-register-enums.h
lldb_private
A class that represents a running process on the host machine.
Definition
SBAddressRange.h:14
lldb
Definition
SBAddress.h:15
FPR_i386
Definition
RegisterContextLinux_i386.cpp:37
FPR_i386::stmm
MMSReg stmm[8]
Definition
RegisterContextLinux_i386.cpp:57
FPR_i386::fooff
uint32_t fooff
Definition
RegisterContextLinux_i386.cpp:50
FPR_i386::fiseg
uint32_t fiseg
Definition
RegisterContextLinux_i386.cpp:49
FPR_i386::mxcsrmask
uint32_t mxcsrmask
Definition
RegisterContextLinux_i386.cpp:56
FPR_i386::xmm
XMMReg xmm[8]
Definition
RegisterContextLinux_i386.cpp:58
FPR_i386::padding
uint32_t padding[56]
Definition
RegisterContextLinux_i386.cpp:59
FPR_i386::ptr
union FPR_i386::@324145175110067056203311122160025310356250071220 ptr
FPR_i386::fioff
uint32_t fioff
Definition
RegisterContextLinux_i386.cpp:48
FPR_i386::i386_
struct FPR_i386::@324145175110067056203311122160025310356250071220::@142102242144035002063104136131155061226333024326 i386_
FPR_i386::x86_64
struct FPR_i386::@324145175110067056203311122160025310356250071220::@173043337111273306002071132361154377023232264005 x86_64
FPR_i386::mxcsr
uint32_t mxcsr
Definition
RegisterContextLinux_i386.cpp:55
FPR_i386::foseg
uint32_t foseg
Definition
RegisterContextLinux_i386.cpp:51
GPR
Definition
RegisterContextFreeBSD_i386.cpp:18
GPR::eflags
uint32_t eflags
Definition
RegisterContextFreeBSD_i386.cpp:34
UserArea
Definition
RegisterContext_mips.h:368
UserArea::gpr
GPR_linux_mips gpr
Definition
RegisterContext_mips.h:369
UserArea::tlsbase
uint32_t tlsbase
Definition
RegisterContextNetBSD_i386.cpp:66
UserArea::i387
FPR_i386 i387
Definition
RegisterContextFreeBSD_i386.cpp:52
UserArea::u_debugreg
uint32_t u_debugreg[8]
Definition
RegisterContextLinux_i386.cpp:78
_GPR::ss
uint64_t ss
Definition
RegisterContextFreeBSD_x86_64.cpp:47
_GPR::ds
uint16_t ds
Definition
RegisterContextFreeBSD_x86_64.cpp:42
_GPR::es
uint16_t es
Definition
RegisterContextFreeBSD_x86_64.cpp:41
_GPR::cs
uint64_t cs
Definition
RegisterContextFreeBSD_x86_64.cpp:44
_GPR::gs
uint16_t gs
Definition
RegisterContextFreeBSD_x86_64.cpp:39
_GPR::fs
uint16_t fs
Definition
RegisterContextFreeBSD_x86_64.cpp:38
lldb_private::FXSAVE::ftag
uint16_t ftag
Definition
RegisterContext_x86.h:272
lldb_private::FXSAVE::fctrl
uint16_t fctrl
Definition
RegisterContext_x86.h:270
lldb_private::FXSAVE::fdp
uint64_t fdp
Definition
RegisterContext_x86.h:277
lldb_private::FXSAVE::fop
uint16_t fop
Definition
RegisterContext_x86.h:273
lldb_private::FXSAVE::fip
uint64_t fip
Definition
RegisterContext_x86.h:276
lldb_private::FXSAVE::fstat
uint16_t fstat
Definition
RegisterContext_x86.h:271
lldb_private::MMSReg
Definition
RegisterContext_x86.h:252
lldb_private::RegisterInfo
Every register is described in detail including its name, alternate name (optional),...
Definition
RegisterInfo.h:23
lldb_private::XMMReg
Definition
RegisterContext_x86.h:264
Generated on
for LLDB by
1.14.0