[Lldb-commits] [lldb] [lldb] [scripting bridge] 167388 chore: add api to return arch name for target (PR #168273)
via lldb-commits
lldb-commits at lists.llvm.org
Sun Nov 16 09:53:18 PST 2025
https://github.com/n2h9 updated https://github.com/llvm/llvm-project/pull/168273
>From d98da7c2df181f89560cc382208a9b4c6cff88f7 Mon Sep 17 00:00:00 2001
From: Nikita B <n2h9z4 at gmail.com>
Date: Sun, 16 Nov 2025 15:46:12 +0100
Subject: [PATCH 1/4] [lldb] 167388 chore: add api to return arch name for
target
Signed-off-by: Nikita B <n2h9z4 at gmail.com>
---
lldb/examples/python/templates/scripted_process.py | 4 +---
lldb/include/lldb/API/SBTarget.h | 2 ++
lldb/source/API/SBTarget.cpp | 13 +++++++++++++
lldb/test/API/python_api/target/TestTargetAPI.py | 14 ++++++++++++++
4 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/lldb/examples/python/templates/scripted_process.py b/lldb/examples/python/templates/scripted_process.py
index 49059d533f38a..b4232f632a30a 100644
--- a/lldb/examples/python/templates/scripted_process.py
+++ b/lldb/examples/python/templates/scripted_process.py
@@ -35,9 +35,7 @@ def __init__(self, exe_ctx, args):
target = exe_ctx.target
if isinstance(target, lldb.SBTarget) and target.IsValid():
self.target = target
- triple = self.target.triple
- if triple:
- self.arch = triple.split("-")[0]
+ self.arch = target.arch_name
self.dbg = target.GetDebugger()
if isinstance(args, lldb.SBStructuredData) and args.IsValid():
self.args = args
diff --git a/lldb/include/lldb/API/SBTarget.h b/lldb/include/lldb/API/SBTarget.h
index 379a0bb7e9513..d0da6aaa6044c 100644
--- a/lldb/include/lldb/API/SBTarget.h
+++ b/lldb/include/lldb/API/SBTarget.h
@@ -353,6 +353,8 @@ class LLDB_API SBTarget {
const char *GetTriple();
+ const char *GetArchName();
+
const char *GetABIName();
const char *GetLabel() const;
diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp
index 98d10aa07c53f..f0458bb6b5fe5 100644
--- a/lldb/source/API/SBTarget.cpp
+++ b/lldb/source/API/SBTarget.cpp
@@ -1614,6 +1614,19 @@ const char *SBTarget::GetTriple() {
return nullptr;
}
+const char *SBTarget::GetArchName() {
+ LLDB_INSTRUMENT_VA(this);
+
+ if (TargetSP target_sp = GetSP()) {
+ std::string arch_name =
+ target_sp->GetArchitecture().GetTriple().getArchName().str();
+ ConstString const_arch_name(arch_name.c_str());
+
+ return const_arch_name.GetCString();
+ }
+ return nullptr;
+}
+
const char *SBTarget::GetABIName() {
LLDB_INSTRUMENT_VA(this);
diff --git a/lldb/test/API/python_api/target/TestTargetAPI.py b/lldb/test/API/python_api/target/TestTargetAPI.py
index d346563af18e2..fdb8d820bcd08 100644
--- a/lldb/test/API/python_api/target/TestTargetAPI.py
+++ b/lldb/test/API/python_api/target/TestTargetAPI.py
@@ -105,6 +105,20 @@ def test_resolve_file_address(self):
self.assertIsNotNone(data_section2)
self.assertEqual(data_section.name, data_section2.name)
+ def test_get_arch_name(self):
+ d = {"EXE": "b.out"}
+ self.build(dictionary=d)
+ self.setTearDownCleanup(dictionary=d)
+ target = self.create_simple_target("b.out")
+
+ arch_name = target.arch_name
+ self.assertNotEqual(len(arch_name), 0, "Got an arch name string")
+
+ # Test consistency with GetTriple().
+ triple = target.triple
+ if triple:
+ self.assertEqual(triple.split("-")[0], arch_name)
+
def test_get_ABIName(self):
d = {"EXE": "b.out"}
self.build(dictionary=d)
>From 0c966e6a0c3ff194a27664ef7c24f38793f0e641 Mon Sep 17 00:00:00 2001
From: Nikita B <n2h9z4 at gmail.com>
Date: Sun, 16 Nov 2025 18:03:51 +0100
Subject: [PATCH 2/4] [lldb] 167388 chore: add api to return arch name for
target: use target.GetArchName() instead of target.arch_name in script
Signed-off-by: Nikita B <n2h9z4 at gmail.com>
---
lldb/examples/python/templates/scripted_process.py | 2 +-
lldb/test/API/python_api/target/TestTargetAPI.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lldb/examples/python/templates/scripted_process.py b/lldb/examples/python/templates/scripted_process.py
index b4232f632a30a..25f17d7e71784 100644
--- a/lldb/examples/python/templates/scripted_process.py
+++ b/lldb/examples/python/templates/scripted_process.py
@@ -35,7 +35,7 @@ def __init__(self, exe_ctx, args):
target = exe_ctx.target
if isinstance(target, lldb.SBTarget) and target.IsValid():
self.target = target
- self.arch = target.arch_name
+ self.arch = target.GetArchName()
self.dbg = target.GetDebugger()
if isinstance(args, lldb.SBStructuredData) and args.IsValid():
self.args = args
diff --git a/lldb/test/API/python_api/target/TestTargetAPI.py b/lldb/test/API/python_api/target/TestTargetAPI.py
index fdb8d820bcd08..b4a7bcbf3c8e3 100644
--- a/lldb/test/API/python_api/target/TestTargetAPI.py
+++ b/lldb/test/API/python_api/target/TestTargetAPI.py
@@ -111,7 +111,7 @@ def test_get_arch_name(self):
self.setTearDownCleanup(dictionary=d)
target = self.create_simple_target("b.out")
- arch_name = target.arch_name
+ arch_name = target.GetArchName()
self.assertNotEqual(len(arch_name), 0, "Got an arch name string")
# Test consistency with GetTriple().
>From 83750ddad6fd65cad4d62610d7dafb2cf8f091f1 Mon Sep 17 00:00:00 2001
From: Nikita B <n2h9z4 at gmail.com>
Date: Sun, 16 Nov 2025 18:28:08 +0100
Subject: [PATCH 3/4] [lldb] 167388 chore: add api to return arch name for
target: add arch_name readonly property to the binding
Signed-off-by: Nikita B <n2h9z4 at gmail.com>
---
lldb/bindings/interface/SBTargetExtensions.i | 1 +
1 file changed, 1 insertion(+)
diff --git a/lldb/bindings/interface/SBTargetExtensions.i b/lldb/bindings/interface/SBTargetExtensions.i
index 43125d8970615..ef1093b03ced9 100644
--- a/lldb/bindings/interface/SBTargetExtensions.i
+++ b/lldb/bindings/interface/SBTargetExtensions.i
@@ -190,6 +190,7 @@ STRING_EXTENSION_LEVEL_OUTSIDE(SBTarget, lldb::eDescriptionLevelBrief)
byte_order = property(GetByteOrder, None, doc='''A read only property that returns an lldb enumeration value (lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) that represents the byte order for this target.''')
addr_size = property(GetAddressByteSize, None, doc='''A read only property that returns the size in bytes of an address for this target.''')
triple = property(GetTriple, None, doc='''A read only property that returns the target triple (arch-vendor-os) for this target as a string.''')
+ arch_name = property(GetArchName, None, doc='''A read only property that returns the architecture name for this target as a string.''')
data_byte_size = property(GetDataByteSize, None, doc='''A read only property that returns the size in host bytes of a byte in the data address space for this target.''')
code_byte_size = property(GetCodeByteSize, None, doc='''A read only property that returns the size in host bytes of a byte in the code address space for this target.''')
platform = property(GetPlatform, None, doc='''A read only property that returns the platform associated with with this target.''')
>From 36497abb887c2392d27a17b5c80f2d3848e5d077 Mon Sep 17 00:00:00 2001
From: Nikita B <n2h9z4 at gmail.com>
Date: Sun, 16 Nov 2025 18:53:05 +0100
Subject: [PATCH 4/4] [lldb] 167388 chore: add api to return arch name for
target: use target.arch_name instead of target.GetArchName() in script
Signed-off-by: Nikita B <n2h9z4 at gmail.com>
---
lldb/examples/python/templates/scripted_process.py | 2 +-
lldb/test/API/python_api/target/TestTargetAPI.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lldb/examples/python/templates/scripted_process.py b/lldb/examples/python/templates/scripted_process.py
index 25f17d7e71784..b4232f632a30a 100644
--- a/lldb/examples/python/templates/scripted_process.py
+++ b/lldb/examples/python/templates/scripted_process.py
@@ -35,7 +35,7 @@ def __init__(self, exe_ctx, args):
target = exe_ctx.target
if isinstance(target, lldb.SBTarget) and target.IsValid():
self.target = target
- self.arch = target.GetArchName()
+ self.arch = target.arch_name
self.dbg = target.GetDebugger()
if isinstance(args, lldb.SBStructuredData) and args.IsValid():
self.args = args
diff --git a/lldb/test/API/python_api/target/TestTargetAPI.py b/lldb/test/API/python_api/target/TestTargetAPI.py
index b4a7bcbf3c8e3..fdb8d820bcd08 100644
--- a/lldb/test/API/python_api/target/TestTargetAPI.py
+++ b/lldb/test/API/python_api/target/TestTargetAPI.py
@@ -111,7 +111,7 @@ def test_get_arch_name(self):
self.setTearDownCleanup(dictionary=d)
target = self.create_simple_target("b.out")
- arch_name = target.GetArchName()
+ arch_name = target.arch_name
self.assertNotEqual(len(arch_name), 0, "Got an arch name string")
# Test consistency with GetTriple().
More information about the lldb-commits
mailing list