summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2018-03-03 21:25:33 -0800
committerJohn Baldwin <jhb@FreeBSD.org>2018-03-03 21:25:33 -0800
commit386a86761838df16c1459275d465ed21a1c35d9f (patch)
tree5b24b643b0ad42b806439d31fe7977eba55cb6f7
parent12279366d71627bfbdd74d1a6675dca825d8feca (diff)
downloadbinutils-gdb-386a86761838df16c1459275d465ed21a1c35d9f.tar.gz
Add a new debug knob for the FreeBSD native target.
For now this just logs information about the state of the current LWP for each STOPPED event in fbsd_wait(). gdb/ChangeLog: * NEWS (Changes since GDB 8.1): Add "set/show debug fbsd-nat". * fbsd-nat.c (debug_fbsd_nat): New variable. (show_fbsd_nat_debug): New function. (fbsd_wait): Log LWP info if "debug_fbsd_nat" is enabled. (_initialize_fbsd_nat): Add "fbsd-nat" debug boolean command. gdb/doc/ChangeLog: * gdb.texinfo (Debugging Output): Document "set/show debug fbsd-nat".
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/NEWS6
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/gdb.texinfo5
-rw-r--r--gdb/fbsd-nat.c29
5 files changed, 53 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f5484617676..9a12a5e08fb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2018-03-04 John Baldwin <jhb@FreeBSD.org>
+ * NEWS (Changes since GDB 8.1): Add "set/show debug fbsd-nat".
+ * fbsd-nat.c (debug_fbsd_nat): New variable.
+ (show_fbsd_nat_debug): New function.
+ (fbsd_wait): Log LWP info if "debug_fbsd_nat" is enabled.
+ (_initialize_fbsd_nat): Add "fbsd-nat" debug boolean command.
+
+2018-03-04 John Baldwin <jhb@FreeBSD.org>
+
* nat/x86-dregs.c (x86_dr_stopped_by_hw_breakpoint): New function.
* nat/x86-dregs.h (x86_dr_stopped_by_hw_breakpoint): New
prototype.
diff --git a/gdb/NEWS b/gdb/NEWS
index 1767cef920a..867e268a2a8 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -6,6 +6,12 @@
* 'info proc' now works on running processes on FreeBSD systems and core
files created on FreeBSD systems.
+* New commands
+
+set debug fbsd-nat
+show debug fbsd-nat
+ Control display of debugging info regarding the FreeBSD native target.
+
*** Changes in GDB 8.1
* GDB now supports dynamically creating arbitrary register groups specified
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 037173ce0ab..dca13c67b48 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-04 John Baldwin <jhb@FreeBSD.org>
+
+ * gdb.texinfo (Debugging Output): Document "set/show debug
+ fbsd-nat".
+
2018-02-19 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.texinfo (Machine Code): Additional information about "info
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index ee7adc8df22..74e0fdb4a4d 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -24554,6 +24554,11 @@ Displays the current state of displaying debugging info about
Turns on or off debugging messages from the FreeBSD LWP debug support.
@item show debug fbsd-lwp
Show the current state of FreeBSD LWP debugging messages.
+@item set debug fbsd-nat
+@cindex FreeBSD native target debug messages
+Turns on or off debugging messages from the FreeBSD native target.
+@item show debug fbsd-nat
+Show the current state of FreeBSD native target debugging messages.
@item set debug frame
@cindex frame debugging info
Turns on or off display of @value{GDBN} frame debugging info. The
diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
index 3a216abf186..2516ac55529 100644
--- a/gdb/fbsd-nat.c
+++ b/gdb/fbsd-nat.c
@@ -765,6 +765,7 @@ fbsd_xfer_partial (struct target_ops *ops, enum target_object object,
#ifdef PT_LWPINFO
static int debug_fbsd_lwp;
+static int debug_fbsd_nat;
static void (*super_resume) (struct target_ops *,
ptid_t,
@@ -782,6 +783,14 @@ show_fbsd_lwp_debug (struct ui_file *file, int from_tty,
fprintf_filtered (file, _("Debugging of FreeBSD lwp module is %s.\n"), value);
}
+static void
+show_fbsd_nat_debug (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c, const char *value)
+{
+ fprintf_filtered (file, _("Debugging of FreeBSD native target is %s.\n"),
+ value);
+}
+
/*
FreeBSD's first thread support was via a "reentrant" version of libc
(libc_r) that first shipped in 2.2.7. This library multiplexed all
@@ -1212,6 +1221,18 @@ fbsd_wait (struct target_ops *ops,
wptid = ptid_build (pid, pl.pl_lwpid, 0);
+ if (debug_fbsd_nat)
+ {
+ fprintf_unfiltered (gdb_stdlog,
+ "FNAT: stop for LWP %u event %d flags %#x\n",
+ pl.pl_lwpid, pl.pl_event, pl.pl_flags);
+ if (pl.pl_flags & PL_FLAG_SI)
+ fprintf_unfiltered (gdb_stdlog,
+ "FNAT: si_signo %u si_code %u\n",
+ pl.pl_siginfo.si_signo,
+ pl.pl_siginfo.si_code);
+ }
+
#ifdef PT_LWP_EVENTS
if (pl.pl_flags & PL_FLAG_EXITED)
{
@@ -1569,5 +1590,13 @@ Enables printf debugging output."),
NULL,
&show_fbsd_lwp_debug,
&setdebuglist, &showdebuglist);
+ add_setshow_boolean_cmd ("fbsd-nat", class_maintenance,
+ &debug_fbsd_nat, _("\
+Set debugging of FreeBSD native target."), _("\
+Show debugging of FreeBSD native target."), _("\
+Enables printf debugging output."),
+ NULL,
+ &show_fbsd_nat_debug,
+ &setdebuglist, &showdebuglist);
#endif
}