diff options
author | Johnny Chen <johnny.chen@apple.com> | 2011-12-15 23:30:05 +0000 |
---|---|---|
committer | Johnny Chen <johnny.chen@apple.com> | 2011-12-15 23:30:05 +0000 |
commit | 6e55cd5e29130670545b448fe6ac485ac6a11153 (patch) | |
tree | b0e5f0c7bb6989dfa58ed6cc4afaf76a50b324ee /lldb/test | |
parent | 6d37656c1a2c47b3d542e99388aeee1d26bd2a2d (diff) | |
download | bcm5719-llvm-6e55cd5e29130670545b448fe6ac485ac6a11153.tar.gz bcm5719-llvm-6e55cd5e29130670545b448fe6ac485ac6a11153.zip |
Add test scenario for newly added SBProcess APIs: ReadCStringFromMemory() and ReadUnsignedFromMemory().
llvm-svn: 146704
Diffstat (limited to 'lldb/test')
-rw-r--r-- | lldb/test/python_api/process/TestProcessAPI.py | 45 | ||||
-rw-r--r-- | lldb/test/python_api/process/main.cpp | 3 |
2 files changed, 48 insertions, 0 deletions
diff --git a/lldb/test/python_api/process/TestProcessAPI.py b/lldb/test/python_api/process/TestProcessAPI.py index 2d68d85030e..c720d73b616 100644 --- a/lldb/test/python_api/process/TestProcessAPI.py +++ b/lldb/test/python_api/process/TestProcessAPI.py @@ -105,6 +105,51 @@ class ProcessAPITestCase(TestBase): exe=False, startstr = 'x') + # Get the SBValue for the global variable 'my_cstring'. + val = frame.FindValue("my_cstring", lldb.eValueTypeVariableGlobal) + self.DebugSBValue(val) + + # If the variable does not have a load address, there's no sense continuing. + if not val.GetLocation().startswith("0x"): + return + + # OK, let's get the hex location of the variable. + location = int(val.GetLocation(), 16) + + # Due to the typemap magic (see lldb.swig), we pass in 256 to read at most 256 bytes + # from the address, and expect to get a Python string as the result object! + cstring = process.ReadCStringFromMemory(location, 256, error) + if not error.Success(): + self.fail("SBProcess.ReadCStringFromMemory() failed") + if self.TraceOn(): + print "cstring read is:", cstring + + self.expect(cstring, "Result from SBProcess.ReadCStringFromMemory() matches our expected output", + exe=False, + startstr = 'lldb.SBProcess.ReadCStringFromMemory() works!') + + # Get the SBValue for the global variable 'my_uint32'. + val = frame.FindValue("my_uint32", lldb.eValueTypeVariableGlobal) + self.DebugSBValue(val) + + # If the variable does not have a load address, there's no sense continuing. + if not val.GetLocation().startswith("0x"): + return + + # OK, let's get the hex location of the variable. + location = int(val.GetLocation(), 16) + + # Due to the typemap magic (see lldb.swig), we pass in 4 to read at 4 bytes + # from the address, and expect to get an int as the result! + my_uint32 = process.ReadUnsignedFromMemory(location, 4, error) + if not error.Success(): + self.fail("SBProcess.ReadCStringFromMemory() failed") + if self.TraceOn(): + print "uint32 read is:", my_uint32 + + if my_uint32 != 12345: + self.fail("Result from SBProcess.ReadUnsignedFromMemory() does not match our expected output") + def write_memory(self): """Test Python SBProcess.WriteMemory() API.""" exe = os.path.join(os.getcwd(), "a.out") diff --git a/lldb/test/python_api/process/main.cpp b/lldb/test/python_api/process/main.cpp index 4d5b5e6d7e9..57da5748dda 100644 --- a/lldb/test/python_api/process/main.cpp +++ b/lldb/test/python_api/process/main.cpp @@ -7,10 +7,13 @@ // //===----------------------------------------------------------------------===// #include <stdio.h> +#include <stdint.h> // This simple program is to test the lldb Python API related to process. char my_char = 'u'; +char my_cstring[] = "lldb.SBProcess.ReadCStringFromMemory() works!"; +uint32_t my_uint32 = 12345; int my_int = 0; int main (int argc, char const *argv[]) |