[Lldb-commits] [lldb] [llvm] [lldb] Split register descriptions from ProcessUtility (PR #222330)
Minsoo Choo via lldb-commits
lldb-commits at lists.llvm.org
Wed Sep 9 06:29:51 PDT 2026
https://github.com/mchoo7 created https://github.com/llvm/llvm-project/pull/222330
Register-related code has cluttered up the `Process/Utility` and the naming `RegisterContext/RegisterInfo` is also inconsistent across different files. Create a new lldb library `lldbRegisterSupport` to isolate classes derived from `RegisterInfoInterface`. The classes named `RegisterContext*` that are derived from `RegisterInfoInterface` will be renamed to `RegisterInfo*` in following commits.
Move some x86 register descriptions from `RegisterContextPOSIX_x86` to `RegisterContext_x86` since they are independent from the POSIX interface.
>From 2cb0d5b95c0b46036b837a2c805c52b9f1c054f2 Mon Sep 17 00:00:00 2001
From: Minsoo Choo <minsoo at minsoo.io>
Date: Sun, 6 Sep 2026 00:42:12 -0400
Subject: [PATCH] [lldb] Split register descriptions from ProcessUtility
---
.../Plugins/Process/Utility/CMakeLists.txt | 60 ++++--
.../Utility/RegisterContextFreeBSD_i386.cpp | 4 +-
.../Utility/RegisterContextFreeBSD_x86_64.cpp | 4 +-
.../Utility/RegisterContextLinux_i386.cpp | 4 +-
.../Utility/RegisterContextLinux_x86_64.cpp | 4 +-
.../Utility/RegisterContextNetBSD_i386.cpp | 4 +-
.../Utility/RegisterContextNetBSD_x86_64.cpp | 4 +-
.../Utility/RegisterContextOpenBSD_i386.cpp | 4 +-
.../Utility/RegisterContextOpenBSD_x86_64.cpp | 4 +-
.../Utility/RegisterContextPOSIX_x86.cpp | 197 -----------------
.../Utility/RegisterContextPOSIX_x86.h | 93 --------
.../Process/Utility/RegisterContext_x86.cpp | 200 ++++++++++++++++++
.../Process/Utility/RegisterContext_x86.h | 96 +++++++++
.../Process/Utility/RegisterInfos_i386.h | 16 +-
.../Process/Utility/RegisterInfos_x86_64.h | 24 +--
lldb/unittests/Instruction/CMakeLists.txt | 1 +
lldb/unittests/Process/Utility/CMakeLists.txt | 11 +-
.../unittests/Process/minidump/CMakeLists.txt | 1 +
.../source/Plugins/Process/Utility/BUILD.gn | 62 ++++--
19 files changed, 427 insertions(+), 366 deletions(-)
diff --git a/lldb/source/Plugins/Process/Utility/CMakeLists.txt b/lldb/source/Plugins/Process/Utility/CMakeLists.txt
index 90cf4d20bbc07..33367fbb498b7 100644
--- a/lldb/source/Plugins/Process/Utility/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/Utility/CMakeLists.txt
@@ -1,7 +1,43 @@
# TODO: Clean up this directory and its dependencies
set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ProcessUtility)
+add_lldb_library(lldbRegisterSupport NO_PLUGIN_DEPENDENCIES
+ PARTIAL_SOURCES_INTENDED
+ RegisterContext_x86.cpp
+ RegisterContextFreeBSD_i386.cpp
+ RegisterContextFreeBSD_powerpc.cpp
+ RegisterContextFreeBSD_x86_64.cpp
+ RegisterContextLinux_i386.cpp
+ RegisterContextLinux_x86_64.cpp
+ RegisterContextLinux_s390x.cpp
+ RegisterContextNetBSD_i386.cpp
+ RegisterContextNetBSD_x86_64.cpp
+ RegisterContextOpenBSD_i386.cpp
+ RegisterContextOpenBSD_x86_64.cpp
+ RegisterContextWindows_i386.cpp
+ RegisterContextWindows_x86_64.cpp
+ RegisterTypeDetector_arm64.cpp
+ RegisterInfos_x86_64_with_base_shared.cpp
+ RegisterInfoPOSIX_arm.cpp
+ RegisterInfoPOSIX_arm64.cpp
+ RegisterInfoPOSIX_loongarch64.cpp
+ RegisterInfoPOSIX_ppc64le.cpp
+ RegisterInfoPOSIX_ppc64.cpp
+ RegisterInfoPOSIX_riscv32.cpp
+ RegisterInfoPOSIX_riscv64.cpp
+ RegisterInfoPOSIXDynamic_riscv32.cpp
+
+ LINK_COMPONENTS
+ Support
+ TargetParser
+ LINK_LIBS
+ lldbUtility
+ ALLOWED_INTERNAL_DEPENDENCIES
+ lldbUtility
+ )
+
add_lldb_library(lldbPluginProcessUtility
+ PARTIAL_SOURCES_INTENDED
AuxVector.cpp
FreeBSDSignals.cpp
GDBRemoteSignals.cpp
@@ -20,26 +56,15 @@ add_lldb_library(lldbPluginProcessUtility
NativeRegisterContextRegisterInfo.cpp
NetBSDSignals.cpp
OpenBSDSignals.cpp
- RegisterContext_x86.cpp
RegisterContextDarwin_arm.cpp
RegisterContextDarwin_arm64.cpp
RegisterContextDarwin_riscv32.cpp
RegisterContextDarwin_x86_64.cpp
RegisterContextDummy.cpp
- RegisterContextFreeBSD_i386.cpp
- RegisterContextFreeBSD_powerpc.cpp
- RegisterContextFreeBSD_x86_64.cpp
RegisterContextHistory.cpp
- RegisterContextLinux_i386.cpp
- RegisterContextLinux_x86_64.cpp
- RegisterContextLinux_s390x.cpp
RegisterContextMach_arm.cpp
RegisterContextMach_x86_64.cpp
RegisterContextMemory.cpp
- RegisterContextNetBSD_i386.cpp
- RegisterContextNetBSD_x86_64.cpp
- RegisterContextOpenBSD_i386.cpp
- RegisterContextOpenBSD_x86_64.cpp
RegisterContextPOSIX_arm.cpp
RegisterContextPOSIX_arm64.cpp
RegisterContextPOSIX_loongarch64.cpp
@@ -50,18 +75,6 @@ add_lldb_library(lldbPluginProcessUtility
RegisterContextPOSIX_s390x.cpp
RegisterContextPOSIX_x86.cpp
RegisterContextThreadMemory.cpp
- RegisterContextWindows_i386.cpp
- RegisterContextWindows_x86_64.cpp
- RegisterTypeDetector_arm64.cpp
- RegisterInfos_x86_64_with_base_shared.cpp
- RegisterInfoPOSIX_arm.cpp
- RegisterInfoPOSIX_arm64.cpp
- RegisterInfoPOSIX_loongarch64.cpp
- RegisterInfoPOSIX_ppc64le.cpp
- RegisterInfoPOSIX_ppc64.cpp
- RegisterInfoPOSIX_riscv32.cpp
- RegisterInfoPOSIX_riscv64.cpp
- RegisterInfoPOSIXDynamic_riscv32.cpp
StopInfoMachException.cpp
ThreadMemory.cpp
@@ -69,6 +82,7 @@ add_lldb_library(lldbPluginProcessUtility
Support
TargetParser
LINK_LIBS
+ lldbRegisterSupport
lldbBreakpoint
lldbCore
lldbDataFormatters
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextFreeBSD_i386.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextFreeBSD_i386.cpp
index 841ae170466b5..86ce13461426f 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextFreeBSD_i386.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextFreeBSD_i386.cpp
@@ -7,7 +7,9 @@
//===---------------------------------------------------------------------===//
#include "RegisterContextFreeBSD_i386.h"
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
using namespace lldb_private;
using namespace lldb;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.cpp
index 2a382175acfb3..895f827b6c626 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.cpp
@@ -8,7 +8,9 @@
#include "RegisterContextFreeBSD_x86_64.h"
#include "RegisterContextFreeBSD_i386.h"
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
#include "llvm/Support/Threading.h"
#include <vector>
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
index 9e022baa297bb..a491e4536b873 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
@@ -7,7 +7,9 @@
//===---------------------------------------------------------------------===//
#include "RegisterContextLinux_i386.h"
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
using namespace lldb_private;
using namespace lldb;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp
index 63c034a858d7d..ae10504397125 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp
@@ -8,7 +8,9 @@
#include "RegisterContextLinux_x86_64.h"
#include "RegisterContextLinux_i386.h"
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
#include <vector>
using namespace lldb_private;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextNetBSD_i386.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextNetBSD_i386.cpp
index a160c87db6cf9..b1c4b773f3637 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextNetBSD_i386.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextNetBSD_i386.cpp
@@ -7,7 +7,9 @@
//===----------------------------------------------------------------------===//
#include "RegisterContextNetBSD_i386.h"
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
using namespace lldb_private;
using namespace lldb;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextNetBSD_x86_64.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextNetBSD_x86_64.cpp
index 32bb7952820d8..d3e7466654e78 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextNetBSD_x86_64.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextNetBSD_x86_64.cpp
@@ -8,7 +8,9 @@
#include "RegisterContextNetBSD_x86_64.h"
#include "RegisterContextNetBSD_i386.h"
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
#include "llvm/Support/Compiler.h"
#include "llvm/TargetParser/Triple.h"
#include <cassert>
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextOpenBSD_i386.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextOpenBSD_i386.cpp
index ddf6cc5c3c65b..b868f3aed848a 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextOpenBSD_i386.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextOpenBSD_i386.cpp
@@ -7,7 +7,9 @@
//===---------------------------------------------------------------------===//
#include "RegisterContextOpenBSD_i386.h"
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
using namespace lldb_private;
using namespace lldb;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextOpenBSD_x86_64.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextOpenBSD_x86_64.cpp
index 05c1f83efded7..4d7b8970affcb 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextOpenBSD_x86_64.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextOpenBSD_x86_64.cpp
@@ -7,7 +7,9 @@
//===---------------------------------------------------------------------===//
#include "RegisterContextOpenBSD_x86_64.h"
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
#include <vector>
using namespace lldb_private;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp
index c14eb135c7b10..53b033a83c242 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp
@@ -156,203 +156,6 @@ static_assert((sizeof(g_avx_regnums_x86_64) / sizeof(g_avx_regnums_x86_64[0])) -
k_num_avx_registers_x86_64,
"g_avx_regnums_x86_64 has wrong number of register infos");
-uint32_t RegisterContextPOSIX_x86::g_contained_eax[] = {lldb_eax_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_ebx[] = {lldb_ebx_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_ecx[] = {lldb_ecx_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_edx[] = {lldb_edx_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_edi[] = {lldb_edi_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_esi[] = {lldb_esi_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_ebp[] = {lldb_ebp_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_esp[] = {lldb_esp_i386,
- LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_invalidate_eax[] = {
- lldb_eax_i386, lldb_ax_i386, lldb_ah_i386, lldb_al_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_ebx[] = {
- lldb_ebx_i386, lldb_bx_i386, lldb_bh_i386, lldb_bl_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_ecx[] = {
- lldb_ecx_i386, lldb_cx_i386, lldb_ch_i386, lldb_cl_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_edx[] = {
- lldb_edx_i386, lldb_dx_i386, lldb_dh_i386, lldb_dl_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_edi[] = {
- lldb_edi_i386, lldb_di_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_esi[] = {
- lldb_esi_i386, lldb_si_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_ebp[] = {
- lldb_ebp_i386, lldb_bp_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_esp[] = {
- lldb_esp_i386, lldb_sp_i386, LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_contained_rax[] = {lldb_rax_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_rbx[] = {lldb_rbx_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_rcx[] = {lldb_rcx_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_rdx[] = {lldb_rdx_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_rdi[] = {lldb_rdi_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_rsi[] = {lldb_rsi_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_rbp[] = {lldb_rbp_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_rsp[] = {lldb_rsp_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_r8[] = {lldb_r8_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_r9[] = {lldb_r9_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_r10[] = {lldb_r10_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_r11[] = {lldb_r11_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_r12[] = {lldb_r12_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_r13[] = {lldb_r13_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_r14[] = {lldb_r14_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_r15[] = {lldb_r15_x86_64,
- LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_invalidate_rax[] = {
- lldb_rax_x86_64, lldb_eax_x86_64, lldb_ax_x86_64,
- lldb_ah_x86_64, lldb_al_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_rbx[] = {
- lldb_rbx_x86_64, lldb_ebx_x86_64, lldb_bx_x86_64,
- lldb_bh_x86_64, lldb_bl_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_rcx[] = {
- lldb_rcx_x86_64, lldb_ecx_x86_64, lldb_cx_x86_64,
- lldb_ch_x86_64, lldb_cl_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_rdx[] = {
- lldb_rdx_x86_64, lldb_edx_x86_64, lldb_dx_x86_64,
- lldb_dh_x86_64, lldb_dl_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_rdi[] = {
- lldb_rdi_x86_64, lldb_edi_x86_64, lldb_di_x86_64, lldb_dil_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_rsi[] = {
- lldb_rsi_x86_64, lldb_esi_x86_64, lldb_si_x86_64, lldb_sil_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_rbp[] = {
- lldb_rbp_x86_64, lldb_ebp_x86_64, lldb_bp_x86_64, lldb_bpl_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_rsp[] = {
- lldb_rsp_x86_64, lldb_esp_x86_64, lldb_sp_x86_64, lldb_spl_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_r8[] = {
- lldb_r8_x86_64, lldb_r8d_x86_64, lldb_r8w_x86_64, lldb_r8l_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_r9[] = {
- lldb_r9_x86_64, lldb_r9d_x86_64, lldb_r9w_x86_64, lldb_r9l_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_r10[] = {
- lldb_r10_x86_64, lldb_r10d_x86_64, lldb_r10w_x86_64, lldb_r10l_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_r11[] = {
- lldb_r11_x86_64, lldb_r11d_x86_64, lldb_r11w_x86_64, lldb_r11l_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_r12[] = {
- lldb_r12_x86_64, lldb_r12d_x86_64, lldb_r12w_x86_64, lldb_r12l_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_r13[] = {
- lldb_r13_x86_64, lldb_r13d_x86_64, lldb_r13w_x86_64, lldb_r13l_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_r14[] = {
- lldb_r14_x86_64, lldb_r14d_x86_64, lldb_r14w_x86_64, lldb_r14l_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_r15[] = {
- lldb_r15_x86_64, lldb_r15d_x86_64, lldb_r15w_x86_64, lldb_r15l_x86_64,
- LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_contained_fip[] = {lldb_fip_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_fdp[] = {lldb_fdp_x86_64,
- LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_invalidate_fip[] = {
- lldb_fip_x86_64, lldb_fioff_x86_64, lldb_fiseg_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_fdp[] = {
- lldb_fdp_x86_64, lldb_fooff_x86_64, lldb_foseg_x86_64, LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_contained_st0_32[] = {lldb_st0_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st1_32[] = {lldb_st1_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st2_32[] = {lldb_st2_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st3_32[] = {lldb_st3_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st4_32[] = {lldb_st4_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st5_32[] = {lldb_st5_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st6_32[] = {lldb_st6_i386,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st7_32[] = {lldb_st7_i386,
- LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st0_32[] = {
- lldb_st0_i386, lldb_mm0_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st1_32[] = {
- lldb_st1_i386, lldb_mm1_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st2_32[] = {
- lldb_st2_i386, lldb_mm2_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st3_32[] = {
- lldb_st3_i386, lldb_mm3_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st4_32[] = {
- lldb_st4_i386, lldb_mm4_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st5_32[] = {
- lldb_st5_i386, lldb_mm5_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st6_32[] = {
- lldb_st6_i386, lldb_mm6_i386, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st7_32[] = {
- lldb_st7_i386, lldb_mm7_i386, LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_contained_st0_64[] = {lldb_st0_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st1_64[] = {lldb_st1_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st2_64[] = {lldb_st2_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st3_64[] = {lldb_st3_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st4_64[] = {lldb_st4_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st5_64[] = {lldb_st5_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st6_64[] = {lldb_st6_x86_64,
- LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_contained_st7_64[] = {lldb_st7_x86_64,
- LLDB_INVALID_REGNUM};
-
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st0_64[] = {
- lldb_st0_x86_64, lldb_mm0_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st1_64[] = {
- lldb_st1_x86_64, lldb_mm1_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st2_64[] = {
- lldb_st2_x86_64, lldb_mm2_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st3_64[] = {
- lldb_st3_x86_64, lldb_mm3_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st4_64[] = {
- lldb_st4_x86_64, lldb_mm4_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st5_64[] = {
- lldb_st5_x86_64, lldb_mm5_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st6_64[] = {
- lldb_st6_x86_64, lldb_mm6_x86_64, LLDB_INVALID_REGNUM};
-uint32_t RegisterContextPOSIX_x86::g_invalidate_st7_64[] = {
- lldb_st7_x86_64, lldb_mm7_x86_64, LLDB_INVALID_REGNUM};
// Number of register sets provided by this context.
enum { k_num_extended_register_sets = 1, k_num_register_sets = 3 };
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h b/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h
index 9284f5cc07d91..dc47684fd91ba 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h
@@ -55,99 +55,6 @@ class RegisterContextPOSIX_x86 : public lldb_private::RegisterContext {
eXSAVE
};
- static uint32_t g_contained_eax[];
- static uint32_t g_contained_ebx[];
- static uint32_t g_contained_ecx[];
- static uint32_t g_contained_edx[];
- static uint32_t g_contained_edi[];
- static uint32_t g_contained_esi[];
- static uint32_t g_contained_ebp[];
- static uint32_t g_contained_esp[];
-
- static uint32_t g_invalidate_eax[];
- static uint32_t g_invalidate_ebx[];
- static uint32_t g_invalidate_ecx[];
- static uint32_t g_invalidate_edx[];
- static uint32_t g_invalidate_edi[];
- static uint32_t g_invalidate_esi[];
- static uint32_t g_invalidate_ebp[];
- static uint32_t g_invalidate_esp[];
-
- static uint32_t g_contained_rax[];
- static uint32_t g_contained_rbx[];
- static uint32_t g_contained_rcx[];
- static uint32_t g_contained_rdx[];
- static uint32_t g_contained_rdi[];
- static uint32_t g_contained_rsi[];
- static uint32_t g_contained_rbp[];
- static uint32_t g_contained_rsp[];
- static uint32_t g_contained_r8[];
- static uint32_t g_contained_r9[];
- static uint32_t g_contained_r10[];
- static uint32_t g_contained_r11[];
- static uint32_t g_contained_r12[];
- static uint32_t g_contained_r13[];
- static uint32_t g_contained_r14[];
- static uint32_t g_contained_r15[];
-
- static uint32_t g_invalidate_rax[];
- static uint32_t g_invalidate_rbx[];
- static uint32_t g_invalidate_rcx[];
- static uint32_t g_invalidate_rdx[];
- static uint32_t g_invalidate_rdi[];
- static uint32_t g_invalidate_rsi[];
- static uint32_t g_invalidate_rbp[];
- static uint32_t g_invalidate_rsp[];
- static uint32_t g_invalidate_r8[];
- static uint32_t g_invalidate_r9[];
- static uint32_t g_invalidate_r10[];
- static uint32_t g_invalidate_r11[];
- static uint32_t g_invalidate_r12[];
- static uint32_t g_invalidate_r13[];
- static uint32_t g_invalidate_r14[];
- static uint32_t g_invalidate_r15[];
-
- static uint32_t g_contained_fip[];
- static uint32_t g_contained_fdp[];
-
- static uint32_t g_invalidate_fip[];
- static uint32_t g_invalidate_fdp[];
-
- static uint32_t g_contained_st0_32[];
- static uint32_t g_contained_st1_32[];
- static uint32_t g_contained_st2_32[];
- static uint32_t g_contained_st3_32[];
- static uint32_t g_contained_st4_32[];
- static uint32_t g_contained_st5_32[];
- static uint32_t g_contained_st6_32[];
- static uint32_t g_contained_st7_32[];
-
- static uint32_t g_invalidate_st0_32[];
- static uint32_t g_invalidate_st1_32[];
- static uint32_t g_invalidate_st2_32[];
- static uint32_t g_invalidate_st3_32[];
- static uint32_t g_invalidate_st4_32[];
- static uint32_t g_invalidate_st5_32[];
- static uint32_t g_invalidate_st6_32[];
- static uint32_t g_invalidate_st7_32[];
-
- static uint32_t g_contained_st0_64[];
- static uint32_t g_contained_st1_64[];
- static uint32_t g_contained_st2_64[];
- static uint32_t g_contained_st3_64[];
- static uint32_t g_contained_st4_64[];
- static uint32_t g_contained_st5_64[];
- static uint32_t g_contained_st6_64[];
- static uint32_t g_contained_st7_64[];
-
- static uint32_t g_invalidate_st0_64[];
- static uint32_t g_invalidate_st1_64[];
- static uint32_t g_invalidate_st2_64[];
- static uint32_t g_invalidate_st3_64[];
- static uint32_t g_invalidate_st4_64[];
- static uint32_t g_invalidate_st5_64[];
- static uint32_t g_invalidate_st6_64[];
- static uint32_t g_invalidate_st7_64[];
protected:
FPRType
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContext_x86.cpp b/lldb/source/Plugins/Process/Utility/RegisterContext_x86.cpp
index b21c72bd96214..17d66b0a4fbf3 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContext_x86.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContext_x86.cpp
@@ -7,9 +7,209 @@
//===----------------------------------------------------------------------===//
#include "RegisterContext_x86.h"
+#include "lldb-x86-register-enums.h"
+#include "lldb/lldb-defines.h"
using namespace lldb_private;
+uint32_t x86_register_info::g_contained_eax[] = {lldb_eax_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_ebx[] = {lldb_ebx_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_ecx[] = {lldb_ecx_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_edx[] = {lldb_edx_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_edi[] = {lldb_edi_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_esi[] = {lldb_esi_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_ebp[] = {lldb_ebp_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_esp[] = {lldb_esp_i386,
+ LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_invalidate_eax[] = {
+ lldb_eax_i386, lldb_ax_i386, lldb_ah_i386, lldb_al_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_ebx[] = {
+ lldb_ebx_i386, lldb_bx_i386, lldb_bh_i386, lldb_bl_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_ecx[] = {
+ lldb_ecx_i386, lldb_cx_i386, lldb_ch_i386, lldb_cl_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_edx[] = {
+ lldb_edx_i386, lldb_dx_i386, lldb_dh_i386, lldb_dl_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_edi[] = {
+ lldb_edi_i386, lldb_di_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_esi[] = {
+ lldb_esi_i386, lldb_si_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_ebp[] = {
+ lldb_ebp_i386, lldb_bp_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_esp[] = {
+ lldb_esp_i386, lldb_sp_i386, LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_contained_rax[] = {lldb_rax_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_rbx[] = {lldb_rbx_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_rcx[] = {lldb_rcx_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_rdx[] = {lldb_rdx_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_rdi[] = {lldb_rdi_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_rsi[] = {lldb_rsi_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_rbp[] = {lldb_rbp_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_rsp[] = {lldb_rsp_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_r8[] = {lldb_r8_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_r9[] = {lldb_r9_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_r10[] = {lldb_r10_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_r11[] = {lldb_r11_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_r12[] = {lldb_r12_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_r13[] = {lldb_r13_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_r14[] = {lldb_r14_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_r15[] = {lldb_r15_x86_64,
+ LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_invalidate_rax[] = {
+ lldb_rax_x86_64, lldb_eax_x86_64, lldb_ax_x86_64,
+ lldb_ah_x86_64, lldb_al_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_rbx[] = {
+ lldb_rbx_x86_64, lldb_ebx_x86_64, lldb_bx_x86_64,
+ lldb_bh_x86_64, lldb_bl_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_rcx[] = {
+ lldb_rcx_x86_64, lldb_ecx_x86_64, lldb_cx_x86_64,
+ lldb_ch_x86_64, lldb_cl_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_rdx[] = {
+ lldb_rdx_x86_64, lldb_edx_x86_64, lldb_dx_x86_64,
+ lldb_dh_x86_64, lldb_dl_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_rdi[] = {
+ lldb_rdi_x86_64, lldb_edi_x86_64, lldb_di_x86_64, lldb_dil_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_rsi[] = {
+ lldb_rsi_x86_64, lldb_esi_x86_64, lldb_si_x86_64, lldb_sil_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_rbp[] = {
+ lldb_rbp_x86_64, lldb_ebp_x86_64, lldb_bp_x86_64, lldb_bpl_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_rsp[] = {
+ lldb_rsp_x86_64, lldb_esp_x86_64, lldb_sp_x86_64, lldb_spl_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_r8[] = {
+ lldb_r8_x86_64, lldb_r8d_x86_64, lldb_r8w_x86_64, lldb_r8l_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_r9[] = {
+ lldb_r9_x86_64, lldb_r9d_x86_64, lldb_r9w_x86_64, lldb_r9l_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_r10[] = {
+ lldb_r10_x86_64, lldb_r10d_x86_64, lldb_r10w_x86_64, lldb_r10l_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_r11[] = {
+ lldb_r11_x86_64, lldb_r11d_x86_64, lldb_r11w_x86_64, lldb_r11l_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_r12[] = {
+ lldb_r12_x86_64, lldb_r12d_x86_64, lldb_r12w_x86_64, lldb_r12l_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_r13[] = {
+ lldb_r13_x86_64, lldb_r13d_x86_64, lldb_r13w_x86_64, lldb_r13l_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_r14[] = {
+ lldb_r14_x86_64, lldb_r14d_x86_64, lldb_r14w_x86_64, lldb_r14l_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_r15[] = {
+ lldb_r15_x86_64, lldb_r15d_x86_64, lldb_r15w_x86_64, lldb_r15l_x86_64,
+ LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_contained_fip[] = {lldb_fip_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_fdp[] = {lldb_fdp_x86_64,
+ LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_invalidate_fip[] = {
+ lldb_fip_x86_64, lldb_fioff_x86_64, lldb_fiseg_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_fdp[] = {
+ lldb_fdp_x86_64, lldb_fooff_x86_64, lldb_foseg_x86_64, LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_contained_st0_32[] = {lldb_st0_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st1_32[] = {lldb_st1_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st2_32[] = {lldb_st2_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st3_32[] = {lldb_st3_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st4_32[] = {lldb_st4_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st5_32[] = {lldb_st5_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st6_32[] = {lldb_st6_i386,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st7_32[] = {lldb_st7_i386,
+ LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_invalidate_st0_32[] = {
+ lldb_st0_i386, lldb_mm0_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st1_32[] = {
+ lldb_st1_i386, lldb_mm1_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st2_32[] = {
+ lldb_st2_i386, lldb_mm2_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st3_32[] = {
+ lldb_st3_i386, lldb_mm3_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st4_32[] = {
+ lldb_st4_i386, lldb_mm4_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st5_32[] = {
+ lldb_st5_i386, lldb_mm5_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st6_32[] = {
+ lldb_st6_i386, lldb_mm6_i386, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st7_32[] = {
+ lldb_st7_i386, lldb_mm7_i386, LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_contained_st0_64[] = {lldb_st0_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st1_64[] = {lldb_st1_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st2_64[] = {lldb_st2_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st3_64[] = {lldb_st3_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st4_64[] = {lldb_st4_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st5_64[] = {lldb_st5_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st6_64[] = {lldb_st6_x86_64,
+ LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_contained_st7_64[] = {lldb_st7_x86_64,
+ LLDB_INVALID_REGNUM};
+
+uint32_t x86_register_info::g_invalidate_st0_64[] = {
+ lldb_st0_x86_64, lldb_mm0_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st1_64[] = {
+ lldb_st1_x86_64, lldb_mm1_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st2_64[] = {
+ lldb_st2_x86_64, lldb_mm2_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st3_64[] = {
+ lldb_st3_x86_64, lldb_mm3_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st4_64[] = {
+ lldb_st4_x86_64, lldb_mm4_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st5_64[] = {
+ lldb_st5_x86_64, lldb_mm5_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st6_64[] = {
+ lldb_st6_x86_64, lldb_mm6_x86_64, LLDB_INVALID_REGNUM};
+uint32_t x86_register_info::g_invalidate_st7_64[] = {
+ lldb_st7_x86_64, lldb_mm7_x86_64, LLDB_INVALID_REGNUM};
+
// Convert the 8-bit abridged FPU Tag Word (as found in FXSAVE) to the full
// 16-bit FPU Tag Word (as found in FSAVE, and used by gdb protocol). This
// requires knowing the values of the ST(i) registers and the FPU Status Word.
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h b/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h
index e24da37b72610..d1d7e94f31776 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h
@@ -390,6 +390,102 @@ uint16_t AbridgedToFullTagWord(uint8_t abridged_tw, uint16_t sw,
llvm::ArrayRef<MMSReg> st_regs);
uint8_t FullToAbridgedTagWord(uint16_t tw);
+namespace x86_register_info {
+extern uint32_t g_contained_eax[];
+extern uint32_t g_contained_ebx[];
+extern uint32_t g_contained_ecx[];
+extern uint32_t g_contained_edx[];
+extern uint32_t g_contained_edi[];
+extern uint32_t g_contained_esi[];
+extern uint32_t g_contained_ebp[];
+extern uint32_t g_contained_esp[];
+
+extern uint32_t g_invalidate_eax[];
+extern uint32_t g_invalidate_ebx[];
+extern uint32_t g_invalidate_ecx[];
+extern uint32_t g_invalidate_edx[];
+extern uint32_t g_invalidate_edi[];
+extern uint32_t g_invalidate_esi[];
+extern uint32_t g_invalidate_ebp[];
+extern uint32_t g_invalidate_esp[];
+
+extern uint32_t g_contained_rax[];
+extern uint32_t g_contained_rbx[];
+extern uint32_t g_contained_rcx[];
+extern uint32_t g_contained_rdx[];
+extern uint32_t g_contained_rdi[];
+extern uint32_t g_contained_rsi[];
+extern uint32_t g_contained_rbp[];
+extern uint32_t g_contained_rsp[];
+extern uint32_t g_contained_r8[];
+extern uint32_t g_contained_r9[];
+extern uint32_t g_contained_r10[];
+extern uint32_t g_contained_r11[];
+extern uint32_t g_contained_r12[];
+extern uint32_t g_contained_r13[];
+extern uint32_t g_contained_r14[];
+extern uint32_t g_contained_r15[];
+
+extern uint32_t g_invalidate_rax[];
+extern uint32_t g_invalidate_rbx[];
+extern uint32_t g_invalidate_rcx[];
+extern uint32_t g_invalidate_rdx[];
+extern uint32_t g_invalidate_rdi[];
+extern uint32_t g_invalidate_rsi[];
+extern uint32_t g_invalidate_rbp[];
+extern uint32_t g_invalidate_rsp[];
+extern uint32_t g_invalidate_r8[];
+extern uint32_t g_invalidate_r9[];
+extern uint32_t g_invalidate_r10[];
+extern uint32_t g_invalidate_r11[];
+extern uint32_t g_invalidate_r12[];
+extern uint32_t g_invalidate_r13[];
+extern uint32_t g_invalidate_r14[];
+extern uint32_t g_invalidate_r15[];
+
+extern uint32_t g_contained_fip[];
+extern uint32_t g_contained_fdp[];
+
+extern uint32_t g_invalidate_fip[];
+extern uint32_t g_invalidate_fdp[];
+
+extern uint32_t g_contained_st0_32[];
+extern uint32_t g_contained_st1_32[];
+extern uint32_t g_contained_st2_32[];
+extern uint32_t g_contained_st3_32[];
+extern uint32_t g_contained_st4_32[];
+extern uint32_t g_contained_st5_32[];
+extern uint32_t g_contained_st6_32[];
+extern uint32_t g_contained_st7_32[];
+
+extern uint32_t g_invalidate_st0_32[];
+extern uint32_t g_invalidate_st1_32[];
+extern uint32_t g_invalidate_st2_32[];
+extern uint32_t g_invalidate_st3_32[];
+extern uint32_t g_invalidate_st4_32[];
+extern uint32_t g_invalidate_st5_32[];
+extern uint32_t g_invalidate_st6_32[];
+extern uint32_t g_invalidate_st7_32[];
+
+extern uint32_t g_contained_st0_64[];
+extern uint32_t g_contained_st1_64[];
+extern uint32_t g_contained_st2_64[];
+extern uint32_t g_contained_st3_64[];
+extern uint32_t g_contained_st4_64[];
+extern uint32_t g_contained_st5_64[];
+extern uint32_t g_contained_st6_64[];
+extern uint32_t g_contained_st7_64[];
+
+extern uint32_t g_invalidate_st0_64[];
+extern uint32_t g_invalidate_st1_64[];
+extern uint32_t g_invalidate_st2_64[];
+extern uint32_t g_invalidate_st3_64[];
+extern uint32_t g_invalidate_st4_64[];
+extern uint32_t g_invalidate_st5_64[];
+extern uint32_t g_invalidate_st6_64[];
+extern uint32_t g_invalidate_st7_64[];
+} // namespace x86_register_info
+
} // namespace lldb_private
#endif
diff --git a/lldb/source/Plugins/Process/Utility/RegisterInfos_i386.h b/lldb/source/Plugins/Process/Utility/RegisterInfos_i386.h
index e9f8065bffd8c..ccd5479c61ed2 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterInfos_i386.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterInfos_i386.h
@@ -93,8 +93,8 @@
eEncodingUint, eFormatHex, \
{dwarf_mm##i##_i386, dwarf_mm##i##_i386, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, lldb_mm##i##_i386 }, \
- RegisterContextPOSIX_x86::g_contained_##streg##_32, \
- RegisterContextPOSIX_x86::g_invalidate_##streg##_32, \
+ x86_register_info::g_contained_##streg##_32, \
+ x86_register_info::g_invalidate_##streg##_32, \
nullptr, \
}
@@ -156,8 +156,8 @@
{LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
lldb_##reg16##_i386 }, \
- RegisterContextPOSIX_x86::g_contained_##reg32, \
- RegisterContextPOSIX_x86::g_invalidate_##reg32, \
+ x86_register_info::g_contained_##reg32, \
+ x86_register_info::g_invalidate_##reg32, \
nullptr, \
}
@@ -168,8 +168,8 @@
{LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
lldb_##reg8##_i386 }, \
- RegisterContextPOSIX_x86::g_contained_##reg32, \
- RegisterContextPOSIX_x86::g_invalidate_##reg32, \
+ x86_register_info::g_contained_##reg32, \
+ x86_register_info::g_invalidate_##reg32, \
nullptr, \
}
@@ -180,8 +180,8 @@
{LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
lldb_##reg8##_i386 }, \
- RegisterContextPOSIX_x86::g_contained_##reg32, \
- RegisterContextPOSIX_x86::g_invalidate_##reg32, \
+ x86_register_info::g_contained_##reg32, \
+ x86_register_info::g_invalidate_##reg32, \
nullptr, \
}
diff --git a/lldb/source/Plugins/Process/Utility/RegisterInfos_x86_64.h b/lldb/source/Plugins/Process/Utility/RegisterInfos_x86_64.h
index 1634381581550..d61b71904bc62 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterInfos_x86_64.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterInfos_x86_64.h
@@ -94,8 +94,8 @@
eEncodingUint, eFormatHex, \
{dwarf_mm##i##_x86_64, dwarf_mm##i##_x86_64, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, lldb_mm##i##_x86_64 }, \
- RegisterContextPOSIX_x86::g_contained_##streg##_64, \
- RegisterContextPOSIX_x86::g_invalidate_##streg##_64, \
+ x86_register_info::g_contained_##streg##_64, \
+ x86_register_info::g_invalidate_##streg##_64, \
nullptr, \
}
@@ -158,8 +158,8 @@
{LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
lldb_##reg32##_x86_64 }, \
- RegisterContextPOSIX_x86::g_contained_##reg64, \
- RegisterContextPOSIX_x86::g_invalidate_##reg64, \
+ x86_register_info::g_contained_##reg64, \
+ x86_register_info::g_invalidate_##reg64, \
nullptr, \
}
@@ -170,8 +170,8 @@
{LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
lldb_##reg16##_x86_64 }, \
- RegisterContextPOSIX_x86::g_contained_##reg64, \
- RegisterContextPOSIX_x86::g_invalidate_##reg64, \
+ x86_register_info::g_contained_##reg64, \
+ x86_register_info::g_invalidate_##reg64, \
nullptr, \
}
@@ -182,8 +182,8 @@
{LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
lldb_##reg8##_x86_64 }, \
- RegisterContextPOSIX_x86::g_contained_##reg64, \
- RegisterContextPOSIX_x86::g_invalidate_##reg64, \
+ x86_register_info::g_contained_##reg64, \
+ x86_register_info::g_invalidate_##reg64, \
nullptr, \
}
@@ -194,8 +194,8 @@
{LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, \
lldb_##reg8##_x86_64 }, \
- RegisterContextPOSIX_x86::g_contained_##reg64, \
- RegisterContextPOSIX_x86::g_invalidate_##reg64, \
+ x86_register_info::g_contained_##reg64, \
+ x86_register_info::g_invalidate_##reg64, \
nullptr \
}
@@ -203,8 +203,8 @@
{ \
#name, nullptr, FPR_SIZE(reg), FPR_OFFSET(reg), eEncodingUint, eFormatHex, \
{kind1, kind2, kind3, kind4, lldb_##name##_x86_64 }, \
- RegisterContextPOSIX_x86::g_contained_##reg64, \
- RegisterContextPOSIX_x86::g_invalidate_##reg64, \
+ x86_register_info::g_contained_##reg64, \
+ x86_register_info::g_invalidate_##reg64, \
nullptr, \
}
diff --git a/lldb/unittests/Instruction/CMakeLists.txt b/lldb/unittests/Instruction/CMakeLists.txt
index 2345298ee3802..f4e6e0ed9464a 100644
--- a/lldb/unittests/Instruction/CMakeLists.txt
+++ b/lldb/unittests/Instruction/CMakeLists.txt
@@ -7,6 +7,7 @@ add_lldb_unittest(EmulatorTests
LINK_COMPONENTS
Support
LINK_LIBS
+ lldbRegisterSupport
lldbCore
lldbSymbol
lldbTarget
diff --git a/lldb/unittests/Process/Utility/CMakeLists.txt b/lldb/unittests/Process/Utility/CMakeLists.txt
index ec0ff95d073b9..d0e8a99a05832 100644
--- a/lldb/unittests/Process/Utility/CMakeLists.txt
+++ b/lldb/unittests/Process/Utility/CMakeLists.txt
@@ -15,12 +15,19 @@ set(LLVM_OPTIONAL_SOURCES
${NETBSD_SOURCES})
add_lldb_unittest(ProcessUtilityTests
+ PARTIAL_SOURCES_INTENDED
LinuxProcMapsTest.cpp
MemoryTagManagerAArch64MTETest.cpp
- RegisterContextTest.cpp
CoreFileMemoryRangesTest.cpp
- ${PLATFORM_SOURCES}
LINK_LIBS
lldbPluginProcessUtility
LLVMTestingSupport)
+
+add_lldb_unittest(RegisterSupportTests
+ PARTIAL_SOURCES_INTENDED
+ RegisterContextTest.cpp
+ ${PLATFORM_SOURCES}
+
+ LINK_LIBS
+ lldbRegisterSupport)
diff --git a/lldb/unittests/Process/minidump/CMakeLists.txt b/lldb/unittests/Process/minidump/CMakeLists.txt
index 07ea9c5a45507..d2dae08c88e2b 100644
--- a/lldb/unittests/Process/minidump/CMakeLists.txt
+++ b/lldb/unittests/Process/minidump/CMakeLists.txt
@@ -6,6 +6,7 @@ add_lldb_unittest(LLDBMinidumpTests
ObjectYAML
Support
LINK_LIBS
+ lldbRegisterSupport
lldbCore
lldbHost
lldbTarget
diff --git a/llvm/utils/gn/secondary/lldb/source/Plugins/Process/Utility/BUILD.gn b/llvm/utils/gn/secondary/lldb/source/Plugins/Process/Utility/BUILD.gn
index 09c0b85686053..bdde7b3bff752 100644
--- a/llvm/utils/gn/secondary/lldb/source/Plugins/Process/Utility/BUILD.gn
+++ b/llvm/utils/gn/secondary/lldb/source/Plugins/Process/Utility/BUILD.gn
@@ -1,7 +1,46 @@
+static_library("RegisterSupport") {
+ output_name = "lldbRegisterSupport"
+ configs += [ "//llvm/utils/gn/build:lldb_code" ]
+ deps = [
+ "//lldb/source/Utility",
+ "//llvm/lib/Support",
+ "//llvm/lib/TargetParser",
+ ]
+
+ # Uses source-relative includes for own headers.
+ include_dirs = [ "//lldb/source" ]
+ sources = [
+ "RegisterContextFreeBSD_i386.cpp",
+ "RegisterContextFreeBSD_powerpc.cpp",
+ "RegisterContextFreeBSD_x86_64.cpp",
+ "RegisterContextLinux_i386.cpp",
+ "RegisterContextLinux_s390x.cpp",
+ "RegisterContextLinux_x86_64.cpp",
+ "RegisterContextNetBSD_i386.cpp",
+ "RegisterContextNetBSD_x86_64.cpp",
+ "RegisterContextOpenBSD_i386.cpp",
+ "RegisterContextOpenBSD_x86_64.cpp",
+ "RegisterContextWindows_i386.cpp",
+ "RegisterContextWindows_x86_64.cpp",
+ "RegisterContext_x86.cpp",
+ "RegisterInfoPOSIXDynamic_riscv32.cpp",
+ "RegisterInfoPOSIX_arm.cpp",
+ "RegisterInfoPOSIX_arm64.cpp",
+ "RegisterInfoPOSIX_loongarch64.cpp",
+ "RegisterInfoPOSIX_ppc64.cpp",
+ "RegisterInfoPOSIX_ppc64le.cpp",
+ "RegisterInfoPOSIX_riscv32.cpp",
+ "RegisterInfoPOSIX_riscv64.cpp",
+ "RegisterInfos_x86_64_with_base_shared.cpp",
+ "RegisterTypeDetector_arm64.cpp",
+ ]
+}
+
static_library("Utility") {
output_name = "lldbPluginProcessUtility"
configs += [ "//llvm/utils/gn/build:lldb_code" ]
deps = [
+ ":RegisterSupport",
#"//lldb/source/Breakpoint", # 3-hop dependency cycle.
"//lldb/source/Core",
"//lldb/source/DataFormatters",
@@ -42,20 +81,10 @@ static_library("Utility") {
"RegisterContextDarwin_riscv32.cpp",
"RegisterContextDarwin_x86_64.cpp",
"RegisterContextDummy.cpp",
- "RegisterContextFreeBSD_i386.cpp",
- "RegisterContextFreeBSD_powerpc.cpp",
- "RegisterContextFreeBSD_x86_64.cpp",
"RegisterContextHistory.cpp",
- "RegisterContextLinux_i386.cpp",
- "RegisterContextLinux_s390x.cpp",
- "RegisterContextLinux_x86_64.cpp",
"RegisterContextMach_arm.cpp",
"RegisterContextMach_x86_64.cpp",
"RegisterContextMemory.cpp",
- "RegisterContextNetBSD_i386.cpp",
- "RegisterContextNetBSD_x86_64.cpp",
- "RegisterContextOpenBSD_i386.cpp",
- "RegisterContextOpenBSD_x86_64.cpp",
"RegisterContextPOSIX_arm.cpp",
"RegisterContextPOSIX_arm64.cpp",
"RegisterContextPOSIX_loongarch64.cpp",
@@ -66,19 +95,6 @@ static_library("Utility") {
"RegisterContextPOSIX_s390x.cpp",
"RegisterContextPOSIX_x86.cpp",
"RegisterContextThreadMemory.cpp",
- "RegisterContextWindows_i386.cpp",
- "RegisterContextWindows_x86_64.cpp",
- "RegisterContext_x86.cpp",
- "RegisterInfoPOSIXDynamic_riscv32.cpp",
- "RegisterInfoPOSIX_arm.cpp",
- "RegisterInfoPOSIX_arm64.cpp",
- "RegisterInfoPOSIX_loongarch64.cpp",
- "RegisterInfoPOSIX_ppc64.cpp",
- "RegisterInfoPOSIX_ppc64le.cpp",
- "RegisterInfoPOSIX_riscv32.cpp",
- "RegisterInfoPOSIX_riscv64.cpp",
- "RegisterInfos_x86_64_with_base_shared.cpp",
- "RegisterTypeDetector_arm64.cpp",
"StopInfoMachException.cpp",
"ThreadMemory.cpp",
]
More information about the lldb-commits
mailing list