Hi ki.stfu, clayborg,
This revision fixes a problem where lldb-mi would not stop the execution after
exec-interrupt call.
On Linux, SIGSTOP is used to stop the debuggee process. LLDB stopped the
debuggee alright. But when
lldb-mi received the notification of stopping with reason as SIGSTOP, it would
resume the process.
This was heppening in
CMICmnLLDBDebuggerHandleEvents::HandleProcessEventStopSignal. This function aslo
used hard coded numbers for signal istead of symbolic names.
This revision changes code to treat SIGSTOP reason as SIGINT. Also used
symbolic names for signals
instead of numbers.
http://reviews.llvm.org/D7783
Files:
tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp
Index: tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp
===================================================================
--- tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp
+++ tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp
@@ -836,7 +836,8 @@
const MIuint64 nStopReason =
sbProcess.GetSelectedThread().GetStopReasonDataAtIndex(0);
switch (nStopReason)
{
- case 2: // Terminal interrupt signal. SIGINT
+ case SIGINT: // Terminal interrupt signal. SIGINT
+ case SIGSTOP:
{
// MI print
"*stopped,reason=\"signal-received\",signal-name=\"SIGNINT\",signal-meaning=\"Interrupt\",frame={%s}"
const CMICmnMIValueConst miValueConst("signal-received");
@@ -856,7 +857,7 @@
bOk = bOk && TextToStdout("(gdb)");
}
break;
- case 11: // Invalid memory reference. SIGSEGV
+ case SIGSEGV: // Invalid memory reference. SIGSEGV
{
// MI print
"*stopped,reason=\"signal-received\",signal-name=\"SIGSEGV\",signal-meaning=\"Segmentation
// fault\",thread-id=\"%d\",frame={%s}"
@@ -881,11 +882,7 @@
// Note no "(gdb)" output here
}
break;
- case 19:
- if (sbProcess.IsValid())
- sbProcess.Continue();
- break;
- case 5: // Trace/breakpoint trap. SIGTRAP
+ case SIGTRAP: // Trace/breakpoint trap. SIGTRAP
{
lldb::SBThread thread = sbProcess.GetSelectedThread();
const MIuint nFrames = thread.GetNumFrames();
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
Index: tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp
===================================================================
--- tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp
+++ tools/lldb-mi/MICmnLLDBDebuggerHandleEvents.cpp
@@ -836,7 +836,8 @@
const MIuint64 nStopReason = sbProcess.GetSelectedThread().GetStopReasonDataAtIndex(0);
switch (nStopReason)
{
- case 2: // Terminal interrupt signal. SIGINT
+ case SIGINT: // Terminal interrupt signal. SIGINT
+ case SIGSTOP:
{
// MI print "*stopped,reason=\"signal-received\",signal-name=\"SIGNINT\",signal-meaning=\"Interrupt\",frame={%s}"
const CMICmnMIValueConst miValueConst("signal-received");
@@ -856,7 +857,7 @@
bOk = bOk && TextToStdout("(gdb)");
}
break;
- case 11: // Invalid memory reference. SIGSEGV
+ case SIGSEGV: // Invalid memory reference. SIGSEGV
{
// MI print "*stopped,reason=\"signal-received\",signal-name=\"SIGSEGV\",signal-meaning=\"Segmentation
// fault\",thread-id=\"%d\",frame={%s}"
@@ -881,11 +882,7 @@
// Note no "(gdb)" output here
}
break;
- case 19:
- if (sbProcess.IsValid())
- sbProcess.Continue();
- break;
- case 5: // Trace/breakpoint trap. SIGTRAP
+ case SIGTRAP: // Trace/breakpoint trap. SIGTRAP
{
lldb::SBThread thread = sbProcess.GetSelectedThread();
const MIuint nFrames = thread.GetNumFrames();
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits