aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2011-05-10 16:53:23 +0000
committerDoug Evans <dje@google.com>2011-05-10 16:53:23 +0000
commit84e578fbe67910f19ed0bbbc4e8aebd0f87c462a (patch)
tree913caccda7e412c55dba0287b11d7a797d54f7b0
parent7e665af3af6fdf33dfcbecaa95ccdaa34b285008 (diff)
downloadgdb-84e578fbe67910f19ed0bbbc4e8aebd0f87c462a.zip
gdb-84e578fbe67910f19ed0bbbc4e8aebd0f87c462a.tar.gz
gdb-84e578fbe67910f19ed0bbbc4e8aebd0f87c462a.tar.bz2
* linux-thread-db.c (set_libthread_db_search_path): New function.
(_initialize_thread_db): Add setter for libthread-db-search-path. gdbserver/ * thread-db.c (thread_db_handle_monitor_command): Handle elided path. doc/ * gdb.texinfo (Threads): If an empty path is provided for libthread-db-search-path it is reset to its default value. (Server): Ditto.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/doc/ChangeLog6
-rw-r--r--gdb/doc/gdb.texinfo4
-rw-r--r--gdb/gdbserver/ChangeLog4
-rw-r--r--gdb/gdbserver/thread-db.c11
-rw-r--r--gdb/linux-thread-db.c17
6 files changed, 41 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6a130b6..4cf559c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2011-05-10 Doug Evans <dje@google.com>
+
+ * linux-thread-db.c (set_libthread_db_search_path): New function.
+ (_initialize_thread_db): Add setter for libthread-db-search-path.
+
2011-05-09 Doug Evans <dje@google.com>
* NEWS: Mention --with-iconv-bin.
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index e9990c2..0dd6806 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-10 Doug Evans <dje@google.com>
+
+ * gdb.texinfo (Threads): If an empty path is provided for
+ libthread-db-search-path it is reset to its default value.
+ (Server): Ditto.
+
2011-05-09 Doug Evans <dje@google.com>
* gdb.texinfo (Requirements): Fix typo. Mention --with-iconv-bin.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 65172b5..9ccc48a 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -2855,7 +2855,7 @@ watchpoints in programs with multiple threads.
If this variable is set, @var{path} is a colon-separated list of
directories @value{GDBN} will use to search for @code{libthread_db}.
If you omit @var{path}, @samp{libthread-db-search-path} will be reset to
-an empty list.
+its default value.
On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper''
@code{libthread_db} library to obtain information about threads in the
@@ -16369,7 +16369,7 @@ protocol (@pxref{Remote Protocol}).
When this command is issued, @var{path} is a colon-separated list of
directories to search for @code{libthread_db} (@pxref{Threads,,set
libthread-db-search-path}). If you omit @var{path},
-@samp{libthread-db-search-path} will be reset to an empty list.
+@samp{libthread-db-search-path} will be reset to its default value.
@item monitor exit
Tell gdbserver to exit immediately. This command should be followed by
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index a29ee23..bea804d 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,7 @@
+2011-05-10 Doug Evans <dje@google.com>
+
+ * thread-db.c (thread_db_handle_monitor_command): Handle elided path.
+
2011-05-04 Doug Evans <dje@google.com>
* linux-low.c (linux_join): Skip process lookup.
diff --git a/gdb/gdbserver/thread-db.c b/gdb/gdbserver/thread-db.c
index 529516e..872151e 100644
--- a/gdb/gdbserver/thread-db.c
+++ b/gdb/gdbserver/thread-db.c
@@ -916,9 +916,14 @@ thread_db_mourn (struct process_info *proc)
int
thread_db_handle_monitor_command (char *mon)
{
- if (strncmp (mon, "set libthread-db-search-path ", 29) == 0)
+ const char *cmd = "set libthread-db-search-path";
+ size_t cmd_len = strlen (cmd);
+
+ if (strncmp (mon, cmd, cmd_len) == 0
+ && (mon[cmd_len] == '\0'
+ || mon[cmd_len] == ' '))
{
- const char *cp = mon + 29;
+ const char *cp = mon + cmd_len;
if (libthread_db_search_path != NULL)
free (libthread_db_search_path);
@@ -927,6 +932,8 @@ thread_db_handle_monitor_command (char *mon)
while (isspace (*cp))
++cp;
+ if (*cp == '\0')
+ cp = LIBTHREAD_DB_SEARCH_PATH;
libthread_db_search_path = xstrdup (cp);
monitor_output ("libthread-db-search-path set to `");
diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
index 2700a65..4203518 100644
--- a/gdb/linux-thread-db.c
+++ b/gdb/linux-thread-db.c
@@ -75,6 +75,17 @@
static char *libthread_db_search_path;
+static void
+set_libthread_db_search_path (char *ignored, int from_tty,
+ struct cmd_list_element *c)
+{
+ if (*libthread_db_search_path == '\0')
+ {
+ xfree (libthread_db_search_path);
+ libthread_db_search_path = xstrdup (LIBTHREAD_DB_SEARCH_PATH);
+ }
+}
+
/* If non-zero, print details of libthread_db processing. */
static int libthread_db_debug;
@@ -1719,8 +1730,10 @@ _initialize_thread_db (void)
Set search path for libthread_db."), _("\
Show the current search path or libthread_db."), _("\
This path is used to search for libthread_db to be loaded into \
-gdb itself."),
- NULL,
+gdb itself.\n\
+Its value is a colon (':') separate list of directories to search.\n\
+Setting the search path to an empty list resets it to its default value."),
+ set_libthread_db_search_path,
NULL,
&setlist, &showlist);