forked from Imagelibrary/binutils-gdb
gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML
GDB prints the target id of a thread in various places such as the output of the "info threads" command in the "Target Id" column or when switching to a thread. A target can define what to print for a given ptid by overriding the `pid_to_str` method. The remote target is a gateway behind which one of many various targets could be running. The remote target converts a given ptid to a string in a uniform way, without consulting the low target at the server-side. In this patch we introduce a new attribute in the XML that is sent in response to the "qXfer:threads:read" RSP packet, so that a low target at the server side, if it wishes, can specify what to print as the target id of a thread. Note that the existing "name" attribute or the "extra" text provided in the XML are not sufficient for the server-side low target to achieve the goal. Those attributes, when present, are simply appended to the target id by GDB. Reviewed-By: Eli Zaretskii <eliz@gnu.org> Reviewed-By: Thiago Jung Bauermann <thiago.bauermann@linaro.org> Approved-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
@@ -1981,6 +1981,7 @@ handle_qxfer_threads_worker (thread_info *thread, std::string *buffer)
|
||||
int core = target_core_of_thread (ptid);
|
||||
char core_s[21];
|
||||
const char *name = target_thread_name (ptid);
|
||||
std::string id_str = target_thread_id_str (thread);
|
||||
int handle_len;
|
||||
gdb_byte *handle;
|
||||
bool handle_status = target_thread_handle (ptid, &handle, &handle_len);
|
||||
@@ -2005,6 +2006,9 @@ handle_qxfer_threads_worker (thread_info *thread, std::string *buffer)
|
||||
if (name != NULL)
|
||||
string_xml_appendf (*buffer, " name=\"%s\"", name);
|
||||
|
||||
if (!id_str.empty ())
|
||||
string_xml_appendf (*buffer, " id_str=\"%s\"", id_str.c_str ());
|
||||
|
||||
if (handle_status)
|
||||
{
|
||||
char *handle_s = (char *) alloca (handle_len * 2 + 1);
|
||||
|
||||
Reference in New Issue
Block a user