nitesh.jain created this revision.
Herald added a subscriber: arichardson.

In case of MIPS, we never add breakpoint in the delay slot. Hence while doing 
stepping, the delay slot instruction will be skipped.


https://reviews.llvm.org/D32168

Files:
  
packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py


Index: 
packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py
===================================================================
--- 
packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py
+++ 
packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py
@@ -62,12 +62,19 @@
         instructions = function.GetInstructions(self.target)
         addr_1 = self.breakpoint1.GetLocationAtIndex(0).GetAddress()
         addr_4 = self.breakpoint4.GetLocationAtIndex(0).GetAddress()
+        delay_slot = 0
+        addr_1_load_address = addr_1.GetLoadAddress(self.target)
+        addr_4_load_address = addr_4.GetLoadAddress(self.target)
         for i in range(instructions.GetSize()) :
             addr = instructions.GetInstructionAtIndex(i).GetAddress()
+            addr_load_address = addr.GetLoadAddress(self.target)
             if (addr == addr_1) : index_1 = i
-            if (addr == addr_4) : index_4 = i 
+            if (addr == addr_4) : index_4 = i
+            if (addr_1_load_address <= addr_load_address <= 
addr_4_load_address):
+                if (instructions.GetInstructionAtIndex(i).HasDelaySlot()) :
+                    delay_slot = delay_slot + 1
 
-        steps_expected = index_4 - index_1
+        steps_expected = index_4 - index_1 - delay_slot
         step_count = 0
         # Step from breakpoint_1 to breakpoint_4
         while True:


Index: packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py
===================================================================
--- packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py
+++ packages/Python/lldbsuite/test/functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py
@@ -62,12 +62,19 @@
         instructions = function.GetInstructions(self.target)
         addr_1 = self.breakpoint1.GetLocationAtIndex(0).GetAddress()
         addr_4 = self.breakpoint4.GetLocationAtIndex(0).GetAddress()
+        delay_slot = 0
+        addr_1_load_address = addr_1.GetLoadAddress(self.target)
+        addr_4_load_address = addr_4.GetLoadAddress(self.target)
         for i in range(instructions.GetSize()) :
             addr = instructions.GetInstructionAtIndex(i).GetAddress()
+            addr_load_address = addr.GetLoadAddress(self.target)
             if (addr == addr_1) : index_1 = i
-            if (addr == addr_4) : index_4 = i 
+            if (addr == addr_4) : index_4 = i
+            if (addr_1_load_address <= addr_load_address <= addr_4_load_address):
+                if (instructions.GetInstructionAtIndex(i).HasDelaySlot()) :
+                    delay_slot = delay_slot + 1
 
-        steps_expected = index_4 - index_1
+        steps_expected = index_4 - index_1 - delay_slot
         step_count = 0
         # Step from breakpoint_1 to breakpoint_4
         while True:
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to