Fixed a case where unaligned SIMD loads would cause an unrecognized exception.

(it's a shame we can't make this into an actual alignment bus error, but Intel 
CPUs don't support it)


http://llvm-reviews.chandlerc.com/D1321

Files:
  source/Plugins/Process/Linux/ProcessMonitor.cpp

Index: source/Plugins/Process/Linux/ProcessMonitor.cpp
===================================================================
--- source/Plugins/Process/Linux/ProcessMonitor.cpp
+++ source/Plugins/Process/Linux/ProcessMonitor.cpp
@@ -1788,6 +1788,12 @@
     default:
         assert(false && "unexpected si_code for SIGSEGV");
         break;
+    case SI_KERNEL:
+        // Linux will occasionally send spurious SI_KERNEL codes.
+        // (this is poorly documented in sigaction)
+        // One way to get this is via unaligned SIMD loads.
+        reason = ProcessMessage::eInvalidAddress; // for lack of anything 
better
+        break;
     case SEGV_MAPERR:
         reason = ProcessMessage::eInvalidAddress;
         break;
Index: source/Plugins/Process/Linux/ProcessMonitor.cpp
===================================================================
--- source/Plugins/Process/Linux/ProcessMonitor.cpp
+++ source/Plugins/Process/Linux/ProcessMonitor.cpp
@@ -1788,6 +1788,12 @@
     default:
         assert(false && "unexpected si_code for SIGSEGV");
         break;
+    case SI_KERNEL:
+        // Linux will occasionally send spurious SI_KERNEL codes.
+        // (this is poorly documented in sigaction)
+        // One way to get this is via unaligned SIMD loads.
+        reason = ProcessMessage::eInvalidAddress; // for lack of anything better
+        break;
     case SEGV_MAPERR:
         reason = ProcessMessage::eInvalidAddress;
         break;
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to