diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2015-11-26 09:49:04 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2015-11-26 10:50:08 -0500 |
commit | 79efa585c51f0657b319beb1e213d5721eaacdcc (patch) | |
tree | 9aad1092fe7553087c7cffb036422864870f6c56 /gdb/linux-nat.c | |
parent | 73ede76585a987a07fbd67a7474b193e4ca05517 (diff) | |
download | gdb-79efa585c51f0657b319beb1e213d5721eaacdcc.zip gdb-79efa585c51f0657b319beb1e213d5721eaacdcc.tar.gz gdb-79efa585c51f0657b319beb1e213d5721eaacdcc.tar.bz2 |
Display names of remote threads
This patch adds support for thread names in the remote protocol, and
updates gdb/gdbserver to use it. The information is added to the XML
description sent in response to the qXfer:threads:read packet.
gdb/ChangeLog:
* linux-nat.c (linux_nat_thread_name): Replace implementation by call
to linux_proc_tid_get_name.
* nat/linux-procfs.c (linux_proc_tid_get_name): New function,
implementation inspired by linux_nat_thread_name.
* nat/linux-procfs.h (linux_proc_tid_get_name): New declaration.
* remote.c (struct private_thread_info) <name>: New field.
(free_private_thread_info): Free name field.
(remote_thread_name): New function.
(thread_item_t) <name>: New field.
(clear_threads_listing_context): Free name field.
(start_thread): Get name xml attribute.
(thread_attributes): Add "name" attribute.
(remote_update_thread_list): Copy name field.
(init_remote_ops): Assign remote_thread_name callback.
* target.h (target_thread_name): Update comment.
* NEWS: Mention remote thread name support.
gdb/gdbserver/ChangeLog:
* linux-low.c (linux_target_ops): Use linux_proc_tid_get_name.
* server.c (handle_qxfer_threads_worker): Refactor to include thread
name in reply.
* target.h (struct target_ops) <thread_name>: New field.
(target_thread_name): New macro.
gdb/doc/ChangeLog:
* gdb.texinfo (Thread List Format): Mention thread names.
Diffstat (limited to 'gdb/linux-nat.c')
-rw-r--r-- | gdb/linux-nat.c | 33 |
1 files changed, 1 insertions, 32 deletions
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 2421687..9bc1324 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -4100,38 +4100,7 @@ linux_nat_pid_to_str (struct target_ops *ops, ptid_t ptid) static const char * linux_nat_thread_name (struct target_ops *self, struct thread_info *thr) { - int pid = ptid_get_pid (thr->ptid); - long lwp = ptid_get_lwp (thr->ptid); -#define FORMAT "/proc/%d/task/%ld/comm" - char buf[sizeof (FORMAT) + 30]; - FILE *comm_file; - char *result = NULL; - - snprintf (buf, sizeof (buf), FORMAT, pid, lwp); - comm_file = gdb_fopen_cloexec (buf, "r"); - if (comm_file) - { - /* Not exported by the kernel, so we define it here. */ -#define COMM_LEN 16 - static char line[COMM_LEN + 1]; - - if (fgets (line, sizeof (line), comm_file)) - { - char *nl = strchr (line, '\n'); - - if (nl) - *nl = '\0'; - if (*line != '\0') - result = line; - } - - fclose (comm_file); - } - -#undef COMM_LEN -#undef FORMAT - - return result; + return linux_proc_tid_get_name (thr->ptid); } /* Accepts an integer PID; Returns a string representing a file that |