Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lldb/bindings/interface/SBTargetExtensions.i
Original file line number Diff line number Diff line change
Expand Up @@ -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.''')
Expand Down
4 changes: 1 addition & 3 deletions lldb/examples/python/templates/scripted_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions lldb/include/lldb/API/SBTarget.h
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,8 @@ class LLDB_API SBTarget {

const char *GetTriple();

const char *GetArchName();

const char *GetABIName();

const char *GetLabel() const;
Expand Down
13 changes: 13 additions & 0 deletions lldb/source/API/SBTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1614,6 +1614,19 @@ const char *SBTarget::GetTriple() {
return nullptr;
}

const char *SBTarget::GetArchName() {
LLDB_INSTRUMENT_VA(this);

if (TargetSP target_sp = GetSP()) {
llvm::StringRef arch_name =
target_sp->GetArchitecture().GetTriple().getArchName();
ConstString const_arch_name(arch_name);

return const_arch_name.GetCString();
}
return nullptr;
}

const char *SBTarget::GetABIName() {
LLDB_INSTRUMENT_VA(this);

Expand Down
18 changes: 18 additions & 0 deletions lldb/test/API/python_api/target/TestTargetAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,24 @@ 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.assertTrue(len(arch_name) > 0, "Got an arch name")

# Test consistency with triple.
triple = target.triple
self.assertTrue(len(triple) > 0, "Got a triple")
self.assertEqual(
triple.split("-")[0],
arch_name,
"Arch name is equal to the first item of the triple",
)

def test_get_ABIName(self):
d = {"EXE": "b.out"}
self.build(dictionary=d)
Expand Down
Loading