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 <[email protected]> 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", ] _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
