[Lldb-commits] [lldb] r328488 - Add and fix some tests for PPC64

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Mon Mar 26 08:24:18 PDT 2018


I was also looking at this because it broke on our android bots. I have
just committed r328504 to fix those, and I believe it will fix the issues
you are seeing on osx (but I'll probably need to go home before I can
verify that).


On Mon, 26 Mar 2018 at 16:14, Davide Italiano <dccitaliano at gmail.com> wrote:

> This commit broke the Jenkins macOS x86-64 bots
>
>
> http://lab.llvm.org:8080/green/view/LLDB/job/lldb-cmake/5943/testReport/junit/TestDisassembleBreakpoint/DisassemblyTestCase/test_dwarf/
>
> Can you take a look? (if you can't, let me know).
>
> Thanks,
>
> --
> Davide
>
> On Mon, Mar 26, 2018 at 5:42 AM, Pavel Labath via lldb-commits
> <lldb-commits at lists.llvm.org> wrote:
> > Author: labath
> > Date: Mon Mar 26 05:42:07 2018
> > New Revision: 328488
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=328488&view=rev
> > Log:
> > 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 at eldorado.org.br
> >.
> >
> > Modified:
> >
>  lldb/trunk/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py
> >
>  lldb/trunk/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py
> >
>  lldb/trunk/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c
> >
>  lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
> >
>  lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py
> >
>  lldb/trunk/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
> >
> > Modified:
> lldb/trunk/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py
> > URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py?rev=328488&r1=328487&r2=328488&view=diff
> >
> ==============================================================================
> > ---
> lldb/trunk/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py
> (original)
> > +++
> lldb/trunk/packages/Python/lldbsuite/test/expression_command/char/TestExprsChar.py
> Mon Mar 26 05:42:07 2018
> > @@ -49,6 +49,7 @@ class ExprCharTestCase(TestBase):
> >          archs=[
> >              "arm",
> >              "aarch64",
> > +            "powerpc64le",
> >              "s390x"],
> >          bugnumber="llvm.org/pr23069")
> >      @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765
> ")
> >
> > Modified:
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py
> > URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py?rev=328488&r1=328487&r2=328488&view=diff
> >
> ==============================================================================
> > ---
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py
> (original)
> > +++
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/disassembly/TestDisassembleBreakpoint.py
> Mon Mar 26 05:42:07 2018
> > @@ -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()
> > +        self.runCmd("dis -n main")
> > +        disassembly_after_break = self.res.GetOutput().splitlines()
> >
> > -        # 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()))
> > -
> > -        # make sure that the software breakpoint has been removed
> > -        for op in breakpoint_opcodes:
> > -            self.assertFalse(op in disassembly)
> > -
> > -        # make sure a few reasonable assembly instructions are here
> > -        self.expect(
> > -            disassembly,
> > -            exe=False,
> > -            startstr="a.out`sum",
> > -            substrs=instructions)
> > +        # 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))
> > +
> > +        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)
> >
> > Modified:
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c
> > URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c?rev=328488&r1=328487&r2=328488&view=diff
> >
> ==============================================================================
> > ---
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c
> (original)
> > +++
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/unwind/ehframe/main.c
> Mon Mar 26 05:42:07 2018
> > @@ -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;"
> >
> > Modified:
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
> > URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py?rev=328488&r1=328487&r2=328488&view=diff
> >
> ==============================================================================
> > ---
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
> (original)
> > +++
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
> Mon Mar 26 05:42:07 2018
> > @@ -39,8 +39,8 @@ class HelloWatchLocationTestCase(TestBas
> >      # 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."""
> >
> > Modified:
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py
> > URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py?rev=328488&r1=328487&r2=328488&view=diff
> >
> ==============================================================================
> > ---
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py
> (original)
> > +++
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py
> Mon Mar 26 05:42:07 2018
> > @@ -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
> >
> > Modified:
> lldb/trunk/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
> > URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py?rev=328488&r1=328487&r2=328488&view=diff
> >
> ==============================================================================
> > ---
> lldb/trunk/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
> (original)
> > +++
> lldb/trunk/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
> Mon Mar 26 05:42:07 2018
> > @@ -31,6 +31,9 @@ class DisassembleRawDataTestCase(TestBas
> >          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(TestBas
> >              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) ==
> >
> >
> > _______________________________________________
> > lldb-commits mailing list
> > lldb-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180326/a4f1ee7c/attachment-0001.html>


More information about the lldb-commits mailing list