Pass SIGLIBRT directly to child processes.
FreeBSD's librt uses SIGLIBRT as an internal signal to implement SIGEV_THREAD sigevent notifications. Similar to SIGLWP or SIGCANCEL this signal should be passed through to child processes by default. include/ChangeLog: * signals.def: Add GDB_SIGNAL_LIBRT. gdb/ChangeLog: * common/signals.c (gdb_signal_from_host): Handle SIGLIBRT. (do_gdb_signal_to_host): Likewise. * infrun.c (_initialize_infrun): Pass GDB_SIGNAL_LIBRT through to programs. * proc-events.c (signal_table): Add entry for SIGLIBRT.
This commit is contained in:
parent
f7e8b360fe
commit
bc7b765ab7
6 changed files with 28 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
|||
2016-07-15 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* common/signals.c (gdb_signal_from_host): Handle SIGLIBRT.
|
||||
(do_gdb_signal_to_host): Likewise.
|
||||
* infrun.c (_initialize_infrun): Pass GDB_SIGNAL_LIBRT through to
|
||||
programs.
|
||||
* proc-events.c (signal_table): Add entry for SIGLIBRT.
|
||||
|
||||
2016-07-14 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* python/py-breakpoint.c (gdbpy_breakpoint_deleted): Add missing
|
||||
|
|
|
@ -331,6 +331,10 @@ gdb_signal_from_host (int hostsig)
|
|||
if (hostsig == SIGINFO)
|
||||
return GDB_SIGNAL_INFO;
|
||||
#endif
|
||||
#if defined (SIGLIBRT)
|
||||
if (hostsig == SIGLIBRT)
|
||||
return GDB_SIGNAL_LIBRT;
|
||||
#endif
|
||||
|
||||
#if defined (REALTIME_LO)
|
||||
if (hostsig >= REALTIME_LO && hostsig < REALTIME_HI)
|
||||
|
@ -584,6 +588,10 @@ do_gdb_signal_to_host (enum gdb_signal oursig,
|
|||
case GDB_SIGNAL_INFO:
|
||||
return SIGINFO;
|
||||
#endif
|
||||
#if defined (SIGLIBRT)
|
||||
case GDB_SIGNAL_LIBRT:
|
||||
return SIGLIBRT;
|
||||
#endif
|
||||
|
||||
default:
|
||||
#if defined (REALTIME_LO)
|
||||
|
|
|
@ -9409,6 +9409,8 @@ leave it stopped or free to run as needed."),
|
|||
signal_print[GDB_SIGNAL_WAITING] = 0;
|
||||
signal_stop[GDB_SIGNAL_CANCEL] = 0;
|
||||
signal_print[GDB_SIGNAL_CANCEL] = 0;
|
||||
signal_stop[GDB_SIGNAL_LIBRT] = 0;
|
||||
signal_print[GDB_SIGNAL_LIBRT] = 0;
|
||||
|
||||
/* Update cached state. */
|
||||
signal_cache_update (-1);
|
||||
|
|
|
@ -1536,6 +1536,9 @@ static struct trans signal_table[] =
|
|||
#ifdef SIGAIO
|
||||
{ SIGAIO, "SIGAIO", "Asynchronous I/O signal" },
|
||||
#endif
|
||||
#ifdef SIGLIBRT
|
||||
{ SIGLIBRT, "SIGLIBRT", "Used by librt" },
|
||||
#endif
|
||||
|
||||
/* FIXME: add real-time signals. */
|
||||
};
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2016-07-15 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* signals.def: Add GDB_SIGNAL_LIBRT.
|
||||
|
||||
2016-01-06 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* remote-sim.h (sim_open): Mark argv const.
|
||||
|
|
|
@ -194,7 +194,9 @@ SET (GDB_EXC_EMULATION, 148, "EXC_EMULATION", "Emulation instruction")
|
|||
SET (GDB_EXC_SOFTWARE, 149, "EXC_SOFTWARE", "Software generated exception")
|
||||
SET (GDB_EXC_BREAKPOINT, 150, "EXC_BREAKPOINT", "Breakpoint")
|
||||
|
||||
SET (GDB_SIGNAL_LIBRT, 151, "SIGLIBRT", "librt internal signal")
|
||||
|
||||
/* If you are adding a new signal, add it just above this comment. */
|
||||
|
||||
/* Last and unused enum value, for sizing arrays, etc. */
|
||||
SET (GDB_SIGNAL_LAST, 151, NULL, "GDB_SIGNAL_LAST")
|
||||
SET (GDB_SIGNAL_LAST, 152, NULL, "GDB_SIGNAL_LAST")
|
||||
|
|
Loading…
Reference in a new issue