[Lldb-commits] [lldb] [llvm] [lldb] Extract reusable core register contexts (PR #237442)

Minsoo Choo via lldb-commits lldb-commits at lists.llvm.org
Fri Oct 30 17:11:45 PDT 2026


https://github.com/mchoo7 created https://github.com/llvm/llvm-project/pull/237442

As part of RegisterInfo/RegisterContext refactoring under Process/Utility, move RegisterContextPOSIX to Plugins/Register/Core/RegisterContextCore. The renaming is necessary because RegisterContextPOSIX doesn't use any POSIX APIs, so the term is misleading (e.g. FreeBSD-Kernel-Core does not have any relationship with POSIX except that the FreeBSD operating system itself is compatible with POSIX). Although RegisterContextPOSIX doesn't do coredump-specific operations, only elf-core and FreeBSD-Kernel-Core depend on it and that's the only naming I could justify (Names like Unix and Common don't fit in this case). We can change the name later when non-coredump process plugin depends on it, but the probability is low considering that NativeRegisterContext and RegisterContextDarwin/Mach already cover what we need.

>From 79469cdb7a27a5e2f8e26586bac9354cc3c3d545 Mon Sep 17 00:00:00 2001
From: Minsoo Choo <minsoo at minsoo.io>
Date: Sun, 6 Sep 2026 10:12:43 -0400
Subject: [PATCH] [lldb] Extract reusable core register contexts

---
 .../FreeBSD-Kernel-Core/CMakeLists.txt        |  1 +
 .../RegisterContextFreeBSDKernelCore_arm.cpp  |  2 +-
 .../RegisterContextFreeBSDKernelCore_arm.h    |  4 +-
 ...RegisterContextFreeBSDKernelCore_arm64.cpp |  2 +-
 .../RegisterContextFreeBSDKernelCore_arm64.h  |  4 +-
 .../RegisterContextFreeBSDKernelCore_i386.cpp |  2 +-
 .../RegisterContextFreeBSDKernelCore_i386.h   |  4 +-
 ...gisterContextFreeBSDKernelCore_ppc64le.cpp |  2 +-
 ...RegisterContextFreeBSDKernelCore_ppc64le.h |  4 +-
 ...gisterContextFreeBSDKernelCore_riscv64.cpp |  2 +-
 ...RegisterContextFreeBSDKernelCore_riscv64.h |  4 +-
 ...egisterContextFreeBSDKernelCore_x86_64.cpp |  2 +-
 .../RegisterContextFreeBSDKernelCore_x86_64.h |  4 +-
 .../Plugins/Process/FreeBSD/CMakeLists.txt    |  1 -
 .../Process/FreeBSD/NativeProcessFreeBSD.h    |  1 -
 .../NativeRegisterContextFreeBSD_powerpc.cpp  |  3 +-
 .../Plugins/Process/Utility/CMakeLists.txt    |  9 ----
 .../Plugins/Process/elf-core/CMakeLists.txt   |  1 +
 .../elf-core/RegisterContextPOSIXCore_arm.cpp |  2 +-
 .../elf-core/RegisterContextPOSIXCore_arm.h   |  4 +-
 .../RegisterContextPOSIXCore_arm64.cpp        |  2 +-
 .../elf-core/RegisterContextPOSIXCore_arm64.h |  4 +-
 .../RegisterContextPOSIXCore_loongarch64.cpp  |  2 +-
 .../RegisterContextPOSIXCore_loongarch64.h    |  4 +-
 .../RegisterContextPOSIXCore_powerpc.cpp      |  2 +-
 .../RegisterContextPOSIXCore_powerpc.h        |  4 +-
 .../RegisterContextPOSIXCore_ppc64le.cpp      |  2 +-
 .../RegisterContextPOSIXCore_ppc64le.h        |  4 +-
 .../RegisterContextPOSIXCore_riscv64.cpp      |  2 +-
 .../RegisterContextPOSIXCore_riscv64.h        |  4 +-
 .../RegisterContextPOSIXCore_s390x.cpp        |  2 +-
 .../elf-core/RegisterContextPOSIXCore_s390x.h |  4 +-
 .../elf-core/RegisterContextPOSIXCore_x86.cpp |  2 +-
 .../elf-core/RegisterContextPOSIXCore_x86.h   |  4 +-
 lldb/source/Plugins/Register/CMakeLists.txt   |  1 +
 .../Plugins/Register/Core/CMakeLists.txt      | 22 ++++++++
 .../Core/RegisterContextCore_arm.cpp}         | 34 ++++++-------
 .../Core/RegisterContextCore_arm.h}           | 14 +++---
 .../Core/RegisterContextCore_arm64.cpp}       | 50 +++++++++----------
 .../Core/RegisterContextCore_arm64.h}         | 14 +++---
 .../Core/RegisterContextCore_loongarch64.cpp} | 36 ++++++-------
 .../Core/RegisterContextCore_loongarch64.h}   | 14 +++---
 .../Core/RegisterContextCore_powerpc.cpp}     | 38 +++++++-------
 .../Core/RegisterContextCore_powerpc.h}       | 16 +++---
 .../Core/RegisterContextCore_ppc64le.cpp}     | 36 ++++++-------
 .../Core/RegisterContextCore_ppc64le.h}       | 12 ++---
 .../Core/RegisterContextCore_riscv32.cpp}     | 32 ++++++------
 .../Core/RegisterContextCore_riscv32.h}       | 14 +++---
 .../Core/RegisterContextCore_riscv64.cpp}     | 32 ++++++------
 .../Core/RegisterContextCore_riscv64.h}       | 14 +++---
 .../Core/RegisterContextCore_s390x.cpp}       | 34 ++++++-------
 .../Core/RegisterContextCore_s390x.h}         | 14 +++---
 .../Core/RegisterContextCore_x86.cpp}         | 50 +++++++++----------
 .../Core/RegisterContextCore_x86.h}           | 14 +++---
 .../Utility/RegisterInfoFreeBSDTest.cpp       |  2 +-
 .../source/Plugins/Process/Utility/BUILD.gn   |  9 ----
 .../source/Plugins/Process/elf-core/BUILD.gn  |  1 +
 .../source/Plugins/Register/Core/BUILD.gn     | 23 +++++++++
 58 files changed, 327 insertions(+), 299 deletions(-)
 create mode 100644 lldb/source/Plugins/Register/Core/CMakeLists.txt
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_arm.cpp => Register/Core/RegisterContextCore_arm.cpp} (67%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_arm.h => Register/Core/RegisterContextCore_arm.h} (76%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_arm64.cpp => Register/Core/RegisterContextCore_arm64.cpp} (62%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_arm64.h => Register/Core/RegisterContextCore_arm64.h} (84%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_loongarch64.cpp => Register/Core/RegisterContextCore_loongarch64.cpp} (61%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_loongarch64.h => Register/Core/RegisterContextCore_loongarch64.h} (78%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_powerpc.cpp => Register/Core/RegisterContextCore_powerpc.cpp} (80%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_powerpc.h => Register/Core/RegisterContextCore_powerpc.h} (80%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_ppc64le.cpp => Register/Core/RegisterContextCore_ppc64le.cpp} (84%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_ppc64le.h => Register/Core/RegisterContextCore_ppc64le.h} (82%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_riscv32.cpp => Register/Core/RegisterContextCore_riscv32.cpp} (62%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_riscv32.h => Register/Core/RegisterContextCore_riscv32.h} (76%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_riscv64.cpp => Register/Core/RegisterContextCore_riscv64.cpp} (61%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_riscv64.h => Register/Core/RegisterContextCore_riscv64.h} (76%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_s390x.cpp => Register/Core/RegisterContextCore_s390x.cpp} (82%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_s390x.h => Register/Core/RegisterContextCore_s390x.h} (79%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_x86.cpp => Register/Core/RegisterContextCore_x86.cpp} (89%)
 rename lldb/source/Plugins/{Process/Utility/RegisterContextPOSIX_x86.h => Register/Core/RegisterContextCore_x86.h} (84%)
 create mode 100644 llvm/utils/gn/secondary/lldb/source/Plugins/Register/Core/BUILD.gn

diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/CMakeLists.txt b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/CMakeLists.txt
index b9487abe105e0e..c11c15a5a6dfdf 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/CMakeLists.txt
@@ -28,6 +28,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
       lldbHost
       lldbTarget
       lldbPluginObjectFileELF
+      lldbPluginRegisterCore
       kvm
     )
 
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm.cpp b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm.cpp
index f06f80fd33ce18..ba6d95c7557e9b 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm.cpp
@@ -24,7 +24,7 @@ using namespace lldb_private;
 RegisterContextFreeBSDKernelCore_arm::RegisterContextFreeBSDKernelCore_arm(
     Thread &thread, std::unique_ptr<RegisterInfo_arm> register_info_up,
     lldb::addr_t pcb_addr)
-    : RegisterContextPOSIX_arm(thread, std::move(register_info_up)),
+    : RegisterContextCore_arm(thread, std::move(register_info_up)),
       m_pcb_addr(pcb_addr) {}
 
 bool RegisterContextFreeBSDKernelCore_arm::ReadGPR() { return true; }
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm.h b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm.h
index f955a0094fc0aa..b8b6db02a109d1 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm.h
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm.h
@@ -9,10 +9,10 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_ARM_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_ARM_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_arm.h"
+#include "Plugins/Register/Core/RegisterContextCore_arm.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
-class RegisterContextFreeBSDKernelCore_arm : public RegisterContextPOSIX_arm {
+class RegisterContextFreeBSDKernelCore_arm : public RegisterContextCore_arm {
 public:
   RegisterContextFreeBSDKernelCore_arm(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
index aaadd1a0c66f75..b251a66c2a8e61 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.cpp
@@ -29,7 +29,7 @@ using namespace lldb_private;
 RegisterContextFreeBSDKernelCore_arm64::RegisterContextFreeBSDKernelCore_arm64(
     Thread &thread, std::unique_ptr<RegisterInfo_arm64> register_info_up,
     lldb::addr_t pcb_addr)
-    : RegisterContextPOSIX_arm64(thread, std::move(register_info_up)),
+    : RegisterContextCore_arm64(thread, std::move(register_info_up)),
       m_pcb_addr(pcb_addr) {}
 
 bool RegisterContextFreeBSDKernelCore_arm64::ReadGPR() { return true; }
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.h b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.h
index 6fd44f03e315db..a0734a8fb646a0 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.h
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_arm64.h
@@ -9,13 +9,13 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_ARM64_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_ARM64_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_arm64.h"
+#include "Plugins/Register/Core/RegisterContextCore_arm64.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
 #include <optional>
 
 class RegisterContextFreeBSDKernelCore_arm64
-    : public RegisterContextPOSIX_arm64 {
+    : public RegisterContextCore_arm64 {
 public:
   RegisterContextFreeBSDKernelCore_arm64(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_i386.cpp b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_i386.cpp
index 0b44e52764d7cb..2c1ef39623144a 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_i386.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_i386.cpp
@@ -22,7 +22,7 @@ using namespace lldb_private;
 
 RegisterContextFreeBSDKernelCore_i386::RegisterContextFreeBSDKernelCore_i386(
     Thread &thread, RegisterInfoInterface *register_info, lldb::addr_t pcb_addr)
-    : RegisterContextPOSIX_x86(thread, 0, register_info), m_pcb_addr(pcb_addr) {
+    : RegisterContextCore_x86(thread, 0, register_info), m_pcb_addr(pcb_addr) {
 }
 
 bool RegisterContextFreeBSDKernelCore_i386::ReadGPR() { return true; }
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_i386.h b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_i386.h
index 26576734040f2a..d5c92efaa3fdee 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_i386.h
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_i386.h
@@ -9,10 +9,10 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_I386_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_I386_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_x86.h"
+#include "Plugins/Register/Core/RegisterContextCore_x86.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
-class RegisterContextFreeBSDKernelCore_i386 : public RegisterContextPOSIX_x86 {
+class RegisterContextFreeBSDKernelCore_i386 : public RegisterContextCore_x86 {
 public:
   RegisterContextFreeBSDKernelCore_i386(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_ppc64le.cpp b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_ppc64le.cpp
index 3b0f269a3014db..236dc83af9aef9 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_ppc64le.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_ppc64le.cpp
@@ -24,7 +24,7 @@ RegisterContextFreeBSDKernelCore_ppc64le::
     RegisterContextFreeBSDKernelCore_ppc64le(
         Thread &thread, lldb_private::RegisterInfoInterface *register_info,
         lldb::addr_t pcb_addr)
-    : RegisterContextPOSIX_ppc64le(thread, 0, register_info),
+    : RegisterContextCore_ppc64le(thread, 0, register_info),
       m_pcb_addr(pcb_addr) {}
 
 bool RegisterContextFreeBSDKernelCore_ppc64le::ReadRegister(
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_ppc64le.h b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_ppc64le.h
index 5895744e6fa3dc..babdc4f94113d7 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_ppc64le.h
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_ppc64le.h
@@ -9,11 +9,11 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_PPC64LE_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_PPC64LE_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_ppc64le.h"
+#include "Plugins/Register/Core/RegisterContextCore_ppc64le.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
 class RegisterContextFreeBSDKernelCore_ppc64le
-    : public RegisterContextPOSIX_ppc64le {
+    : public RegisterContextCore_ppc64le {
 public:
   RegisterContextFreeBSDKernelCore_ppc64le(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_riscv64.cpp b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_riscv64.cpp
index ba210259cf71e9..41518c3c2cac6f 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_riscv64.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_riscv64.cpp
@@ -25,7 +25,7 @@ RegisterContextFreeBSDKernelCore_riscv64::
         Thread &thread,
         std::unique_ptr<RegisterInfo_riscv64> register_info_up,
         lldb::addr_t pcb_addr)
-    : RegisterContextPOSIX_riscv64(thread, std::move(register_info_up)),
+    : RegisterContextCore_riscv64(thread, std::move(register_info_up)),
       m_pcb_addr(pcb_addr) {}
 
 bool RegisterContextFreeBSDKernelCore_riscv64::ReadGPR() { return true; }
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_riscv64.h b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_riscv64.h
index de9b7a3d9a0dac..873a0547611b7a 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_riscv64.h
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_riscv64.h
@@ -9,11 +9,11 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_RISCV64_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_RISCV64_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_riscv64.h"
+#include "Plugins/Register/Core/RegisterContextCore_riscv64.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
 class RegisterContextFreeBSDKernelCore_riscv64
-    : public RegisterContextPOSIX_riscv64 {
+    : public RegisterContextCore_riscv64 {
 public:
   RegisterContextFreeBSDKernelCore_riscv64(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_x86_64.cpp b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_x86_64.cpp
index a0cb53526d3314..eb8ea27c1b36b4 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_x86_64.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_x86_64.cpp
@@ -24,7 +24,7 @@ RegisterContextFreeBSDKernelCore_x86_64::
     RegisterContextFreeBSDKernelCore_x86_64(
         Thread &thread, RegisterInfoInterface *register_info,
         lldb::addr_t pcb_addr)
-    : RegisterContextPOSIX_x86(thread, 0, register_info), m_pcb_addr(pcb_addr) {
+    : RegisterContextCore_x86(thread, 0, register_info), m_pcb_addr(pcb_addr) {
 }
 
 bool RegisterContextFreeBSDKernelCore_x86_64::ReadGPR() { return true; }
diff --git a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_x86_64.h b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_x86_64.h
index 5e2877ca55b9db..ae3cfd03f61485 100644
--- a/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_x86_64.h
+++ b/lldb/source/Plugins/Process/FreeBSD-Kernel-Core/RegisterContextFreeBSDKernelCore_x86_64.h
@@ -9,11 +9,11 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_X86_64_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNELCORE_X86_64_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_x86.h"
+#include "Plugins/Register/Core/RegisterContextCore_x86.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
 class RegisterContextFreeBSDKernelCore_x86_64
-    : public RegisterContextPOSIX_x86 {
+    : public RegisterContextCore_x86 {
 public:
   RegisterContextFreeBSDKernelCore_x86_64(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/FreeBSD/CMakeLists.txt b/lldb/source/Plugins/Process/FreeBSD/CMakeLists.txt
index 61249ad94324fe..e752f0c8b861c4 100644
--- a/lldb/source/Plugins/Process/FreeBSD/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/FreeBSD/CMakeLists.txt
@@ -15,6 +15,5 @@ add_lldb_library(lldbPluginProcessFreeBSD
     lldbTarget
     lldbUtility
     lldbPluginProcessPOSIX
-    lldbPluginProcessUtility
     lldbPluginRegisterNative
   )
diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h
index a22a385dfc6a46..fce1bbfc93a924 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.h
@@ -10,7 +10,6 @@
 #define liblldb_NativeProcessFreeBSD_H_
 
 #include "Plugins/Process/POSIX/NativeProcessELF.h"
-#include "Plugins/Process/Utility/NativeProcessSoftwareSingleStep.h"
 
 #include "lldb/Target/MemoryRegionInfo.h"
 #include "lldb/Utility/ArchSpec.h"
diff --git a/lldb/source/Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD_powerpc.cpp b/lldb/source/Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD_powerpc.cpp
index 560c3e567702c8..af357505cddd77 100644
--- a/lldb/source/Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD_powerpc.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD_powerpc.cpp
@@ -16,8 +16,7 @@
 #include "lldb/Utility/Status.h"
 
 #include "Plugins/Process/FreeBSD/NativeProcessFreeBSD.h"
-// for register enum definitions
-#include "Plugins/Process/Utility/RegisterContextPOSIX_powerpc.h"
+#include "Register/Arch/RegisterContext_powerpc.h"
 
 // clang-format off
 #include <sys/param.h>
diff --git a/lldb/source/Plugins/Process/Utility/CMakeLists.txt b/lldb/source/Plugins/Process/Utility/CMakeLists.txt
index e74e17971d0356..6dbd6a5279e9cc 100644
--- a/lldb/source/Plugins/Process/Utility/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/Utility/CMakeLists.txt
@@ -23,15 +23,6 @@ add_lldb_library(lldbPluginProcessUtility
   RegisterContextMach_arm.cpp
   RegisterContextMach_x86_64.cpp
   RegisterContextMemory.cpp
-  RegisterContextPOSIX_arm.cpp
-  RegisterContextPOSIX_arm64.cpp
-  RegisterContextPOSIX_loongarch64.cpp
-  RegisterContextPOSIX_riscv32.cpp
-  RegisterContextPOSIX_powerpc.cpp
-  RegisterContextPOSIX_ppc64le.cpp
-  RegisterContextPOSIX_riscv64.cpp
-  RegisterContextPOSIX_s390x.cpp
-  RegisterContextPOSIX_x86.cpp
   RegisterContextThreadMemory.cpp
   StopInfoMachException.cpp
   ThreadMemory.cpp
diff --git a/lldb/source/Plugins/Process/elf-core/CMakeLists.txt b/lldb/source/Plugins/Process/elf-core/CMakeLists.txt
index d1addf2f36be39..4232b46b54ef75 100644
--- a/lldb/source/Plugins/Process/elf-core/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/elf-core/CMakeLists.txt
@@ -23,4 +23,5 @@ add_lldb_library(lldbPluginProcessElfCore PLUGIN
     lldbPluginObjectFilePlaceholder
     lldbPluginObjectFileELF
     lldbPluginProcessUtility
+    lldbPluginRegisterCore
   )
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm.cpp
index ae18c3f15f9266..725d7996f7d60b 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm.cpp
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm.cpp
@@ -18,7 +18,7 @@ using namespace lldb_private;
 RegisterContextCorePOSIX_arm::RegisterContextCorePOSIX_arm(
     Thread &thread, std::unique_ptr<RegisterInfo_arm> register_info,
     const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
-    : RegisterContextPOSIX_arm(thread, std::move(register_info)) {
+    : RegisterContextCore_arm(thread, std::move(register_info)) {
   m_gpr_buffer = std::make_shared<DataBufferHeap>(gpregset.GetDataStart(),
                                                   gpregset.GetByteSize());
   m_gpr.SetData(m_gpr_buffer);
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm.h b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm.h
index 436a0527252cd7..55aa2aa3ee3fe5 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm.h
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm.h
@@ -9,12 +9,12 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_ARM_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_ARM_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_arm.h"
+#include "Plugins/Register/Core/RegisterContextCore_arm.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 #include "lldb/Utility/DataBufferHeap.h"
 #include "lldb/Utility/DataExtractor.h"
 
-class RegisterContextCorePOSIX_arm : public RegisterContextPOSIX_arm {
+class RegisterContextCorePOSIX_arm : public RegisterContextCore_arm {
 public:
   RegisterContextCorePOSIX_arm(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.cpp
index e7ae3ca40fe223..8b78e41d641da1 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.cpp
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.cpp
@@ -95,7 +95,7 @@ RegisterContextCorePOSIX_arm64::Create(Thread &thread, const ArchSpec &arch,
 RegisterContextCorePOSIX_arm64::RegisterContextCorePOSIX_arm64(
     Thread &thread, std::unique_ptr<RegisterInfo_arm64> register_info,
     const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
-    : RegisterContextPOSIX_arm64(thread, std::move(register_info)) {
+    : RegisterContextCore_arm64(thread, std::move(register_info)) {
   ::memset(&m_sme_pseudo_regs, 0, sizeof(m_sme_pseudo_regs));
 
   ProcessElfCore *process =
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.h b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.h
index a86f3f03179258..be52fd00f52a43 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.h
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.h
@@ -10,14 +10,14 @@
 #define LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_ARM64_H
 
 #include "Plugins/Process/Utility/LinuxPTraceDefines_arm64sve.h"
-#include "Plugins/Process/Utility/RegisterContextPOSIX_arm64.h"
+#include "Plugins/Register/Core/RegisterContextCore_arm64.h"
 #include "Register/Common/RegisterTypeDetector_arm64.h"
 
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 #include "lldb/Utility/DataBufferHeap.h"
 #include "lldb/Utility/DataExtractor.h"
 
-class RegisterContextCorePOSIX_arm64 : public RegisterContextPOSIX_arm64 {
+class RegisterContextCorePOSIX_arm64 : public RegisterContextCore_arm64 {
 public:
   static std::unique_ptr<RegisterContextCorePOSIX_arm64>
   Create(lldb_private::Thread &thread, const lldb_private::ArchSpec &arch,
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_loongarch64.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_loongarch64.cpp
index 982eafe07b3db2..5bf4b184dce4b4 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_loongarch64.cpp
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_loongarch64.cpp
@@ -28,7 +28,7 @@ RegisterContextCorePOSIX_loongarch64::RegisterContextCorePOSIX_loongarch64(
     Thread &thread,
     std::unique_ptr<RegisterInfo_loongarch64> register_info,
     const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
-    : RegisterContextPOSIX_loongarch64(thread, std::move(register_info)) {
+    : RegisterContextCore_loongarch64(thread, std::move(register_info)) {
 
   m_gpr.SetData(std::make_shared<DataBufferHeap>(gpregset.GetDataStart(),
                                                  gpregset.GetByteSize()));
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_loongarch64.h b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_loongarch64.h
index fd2e5b1c11abbf..0420912cd89b29 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_loongarch64.h
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_loongarch64.h
@@ -9,7 +9,7 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_LOONGARCH64_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_LOONGARCH64_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_loongarch64.h"
+#include "Plugins/Register/Core/RegisterContextCore_loongarch64.h"
 #include "Register/Common/RegisterInfo_loongarch64.h"
 
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
@@ -20,7 +20,7 @@
 #include <memory>
 
 class RegisterContextCorePOSIX_loongarch64
-    : public RegisterContextPOSIX_loongarch64 {
+    : public RegisterContextCore_loongarch64 {
 public:
   static std::unique_ptr<RegisterContextCorePOSIX_loongarch64>
   Create(lldb_private::Thread &thread, const lldb_private::ArchSpec &arch,
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_powerpc.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_powerpc.cpp
index 4e7be91c38959d..b91f503c12d2a4 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_powerpc.cpp
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_powerpc.cpp
@@ -19,7 +19,7 @@ using namespace lldb_private;
 RegisterContextCorePOSIX_powerpc::RegisterContextCorePOSIX_powerpc(
     Thread &thread, RegisterInfoInterface *register_info,
     const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
-    : RegisterContextPOSIX_powerpc(thread, 0, register_info) {
+    : RegisterContextCore_powerpc(thread, 0, register_info) {
   m_gpr_buffer = std::make_shared<DataBufferHeap>(gpregset.GetDataStart(),
                                                   gpregset.GetByteSize());
   m_gpr.SetData(m_gpr_buffer);
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_powerpc.h b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_powerpc.h
index 5364c5589238a1..095df6a215e9c9 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_powerpc.h
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_powerpc.h
@@ -9,11 +9,11 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_POWERPC_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_POWERPC_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_powerpc.h"
+#include "Plugins/Register/Core/RegisterContextCore_powerpc.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 #include "lldb/Utility/DataExtractor.h"
 
-class RegisterContextCorePOSIX_powerpc : public RegisterContextPOSIX_powerpc {
+class RegisterContextCorePOSIX_powerpc : public RegisterContextCore_powerpc {
 public:
   RegisterContextCorePOSIX_powerpc(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_ppc64le.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_ppc64le.cpp
index 4f0f46b2213c45..de4f03b563407f 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_ppc64le.cpp
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_ppc64le.cpp
@@ -22,7 +22,7 @@ using namespace lldb_private;
 RegisterContextCorePOSIX_ppc64le::RegisterContextCorePOSIX_ppc64le(
     Thread &thread, RegisterInfoInterface *register_info,
     const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
-    : RegisterContextPOSIX_ppc64le(thread, 0, register_info) {
+    : RegisterContextCore_ppc64le(thread, 0, register_info) {
   m_gpr_buffer = std::make_shared<DataBufferHeap>(gpregset.GetDataStart(),
                                                   gpregset.GetByteSize());
   m_gpr.SetData(m_gpr_buffer);
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_ppc64le.h b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_ppc64le.h
index 8de77a7e25bff0..5ef69c02e60eaa 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_ppc64le.h
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_ppc64le.h
@@ -9,11 +9,11 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_PPC64LE_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_PPC64LE_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_ppc64le.h"
+#include "Plugins/Register/Core/RegisterContextCore_ppc64le.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 #include "lldb/Utility/DataExtractor.h"
 
-class RegisterContextCorePOSIX_ppc64le : public RegisterContextPOSIX_ppc64le {
+class RegisterContextCorePOSIX_ppc64le : public RegisterContextCore_ppc64le {
 public:
   RegisterContextCorePOSIX_ppc64le(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.cpp
index 703768709ebac1..622de6e25ee4bd 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.cpp
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.cpp
@@ -33,7 +33,7 @@ RegisterContextCorePOSIX_riscv64::Create(Thread &thread, const ArchSpec &arch,
 RegisterContextCorePOSIX_riscv64::RegisterContextCorePOSIX_riscv64(
     Thread &thread, std::unique_ptr<RegisterInfo_riscv64> register_info,
     const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
-    : RegisterContextPOSIX_riscv64(thread, std::move(register_info)) {
+    : RegisterContextCore_riscv64(thread, std::move(register_info)) {
 
   m_gpr.SetData(std::make_shared<DataBufferHeap>(gpregset.GetDataStart(),
                                                  gpregset.GetByteSize()));
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.h b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.h
index 43938875693fb8..b327b045c40f17 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.h
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.h
@@ -9,7 +9,7 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_RISCV64_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_RISCV64_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_riscv64.h"
+#include "Plugins/Register/Core/RegisterContextCore_riscv64.h"
 #include "Register/Common/RegisterInfo_riscv64.h"
 
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
@@ -19,7 +19,7 @@
 
 #include <memory>
 
-class RegisterContextCorePOSIX_riscv64 : public RegisterContextPOSIX_riscv64 {
+class RegisterContextCorePOSIX_riscv64 : public RegisterContextCore_riscv64 {
 public:
   static std::unique_ptr<RegisterContextCorePOSIX_riscv64>
   Create(lldb_private::Thread &thread, const lldb_private::ArchSpec &arch,
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_s390x.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_s390x.cpp
index 69707eeb3f1e68..afe82b500646e7 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_s390x.cpp
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_s390x.cpp
@@ -19,7 +19,7 @@ using namespace lldb_private;
 RegisterContextCorePOSIX_s390x::RegisterContextCorePOSIX_s390x(
     Thread &thread, RegisterInfoInterface *register_info,
     const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
-    : RegisterContextPOSIX_s390x(thread, 0, register_info) {
+    : RegisterContextCore_s390x(thread, 0, register_info) {
   m_gpr_buffer = std::make_shared<DataBufferHeap>(gpregset.GetDataStart(),
                                                   gpregset.GetByteSize());
   m_gpr.SetData(m_gpr_buffer);
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_s390x.h b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_s390x.h
index edb7cbc9462f6a..b69fc920ebf2d5 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_s390x.h
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_s390x.h
@@ -9,11 +9,11 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_S390X_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_S390X_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_s390x.h"
+#include "Plugins/Register/Core/RegisterContextCore_s390x.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 #include "lldb/Utility/DataExtractor.h"
 
-class RegisterContextCorePOSIX_s390x : public RegisterContextPOSIX_s390x {
+class RegisterContextCorePOSIX_s390x : public RegisterContextCore_s390x {
 public:
   RegisterContextCorePOSIX_s390x(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86.cpp b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86.cpp
index 2eadbcc338184e..1fb6964cfb4106 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86.cpp
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86.cpp
@@ -16,7 +16,7 @@ using namespace lldb_private;
 RegisterContextCorePOSIX_x86::RegisterContextCorePOSIX_x86(
     Thread &thread, RegisterInfoInterface *register_info,
     const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes)
-    : RegisterContextPOSIX_x86(thread, 0, register_info) {
+    : RegisterContextCore_x86(thread, 0, register_info) {
   size_t size, len;
 
   size = GetGPRSize();
diff --git a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86.h b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86.h
index 56f910b18683ae..71bc2721156848 100644
--- a/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86.h
+++ b/lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86.h
@@ -9,10 +9,10 @@
 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_X86_H
 #define LLDB_SOURCE_PLUGINS_PROCESS_ELF_CORE_REGISTERCONTEXTPOSIXCORE_X86_H
 
-#include "Plugins/Process/Utility/RegisterContextPOSIX_x86.h"
+#include "Plugins/Register/Core/RegisterContextCore_x86.h"
 #include "Plugins/Process/elf-core/RegisterUtilities.h"
 
-class RegisterContextCorePOSIX_x86 : public RegisterContextPOSIX_x86 {
+class RegisterContextCorePOSIX_x86 : public RegisterContextCore_x86 {
 public:
   RegisterContextCorePOSIX_x86(
       lldb_private::Thread &thread,
diff --git a/lldb/source/Plugins/Register/CMakeLists.txt b/lldb/source/Plugins/Register/CMakeLists.txt
index d862398db31b0f..6660ad9a66b134 100644
--- a/lldb/source/Plugins/Register/CMakeLists.txt
+++ b/lldb/source/Plugins/Register/CMakeLists.txt
@@ -1 +1,2 @@
+add_subdirectory(Core)
 add_subdirectory(Native)
diff --git a/lldb/source/Plugins/Register/Core/CMakeLists.txt b/lldb/source/Plugins/Register/Core/CMakeLists.txt
new file mode 100644
index 00000000000000..c975bdc7fedb95
--- /dev/null
+++ b/lldb/source/Plugins/Register/Core/CMakeLists.txt
@@ -0,0 +1,22 @@
+add_lldb_library(lldbPluginRegisterCore NO_PLUGIN_DEPENDENCIES
+  RegisterContextCore_arm.cpp
+  RegisterContextCore_arm64.cpp
+  RegisterContextCore_loongarch64.cpp
+  RegisterContextCore_powerpc.cpp
+  RegisterContextCore_ppc64le.cpp
+  RegisterContextCore_riscv32.cpp
+  RegisterContextCore_riscv64.cpp
+  RegisterContextCore_s390x.cpp
+  RegisterContextCore_x86.cpp
+
+  LINK_COMPONENTS
+    Support
+  LINK_LIBS
+    lldbRegister
+    lldbTarget
+    lldbUtility
+  ALLOWED_INTERNAL_DEPENDENCIES
+    lldbRegister
+    lldbTarget
+    lldbUtility
+  )
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_arm.cpp
similarity index 67%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_arm.cpp
index 964395ade0f6a4..03c81a09ee03de 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_arm.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_arm.cpp --------------------------------------===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -20,54 +20,54 @@
 #include "lldb/Utility/Scalar.h"
 #include "llvm/Support/Compiler.h"
 
-#include "RegisterContextPOSIX_arm.h"
+#include "RegisterContextCore_arm.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-bool RegisterContextPOSIX_arm::IsGPR(unsigned reg) {
+bool RegisterContextCore_arm::IsGPR(unsigned reg) {
   if (m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
       RegisterInfo_arm::GPRegSet)
     return true;
   return false;
 }
 
-bool RegisterContextPOSIX_arm::IsFPR(unsigned reg) {
+bool RegisterContextCore_arm::IsFPR(unsigned reg) {
   if (m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
       RegisterInfo_arm::FPRegSet)
     return true;
   return false;
 }
 
-RegisterContextPOSIX_arm::RegisterContextPOSIX_arm(
+RegisterContextCore_arm::RegisterContextCore_arm(
     lldb_private::Thread &thread,
     std::unique_ptr<RegisterInfo_arm> register_info)
     : lldb_private::RegisterContext(thread, 0),
       m_register_info_up(std::move(register_info)) {}
 
-RegisterContextPOSIX_arm::~RegisterContextPOSIX_arm() = default;
+RegisterContextCore_arm::~RegisterContextCore_arm() = default;
 
-void RegisterContextPOSIX_arm::Invalidate() {}
+void RegisterContextCore_arm::Invalidate() {}
 
-void RegisterContextPOSIX_arm::InvalidateAllRegisters() {}
+void RegisterContextCore_arm::InvalidateAllRegisters() {}
 
-unsigned RegisterContextPOSIX_arm::GetRegisterOffset(unsigned reg) {
+unsigned RegisterContextCore_arm::GetRegisterOffset(unsigned reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_offset;
 }
 
-unsigned RegisterContextPOSIX_arm::GetRegisterSize(unsigned reg) {
+unsigned RegisterContextCore_arm::GetRegisterSize(unsigned reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_size;
 }
 
-size_t RegisterContextPOSIX_arm::GetRegisterCount() {
+size_t RegisterContextCore_arm::GetRegisterCount() {
   return m_register_info_up->GetRegisterCount();
 }
 
-size_t RegisterContextPOSIX_arm::GetGPRSize() {
+size_t RegisterContextCore_arm::GetGPRSize() {
   return m_register_info_up->GetGPRSize();
 }
 
-const lldb_private::RegisterInfo *RegisterContextPOSIX_arm::GetRegisterInfo() {
+const lldb_private::RegisterInfo *RegisterContextCore_arm::GetRegisterInfo() {
   // Commonly, this method is overridden and g_register_infos is copied and
   // specialized. So, use GetRegisterInfo() rather than g_register_infos in
   // this scope.
@@ -75,23 +75,23 @@ const lldb_private::RegisterInfo *RegisterContextPOSIX_arm::GetRegisterInfo() {
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_arm::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_arm::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < GetRegisterCount())
     return &GetRegisterInfo()[reg];
 
   return nullptr;
 }
 
-size_t RegisterContextPOSIX_arm::GetRegisterSetCount() {
+size_t RegisterContextCore_arm::GetRegisterSetCount() {
   return m_register_info_up->GetRegisterSetCount();
 }
 
 const lldb_private::RegisterSet *
-RegisterContextPOSIX_arm::GetRegisterSet(size_t set) {
+RegisterContextCore_arm::GetRegisterSet(size_t set) {
   return m_register_info_up->GetRegisterSet(set);
 }
 
-const char *RegisterContextPOSIX_arm::GetRegisterName(unsigned reg) {
+const char *RegisterContextCore_arm::GetRegisterName(unsigned reg) {
   if (reg < GetRegisterCount())
     return GetRegisterInfo()[reg].name;
   return nullptr;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_arm.h
similarity index 76%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_arm.h
index 555af0b4228660..085c3293331af4 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_arm.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_arm.h ------------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,21 +6,21 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_ARM_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_ARM_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_ARM_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_ARM_H
 
 #include "Register/RegisterInfoInterface.h"
 #include "Register/Common/RegisterInfo_arm.h"
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_arm : public lldb_private::RegisterContext {
+class RegisterContextCore_arm : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_arm(
+  RegisterContextCore_arm(
       lldb_private::Thread &thread,
       std::unique_ptr<RegisterInfo_arm> register_info);
 
-  ~RegisterContextPOSIX_arm() override;
+  ~RegisterContextCore_arm() override;
 
   void Invalidate();
 
@@ -59,4 +59,4 @@ class RegisterContextPOSIX_arm : public lldb_private::RegisterContext {
   virtual bool WriteFPR() = 0;
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_ARM_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_ARM_H
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_arm64.cpp
similarity index 62%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_arm64.cpp
index c0e49579cdc9de..af9f520ed11ea3 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_arm64.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_arm64.cpp ------------------------------------===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -20,87 +20,87 @@
 #include "lldb/Utility/Scalar.h"
 #include "llvm/Support/Compiler.h"
 
-#include "RegisterContextPOSIX_arm64.h"
+#include "RegisterContextCore_arm64.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-bool RegisterContextPOSIX_arm64::IsGPR(unsigned reg) {
+bool RegisterContextCore_arm64::IsGPR(unsigned reg) {
   if (m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
       RegisterInfo_arm64::GPRegSet)
     return true;
   return false;
 }
 
-bool RegisterContextPOSIX_arm64::IsFPR(unsigned reg) {
+bool RegisterContextCore_arm64::IsFPR(unsigned reg) {
   if (m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
       RegisterInfo_arm64::FPRegSet)
     return true;
   return false;
 }
 
-bool RegisterContextPOSIX_arm64::IsSVE(unsigned reg) const {
+bool RegisterContextCore_arm64::IsSVE(unsigned reg) const {
   return m_register_info_up->IsSVEReg(reg);
 }
 
-bool RegisterContextPOSIX_arm64::IsSME(unsigned reg) const {
+bool RegisterContextCore_arm64::IsSME(unsigned reg) const {
   return m_register_info_up->IsSMEReg(reg);
 }
 
-bool RegisterContextPOSIX_arm64::IsPAuth(unsigned reg) const {
+bool RegisterContextCore_arm64::IsPAuth(unsigned reg) const {
   return m_register_info_up->IsPAuthReg(reg);
 }
 
-bool RegisterContextPOSIX_arm64::IsTLS(unsigned reg) const {
+bool RegisterContextCore_arm64::IsTLS(unsigned reg) const {
   return m_register_info_up->IsTLSReg(reg);
 }
 
-bool RegisterContextPOSIX_arm64::IsMTE(unsigned reg) const {
+bool RegisterContextCore_arm64::IsMTE(unsigned reg) const {
   return m_register_info_up->IsMTEReg(reg);
 }
 
-bool RegisterContextPOSIX_arm64::IsFPMR(unsigned reg) const {
+bool RegisterContextCore_arm64::IsFPMR(unsigned reg) const {
   return m_register_info_up->IsFPMRReg(reg);
 }
 
-bool RegisterContextPOSIX_arm64::IsGCS(unsigned reg) const {
+bool RegisterContextCore_arm64::IsGCS(unsigned reg) const {
   return m_register_info_up->IsGCSReg(reg);
 }
 
-bool RegisterContextPOSIX_arm64::IsPOE(unsigned reg) const {
+bool RegisterContextCore_arm64::IsPOE(unsigned reg) const {
   return m_register_info_up->IsPOEReg(reg);
 }
 
-RegisterContextPOSIX_arm64::RegisterContextPOSIX_arm64(
+RegisterContextCore_arm64::RegisterContextCore_arm64(
     lldb_private::Thread &thread,
     std::unique_ptr<RegisterInfo_arm64> register_info)
     : lldb_private::RegisterContext(thread, 0),
       m_register_info_up(std::move(register_info)) {}
 
-RegisterContextPOSIX_arm64::~RegisterContextPOSIX_arm64() = default;
+RegisterContextCore_arm64::~RegisterContextCore_arm64() = default;
 
-void RegisterContextPOSIX_arm64::Invalidate() {}
+void RegisterContextCore_arm64::Invalidate() {}
 
-void RegisterContextPOSIX_arm64::InvalidateAllRegisters() {}
+void RegisterContextCore_arm64::InvalidateAllRegisters() {}
 
-unsigned RegisterContextPOSIX_arm64::GetRegisterOffset(unsigned reg) {
+unsigned RegisterContextCore_arm64::GetRegisterOffset(unsigned reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_offset;
 }
 
-unsigned RegisterContextPOSIX_arm64::GetRegisterSize(unsigned reg) {
+unsigned RegisterContextCore_arm64::GetRegisterSize(unsigned reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_size;
 }
 
-size_t RegisterContextPOSIX_arm64::GetRegisterCount() {
+size_t RegisterContextCore_arm64::GetRegisterCount() {
   return m_register_info_up->GetRegisterCount();
 }
 
-size_t RegisterContextPOSIX_arm64::GetGPRSize() {
+size_t RegisterContextCore_arm64::GetGPRSize() {
   return m_register_info_up->GetGPRSize();
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_arm64::GetRegisterInfo() {
+RegisterContextCore_arm64::GetRegisterInfo() {
   // Commonly, this method is overridden and g_register_infos is copied and
   // specialized. So, use GetRegisterInfo() rather than g_register_infos in
   // this scope.
@@ -108,23 +108,23 @@ RegisterContextPOSIX_arm64::GetRegisterInfo() {
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_arm64::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_arm64::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < GetRegisterCount())
     return &GetRegisterInfo()[reg];
 
   return nullptr;
 }
 
-size_t RegisterContextPOSIX_arm64::GetRegisterSetCount() {
+size_t RegisterContextCore_arm64::GetRegisterSetCount() {
   return m_register_info_up->GetRegisterSetCount();
 }
 
 const lldb_private::RegisterSet *
-RegisterContextPOSIX_arm64::GetRegisterSet(size_t set) {
+RegisterContextCore_arm64::GetRegisterSet(size_t set) {
   return m_register_info_up->GetRegisterSet(set);
 }
 
-const char *RegisterContextPOSIX_arm64::GetRegisterName(unsigned reg) {
+const char *RegisterContextCore_arm64::GetRegisterName(unsigned reg) {
   if (reg < GetRegisterCount())
     return GetRegisterInfo()[reg].name;
   return nullptr;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_arm64.h
similarity index 84%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_arm64.h
index 08e20e3000b1d5..16b889eecfe749 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_arm64.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_arm64.h ----------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,21 +6,21 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_ARM64_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_ARM64_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_ARM64_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_ARM64_H
 
 #include "Register/RegisterInfoInterface.h"
 #include "Register/Common/RegisterInfo_arm64.h"
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_arm64 : public lldb_private::RegisterContext {
+class RegisterContextCore_arm64 : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_arm64(
+  RegisterContextCore_arm64(
       lldb_private::Thread &thread,
       std::unique_ptr<RegisterInfo_arm64> register_info);
 
-  ~RegisterContextPOSIX_arm64() override;
+  ~RegisterContextCore_arm64() override;
 
   void Invalidate();
 
@@ -86,4 +86,4 @@ class RegisterContextPOSIX_arm64 : public lldb_private::RegisterContext {
   virtual bool WriteFPR() = 0;
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_ARM64_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_ARM64_H
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_loongarch64.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_loongarch64.cpp
similarity index 61%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_loongarch64.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_loongarch64.cpp
index 80a30cea2d51c3..35846344006889 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_loongarch64.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_loongarch64.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_loongarch64.cpp --------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -16,77 +16,77 @@
 #include "lldb/Utility/Scalar.h"
 #include "llvm/Support/Compiler.h"
 
-#include "RegisterContextPOSIX_loongarch64.h"
+#include "RegisterContextCore_loongarch64.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-RegisterContextPOSIX_loongarch64::RegisterContextPOSIX_loongarch64(
+RegisterContextCore_loongarch64::RegisterContextCore_loongarch64(
     lldb_private::Thread &thread,
     std::unique_ptr<RegisterInfo_loongarch64> register_info)
     : lldb_private::RegisterContext(thread, 0),
       m_register_info_up(std::move(register_info)) {}
 
-RegisterContextPOSIX_loongarch64::~RegisterContextPOSIX_loongarch64() = default;
+RegisterContextCore_loongarch64::~RegisterContextCore_loongarch64() = default;
 
-void RegisterContextPOSIX_loongarch64::invalidate() {}
+void RegisterContextCore_loongarch64::invalidate() {}
 
-void RegisterContextPOSIX_loongarch64::InvalidateAllRegisters() {}
+void RegisterContextCore_loongarch64::InvalidateAllRegisters() {}
 
-size_t RegisterContextPOSIX_loongarch64::GetRegisterCount() {
+size_t RegisterContextCore_loongarch64::GetRegisterCount() {
   return m_register_info_up->GetRegisterCount();
 }
 
-size_t RegisterContextPOSIX_loongarch64::GetGPRSize() {
+size_t RegisterContextCore_loongarch64::GetGPRSize() {
   return m_register_info_up->GetGPRSize();
 }
 
-unsigned RegisterContextPOSIX_loongarch64::GetRegisterSize(unsigned int reg) {
+unsigned RegisterContextCore_loongarch64::GetRegisterSize(unsigned int reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_size;
 }
 
-unsigned RegisterContextPOSIX_loongarch64::GetRegisterOffset(unsigned int reg) {
+unsigned RegisterContextCore_loongarch64::GetRegisterOffset(unsigned int reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_offset;
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_loongarch64::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_loongarch64::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < GetRegisterCount())
     return &GetRegisterInfo()[reg];
 
   return nullptr;
 }
 
-size_t RegisterContextPOSIX_loongarch64::GetRegisterSetCount() {
+size_t RegisterContextCore_loongarch64::GetRegisterSetCount() {
   return m_register_info_up->GetRegisterSetCount();
 }
 
 const lldb_private::RegisterSet *
-RegisterContextPOSIX_loongarch64::GetRegisterSet(size_t set) {
+RegisterContextCore_loongarch64::GetRegisterSet(size_t set) {
   return m_register_info_up->GetRegisterSet(set);
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_loongarch64::GetRegisterInfo() {
+RegisterContextCore_loongarch64::GetRegisterInfo() {
   return m_register_info_up->GetRegisterInfo();
 }
 
-bool RegisterContextPOSIX_loongarch64::IsGPR(unsigned int reg) {
+bool RegisterContextCore_loongarch64::IsGPR(unsigned int reg) {
   return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
          RegisterInfo_loongarch64::GPRegSet;
 }
 
-bool RegisterContextPOSIX_loongarch64::IsFPR(unsigned int reg) {
+bool RegisterContextCore_loongarch64::IsFPR(unsigned int reg) {
   return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
          RegisterInfo_loongarch64::FPRegSet;
 }
 
-bool RegisterContextPOSIX_loongarch64::IsLSX(unsigned int reg) {
+bool RegisterContextCore_loongarch64::IsLSX(unsigned int reg) {
   return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
          RegisterInfo_loongarch64::LSXRegSet;
 }
 
-bool RegisterContextPOSIX_loongarch64::IsLASX(unsigned int reg) {
+bool RegisterContextCore_loongarch64::IsLASX(unsigned int reg) {
   return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
          RegisterInfo_loongarch64::LASXRegSet;
 }
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_loongarch64.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_loongarch64.h
similarity index 78%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_loongarch64.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_loongarch64.h
index 4c07b260c11822..18ad678cc6439d 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_loongarch64.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_loongarch64.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_loongarch64.h ----------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_LOONGARCH64_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_LOONGARCH64_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_LOONGARCH64_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_LOONGARCH64_H
 
 #include "Register/RegisterInfoInterface.h"
 #include "Register/Common/RegisterInfo_loongarch64.h"
@@ -15,13 +15,13 @@
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_loongarch64 : public lldb_private::RegisterContext {
+class RegisterContextCore_loongarch64 : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_loongarch64(
+  RegisterContextCore_loongarch64(
       lldb_private::Thread &thread,
       std::unique_ptr<RegisterInfo_loongarch64> register_info);
 
-  ~RegisterContextPOSIX_loongarch64() override;
+  ~RegisterContextCore_loongarch64() override;
 
   void invalidate();
 
@@ -68,4 +68,4 @@ class RegisterContextPOSIX_loongarch64 : public lldb_private::RegisterContext {
   virtual bool WriteLASX() { return false; }
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_LOONGARCH64_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_LOONGARCH64_H
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_powerpc.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_powerpc.cpp
similarity index 80%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_powerpc.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_powerpc.cpp
index cffd2865e3850c..44f157be38fb74 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_powerpc.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_powerpc.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_powerpc.cpp ----------------------------------===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -20,7 +20,7 @@
 #include "lldb/Utility/Scalar.h"
 #include "llvm/Support/Compiler.h"
 
-#include "RegisterContextPOSIX_powerpc.h"
+#include "RegisterContextCore_powerpc.h"
 
 using namespace lldb_private;
 using namespace lldb;
@@ -76,51 +76,51 @@ static const RegisterSet g_reg_sets_powerpc[k_num_register_sets] = {
 
 static_assert(k_first_gpr_powerpc == 0,
               "GPRs must index starting at 0, or fix IsGPR()");
-bool RegisterContextPOSIX_powerpc::IsGPR(unsigned reg) {
+bool RegisterContextCore_powerpc::IsGPR(unsigned reg) {
   return (reg <= k_last_gpr_powerpc); // GPR's come first.
 }
 
-bool RegisterContextPOSIX_powerpc::IsFPR(unsigned reg) {
+bool RegisterContextCore_powerpc::IsFPR(unsigned reg) {
   return (reg >= k_first_fpr) && (reg <= k_last_fpr);
 }
 
-bool RegisterContextPOSIX_powerpc::IsVMX(unsigned reg) {
+bool RegisterContextCore_powerpc::IsVMX(unsigned reg) {
   return (reg >= k_first_vmx) && (reg <= k_last_vmx);
 }
 
-RegisterContextPOSIX_powerpc::RegisterContextPOSIX_powerpc(
+RegisterContextCore_powerpc::RegisterContextCore_powerpc(
     Thread &thread, uint32_t concrete_frame_idx,
     RegisterInfoInterface *register_info)
     : RegisterContext(thread, concrete_frame_idx) {
   m_register_info_up.reset(register_info);
 }
 
-RegisterContextPOSIX_powerpc::~RegisterContextPOSIX_powerpc() = default;
+RegisterContextCore_powerpc::~RegisterContextCore_powerpc() = default;
 
-void RegisterContextPOSIX_powerpc::Invalidate() {}
+void RegisterContextCore_powerpc::Invalidate() {}
 
-void RegisterContextPOSIX_powerpc::InvalidateAllRegisters() {}
+void RegisterContextCore_powerpc::InvalidateAllRegisters() {}
 
-unsigned RegisterContextPOSIX_powerpc::GetRegisterOffset(unsigned reg) {
+unsigned RegisterContextCore_powerpc::GetRegisterOffset(unsigned reg) {
   assert(reg < k_num_registers_powerpc && "Invalid register number.");
   return GetRegisterInfo()[reg].byte_offset;
 }
 
-unsigned RegisterContextPOSIX_powerpc::GetRegisterSize(unsigned reg) {
+unsigned RegisterContextCore_powerpc::GetRegisterSize(unsigned reg) {
   assert(reg < k_num_registers_powerpc && "Invalid register number.");
   return GetRegisterInfo()[reg].byte_size;
 }
 
-size_t RegisterContextPOSIX_powerpc::GetRegisterCount() {
+size_t RegisterContextCore_powerpc::GetRegisterCount() {
   size_t num_registers = k_num_registers_powerpc;
   return num_registers;
 }
 
-size_t RegisterContextPOSIX_powerpc::GetGPRSize() {
+size_t RegisterContextCore_powerpc::GetGPRSize() {
   return m_register_info_up->GetGPRSize();
 }
 
-const RegisterInfo *RegisterContextPOSIX_powerpc::GetRegisterInfo() {
+const RegisterInfo *RegisterContextCore_powerpc::GetRegisterInfo() {
   // Commonly, this method is overridden and g_register_infos is copied and
   // specialized. So, use GetRegisterInfo() rather than g_register_infos in
   // this scope.
@@ -128,14 +128,14 @@ const RegisterInfo *RegisterContextPOSIX_powerpc::GetRegisterInfo() {
 }
 
 const RegisterInfo *
-RegisterContextPOSIX_powerpc::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_powerpc::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < k_num_registers_powerpc)
     return &GetRegisterInfo()[reg];
   else
     return nullptr;
 }
 
-size_t RegisterContextPOSIX_powerpc::GetRegisterSetCount() {
+size_t RegisterContextCore_powerpc::GetRegisterSetCount() {
   size_t sets = 0;
   for (size_t set = 0; set < k_num_register_sets; ++set) {
     if (IsRegisterSetAvailable(set))
@@ -145,19 +145,19 @@ size_t RegisterContextPOSIX_powerpc::GetRegisterSetCount() {
   return sets;
 }
 
-const RegisterSet *RegisterContextPOSIX_powerpc::GetRegisterSet(size_t set) {
+const RegisterSet *RegisterContextCore_powerpc::GetRegisterSet(size_t set) {
   if (IsRegisterSetAvailable(set))
     return &g_reg_sets_powerpc[set];
   else
     return nullptr;
 }
 
-const char *RegisterContextPOSIX_powerpc::GetRegisterName(unsigned reg) {
+const char *RegisterContextCore_powerpc::GetRegisterName(unsigned reg) {
   assert(reg < k_num_registers_powerpc && "Invalid register offset.");
   return GetRegisterInfo()[reg].name;
 }
 
-bool RegisterContextPOSIX_powerpc::IsRegisterSetAvailable(size_t set_index) {
+bool RegisterContextCore_powerpc::IsRegisterSetAvailable(size_t set_index) {
   size_t num_sets = k_num_register_sets;
 
   return (set_index < num_sets);
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_powerpc.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_powerpc.h
similarity index 80%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_powerpc.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_powerpc.h
index 7172c8c5dd466c..7298a584205568 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_powerpc.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_powerpc.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_powerpc.h --------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,21 +6,21 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_POWERPC_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_POWERPC_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_POWERPC_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_POWERPC_H
 
-#include "Register/Arch/RegisterContext_powerpc.h"
 #include "Register/RegisterInfoInterface.h"
+#include "Register/Arch/RegisterContext_powerpc.h"
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_powerpc : public lldb_private::RegisterContext {
+class RegisterContextCore_powerpc : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_powerpc(
+  RegisterContextCore_powerpc(
       lldb_private::Thread &thread, uint32_t concrete_frame_idx,
       lldb_private::RegisterInfoInterface *register_info);
 
-  ~RegisterContextPOSIX_powerpc() override;
+  ~RegisterContextCore_powerpc() override;
 
   void Invalidate();
 
@@ -71,4 +71,4 @@ class RegisterContextPOSIX_powerpc : public lldb_private::RegisterContext {
   virtual bool WriteVMX() = 0;
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_POWERPC_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_POWERPC_H
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_ppc64le.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_ppc64le.cpp
similarity index 84%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_ppc64le.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_ppc64le.cpp
index f70ddeba209c60..9ecdc6a318ad4c 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_ppc64le.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_ppc64le.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_ppc64le.cpp ----------------------------------===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -20,7 +20,7 @@
 #include "lldb/Utility/Scalar.h"
 #include "llvm/Support/Compiler.h"
 
-#include "RegisterContextPOSIX_ppc64le.h"
+#include "RegisterContextCore_ppc64le.h"
 
 using namespace lldb_private;
 using namespace lldb;
@@ -95,51 +95,51 @@ static const RegisterSet g_reg_sets_ppc64le[k_num_register_sets] = {
     {"VSX Registers", "vsx", k_num_vsx_registers_ppc64le, g_vsx_regnums},
 };
 
-bool RegisterContextPOSIX_ppc64le::IsGPR(unsigned reg) {
+bool RegisterContextCore_ppc64le::IsGPR(unsigned reg) {
   return (reg <= k_last_gpr_ppc64le); // GPR's come first.
 }
 
-bool RegisterContextPOSIX_ppc64le::IsFPR(unsigned reg) {
+bool RegisterContextCore_ppc64le::IsFPR(unsigned reg) {
   return (reg >= k_first_fpr_ppc64le) && (reg <= k_last_fpr_ppc64le);
 }
 
-bool RegisterContextPOSIX_ppc64le::IsVMX(unsigned reg) {
+bool RegisterContextCore_ppc64le::IsVMX(unsigned reg) {
   return (reg >= k_first_vmx_ppc64le) && (reg <= k_last_vmx_ppc64le);
 }
 
-bool RegisterContextPOSIX_ppc64le::IsVSX(unsigned reg) {
+bool RegisterContextCore_ppc64le::IsVSX(unsigned reg) {
   return (reg >= k_first_vsx_ppc64le) && (reg <= k_last_vsx_ppc64le);
 }
 
-RegisterContextPOSIX_ppc64le::RegisterContextPOSIX_ppc64le(
+RegisterContextCore_ppc64le::RegisterContextCore_ppc64le(
     Thread &thread, uint32_t concrete_frame_idx,
     RegisterInfoInterface *register_info)
     : RegisterContext(thread, concrete_frame_idx) {
   m_register_info_up.reset(register_info);
 }
 
-void RegisterContextPOSIX_ppc64le::InvalidateAllRegisters() {}
+void RegisterContextCore_ppc64le::InvalidateAllRegisters() {}
 
-unsigned RegisterContextPOSIX_ppc64le::GetRegisterOffset(unsigned reg) {
+unsigned RegisterContextCore_ppc64le::GetRegisterOffset(unsigned reg) {
   assert(reg < k_num_registers_ppc64le && "Invalid register number.");
   return GetRegisterInfo()[reg].byte_offset;
 }
 
-unsigned RegisterContextPOSIX_ppc64le::GetRegisterSize(unsigned reg) {
+unsigned RegisterContextCore_ppc64le::GetRegisterSize(unsigned reg) {
   assert(reg < k_num_registers_ppc64le && "Invalid register number.");
   return GetRegisterInfo()[reg].byte_size;
 }
 
-size_t RegisterContextPOSIX_ppc64le::GetRegisterCount() {
+size_t RegisterContextCore_ppc64le::GetRegisterCount() {
   size_t num_registers = k_num_registers_ppc64le;
   return num_registers;
 }
 
-size_t RegisterContextPOSIX_ppc64le::GetGPRSize() {
+size_t RegisterContextCore_ppc64le::GetGPRSize() {
   return m_register_info_up->GetGPRSize();
 }
 
-const RegisterInfo *RegisterContextPOSIX_ppc64le::GetRegisterInfo() {
+const RegisterInfo *RegisterContextCore_ppc64le::GetRegisterInfo() {
   // Commonly, this method is overridden and g_register_infos is copied and
   // specialized. So, use GetRegisterInfo() rather than g_register_infos in
   // this scope.
@@ -147,14 +147,14 @@ const RegisterInfo *RegisterContextPOSIX_ppc64le::GetRegisterInfo() {
 }
 
 const RegisterInfo *
-RegisterContextPOSIX_ppc64le::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_ppc64le::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < k_num_registers_ppc64le)
     return &GetRegisterInfo()[reg];
   else
     return nullptr;
 }
 
-size_t RegisterContextPOSIX_ppc64le::GetRegisterSetCount() {
+size_t RegisterContextCore_ppc64le::GetRegisterSetCount() {
   size_t sets = 0;
   for (size_t set = 0; set < k_num_register_sets; ++set) {
     if (IsRegisterSetAvailable(set))
@@ -164,19 +164,19 @@ size_t RegisterContextPOSIX_ppc64le::GetRegisterSetCount() {
   return sets;
 }
 
-const RegisterSet *RegisterContextPOSIX_ppc64le::GetRegisterSet(size_t set) {
+const RegisterSet *RegisterContextCore_ppc64le::GetRegisterSet(size_t set) {
   if (IsRegisterSetAvailable(set))
     return &g_reg_sets_ppc64le[set];
   else
     return nullptr;
 }
 
-const char *RegisterContextPOSIX_ppc64le::GetRegisterName(unsigned reg) {
+const char *RegisterContextCore_ppc64le::GetRegisterName(unsigned reg) {
   assert(reg < k_num_registers_ppc64le && "Invalid register offset.");
   return GetRegisterInfo()[reg].name;
 }
 
-bool RegisterContextPOSIX_ppc64le::IsRegisterSetAvailable(size_t set_index) {
+bool RegisterContextCore_ppc64le::IsRegisterSetAvailable(size_t set_index) {
   size_t num_sets = k_num_register_sets;
 
   return (set_index < num_sets);
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_ppc64le.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_ppc64le.h
similarity index 82%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_ppc64le.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_ppc64le.h
index 8553f829277c64..29206ce4a2653c 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_ppc64le.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_ppc64le.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_ppc64le.h --------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_PPC64LE_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_PPC64LE_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_PPC64LE_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_PPC64LE_H
 
 #include "Register/Arch/lldb-ppc64le-register-enums.h"
 #include "Register/RegisterInfoInterface.h"
@@ -15,9 +15,9 @@
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_ppc64le : public lldb_private::RegisterContext {
+class RegisterContextCore_ppc64le : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_ppc64le(
+  RegisterContextCore_ppc64le(
       lldb_private::Thread &thread, uint32_t concrete_frame_idx,
       lldb_private::RegisterInfoInterface *register_info);
 
@@ -70,4 +70,4 @@ class RegisterContextPOSIX_ppc64le : public lldb_private::RegisterContext {
 
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_PPC64LE_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_PPC64LE_H
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv32.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_riscv32.cpp
similarity index 62%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv32.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_riscv32.cpp
index 68ee125432ab33..abb529c50ef273 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv32.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_riscv32.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_riscv32.cpp ------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "RegisterContextPOSIX_riscv32.h"
+#include "RegisterContextCore_riscv32.h"
 #include "lldb/Target/Process.h"
 #include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
@@ -20,62 +20,62 @@
 using namespace lldb;
 using namespace lldb_private;
 
-RegisterContextPOSIX_riscv32::RegisterContextPOSIX_riscv32(
+RegisterContextCore_riscv32::RegisterContextCore_riscv32(
     lldb_private::Thread &thread,
     std::unique_ptr<RegisterInfo_riscv32> register_info)
     : lldb_private::RegisterContext(thread, 0),
       m_register_info_up(std::move(register_info)) {}
 
-RegisterContextPOSIX_riscv32::~RegisterContextPOSIX_riscv32() = default;
+RegisterContextCore_riscv32::~RegisterContextCore_riscv32() = default;
 
-void RegisterContextPOSIX_riscv32::invalidate() {}
+void RegisterContextCore_riscv32::invalidate() {}
 
-void RegisterContextPOSIX_riscv32::InvalidateAllRegisters() {}
+void RegisterContextCore_riscv32::InvalidateAllRegisters() {}
 
-size_t RegisterContextPOSIX_riscv32::GetRegisterCount() {
+size_t RegisterContextCore_riscv32::GetRegisterCount() {
   return m_register_info_up->GetRegisterCount();
 }
 
-size_t RegisterContextPOSIX_riscv32::GetGPRSize() {
+size_t RegisterContextCore_riscv32::GetGPRSize() {
   return m_register_info_up->GetGPRSize();
 }
 
-unsigned RegisterContextPOSIX_riscv32::GetRegisterSize(unsigned int reg) {
+unsigned RegisterContextCore_riscv32::GetRegisterSize(unsigned int reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_size;
 }
 
-unsigned RegisterContextPOSIX_riscv32::GetRegisterOffset(unsigned int reg) {
+unsigned RegisterContextCore_riscv32::GetRegisterOffset(unsigned int reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_offset;
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_riscv32::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_riscv32::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < GetRegisterCount())
     return &GetRegisterInfo()[reg];
 
   return nullptr;
 }
 
-size_t RegisterContextPOSIX_riscv32::GetRegisterSetCount() {
+size_t RegisterContextCore_riscv32::GetRegisterSetCount() {
   return m_register_info_up->GetRegisterCount();
 }
 
 const lldb_private::RegisterSet *
-RegisterContextPOSIX_riscv32::GetRegisterSet(size_t set) {
+RegisterContextCore_riscv32::GetRegisterSet(size_t set) {
   return m_register_info_up->GetRegisterSet(set);
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_riscv32::GetRegisterInfo() {
+RegisterContextCore_riscv32::GetRegisterInfo() {
   return m_register_info_up->GetRegisterInfo();
 }
 
-bool RegisterContextPOSIX_riscv32::IsGPR(unsigned int reg) {
+bool RegisterContextCore_riscv32::IsGPR(unsigned int reg) {
   return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
          RegisterInfo_riscv32::eRegsetMaskDefault;
 }
 
-bool RegisterContextPOSIX_riscv32::IsFPR(unsigned int reg) {
+bool RegisterContextCore_riscv32::IsFPR(unsigned int reg) {
   return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
          RegisterInfo_riscv32::eRegsetMaskFP;
 }
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv32.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_riscv32.h
similarity index 76%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv32.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_riscv32.h
index 4a73ba159b6714..fd258c2af6a2d8 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv32.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_riscv32.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_riscv32.h --------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_RISCV32_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_RISCV32_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_RISCV32_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_RISCV32_H
 
 #include "Register/RegisterInfoInterface.h"
 #include "Register/Common/RegisterInfo_riscv32.h"
@@ -15,13 +15,13 @@
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_riscv32 : public lldb_private::RegisterContext {
+class RegisterContextCore_riscv32 : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_riscv32(
+  RegisterContextCore_riscv32(
       lldb_private::Thread &thread,
       std::unique_ptr<RegisterInfo_riscv32> register_info);
 
-  ~RegisterContextPOSIX_riscv32() override;
+  ~RegisterContextCore_riscv32() override;
 
   void invalidate();
 
@@ -60,4 +60,4 @@ class RegisterContextPOSIX_riscv32 : public lldb_private::RegisterContext {
   virtual bool WriteFPR() = 0;
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_RISCV32_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_RISCV32_H
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv64.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_riscv64.cpp
similarity index 61%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv64.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_riscv64.cpp
index dcd002e85592cd..2674aa2ed240a1 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv64.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_riscv64.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_riscv64.cpp ------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -16,66 +16,66 @@
 #include "lldb/Utility/Scalar.h"
 #include "llvm/Support/Compiler.h"
 
-#include "RegisterContextPOSIX_riscv64.h"
+#include "RegisterContextCore_riscv64.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-RegisterContextPOSIX_riscv64::RegisterContextPOSIX_riscv64(
+RegisterContextCore_riscv64::RegisterContextCore_riscv64(
     lldb_private::Thread &thread,
     std::unique_ptr<RegisterInfo_riscv64> register_info)
     : lldb_private::RegisterContext(thread, 0),
       m_register_info_up(std::move(register_info)) {}
 
-RegisterContextPOSIX_riscv64::~RegisterContextPOSIX_riscv64() = default;
+RegisterContextCore_riscv64::~RegisterContextCore_riscv64() = default;
 
-void RegisterContextPOSIX_riscv64::invalidate() {}
+void RegisterContextCore_riscv64::invalidate() {}
 
-void RegisterContextPOSIX_riscv64::InvalidateAllRegisters() {}
+void RegisterContextCore_riscv64::InvalidateAllRegisters() {}
 
-size_t RegisterContextPOSIX_riscv64::GetRegisterCount() {
+size_t RegisterContextCore_riscv64::GetRegisterCount() {
   return m_register_info_up->GetRegisterCount();
 }
 
-size_t RegisterContextPOSIX_riscv64::GetGPRSize() {
+size_t RegisterContextCore_riscv64::GetGPRSize() {
   return m_register_info_up->GetGPRSize();
 }
 
-unsigned RegisterContextPOSIX_riscv64::GetRegisterSize(unsigned int reg) {
+unsigned RegisterContextCore_riscv64::GetRegisterSize(unsigned int reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_size;
 }
 
-unsigned RegisterContextPOSIX_riscv64::GetRegisterOffset(unsigned int reg) {
+unsigned RegisterContextCore_riscv64::GetRegisterOffset(unsigned int reg) {
   return m_register_info_up->GetRegisterInfo()[reg].byte_offset;
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_riscv64::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_riscv64::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < GetRegisterCount())
     return &GetRegisterInfo()[reg];
 
   return nullptr;
 }
 
-size_t RegisterContextPOSIX_riscv64::GetRegisterSetCount() {
+size_t RegisterContextCore_riscv64::GetRegisterSetCount() {
   return m_register_info_up->GetRegisterSetCount();
 }
 
 const lldb_private::RegisterSet *
-RegisterContextPOSIX_riscv64::GetRegisterSet(size_t set) {
+RegisterContextCore_riscv64::GetRegisterSet(size_t set) {
   return m_register_info_up->GetRegisterSet(set);
 }
 
 const lldb_private::RegisterInfo *
-RegisterContextPOSIX_riscv64::GetRegisterInfo() {
+RegisterContextCore_riscv64::GetRegisterInfo() {
   return m_register_info_up->GetRegisterInfo();
 }
 
-bool RegisterContextPOSIX_riscv64::IsGPR(unsigned int reg) {
+bool RegisterContextCore_riscv64::IsGPR(unsigned int reg) {
   return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==
          RegisterInfo_riscv64::GPRegSet;
 }
 
-bool RegisterContextPOSIX_riscv64::IsFPR(unsigned int reg) {
+bool RegisterContextCore_riscv64::IsFPR(unsigned int reg) {
   return m_register_info_up->IsFPReg(reg);
 }
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv64.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_riscv64.h
similarity index 76%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv64.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_riscv64.h
index 8f52dc8697ee4f..440b4e3d9cfbb5 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv64.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_riscv64.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_riscv64.h --------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_RISCV64_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_RISCV64_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_RISCV64_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_RISCV64_H
 
 #include "Register/RegisterInfoInterface.h"
 #include "Register/Common/RegisterInfo_riscv64.h"
@@ -15,13 +15,13 @@
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_riscv64 : public lldb_private::RegisterContext {
+class RegisterContextCore_riscv64 : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_riscv64(
+  RegisterContextCore_riscv64(
       lldb_private::Thread &thread,
       std::unique_ptr<RegisterInfo_riscv64> register_info);
 
-  ~RegisterContextPOSIX_riscv64() override;
+  ~RegisterContextCore_riscv64() override;
 
   void invalidate();
 
@@ -60,4 +60,4 @@ class RegisterContextPOSIX_riscv64 : public lldb_private::RegisterContext {
   virtual bool WriteFPR() = 0;
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_RISCV64_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_RISCV64_H
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_s390x.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_s390x.cpp
similarity index 82%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_s390x.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_s390x.cpp
index c3cbea2b5be647..8ca85f5862e407 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_s390x.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_s390x.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_s390x.cpp ------------------------------------===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -20,7 +20,7 @@
 #include "lldb/Utility/Scalar.h"
 #include "llvm/Support/Compiler.h"
 
-#include "RegisterContextPOSIX_s390x.h"
+#include "RegisterContextCore_s390x.h"
 #include "Register/Arch/RegisterContext_s390x.h"
 
 using namespace lldb_private;
@@ -69,15 +69,15 @@ static const RegisterSet g_reg_sets_s390x[k_num_register_sets] = {
      g_fpu_regnums_s390x},
 };
 
-bool RegisterContextPOSIX_s390x::IsGPR(unsigned reg) {
+bool RegisterContextCore_s390x::IsGPR(unsigned reg) {
   return reg <= m_reg_info.last_gpr; // GPRs come first.
 }
 
-bool RegisterContextPOSIX_s390x::IsFPR(unsigned reg) {
+bool RegisterContextCore_s390x::IsFPR(unsigned reg) {
   return (m_reg_info.first_fpr <= reg && reg <= m_reg_info.last_fpr);
 }
 
-RegisterContextPOSIX_s390x::RegisterContextPOSIX_s390x(
+RegisterContextCore_s390x::RegisterContextCore_s390x(
     Thread &thread, uint32_t concrete_frame_idx,
     RegisterInfoInterface *register_info)
     : RegisterContext(thread, concrete_frame_idx) {
@@ -98,48 +98,48 @@ RegisterContextPOSIX_s390x::RegisterContextPOSIX_s390x(
   }
 }
 
-RegisterContextPOSIX_s390x::~RegisterContextPOSIX_s390x() = default;
+RegisterContextCore_s390x::~RegisterContextCore_s390x() = default;
 
-void RegisterContextPOSIX_s390x::Invalidate() {}
+void RegisterContextCore_s390x::Invalidate() {}
 
-void RegisterContextPOSIX_s390x::InvalidateAllRegisters() {}
+void RegisterContextCore_s390x::InvalidateAllRegisters() {}
 
-const RegisterInfo *RegisterContextPOSIX_s390x::GetRegisterInfo() {
+const RegisterInfo *RegisterContextCore_s390x::GetRegisterInfo() {
   return m_register_info_up->GetRegisterInfo();
 }
 
 const RegisterInfo *
-RegisterContextPOSIX_s390x::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_s390x::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < m_reg_info.num_registers)
     return &GetRegisterInfo()[reg];
   else
     return nullptr;
 }
 
-size_t RegisterContextPOSIX_s390x::GetRegisterCount() {
+size_t RegisterContextCore_s390x::GetRegisterCount() {
   return m_reg_info.num_registers;
 }
 
-unsigned RegisterContextPOSIX_s390x::GetRegisterOffset(unsigned reg) {
+unsigned RegisterContextCore_s390x::GetRegisterOffset(unsigned reg) {
   assert(reg < m_reg_info.num_registers && "Invalid register number.");
   return GetRegisterInfo()[reg].byte_offset;
 }
 
-unsigned RegisterContextPOSIX_s390x::GetRegisterSize(unsigned reg) {
+unsigned RegisterContextCore_s390x::GetRegisterSize(unsigned reg) {
   assert(reg < m_reg_info.num_registers && "Invalid register number.");
   return GetRegisterInfo()[reg].byte_size;
 }
 
-const char *RegisterContextPOSIX_s390x::GetRegisterName(unsigned reg) {
+const char *RegisterContextCore_s390x::GetRegisterName(unsigned reg) {
   assert(reg < m_reg_info.num_registers && "Invalid register offset.");
   return GetRegisterInfo()[reg].name;
 }
 
-bool RegisterContextPOSIX_s390x::IsRegisterSetAvailable(size_t set_index) {
+bool RegisterContextCore_s390x::IsRegisterSetAvailable(size_t set_index) {
   return set_index < k_num_register_sets;
 }
 
-size_t RegisterContextPOSIX_s390x::GetRegisterSetCount() {
+size_t RegisterContextCore_s390x::GetRegisterSetCount() {
   size_t sets = 0;
   for (size_t set = 0; set < k_num_register_sets; ++set) {
     if (IsRegisterSetAvailable(set))
@@ -149,7 +149,7 @@ size_t RegisterContextPOSIX_s390x::GetRegisterSetCount() {
   return sets;
 }
 
-const RegisterSet *RegisterContextPOSIX_s390x::GetRegisterSet(size_t set) {
+const RegisterSet *RegisterContextCore_s390x::GetRegisterSet(size_t set) {
   if (IsRegisterSetAvailable(set)) {
     switch (m_register_info_up->GetTargetArchitecture().GetMachine()) {
     case llvm::Triple::systemz:
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_s390x.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_s390x.h
similarity index 79%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_s390x.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_s390x.h
index 8c23f235746465..6bab090f698ae7 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_s390x.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_s390x.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_s390x.h ----------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_S390X_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_S390X_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_S390X_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_S390X_H
 
 #include "Register/Arch/RegisterContext_s390x.h"
 #include "Register/RegisterInfoInterface.h"
@@ -15,13 +15,13 @@
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_s390x : public lldb_private::RegisterContext {
+class RegisterContextCore_s390x : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_s390x(
+  RegisterContextCore_s390x(
       lldb_private::Thread &thread, uint32_t concrete_frame_idx,
       lldb_private::RegisterInfoInterface *register_info);
 
-  ~RegisterContextPOSIX_s390x() override;
+  ~RegisterContextCore_s390x() override;
 
   void Invalidate();
 
@@ -69,4 +69,4 @@ class RegisterContextPOSIX_s390x : public lldb_private::RegisterContext {
   virtual bool WriteFPR() = 0;
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_S390X_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_S390X_H
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp b/lldb/source/Plugins/Register/Core/RegisterContextCore_x86.cpp
similarity index 89%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_x86.cpp
index 96abe5cc0eb72a..2b8033adb63961 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_x86.cpp
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_x86.cpp --------------------------------------===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -20,7 +20,7 @@
 #include "lldb/Utility/Scalar.h"
 #include "llvm/Support/Compiler.h"
 
-#include "RegisterContextPOSIX_x86.h"
+#include "RegisterContextCore_x86.h"
 #include "Register/Arch/RegisterContext_x86.h"
 
 using namespace lldb_private;
@@ -175,19 +175,19 @@ static const RegisterSet g_reg_sets_x86_64[k_num_register_sets] = {
     {"Advanced Vector Extensions", "avx", k_num_avx_registers_x86_64,
      g_avx_regnums_x86_64}};
 
-bool RegisterContextPOSIX_x86::IsGPR(unsigned reg) {
+bool RegisterContextCore_x86::IsGPR(unsigned reg) {
   return reg <= GetRegInfo().last_gpr; // GPR's come first.
 }
 
-bool RegisterContextPOSIX_x86::IsFPR(unsigned reg) {
+bool RegisterContextCore_x86::IsFPR(unsigned reg) {
   return (GetRegInfo().first_fpr <= reg && reg <= GetRegInfo().last_fpr);
 }
 
-bool RegisterContextPOSIX_x86::IsAVX(unsigned reg) {
+bool RegisterContextCore_x86::IsAVX(unsigned reg) {
   return (GetRegInfo().first_ymm <= reg && reg <= GetRegInfo().last_ymm);
 }
 
-bool RegisterContextPOSIX_x86::IsFPR(unsigned reg, FPRType fpr_type) {
+bool RegisterContextCore_x86::IsFPR(unsigned reg, FPRType fpr_type) {
   bool generic_fpr = IsFPR(reg);
 
   if (fpr_type == eXSAVE)
@@ -195,7 +195,7 @@ bool RegisterContextPOSIX_x86::IsFPR(unsigned reg, FPRType fpr_type) {
   return generic_fpr;
 }
 
-RegisterContextPOSIX_x86::RegisterContextPOSIX_x86(
+RegisterContextCore_x86::RegisterContextCore_x86(
     Thread &thread, uint32_t concrete_frame_idx,
     RegisterInfoInterface *register_info)
     : RegisterContext(thread, concrete_frame_idx) {
@@ -207,9 +207,9 @@ RegisterContextPOSIX_x86::RegisterContextPOSIX_x86(
   m_fpr_type = eNotValid;
 }
 
-RegisterContextPOSIX_x86::~RegisterContextPOSIX_x86() = default;
+RegisterContextCore_x86::~RegisterContextCore_x86() = default;
 
-RegisterContextPOSIX_x86::FPRType RegisterContextPOSIX_x86::GetFPRType() {
+RegisterContextCore_x86::FPRType RegisterContextCore_x86::GetFPRType() {
   if (m_fpr_type == eNotValid) {
     // TODO: Use assembly to call cpuid on the inferior and query ebx or ecx
     m_fpr_type = eXSAVE; // extended floating-point registers, if available
@@ -219,27 +219,27 @@ RegisterContextPOSIX_x86::FPRType RegisterContextPOSIX_x86::GetFPRType() {
   return m_fpr_type;
 }
 
-void RegisterContextPOSIX_x86::Invalidate() {}
+void RegisterContextCore_x86::Invalidate() {}
 
-void RegisterContextPOSIX_x86::InvalidateAllRegisters() {}
+void RegisterContextCore_x86::InvalidateAllRegisters() {}
 
-unsigned RegisterContextPOSIX_x86::GetRegisterOffset(unsigned reg) {
+unsigned RegisterContextCore_x86::GetRegisterOffset(unsigned reg) {
   assert(reg < GetRegInfo().num_registers && "Invalid register number.");
   return GetRegisterInfo()[reg].byte_offset;
 }
 
-RegInfo &RegisterContextPOSIX_x86::GetRegInfo() {
+RegInfo &RegisterContextCore_x86::GetRegInfo() {
   return GetRegInfoShared(
       m_register_info_up->GetTargetArchitecture().GetMachine(),
       /*with_base=*/false);
 }
 
-unsigned RegisterContextPOSIX_x86::GetRegisterSize(unsigned reg) {
+unsigned RegisterContextCore_x86::GetRegisterSize(unsigned reg) {
   assert(reg < GetRegInfo().num_registers && "Invalid register number.");
   return GetRegisterInfo()[reg].byte_size;
 }
 
-size_t RegisterContextPOSIX_x86::GetRegisterCount() {
+size_t RegisterContextCore_x86::GetRegisterCount() {
   size_t num_registers =
       GetRegInfo().num_gpr_registers + GetRegInfo().num_fpr_registers;
   if (GetFPRType() == eXSAVE)
@@ -247,15 +247,15 @@ size_t RegisterContextPOSIX_x86::GetRegisterCount() {
   return num_registers;
 }
 
-size_t RegisterContextPOSIX_x86::GetGPRSize() {
+size_t RegisterContextCore_x86::GetGPRSize() {
   return m_register_info_up->GetGPRSize();
 }
 
-size_t RegisterContextPOSIX_x86::GetFXSAVEOffset() {
+size_t RegisterContextCore_x86::GetFXSAVEOffset() {
   return GetRegisterInfo()[GetRegInfo().first_fpr].byte_offset;
 }
 
-const RegisterInfo *RegisterContextPOSIX_x86::GetRegisterInfo() {
+const RegisterInfo *RegisterContextCore_x86::GetRegisterInfo() {
   // Commonly, this method is overridden and g_register_infos is copied and
   // specialized. So, use GetRegisterInfo() rather than g_register_infos in
   // this scope.
@@ -263,14 +263,14 @@ const RegisterInfo *RegisterContextPOSIX_x86::GetRegisterInfo() {
 }
 
 const RegisterInfo *
-RegisterContextPOSIX_x86::GetRegisterInfoAtIndex(size_t reg) {
+RegisterContextCore_x86::GetRegisterInfoAtIndex(size_t reg) {
   if (reg < GetRegInfo().num_registers)
     return &GetRegisterInfo()[reg];
   else
     return nullptr;
 }
 
-size_t RegisterContextPOSIX_x86::GetRegisterSetCount() {
+size_t RegisterContextCore_x86::GetRegisterSetCount() {
   size_t sets = 0;
   for (size_t set = 0; set < k_num_register_sets; ++set) {
     if (IsRegisterSetAvailable(set))
@@ -280,7 +280,7 @@ size_t RegisterContextPOSIX_x86::GetRegisterSetCount() {
   return sets;
 }
 
-const RegisterSet *RegisterContextPOSIX_x86::GetRegisterSet(size_t set) {
+const RegisterSet *RegisterContextCore_x86::GetRegisterSet(size_t set) {
   if (IsRegisterSetAvailable(set)) {
     switch (m_register_info_up->GetTargetArchitecture().GetMachine()) {
     case llvm::Triple::x86:
@@ -295,13 +295,13 @@ const RegisterSet *RegisterContextPOSIX_x86::GetRegisterSet(size_t set) {
   return nullptr;
 }
 
-const char *RegisterContextPOSIX_x86::GetRegisterName(unsigned reg) {
+const char *RegisterContextCore_x86::GetRegisterName(unsigned reg) {
   assert(reg < GetRegInfo().num_registers && "Invalid register offset.");
   return GetRegisterInfo()[reg].name;
 }
 
 // Parse ymm registers and into xmm.bytes and ymmh.bytes.
-bool RegisterContextPOSIX_x86::CopyYMMtoXSTATE(uint32_t reg,
+bool RegisterContextCore_x86::CopyYMMtoXSTATE(uint32_t reg,
                                                lldb::ByteOrder byte_order) {
   if (!IsAVX(reg))
     return false;
@@ -317,7 +317,7 @@ bool RegisterContextPOSIX_x86::CopyYMMtoXSTATE(uint32_t reg,
 }
 
 // Concatenate xmm.bytes with ymmh.bytes
-bool RegisterContextPOSIX_x86::CopyXSTATEtoYMM(uint32_t reg,
+bool RegisterContextCore_x86::CopyXSTATEtoYMM(uint32_t reg,
                                                lldb::ByteOrder byte_order) {
   if (!IsAVX(reg))
     return false;
@@ -332,7 +332,7 @@ bool RegisterContextPOSIX_x86::CopyXSTATEtoYMM(uint32_t reg,
   return false; // unsupported or invalid byte order
 }
 
-bool RegisterContextPOSIX_x86::IsRegisterSetAvailable(size_t set_index) {
+bool RegisterContextCore_x86::IsRegisterSetAvailable(size_t set_index) {
   // Note: Extended register sets are assumed to be at the end of g_reg_sets...
   size_t num_sets = k_num_register_sets - k_num_extended_register_sets;
 
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h b/lldb/source/Plugins/Register/Core/RegisterContextCore_x86.h
similarity index 84%
rename from lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h
rename to lldb/source/Plugins/Register/Core/RegisterContextCore_x86.h
index 68f1cf1c8e702b..3fa7cf42f92d36 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h
+++ b/lldb/source/Plugins/Register/Core/RegisterContextCore_x86.h
@@ -1,4 +1,4 @@
-//===-- RegisterContextPOSIX_x86.h ------------------------------*- C++ -*-===//
+//===----------------------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_X86_H
-#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_X86_H
+#ifndef LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_X86_H
+#define LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_X86_H
 
 #include "Register/Arch/RegisterContext_x86.h"
 #include "Register/RegisterInfoInterface.h"
@@ -16,13 +16,13 @@
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Utility/Log.h"
 
-class RegisterContextPOSIX_x86 : public lldb_private::RegisterContext {
+class RegisterContextCore_x86 : public lldb_private::RegisterContext {
 public:
-  RegisterContextPOSIX_x86(lldb_private::Thread &thread,
+  RegisterContextCore_x86(lldb_private::Thread &thread,
                            uint32_t concrete_frame_idx,
                            lldb_private::RegisterInfoInterface *register_info);
 
-  ~RegisterContextPOSIX_x86() override;
+  ~RegisterContextCore_x86() override;
 
   void Invalidate();
 
@@ -88,4 +88,4 @@ class RegisterContextPOSIX_x86 : public lldb_private::RegisterContext {
   virtual lldb_private::RegInfo &GetRegInfo();
 };
 
-#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_X86_H
+#endif // LLDB_SOURCE_PLUGINS_REGISTER_CORE_REGISTERCONTEXTCORE_X86_H
diff --git a/lldb/unittests/Process/Utility/RegisterInfoFreeBSDTest.cpp b/lldb/unittests/Process/Utility/RegisterInfoFreeBSDTest.cpp
index 98433da8948d75..2353628f767bfc 100644
--- a/lldb/unittests/Process/Utility/RegisterInfoFreeBSDTest.cpp
+++ b/lldb/unittests/Process/Utility/RegisterInfoFreeBSDTest.cpp
@@ -20,7 +20,7 @@
 #include "Register/FreeBSD/RegisterInfoFreeBSD_i386.h"
 #include "Register/FreeBSD/RegisterInfoFreeBSD_powerpc.h"
 #include "Register/FreeBSD/RegisterInfoFreeBSD_x86_64.h"
-#include "Plugins/Process/Utility/RegisterContextPOSIX_powerpc.h"
+#include "Register/Arch/RegisterContext_powerpc.h"
 #include "Register/Common/RegisterInfo_arm.h"
 #include "Register/Common/RegisterInfo_arm64.h"
 #include "Register/Arch/lldb-arm-register-enums.h"
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 175599f39f62ec..a2ffee0f15f19b 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
@@ -41,15 +41,6 @@ static_library("Utility") {
     "RegisterContextMach_arm.cpp",
     "RegisterContextMach_x86_64.cpp",
     "RegisterContextMemory.cpp",
-    "RegisterContextPOSIX_arm.cpp",
-    "RegisterContextPOSIX_arm64.cpp",
-    "RegisterContextPOSIX_loongarch64.cpp",
-    "RegisterContextPOSIX_powerpc.cpp",
-    "RegisterContextPOSIX_ppc64le.cpp",
-    "RegisterContextPOSIX_riscv32.cpp",
-    "RegisterContextPOSIX_riscv64.cpp",
-    "RegisterContextPOSIX_s390x.cpp",
-    "RegisterContextPOSIX_x86.cpp",
     "RegisterContextThreadMemory.cpp",
     "StopInfoMachException.cpp",
     "ThreadMemory.cpp",
diff --git a/llvm/utils/gn/secondary/lldb/source/Plugins/Process/elf-core/BUILD.gn b/llvm/utils/gn/secondary/lldb/source/Plugins/Process/elf-core/BUILD.gn
index c102b6abce9658..050f5418e55fbc 100644
--- a/llvm/utils/gn/secondary/lldb/source/Plugins/Process/elf-core/BUILD.gn
+++ b/llvm/utils/gn/secondary/lldb/source/Plugins/Process/elf-core/BUILD.gn
@@ -6,6 +6,7 @@ static_library("elf-core") {
     "//lldb/source/Plugins/DynamicLoader/POSIX-DYLD",
     "//lldb/source/Plugins/ObjectFile/ELF",
     "//lldb/source/Plugins/Process/Utility",
+    "//lldb/source/Plugins/Register/Core",
     "//lldb/source/Target",
     "//llvm/lib/BinaryFormat",
     "//llvm/lib/Support",
diff --git a/llvm/utils/gn/secondary/lldb/source/Plugins/Register/Core/BUILD.gn b/llvm/utils/gn/secondary/lldb/source/Plugins/Register/Core/BUILD.gn
new file mode 100644
index 00000000000000..8e5f979e24c824
--- /dev/null
+++ b/llvm/utils/gn/secondary/lldb/source/Plugins/Register/Core/BUILD.gn
@@ -0,0 +1,23 @@
+static_library("Core") {
+  output_name = "lldbPluginRegisterCore"
+  configs += [ "//llvm/utils/gn/build:lldb_code" ]
+  deps = [
+    "//lldb/source/Register",
+    "//lldb/source/Target",
+    "//lldb/source/Utility",
+    "//llvm/lib/Support",
+  ]
+
+  include_dirs = [ "//lldb/source" ]
+  sources = [
+    "RegisterContextCore_arm.cpp",
+    "RegisterContextCore_arm64.cpp",
+    "RegisterContextCore_loongarch64.cpp",
+    "RegisterContextCore_powerpc.cpp",
+    "RegisterContextCore_ppc64le.cpp",
+    "RegisterContextCore_riscv32.cpp",
+    "RegisterContextCore_riscv64.cpp",
+    "RegisterContextCore_s390x.cpp",
+    "RegisterContextCore_x86.cpp",
+  ]
+}



More information about the lldb-commits mailing list