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 "
RegisterContextPOSIX_x86.h
"
11
12
using namespace
lldb_private
;
13
using namespace
lldb
;
14
15
// this needs to match 'struct reg'
16
struct
GPR
{
17
uint32_t
eax
;
18
uint32_t
ecx
;
19
uint32_t
edx
;
20
uint32_t
ebx
;
21
uint32_t
esp
;
22
uint32_t
ebp
;
23
uint32_t
esi
;
24
uint32_t
edi
;
25
uint32_t
eip
;
26
uint32_t
eflags
;
27
uint32_t
cs
;
28
uint32_t
ss
;
29
uint32_t
ds
;
30
uint32_t
es
;
31
uint32_t
fs
;
32
uint32_t
gs
;
33
};
34
35
struct
FPR_i386
{
36
uint16_t
fctrl
;
// FPU Control Word (fcw)
37
uint16_t
fstat
;
// FPU Status Word (fsw)
38
uint16_t
ftag
;
// FPU Tag Word (ftw)
39
uint16_t
fop
;
// Last Instruction Opcode (fop)
40
union
{
41
struct
{
42
uint64_t
fip
;
// Instruction Pointer
43
uint64_t
fdp
;
// Data Pointer
44
}
x86_64
;
45
struct
{
46
uint32_t
fioff
;
// FPU IP Offset (fip)
47
uint32_t
fiseg
;
// FPU IP Selector (fcs)
48
uint32_t
fooff
;
// FPU Operand Pointer Offset (foo)
49
uint32_t
foseg
;
// FPU Operand Pointer Selector (fos)
50
}
i386_
;
// Added _ in the end to avoid error with gcc defining i386 in some
51
// cases
52
}
ptr
;
53
uint32_t
mxcsr
;
// MXCSR Register State
54
uint32_t
mxcsrmask
;
// MXCSR Mask
55
MMSReg
stmm
[8];
// 8*16 bytes for each FP-reg = 128 bytes
56
XMMReg
xmm
[8];
// 8*16 bytes for each XMM-reg = 128 bytes
57
uint32_t
padding
[56];
58
};
59
60
struct
UserArea
{
61
GPR
gpr
;
62
FPR_i386
i387
;
63
uint32_t
u_debugreg
[8];
// Debug registers (DR0 - DR7).
64
uint32_t
tlsbase
;
65
};
66
67
#define DR_SIZE sizeof(((UserArea *)NULL)->u_debugreg[0])
68
#define DR_OFFSET(reg_index) \
69
(LLVM_EXTENSION offsetof(UserArea, u_debugreg[reg_index]))
70
71
// Include RegisterInfos_i386 to declare our g_register_infos_i386 structure.
72
#define DECLARE_REGISTER_INFOS_I386_STRUCT
73
#include "
RegisterInfos_i386.h
"
74
#undef DECLARE_REGISTER_INFOS_I386_STRUCT
75
76
RegisterContextNetBSD_i386::RegisterContextNetBSD_i386
(
77
const
ArchSpec
&target_arch)
78
:
RegisterInfoInterface
(target_arch) {}
79
80
size_t
RegisterContextNetBSD_i386::GetGPRSize
()
const
{
return
sizeof
(
GPR
); }
81
82
const
RegisterInfo
*
RegisterContextNetBSD_i386::GetRegisterInfo
()
const
{
83
switch
(
GetTargetArchitecture
().GetMachine()) {
84
case
llvm::Triple::x86:
85
case
llvm::Triple::x86_64:
86
return
g_register_infos_i386;
87
default
:
88
assert(
false
&&
"Unhandled target architecture."
);
89
return
nullptr
;
90
}
91
}
92
93
uint32_t
RegisterContextNetBSD_i386::GetRegisterCount
()
const
{
94
return
static_cast<
uint32_t
>
(
sizeof
(g_register_infos_i386) /
95
sizeof
(g_register_infos_i386[0]));
96
}
ecx
@ ecx
Definition:
CompactUnwindInfo.cpp:974
eip
@ eip
Definition:
CompactUnwindInfo.cpp:981
eax
@ eax
Definition:
CompactUnwindInfo.cpp:973
edx
@ edx
Definition:
CompactUnwindInfo.cpp:975
esp
@ esp
Definition:
CompactUnwindInfo.cpp:978
edi
@ edi
Definition:
CompactUnwindInfo.cpp:980
ebx
@ ebx
Definition:
CompactUnwindInfo.cpp:976
esi
@ esi
Definition:
CompactUnwindInfo.cpp:979
ebp
@ ebp
Definition:
CompactUnwindInfo.cpp:977
RegisterContextNetBSD_i386.h
RegisterContextPOSIX_x86.h
RegisterInfos_i386.h
RegisterContextNetBSD_i386::GetRegisterInfo
const lldb_private::RegisterInfo * GetRegisterInfo() const override
Definition:
RegisterContextNetBSD_i386.cpp:82
RegisterContextNetBSD_i386::GetGPRSize
size_t GetGPRSize() const override
Definition:
RegisterContextNetBSD_i386.cpp:80
RegisterContextNetBSD_i386::GetRegisterCount
uint32_t GetRegisterCount() const override
Definition:
RegisterContextNetBSD_i386.cpp:93
RegisterContextNetBSD_i386::RegisterContextNetBSD_i386
RegisterContextNetBSD_i386(const lldb_private::ArchSpec &target_arch)
Definition:
RegisterContextNetBSD_i386.cpp:76
lldb_private::ArchSpec
An architecture specification class.
Definition:
ArchSpec.h:31
lldb_private::RegisterInfoInterface
RegisterInfo interface to patch RegisterInfo structure for archs.
Definition:
RegisterInfoInterface.h:21
lldb_private::RegisterInfoInterface::GetTargetArchitecture
const lldb_private::ArchSpec & GetTargetArchitecture() const
Definition:
RegisterInfoInterface.h:40
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:35
FPR_i386::stmm
MMSReg stmm[8]
Definition:
RegisterContextLinux_i386.cpp:55
FPR_i386::fooff
uint32_t fooff
Definition:
RegisterContextLinux_i386.cpp:48
FPR_i386::fiseg
uint32_t fiseg
Definition:
RegisterContextLinux_i386.cpp:47
FPR_i386::mxcsrmask
uint32_t mxcsrmask
Definition:
RegisterContextLinux_i386.cpp:54
FPR_i386::i386_
struct FPR_i386::@133::@135 i386_
FPR_i386::xmm
XMMReg xmm[8]
Definition:
RegisterContextLinux_i386.cpp:56
FPR_i386::padding
uint32_t padding[56]
Definition:
RegisterContextLinux_i386.cpp:57
FPR_i386::ptr
union FPR_i386::@133 ptr
FPR_i386::fop
uint16_t fop
Definition:
RegisterContextLinux_i386.cpp:39
FPR_i386::fioff
uint32_t fioff
Definition:
RegisterContextLinux_i386.cpp:46
FPR_i386::fip
uint64_t fip
Definition:
RegisterContextLinux_i386.cpp:42
FPR_i386::fstat
uint16_t fstat
Definition:
RegisterContextLinux_i386.cpp:37
FPR_i386::x86_64
struct FPR_i386::@133::@134 x86_64
FPR_i386::fctrl
uint16_t fctrl
Definition:
RegisterContextLinux_i386.cpp:36
FPR_i386::mxcsr
uint32_t mxcsr
Definition:
RegisterContextLinux_i386.cpp:53
FPR_i386::fdp
uint64_t fdp
Definition:
RegisterContextLinux_i386.cpp:43
FPR_i386::foseg
uint32_t foseg
Definition:
RegisterContextLinux_i386.cpp:49
FPR_i386::ftag
uint16_t ftag
Definition:
RegisterContextLinux_i386.cpp:38
GPR
Definition:
RegisterContextFreeBSD_i386.cpp:16
GPR::cs
uint32_t cs
Definition:
RegisterContextFreeBSD_i386.cpp:31
GPR::eflags
uint32_t eflags
Definition:
RegisterContextFreeBSD_i386.cpp:32
GPR::ds
uint32_t ds
Definition:
RegisterContextFreeBSD_i386.cpp:19
GPR::ss
uint32_t ss
Definition:
RegisterContextFreeBSD_i386.cpp:34
GPR::fs
uint32_t fs
Definition:
RegisterContextFreeBSD_i386.cpp:17
GPR::es
uint32_t es
Definition:
RegisterContextFreeBSD_i386.cpp:18
GPR::gs
uint32_t gs
Definition:
RegisterContextFreeBSD_i386.cpp:35
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:64
UserArea::i387
FPR_i386 i387
Definition:
RegisterContextFreeBSD_i386.cpp:50
UserArea::u_debugreg
uint32_t u_debugreg[8]
Definition:
RegisterContextLinux_i386.cpp:76
lldb_private::MMSReg
Definition:
RegisterContext_x86.h:252
lldb_private::RegisterInfo
Every register is described in detail including its name, alternate name (optional),...
Definition:
lldb-private-types.h:37
lldb_private::XMMReg
Definition:
RegisterContext_x86.h:264
Generated on Sun Feb 2 2025 16:13:16 for LLDB by
1.9.6