--- gdb/common/signals.c.orig 2013-01-01 07:32:54.000000000 +0100 +++ gdb/common/signals.c 2013-11-25 16:12:56.000000000 +0100 @@ -46,6 +46,12 @@ # endif #endif +#ifdef __FreeBSD__ +# ifndef SIGLIBRT +# define SIGLIBRT 33 /* Older versions do not define the constant */ +# endif +#endif + /* This table must match in order and size the signals in enum gdb_signal. */ @@ -334,6 +340,11 @@ return GDB_SIGNAL_INFO; #endif +#if defined (SIGLIBRT) + if ( hostsig == SIGLIBRT ) + return GDB_SIGNAL_FBSD_LIBRT; +#endif + #if defined (REALTIME_LO) if (hostsig >= REALTIME_LO && hostsig < REALTIME_HI) { @@ -591,6 +602,11 @@ return SIGINFO; #endif +#if defined (SIGLIBRT) + case GDB_SIGNAL_FBSD_LIBRT: + return SIGLIBRT; +#endif + default: #if defined (REALTIME_LO) retsig = 0; --- gdb/infrun.c.orig 2013-08-30 17:58:55.000000000 +0200 +++ gdb/infrun.c 2013-11-22 16:12:58.000000000 +0100 @@ -7291,6 +7291,8 @@ signal_print[GDB_SIGNAL_WINCH] = 0; signal_stop[GDB_SIGNAL_PRIO] = 0; signal_print[GDB_SIGNAL_PRIO] = 0; + signal_stop[GDB_SIGNAL_FBSD_LIBRT] = 0; + signal_print[GDB_SIGNAL_FBSD_LIBRT] = 0; /* These signals are used internally by user-level thread implementations. (See signal(5) on Solaris.) Like the above --- include/gdb/signals.def.orig 2013-01-01 07:41:30.000000000 +0100 +++ include/gdb/signals.def 2013-11-25 16:13:42.000000000 +0100 @@ -197,4 +197,5 @@ /* 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_MAGIC") +SET (GDB_SIGNAL_FBSD_LIBRT, 151, "SIGLIBRT", "GDB_SIGNAL_FBSD_LIBRT") +SET (GDB_SIGNAL_LAST, 152, NULL, "GDB_SIGNAL_MAGIC")