LLDB
mainline
llvm-project
lldb
source
Plugins
Process
Utility
RegisterContextFreeBSD_i386.cpp
Go to the documentation of this file.
1
//===-- RegisterContextFreeBSD_i386.cpp -----------------------------------===//
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 "
RegisterContextFreeBSD_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
// https://cgit.freebsd.org/src/tree/sys/x86/include/reg.h?h=stable/14
18
struct
GPR
{
19
uint32_t
fs
;
20
uint32_t
es
;
21
uint32_t
ds
;
22
uint32_t
edi
;
23
uint32_t
esi
;
24
uint32_t
ebp
;
25
uint32_t
isp
;
26
uint32_t
ebx
;
27
uint32_t
edx
;
28
uint32_t
ecx
;
29
uint32_t
eax
;
30
uint32_t
trapno
;
31
uint32_t
err
;
32
uint32_t
eip
;
33
uint32_t
cs
;
34
uint32_t
eflags
;
35
uint32_t
esp
;
36
uint32_t
ss
;
37
uint32_t
gs
;
38
};
39
40
struct
DBG
{
41
uint32_t
dr
[8];
/* debug registers */
42
/* Index 0-3: debug address registers */
43
/* Index 4-5: reserved */
44
/* Index 6: debug status */
45
/* Index 7: debug control */
46
};
47
48
using
FPR_i386
=
FXSAVE
;
49
50
struct
UserArea
{
51
GPR
gpr
;
52
FPR_i386
i387
;
53
DBG
dbg
;
54
};
55
56
#define DR_SIZE sizeof(uint32_t)
57
#define DR_OFFSET(reg_index) \
58
(LLVM_EXTENSION offsetof(UserArea, dbg) + \
59
LLVM_EXTENSION offsetof(DBG, dr[reg_index]))
60
61
// Include RegisterInfos_i386 to declare our g_register_infos_i386 structure.
62
#define DECLARE_REGISTER_INFOS_I386_STRUCT
63
#include "
RegisterInfos_i386.h
"
64
#undef DECLARE_REGISTER_INFOS_I386_STRUCT
65
66
RegisterContextFreeBSD_i386::RegisterContextFreeBSD_i386
(
67
const
ArchSpec
&target_arch)
68
:
RegisterInfoInterface
(target_arch) {}
69
70
size_t
RegisterContextFreeBSD_i386::GetGPRSize
()
const
{
return
sizeof
(
GPR
); }
71
72
const
RegisterInfo
*
RegisterContextFreeBSD_i386::GetRegisterInfo
()
const
{
73
switch
(
GetTargetArchitecture
().GetMachine()) {
74
case
llvm::Triple::x86:
75
return
g_register_infos_i386;
76
default
:
77
assert(
false
&&
"Unhandled target architecture."
);
78
return
nullptr
;
79
}
80
}
81
82
uint32_t
RegisterContextFreeBSD_i386::GetRegisterCount
()
const
{
83
return
static_cast<
uint32_t
>
(
sizeof
(g_register_infos_i386) /
84
sizeof
(g_register_infos_i386[0]));
85
}
RegisterContextFreeBSD_i386.h
GPR
struct _GPR GPR
RegisterContext_x86.h
RegisterInfos_i386.h
RegisterContextFreeBSD_i386::RegisterContextFreeBSD_i386
RegisterContextFreeBSD_i386(const lldb_private::ArchSpec &target_arch)
Definition
RegisterContextFreeBSD_i386.cpp:66
RegisterContextFreeBSD_i386::GetGPRSize
size_t GetGPRSize() const override
Definition
RegisterContextFreeBSD_i386.cpp:70
RegisterContextFreeBSD_i386::GetRegisterCount
uint32_t GetRegisterCount() const override
Definition
RegisterContextFreeBSD_i386.cpp:82
RegisterContextFreeBSD_i386::GetRegisterInfo
const lldb_private::RegisterInfo * GetRegisterInfo() const override
Definition
RegisterContextFreeBSD_i386.cpp:72
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
DBG
Definition
RegisterContextFreeBSD_i386.cpp:40
DBG::dr
uint32_t dr[8]
Definition
RegisterContextFreeBSD_i386.cpp:41
FPR_i386
Definition
RegisterContextLinux_i386.cpp:37
GPR
Definition
RegisterContextFreeBSD_i386.cpp:18
GPR::cs
uint32_t cs
Definition
RegisterContextFreeBSD_i386.cpp:33
GPR::isp
uint32_t isp
Definition
RegisterContextFreeBSD_i386.cpp:25
GPR::eflags
uint32_t eflags
Definition
RegisterContextFreeBSD_i386.cpp:34
GPR::edx
uint32_t edx
Definition
RegisterContextFreeBSD_i386.cpp:27
GPR::ebp
uint32_t ebp
Definition
RegisterContextFreeBSD_i386.cpp:24
GPR::ds
uint32_t ds
Definition
RegisterContextFreeBSD_i386.cpp:21
GPR::ss
uint32_t ss
Definition
RegisterContextFreeBSD_i386.cpp:36
GPR::ecx
uint32_t ecx
Definition
RegisterContextFreeBSD_i386.cpp:28
GPR::esp
uint32_t esp
Definition
RegisterContextFreeBSD_i386.cpp:35
GPR::fs
uint32_t fs
Definition
RegisterContextFreeBSD_i386.cpp:19
GPR::eip
uint32_t eip
Definition
RegisterContextFreeBSD_i386.cpp:32
GPR::trapno
uint32_t trapno
Definition
RegisterContextFreeBSD_i386.cpp:30
GPR::es
uint32_t es
Definition
RegisterContextFreeBSD_i386.cpp:20
GPR::edi
uint32_t edi
Definition
RegisterContextFreeBSD_i386.cpp:22
GPR::eax
uint32_t eax
Definition
RegisterContextFreeBSD_i386.cpp:29
GPR::err
uint32_t err
Definition
RegisterContextFreeBSD_i386.cpp:31
GPR::esi
uint32_t esi
Definition
RegisterContextFreeBSD_i386.cpp:23
GPR::gs
uint32_t gs
Definition
RegisterContextFreeBSD_i386.cpp:37
GPR::ebx
uint32_t ebx
Definition
RegisterContextFreeBSD_i386.cpp:26
UserArea
Definition
RegisterContext_mips.h:368
UserArea::gpr
GPR_linux_mips gpr
Definition
RegisterContext_mips.h:369
UserArea::dbg
DBG dbg
Definition
RegisterContextFreeBSD_i386.cpp:53
UserArea::i387
FPR_i386 i387
Definition
RegisterContextFreeBSD_i386.cpp:52
lldb_private::FXSAVE
Definition
RegisterContext_x86.h:269
lldb_private::RegisterInfo
Every register is described in detail including its name, alternate name (optional),...
Definition
RegisterInfo.h:23
Generated on
for LLDB by
1.14.0