diff options
author | Ilya Kuklin <ikuklin@accesssoftek.com> | 2023-05-02 11:02:30 -0700 |
---|---|---|
committer | Anton Korobeynikov <anton@korobeynikov.info> | 2023-05-02 11:02:44 -0700 |
commit | 8be139fc1251b99316d65403bde9c2326b12da20 (patch) | |
tree | 98a13a4b4060fa5769ba0bba49cd703b1a9bf836 /lldb/test | |
parent | 7e7bd9833b1084b9724f48f0f05609a7b975b516 (diff) | |
download | llvm-8be139fc1251b99316d65403bde9c2326b12da20.tar.gz |
[lldb] Add settings for expression evaluation memory allocations.
Expression evaluation allocates memory for storing intermediate data during evaluation. For it to work properly it has to be allocated within target's available address space, for example within first 0xFFFF bytes for the 16-bit MSP430. The memory for such targets can be very tightly packed, but not all targets support GetMemoryRegionInfo API to pick an unused region, like MSP430 with MSPDebug GDB server.
These settings allow the programmer to manually pick precisely where and how much memory to allocate for expression evaluation in order not to overlap with existing data in process memory.
Reviewed By: bulbazord
Differential Revision: https://reviews.llvm.org/D149262
Diffstat (limited to 'lldb/test')
3 files changed, 41 insertions, 0 deletions
diff --git a/lldb/test/API/commands/expression/memory-allocation/Makefile b/lldb/test/API/commands/expression/memory-allocation/Makefile new file mode 100644 index 000000000000..99998b20bcb0 --- /dev/null +++ b/lldb/test/API/commands/expression/memory-allocation/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/lldb/test/API/commands/expression/memory-allocation/TestMemoryAllocSettings.py b/lldb/test/API/commands/expression/memory-allocation/TestMemoryAllocSettings.py new file mode 100644 index 000000000000..3dc8dc16495c --- /dev/null +++ b/lldb/test/API/commands/expression/memory-allocation/TestMemoryAllocSettings.py @@ -0,0 +1,35 @@ +""" +Test changing setting for expression memory allocation. +""" + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class TestMemoryAllocSettings(TestBase): + + def test(self): + """Test changing settings for expression memory allocation.""" + self.build() + target = self.createTestTarget() + + self.log_file = self.getBuildArtifact("log-expr.txt") + + self.runCmd("settings set target.expr-alloc-address 0xdead0000") + self.runCmd("settings set target.expr-alloc-size 10000") + self.runCmd("settings set target.expr-alloc-align 0x1000") + + self.runCmd("log enable lldb expr -f " + self.log_file) + self.runCmd("expression -- int foo; &foo") + + self.assertTrue(os.path.isfile(self.log_file)) + with open(self.log_file, 'r') as f: + log = f.read() + + alloc0 = re.search('^.*IRMemoryMap::Malloc.+?0xdead0000.*$', log, re.MULTILINE) + # Malloc adds additional bytes to allocation size, hence 10007 + alloc1 = re.search('^.*IRMemoryMap::Malloc\s*?\(10007.+?0xdead1000.*$', log, re.MULTILINE) + self.assertTrue(alloc0, "Couldn't find an allocation at a given address.") + self.assertTrue(alloc1, "Couldn't find an allocation of a given size at a given address.") + diff --git a/lldb/test/API/commands/expression/memory-allocation/main.cpp b/lldb/test/API/commands/expression/memory-allocation/main.cpp new file mode 100644 index 000000000000..4cce7f667ff7 --- /dev/null +++ b/lldb/test/API/commands/expression/memory-allocation/main.cpp @@ -0,0 +1,3 @@ +int main() { + return 0; +} |