summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2018-03-26 12:42:07 +0000
committerPavel Labath <labath@google.com>2018-03-26 12:42:07 +0000
commitd5ee7ab47e3f3093c49a9fe0fab7326b14ff27d4 (patch)
treecf8af5278da3c7a8d03309d0db46651f6affda91 /lldb/packages/Python/lldbsuite/test
parentd1569290efa3b6b647faec6f0a8e3cc40be40b6b (diff)
downloadbcm5719-llvm-d5ee7ab47e3f3093c49a9fe0fab7326b14ff27d4.tar.gz
bcm5719-llvm-d5ee7ab47e3f3093c49a9fe0fab7326b14ff27d4.zip
Add and fix some tests for PPC64
Summary: TestExprsChar.py Char is unsigned char by default in PowerPC. TestDisassembleBreakpoint.py Modify disassemble testcase to consider multiple architectures. TestThreadJump.py Jumping directly to the return line on PowerPC architecture dos not means returning the value that is seen on the code. The last test fails, because it needs the execution of some assembly in the beginning of the function. Avoiding this test for this architecture. TestEhFrameUnwind.py Implement func for ppc64le test case. TestWatchLocation.py TestStepOverWatchpoint.py PowerPC currently supports only one H/W watchpoint. TestDisassembleRawData.py Add PowerPC opcode and instruction for disassemble testcase. Reviewers: labath Reviewed By: labath Subscribers: davide, labath, alexandreyy, lldb-commits, luporl, lbianc Differential Revision: https://reviews.llvm.org/D44472 Patch by Alexandre Yukio Yamashita <alexandre.yamashita@eldorado.org.br>. llvm-svn: 328488
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r--lldb/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py1
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py45
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c14
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py4
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py2
-rw-r--r--lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py6
6 files changed, 37 insertions, 35 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py b/lldb/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py
index 445979f5c70..2f140687476 100644
--- a/lldb/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py
+++ b/lldb/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py
@@ -49,6 +49,7 @@ class ExprCharTestCase(TestBase):
archs=[
"arm",
"aarch64",
+ "powerpc64le",
"s390x"],
bugnumber="llvm.org/pr23069")
@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765")
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py b/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py
index aee5f930ea1..2e0d4fda369 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py
@@ -26,6 +26,9 @@ class DisassemblyTestCase(TestBase):
self.expect("file " + exe,
patterns=["Current executable set to .*a.out.*"])
+ self.runCmd("dis -n main")
+ disassembly_before_break = self.res.GetOutput().splitlines()
+
match_object = lldbutil.run_break_set_command(self, "br s -n sum")
lldbutil.check_breakpoint_result(
self,
@@ -37,36 +40,16 @@ class DisassemblyTestCase(TestBase):
self.expect("run",
patterns=["Process .* launched: "])
- self.runCmd("dis -f")
- disassembly = self.res.GetOutput()
-
- # ARCH, if not specified, defaults to x86_64.
- arch = self.getArchitecture()
- if arch in ["", 'x86_64', 'i386', 'i686']:
- breakpoint_opcodes = ["int3"]
- instructions = [' mov', ' addl ', 'ret']
- elif arch in ["arm", "aarch64", "arm64", "armv7", "armv7k"]:
- breakpoint_opcodes = ["brk", "udf"]
- instructions = [' add ', ' ldr ', ' str ']
- elif re.match("mips", arch):
- breakpoint_opcodes = ["break"]
- instructions = ['lw', 'sw']
- elif arch in ["s390x"]:
- breakpoint_opcodes = [".long"]
- instructions = [' l ', ' a ', ' st ']
- else:
- # TODO please add your arch here
- self.fail(
- 'unimplemented for arch = "{arch}"'.format(
- arch=self.getArchitecture()))
+ self.runCmd("dis -n main")
+ disassembly_after_break = self.res.GetOutput().splitlines()
- # make sure that the software breakpoint has been removed
- for op in breakpoint_opcodes:
- self.assertFalse(op in disassembly)
+ # make sure all assembly instructions are the same as the original
+ # instructions before inserting breakpoints.
+ self.assertEqual(len(disassembly_before_break),
+ len(disassembly_after_break))
- # make sure a few reasonable assembly instructions are here
- self.expect(
- disassembly,
- exe=False,
- startstr="a.out`sum",
- substrs=instructions)
+ for dis_inst_before, dis_inst_after in \
+ zip(disassembly_before_break, disassembly_after_break):
+ inst_before = dis_inst_before.split(':')[-1]
+ inst_after = dis_inst_after.split(':')[-1]
+ self.assertEqual(inst_before, inst_after)
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c
index ae8060124ab..46de1efe626 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c
@@ -1,6 +1,18 @@
void func() {
-#ifndef __mips__
+#ifdef __powerpc64__
+ __asm__ (
+ "mflr 0;"
+ "std 0,16(1);"
+ "addi 1,1,-24;"
+ "mr 31,1;"
+ ".cfi_def_cfa_offset 24;"
+ "addi 0,0,0;"
+ "addi 1,1,24;"
+ "ld 0,16(1);"
+ ".cfi_def_cfa_offset 0;"
+ );
+#elif !defined __mips__
__asm__ (
"pushq $0x10;"
".cfi_def_cfa_offset 16;"
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
index dbde146e73a..d39d35f7688 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
@@ -39,8 +39,8 @@ class HelloWatchLocationTestCase(TestBase):
# Most of the MIPS boards provide only one H/W watchpoints, and S/W
# watchpoints are not supported yet
@expectedFailureAll(triple=re.compile('^mips'))
- # SystemZ also currently supports only one H/W watchpoint
- @expectedFailureAll(archs=['s390x'])
+ # SystemZ and PowerPC also currently supports only one H/W watchpoint
+ @expectedFailureAll(archs=['powerpc64le', 's390x'])
@skipIfDarwin
def test_hello_watchlocation(self):
"""Test watching a location with '-s size' option."""
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py
index 5532fd8fd52..e0c77b4ea6b 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py
@@ -81,7 +81,7 @@ class TestStepOverWatchpoint(TestBase):
# Most of the MIPS boards provide only one H/W watchpoints, and S/W
# watchpoints are not supported yet
arch = self.getArchitecture()
- if re.match("^mips", arch):
+ if re.match("^mips", arch) or re.match("powerpc64le", arch):
self.runCmd("watchpoint delete 1")
# resolve_location=True, read=False, write=True
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py b/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
index 97261c70ec9..deb0c7a9fcb 100644
--- a/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
+++ b/lldb/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
@@ -31,6 +31,9 @@ class DisassembleRawDataTestCase(TestBase):
elif re.match("mips", arch):
target = self.dbg.CreateTargetWithFileAndTargetTriple("", "mips")
raw_bytes = bytearray([0x03, 0xa0, 0xf0, 0x21])
+ elif re.match("powerpc64le", arch):
+ target = self.dbg.CreateTargetWithFileAndTargetTriple("", "powerpc64le")
+ raw_bytes = bytearray([0x00, 0x00, 0x80, 0x38])
else:
target = self.dbg.CreateTargetWithFileAndTargetTriple("", "x86_64")
raw_bytes = bytearray([0x48, 0x89, 0xe5])
@@ -48,6 +51,9 @@ class DisassembleRawDataTestCase(TestBase):
self.assertTrue(inst.GetMnemonic(target) == "move")
self.assertTrue(inst.GetOperands(target) ==
'$' + "fp, " + '$' + "sp")
+ elif re.match("powerpc64le", arch):
+ self.assertTrue(inst.GetMnemonic(target) == "li")
+ self.assertTrue(inst.GetOperands(target) == "4, 0")
else:
self.assertTrue(inst.GetMnemonic(target) == "movq")
self.assertTrue(inst.GetOperands(target) ==
OpenPOWER on IntegriCloud