[Lldb-commits] [PATCH] D25926: Don't set a software stepping breakpoint at 0 on arm or mips.

Jason Majors via lldb-commits lldb-commits at lists.llvm.org
Mon Oct 24 13:44:43 PDT 2016


jmajors created this revision.
jmajors added a reviewer: labath.
jmajors added a subscriber: lldb-commits.
Herald added subscribers: srhines, danalbert, tberghammer, rengolin, aemerson.

Added a test for the next_pc being zero before setting a software breakpoint
in arm32 and mips.
Reenabled the crash during step test for android/linux.


https://reviews.llvm.org/D25926

Files:
  packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/TestCrashDuringStep.py
  source/Plugins/Process/Linux/NativeProcessLinux.cpp


Index: source/Plugins/Process/Linux/NativeProcessLinux.cpp
===================================================================
--- source/Plugins/Process/Linux/NativeProcessLinux.cpp
+++ source/Plugins/Process/Linux/NativeProcessLinux.cpp
@@ -1351,12 +1351,23 @@
       // Arm mode
       error = SetSoftwareBreakpoint(next_pc, 4);
     }
+
+    // If setting the breakpoint fails because next_pc is out of
+    // the address space, ignore it and let the debugee segfault.
+    if (error.GetError() == EIO || error.GetError() == EFAULT) {
+      error.Clear();
+    }
   } else if (m_arch.GetMachine() == llvm::Triple::mips64 ||
              m_arch.GetMachine() == llvm::Triple::mips64el ||
              m_arch.GetMachine() == llvm::Triple::mips ||
-             m_arch.GetMachine() == llvm::Triple::mipsel)
+             m_arch.GetMachine() == llvm::Triple::mipsel) {
     error = SetSoftwareBreakpoint(next_pc, 4);
-  else {
+    // If setting the breakpoint fails because next_pc is out of
+    // the address space, ignore it and let the debugee segfault.
+    if (error.GetError() == EIO || error.GetError() == EFAULT) {
+      error.Clear();
+    }
+  } else {
     // No size hint is given for the next breakpoint
     error = SetSoftwareBreakpoint(next_pc, 0);
   }
Index: packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/TestCrashDuringStep.py
===================================================================
--- packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/TestCrashDuringStep.py
+++ packages/Python/lldbsuite/test/functionalities/thread/crash_during_step/TestCrashDuringStep.py
@@ -21,11 +21,6 @@
         self.breakpoint = line_number('main.cpp', '// Set breakpoint here')
 
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24778")
-    @expectedFailureAndroid("llvm.org/pr24497", archs=['arm', 'aarch64'])
-    @expectedFailureAll(
-        oslist=["linux"],
-        archs=["arm"],
-        bugnumber="llvm.org/pr24497")
     # IO error due to breakpoint at invalid address
     @expectedFailureAll(triple=re.compile('^mips'))
     def test_step_inst_with(self):


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25926.75646.patch
Type: text/x-patch
Size: 2151 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20161024/e9d44f1d/attachment.bin>


More information about the lldb-commits mailing list