[Lldb-commits] [PATCH] D91007: [lldb] [Process/FreeBSDRemote] Fix handling user-generated SIGTRAP
Michał Górny via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Sat Nov 7 09:57:03 PST 2020
mgorny created this revision.
mgorny added reviewers: labath, emaste, krytarowski.
mgorny requested review of this revision.
Update the SIGTRAP handler to account for the possibility of SIGTRAP
being generated by the user, i.e. not having any specific debugging
event associated with it. These instances of SIGTRAP are passed
to the regular signal handler.
https://reviews.llvm.org/D91007
Files:
lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp
lldb/test/API/functionalities/signal/raise/TestRaise.py
Index: lldb/test/API/functionalities/signal/raise/TestRaise.py
===================================================================
--- lldb/test/API/functionalities/signal/raise/TestRaise.py
+++ lldb/test/API/functionalities/signal/raise/TestRaise.py
@@ -30,7 +30,6 @@
self.signal_test('SIGRTMIN', True)
@skipIfNetBSD # Hangs on NetBSD
- @skipIfFreeBSD # hangs
def test_sigtrap(self):
self.build()
self.signal_test('SIGTRAP', True)
Index: lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp
===================================================================
--- lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp
+++ lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp
@@ -192,7 +192,8 @@
}
assert(info.pl_event == PL_EVENT_SIGNAL);
- LLDB_LOG(log, "got SIGTRAP, pid = {0}, lwpid = {1}", pid, info.pl_lwpid);
+ LLDB_LOG(log, "got SIGTRAP, pid = {0}, lwpid = {1}, flags = {2:x}",
+ pid, info.pl_lwpid, info.pl_flags);
NativeThreadFreeBSD *thread = nullptr;
if (info.pl_flags & (PL_FLAG_BORN | PL_FLAG_EXITED)) {
@@ -240,6 +241,8 @@
if (info.pl_flags & PL_FLAG_SI) {
assert(info.pl_siginfo.si_signo == SIGTRAP);
+ LLDB_LOG(log, "SIGTRAP siginfo: si_code = {0}, pid = {1}",
+ info.pl_siginfo.si_code, info.pl_siginfo.si_pid);
switch (info.pl_siginfo.si_code) {
case TRAP_BRKPT:
@@ -273,6 +276,11 @@
SetState(StateType::eStateStopped, true);
break;
+ case SI_USER:
+ case SI_LWP:
+ // User-generated SIGTRAP
+ MonitorSignal(pid, SIGTRAP);
+ break;
}
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D91007.303652.patch
Type: text/x-patch
Size: 1652 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20201107/27b0330c/attachment-0001.bin>
More information about the lldb-commits
mailing list