[Lldb-commits] [lldb] 5397221 - [lldb] Add arm32/thumb register layout to Scripted{Frame, Thread} (#172005)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Dec 12 11:06:12 PST 2025
Author: Med Ismail Bennani
Date: 2025-12-12T20:06:08+01:00
New Revision: 53972216d1087552945e9a44f11b6a2a9d38a59c
URL: https://github.com/llvm/llvm-project/commit/53972216d1087552945e9a44f11b6a2a9d38a59c
DIFF: https://github.com/llvm/llvm-project/commit/53972216d1087552945e9a44f11b6a2a9d38a59c.diff
LOG: [lldb] Add arm32/thumb register layout to Scripted{Frame,Thread} (#172005)
Added:
Modified:
lldb/examples/python/templates/scripted_process.py
lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
lldb/test/API/functionalities/scripted_frame_provider/circular_dependency/TestFrameProviderCircularDependency.py
Removed:
################################################################################
diff --git a/lldb/examples/python/templates/scripted_process.py b/lldb/examples/python/templates/scripted_process.py
index 24aa9818bb989..b6f2d18971e72 100644
--- a/lldb/examples/python/templates/scripted_process.py
+++ b/lldb/examples/python/templates/scripted_process.py
@@ -360,6 +360,9 @@ def get_register_info(self):
elif "arm64" in self.arch or self.arch == "aarch64":
self.register_info["sets"] = ["General Purpose Registers"]
self.register_info["registers"] = ARM64_GPR
+ elif "arm" in self.arch or "thumb" in self.arch:
+ self.register_info["sets"] = ["General Purpose Registers"]
+ self.register_info["registers"] = ARM32_GPR
else:
raise ValueError("Unknown architecture", self.arch)
return self.register_info
@@ -520,6 +523,9 @@ def get_register_info(self):
elif "arm64" in self.arch or self.arch == "aarch64":
self.register_info["sets"] = ["General Purpose Registers"]
self.register_info["registers"] = ARM64_GPR
+ elif "arm" in self.arch or "thumb" in self.arch:
+ self.register_info["sets"] = ["General Purpose Registers"]
+ self.register_info["registers"] = ARM32_GPR
else:
raise ValueError("Unknown architecture", self.arch)
return self.register_info
@@ -688,11 +694,10 @@ def get_register_context(self):
return struct.pack(f"{len(self.register_ctx)}Q", *self.register_ctx.values())
-
-ARM64_GPR = [
+ARM32_GPR = [
{
- "name": "x0",
- "bitsize": 64,
+ "name": "r0",
+ "bitsize": 32,
"offset": 0,
"encoding": "uint",
"format": "hex",
@@ -703,9 +708,9 @@ def get_register_context(self):
"alt-name": "arg0",
},
{
- "name": "x1",
- "bitsize": 64,
- "offset": 8,
+ "name": "r1",
+ "bitsize": 32,
+ "offset": 4,
"encoding": "uint",
"format": "hex",
"set": 0,
@@ -715,9 +720,9 @@ def get_register_context(self):
"alt-name": "arg1",
},
{
- "name": "x2",
- "bitsize": 64,
- "offset": 16,
+ "name": "r2",
+ "bitsize": 32,
+ "offset": 8,
"encoding": "uint",
"format": "hex",
"set": 0,
@@ -727,9 +732,9 @@ def get_register_context(self):
"alt-name": "arg2",
},
{
- "name": "x3",
- "bitsize": 64,
- "offset": 24,
+ "name": "r3",
+ "bitsize": 32,
+ "offset": 12,
"encoding": "uint",
"format": "hex",
"set": 0,
@@ -739,444 +744,69 @@ def get_register_context(self):
"alt-name": "arg3",
},
{
- "name": "x4",
- "bitsize": 64,
- "offset": 32,
+ "name": "r4",
+ "bitsize": 32,
+ "offset": 16,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 4,
"dwarf": 4,
- "generic": "arg4",
- "alt-name": "arg4",
},
{
- "name": "x5",
- "bitsize": 64,
- "offset": 40,
+ "name": "r5",
+ "bitsize": 32,
+ "offset": 20,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 5,
"dwarf": 5,
- "generic": "arg5",
- "alt-name": "arg5",
- },
- {
- "name": "x6",
- "bitsize": 64,
- "offset": 48,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 6,
- "dwarf": 6,
- "generic": "arg6",
- "alt-name": "arg6",
},
{
- "name": "x7",
- "bitsize": 64,
- "offset": 56,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 7,
- "dwarf": 7,
- "generic": "arg7",
- "alt-name": "arg7",
- },
- {
- "name": "x8",
- "bitsize": 64,
- "offset": 64,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 8,
- "dwarf": 8,
- },
- {
- "name": "x9",
- "bitsize": 64,
- "offset": 72,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 9,
- "dwarf": 9,
- },
- {
- "name": "x10",
- "bitsize": 64,
- "offset": 80,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 10,
- "dwarf": 10,
- },
- {
- "name": "x11",
- "bitsize": 64,
- "offset": 88,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 11,
- "dwarf": 11,
- },
- {
- "name": "x12",
- "bitsize": 64,
- "offset": 96,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 12,
- "dwarf": 12,
- },
- {
- "name": "x13",
- "bitsize": 64,
- "offset": 104,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 13,
- "dwarf": 13,
- },
- {
- "name": "x14",
- "bitsize": 64,
- "offset": 112,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 14,
- "dwarf": 14,
- },
- {
- "name": "x15",
- "bitsize": 64,
- "offset": 120,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 15,
- "dwarf": 15,
- },
- {
- "name": "x16",
- "bitsize": 64,
- "offset": 128,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 16,
- "dwarf": 16,
- },
- {
- "name": "x17",
- "bitsize": 64,
- "offset": 136,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 17,
- "dwarf": 17,
- },
- {
- "name": "x18",
- "bitsize": 64,
- "offset": 144,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 18,
- "dwarf": 18,
- },
- {
- "name": "x19",
- "bitsize": 64,
- "offset": 152,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 19,
- "dwarf": 19,
- },
- {
- "name": "x20",
- "bitsize": 64,
- "offset": 160,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 20,
- "dwarf": 20,
- },
- {
- "name": "x21",
- "bitsize": 64,
- "offset": 168,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 21,
- "dwarf": 21,
- },
- {
- "name": "x22",
- "bitsize": 64,
- "offset": 176,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 22,
- "dwarf": 22,
- },
- {
- "name": "x23",
- "bitsize": 64,
- "offset": 184,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 23,
- "dwarf": 23,
- },
- {
- "name": "x24",
- "bitsize": 64,
- "offset": 192,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 24,
- "dwarf": 24,
- },
- {
- "name": "x25",
- "bitsize": 64,
- "offset": 200,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 25,
- "dwarf": 25,
- },
- {
- "name": "x26",
- "bitsize": 64,
- "offset": 208,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 26,
- "dwarf": 26,
- },
- {
- "name": "x27",
- "bitsize": 64,
- "offset": 216,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 27,
- "dwarf": 27,
- },
- {
- "name": "x28",
- "bitsize": 64,
- "offset": 224,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 28,
- "dwarf": 28,
- },
- {
- "name": "x29",
- "bitsize": 64,
- "offset": 232,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 29,
- "dwarf": 29,
- "generic": "fp",
- "alt-name": "fp",
- },
- {
- "name": "x30",
- "bitsize": 64,
- "offset": 240,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 30,
- "dwarf": 30,
- "generic": "lr",
- "alt-name": "lr",
- },
- {
- "name": "sp",
- "bitsize": 64,
- "offset": 248,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 31,
- "dwarf": 31,
- "generic": "sp",
- "alt-name": "sp",
- },
- {
- "name": "pc",
- "bitsize": 64,
- "offset": 256,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 32,
- "dwarf": 32,
- "generic": "pc",
- "alt-name": "pc",
- },
- {
- "name": "cpsr",
+ "name": "r6",
"bitsize": 32,
- "offset": 264,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 33,
- "dwarf": 33,
- },
-]
-
-INTEL64_GPR = [
- {
- "name": "rax",
- "bitsize": 64,
- "offset": 0,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 0,
- "dwarf": 0,
- },
- {
- "name": "rbx",
- "bitsize": 64,
- "offset": 8,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 3,
- "dwarf": 3,
- },
- {
- "name": "rcx",
- "bitsize": 64,
- "offset": 16,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 2,
- "dwarf": 2,
- "generic": "arg4",
- "alt-name": "arg4",
- },
- {
- "name": "rdx",
- "bitsize": 64,
"offset": 24,
"encoding": "uint",
"format": "hex",
"set": 0,
- "gcc": 1,
- "dwarf": 1,
- "generic": "arg3",
- "alt-name": "arg3",
- },
- {
- "name": "rdi",
- "bitsize": 64,
- "offset": 32,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 5,
- "dwarf": 5,
- "generic": "arg1",
- "alt-name": "arg1",
- },
- {
- "name": "rsi",
- "bitsize": 64,
- "offset": 40,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 4,
- "dwarf": 4,
- "generic": "arg2",
- "alt-name": "arg2",
- },
- {
- "name": "rbp",
- "bitsize": 64,
- "offset": 48,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
"gcc": 6,
"dwarf": 6,
- "generic": "fp",
- "alt-name": "fp",
},
{
- "name": "rsp",
- "bitsize": 64,
- "offset": 56,
+ "name": "r7",
+ "bitsize": 32,
+ "offset": 28,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 7,
"dwarf": 7,
- "generic": "sp",
- "alt-name": "sp",
},
{
"name": "r8",
- "bitsize": 64,
- "offset": 64,
+ "bitsize": 32,
+ "offset": 32,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 8,
"dwarf": 8,
- "generic": "arg5",
- "alt-name": "arg5",
},
{
"name": "r9",
- "bitsize": 64,
- "offset": 72,
+ "bitsize": 32,
+ "offset": 36,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 9,
"dwarf": 9,
- "generic": "arg6",
- "alt-name": "arg6",
},
{
"name": "r10",
- "bitsize": 64,
- "offset": 80,
+ "bitsize": 32,
+ "offset": 40,
"encoding": "uint",
"format": "hex",
"set": 0,
@@ -1185,18 +815,20 @@ def get_register_context(self):
},
{
"name": "r11",
- "bitsize": 64,
- "offset": 88,
+ "bitsize": 32,
+ "offset": 44,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 11,
"dwarf": 11,
+ "generic": "fp",
+ "alt-name": "fp",
},
{
"name": "r12",
- "bitsize": 64,
- "offset": 96,
+ "bitsize": 32,
+ "offset": 48,
"encoding": "uint",
"format": "hex",
"set": 0,
@@ -1204,80 +836,49 @@ def get_register_context(self):
"dwarf": 12,
},
{
- "name": "r13",
- "bitsize": 64,
- "offset": 104,
+ "name": "sp",
+ "bitsize": 32,
+ "offset": 52,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 13,
"dwarf": 13,
+ "generic": "sp",
+ "alt-name": "r13",
},
{
- "name": "r14",
- "bitsize": 64,
- "offset": 112,
+ "name": "lr",
+ "bitsize": 32,
+ "offset": 56,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 14,
"dwarf": 14,
+ "generic": "lr",
+ "alt-name": "r14",
},
{
- "name": "r15",
- "bitsize": 64,
- "offset": 120,
+ "name": "pc",
+ "bitsize": 32,
+ "offset": 60,
"encoding": "uint",
"format": "hex",
"set": 0,
"gcc": 15,
"dwarf": 15,
- },
- {
- "name": "rip",
- "bitsize": 64,
- "offset": 128,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "gcc": 16,
- "dwarf": 16,
"generic": "pc",
- "alt-name": "pc",
+ "alt-name": "r15",
},
{
- "name": "rflags",
- "bitsize": 64,
- "offset": 136,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- "generic": "flags",
- "alt-name": "flags",
- },
- {
- "name": "cs",
- "bitsize": 64,
- "offset": 144,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- },
- {
- "name": "fs",
- "bitsize": 64,
- "offset": 152,
- "encoding": "uint",
- "format": "hex",
- "set": 0,
- },
- {
- "name": "gs",
- "bitsize": 64,
- "offset": 160,
+ "name": "cpsr",
+ "bitsize": 32,
+ "offset": 64,
"encoding": "uint",
"format": "hex",
"set": 0,
+ "dwarf": 128,
},
]
diff --git a/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py b/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
index 922cb7f326f33..afe344b3f2ffb 100644
--- a/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
+++ b/lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
@@ -10,7 +10,6 @@
from lldbsuite.test.lldbtest import TestBase
from lldbsuite.test import lldbutil
- at skipIf(oslist=["linux"], archs=["arm$"])
class ScriptedFrameProviderTestCase(TestBase):
NO_DEBUG_INFO_TESTCASE = True
diff --git a/lldb/test/API/functionalities/scripted_frame_provider/circular_dependency/TestFrameProviderCircularDependency.py b/lldb/test/API/functionalities/scripted_frame_provider/circular_dependency/TestFrameProviderCircularDependency.py
index b15bfb24804b6..87477ac1bc59f 100644
--- a/lldb/test/API/functionalities/scripted_frame_provider/circular_dependency/TestFrameProviderCircularDependency.py
+++ b/lldb/test/API/functionalities/scripted_frame_provider/circular_dependency/TestFrameProviderCircularDependency.py
@@ -9,7 +9,6 @@
from lldbsuite.test.lldbtest import TestBase
from lldbsuite.test import lldbutil
- at skipIf(oslist=["linux"], archs=["arm$"])
class FrameProviderCircularDependencyTestCase(TestBase):
NO_DEBUG_INFO_TESTCASE = True
More information about the lldb-commits
mailing list