[Lldb-commits] [PATCH] D128069: [lldb] add SBSection.alignment to python bindings
David M. Lary via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Thu Jun 30 09:10:18 PDT 2022
dmlary updated this revision to Diff 441429.
dmlary added a comment.
merge tests, rename yml to yaml
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128069/new/
https://reviews.llvm.org/D128069
Files:
lldb/bindings/interface/SBSection.i
lldb/include/lldb/API/SBSection.h
lldb/source/API/SBSection.cpp
lldb/test/API/python_api/section/TestSectionAPI.py
lldb/test/API/python_api/section/aligned.yaml
Index: lldb/test/API/python_api/section/aligned.yaml
===================================================================
--- /dev/null
+++ lldb/test/API/python_api/section/aligned.yaml
@@ -0,0 +1,14 @@
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+ Entry: 0x0000000000400000
+Sections:
+ - Name: .text1
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Address: 0x0000000000400000
+ AddressAlign: 0x0000000000001000
+ Size: 0xb0
Index: lldb/test/API/python_api/section/TestSectionAPI.py
===================================================================
--- lldb/test/API/python_api/section/TestSectionAPI.py
+++ lldb/test/API/python_api/section/TestSectionAPI.py
@@ -39,3 +39,14 @@
self.assertIsNotNone(data_section)
self.assertEqual(data_section.target_byte_size, 1)
+
+ def test_get_alignment(self):
+ exe = self.getBuildArtifact("aligned.out")
+ self.yaml2obj("aligned.yaml", exe)
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target, VALID_TARGET)
+
+ # exe contains a single section aligned to 0x1000
+ section = target.modules[0].sections[0]
+ self.assertEqual(section.GetAlignment(), 0x1000)
+ self.assertEqual(section.alignment, 0x1000)
Index: lldb/source/API/SBSection.cpp
===================================================================
--- lldb/source/API/SBSection.cpp
+++ lldb/source/API/SBSection.cpp
@@ -242,6 +242,15 @@
return 0;
}
+uint32_t SBSection::GetAlignment() {
+ LLDB_INSTRUMENT_VA(this);
+
+ SectionSP section_sp(GetSP());
+ if (section_sp.get())
+ return (1 << section_sp->GetLog2Align());
+ return 0;
+}
+
bool SBSection::operator==(const SBSection &rhs) {
LLDB_INSTRUMENT_VA(this, rhs);
Index: lldb/include/lldb/API/SBSection.h
===================================================================
--- lldb/include/lldb/API/SBSection.h
+++ lldb/include/lldb/API/SBSection.h
@@ -76,6 +76,12 @@
/// The number of host (8-bit) bytes needed to hold a target byte
uint32_t GetTargetByteSize();
+ /// Return the alignment of the section in bytes
+ ///
+ /// \return
+ /// The alignment of the section in bytes
+ uint32_t GetAlignment();
+
bool operator==(const lldb::SBSection &rhs);
bool operator!=(const lldb::SBSection &rhs);
Index: lldb/bindings/interface/SBSection.i
===================================================================
--- lldb/bindings/interface/SBSection.i
+++ lldb/bindings/interface/SBSection.i
@@ -105,6 +105,9 @@
uint32_t
GetTargetByteSize ();
+ uint32_t
+ GetAlignment ();
+
bool
GetDescription (lldb::SBStream &description);
@@ -138,6 +141,7 @@
data = property(GetSectionData, None, doc='''A read only property that returns an lldb object that represents the bytes for this section (lldb.SBData) for this section.''')
type = property(GetSectionType, None, doc='''A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eSectionType") that represents the type of this section (code, data, etc.).''')
target_byte_size = property(GetTargetByteSize, None, doc='''A read only property that returns the size of a target byte represented by this section as a number of host bytes.''')
+ alignment = property(GetAlignment, None, doc='''A read only property that returns the alignment of this section as a number of host bytes.''')
%}
#endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D128069.441429.patch
Type: text/x-patch
Size: 3646 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220630/775555dc/attachment-0001.bin>
More information about the lldb-commits
mailing list