* [PATCH 1/2] doc: add the missing 'handle' attribute in xml @ 2024-04-02 10:20 Tankut Baris Aktemur 2024-04-02 10:20 ` [PATCH 2/2] gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML Tankut Baris Aktemur 2024-04-02 12:14 ` [PATCH 1/2] doc: add the missing 'handle' attribute in xml Eli Zaretskii 0 siblings, 2 replies; 6+ messages in thread From: Tankut Baris Aktemur @ 2024-04-02 10:20 UTC (permalink / raw) To: gdb-patches The XML response to the "qXfer:threads:read" packet may include a "handle" attribute. The attribute is mentioned in the document but not shown in the sample XML structure. Add it. --- gdb/doc/gdb.texinfo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 727f9275bfb..41a368a0194 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -48081,7 +48081,7 @@ the following structure: @smallexample <?xml version="1.0"?> <threads> - <thread id="id" core="0" name="name"> + <thread id="id" core="0" name="name" handle="XX..."> ... description ... </thread> </threads> -- 2.34.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de> Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML 2024-04-02 10:20 [PATCH 1/2] doc: add the missing 'handle' attribute in xml Tankut Baris Aktemur @ 2024-04-02 10:20 ` Tankut Baris Aktemur 2024-04-02 12:19 ` Eli Zaretskii 2024-04-03 14:57 ` [PATCH v2] " Tankut Baris Aktemur 2024-04-02 12:14 ` [PATCH 1/2] doc: add the missing 'handle' attribute in xml Eli Zaretskii 1 sibling, 2 replies; 6+ messages in thread From: Tankut Baris Aktemur @ 2024-04-02 10:20 UTC (permalink / raw) To: gdb-patches 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. --- gdb/NEWS | 9 +++++++++ gdb/doc/gdb.texinfo | 7 +++++-- gdb/remote.c | 26 +++++++++++++++++++++++++- gdbserver/server.cc | 4 ++++ gdbserver/target.cc | 6 ++++++ gdbserver/target.h | 13 +++++++++++++ 6 files changed, 62 insertions(+), 3 deletions(-) diff --git a/gdb/NEWS b/gdb/NEWS index feb3a37393a..2a0b08887a1 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -192,6 +192,15 @@ QThreadOptions in qSupported QThreadOptions packet, and the qSupported response can contain the set of thread options the remote stub supports. +* Changed remote packets + +qXfer:threads:read + + The XML that is sent as a response can now include an "id_str" + attribute for a thread element. The attribute indicates what GDB + should print as the target ID of the thread, for example in the + "info threads" command or when switching to the thread. + *** Changes in GDB 14 * GDB now supports the AArch64 Scalable Matrix Extension 2 (SME2), which diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 41a368a0194..42ddd8ca8d5 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -48081,7 +48081,7 @@ the following structure: @smallexample <?xml version="1.0"?> <threads> - <thread id="id" core="0" name="name" handle="XX..."> + <thread id="id" core="0" name="name" id_str="..." handle="XX..."> ... description ... </thread> </threads> @@ -48093,7 +48093,10 @@ identifies the thread (@pxref{thread-id syntax}). The the thread was last executing on. The @samp{name} attribute, if present, specifies the human-readable name of the thread. The content of the of @samp{thread} element is interpreted as human-readable -auxiliary information. The @samp{handle} attribute, if present, +auxiliary information. The @samp{id_str} attribute, if present, +specifies what @value{GDBN} should print as the target ID of the +thread (e.g.@: in the @samp{info threads} command or when switching +to the thread). The @samp{handle} attribute, if present, is a hex encoded representation of the thread handle. diff --git a/gdb/remote.c b/gdb/remote.c index e278711df7b..e09a0c56eb3 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1537,6 +1537,12 @@ struct remote_thread_info : public private_thread_info std::string name; int core = -1; + /* The string representation for the thread's id. + + The target specifies this if they want to display the thread id + in a specific way. If empty, the default approach is used. */ + std::string id_str; + /* Thread handle, perhaps a pthread_t or thread_t value, stored as a sequence of bytes. */ gdb::byte_vector thread_handle; @@ -3951,6 +3957,9 @@ struct thread_item /* The thread's name. */ std::string name; + /* The thread's id, translated to a string for displaying. */ + std::string id_str; + /* The core the thread was running on. -1 if not known. */ int core = -1; @@ -4077,6 +4086,10 @@ start_thread (struct gdb_xml_parser *parser, if (attr != NULL) item.name = (const char *) attr->value.get (); + attr = xml_find_attribute (attributes, "id_str"); + if (attr != nullptr) + item.id_str = (const char *) attr->value.get (); + attr = xml_find_attribute (attributes, "handle"); if (attr != NULL) item.thread_handle = hex2bin ((const char *) attr->value.get ()); @@ -4098,6 +4111,7 @@ const struct gdb_xml_attribute thread_attributes[] = { { "id", GDB_XML_AF_NONE, NULL, NULL }, { "core", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL }, { "name", GDB_XML_AF_OPTIONAL, NULL, NULL }, + { "id_str", GDB_XML_AF_OPTIONAL, NULL, NULL }, { "handle", GDB_XML_AF_OPTIONAL, NULL, NULL }, { NULL, GDB_XML_AF_NONE, NULL, NULL } }; @@ -4282,6 +4296,7 @@ remote_target::update_thread_list () info->core = item.core; info->extra = std::move (item.extra); info->name = std::move (item.name); + info->id_str = std::move (item.id_str); info->thread_handle = std::move (item.thread_handle); } } @@ -12228,7 +12243,16 @@ remote_target::pid_to_str (ptid_t ptid) { if (magic_null_ptid == ptid) return "Thread <main>"; - else if (m_features.remote_multi_process_p ()) + + thread_info *thread = this->find_thread (ptid); + if ((thread != nullptr) && (thread->priv != nullptr)) + { + remote_thread_info *priv = get_remote_thread_info (thread); + if (!priv->id_str.empty ()) + return priv->id_str.c_str (); + } + + if (m_features.remote_multi_process_p ()) if (ptid.lwp () == 0) return normal_pid_to_str (ptid); else diff --git a/gdbserver/server.cc b/gdbserver/server.cc index c7d5cc1c1b0..018fbc04076 100644 --- a/gdbserver/server.cc +++ b/gdbserver/server.cc @@ -1994,6 +1994,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); @@ -2018,6 +2019,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); diff --git a/gdbserver/target.cc b/gdbserver/target.cc index 6db32da2e95..a26e1599975 100644 --- a/gdbserver/target.cc +++ b/gdbserver/target.cc @@ -807,6 +807,12 @@ process_stratum_target::thread_name (ptid_t thread) return nullptr; } +std::string +process_stratum_target::thread_id_str (thread_info *thread) +{ + return ""; +} + bool process_stratum_target::thread_handle (ptid_t ptid, gdb_byte **handle, int *handle_len) diff --git a/gdbserver/target.h b/gdbserver/target.h index 3643b9110da..a46b3fa47ff 100644 --- a/gdbserver/target.h +++ b/gdbserver/target.h @@ -475,6 +475,13 @@ class process_stratum_target caller. */ virtual const char *thread_name (ptid_t thread); + /* Return the string translation for THREAD's id. This gives the + target a chance to completely re-interpret the thread id and + present a target-specific description for displaying to the user. + Return empty if the target is fine with how an id is displayed + by default. */ + virtual std::string thread_id_str (thread_info *thread); + /* Thread ID to (numeric) thread handle: Return true on success and false for failure. Return pointer to thread handle via HANDLE and the handle's length via HANDLE_LEN. */ @@ -735,4 +742,10 @@ bool set_desired_process (); std::string target_pid_to_str (ptid_t); +static inline std::string +target_thread_id_str (thread_info *thread) +{ + return the_target->thread_id_str (thread); +} + #endif /* GDBSERVER_TARGET_H */ -- 2.34.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de> Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML 2024-04-02 10:20 ` [PATCH 2/2] gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML Tankut Baris Aktemur @ 2024-04-02 12:19 ` Eli Zaretskii 2024-04-03 14:57 ` [PATCH v2] " Tankut Baris Aktemur 1 sibling, 0 replies; 6+ messages in thread From: Eli Zaretskii @ 2024-04-02 12:19 UTC (permalink / raw) To: Tankut Baris Aktemur; +Cc: gdb-patches > From: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> > Date: Tue, 2 Apr 2024 12:20:20 +0200 > > 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. > --- > gdb/NEWS | 9 +++++++++ > gdb/doc/gdb.texinfo | 7 +++++-- > gdb/remote.c | 26 +++++++++++++++++++++++++- > gdbserver/server.cc | 4 ++++ > gdbserver/target.cc | 6 ++++++ > gdbserver/target.h | 13 +++++++++++++ > 6 files changed, 62 insertions(+), 3 deletions(-) Thanks, the documentation parts are OK, with the following minor nit: > --- a/gdb/doc/gdb.texinfo > +++ b/gdb/doc/gdb.texinfo > @@ -48081,7 +48081,7 @@ the following structure: > @smallexample > <?xml version="1.0"?> > <threads> > - <thread id="id" core="0" name="name" handle="XX..."> > + <thread id="id" core="0" name="name" id_str="..." handle="XX..."> > ... description ... > </thread> > </threads> Please replace the ellipsis with an example of a real-life value. Reviewed-By: Eli Zaretskii <eliz@gnu.org> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2] gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML 2024-04-02 10:20 ` [PATCH 2/2] gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML Tankut Baris Aktemur 2024-04-02 12:19 ` Eli Zaretskii @ 2024-04-03 14:57 ` Tankut Baris Aktemur 1 sibling, 0 replies; 6+ messages in thread From: Tankut Baris Aktemur @ 2024-04-03 14:57 UTC (permalink / raw) To: gdb-patches 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> --- gdb/NEWS | 9 +++++++++ gdb/doc/gdb.texinfo | 7 +++++-- gdb/remote.c | 26 +++++++++++++++++++++++++- gdbserver/server.cc | 4 ++++ gdbserver/target.cc | 6 ++++++ gdbserver/target.h | 13 +++++++++++++ 6 files changed, 62 insertions(+), 3 deletions(-) diff --git a/gdb/NEWS b/gdb/NEWS index feb3a37393a..2a0b08887a1 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -192,6 +192,15 @@ QThreadOptions in qSupported QThreadOptions packet, and the qSupported response can contain the set of thread options the remote stub supports. +* Changed remote packets + +qXfer:threads:read + + The XML that is sent as a response can now include an "id_str" + attribute for a thread element. The attribute indicates what GDB + should print as the target ID of the thread, for example in the + "info threads" command or when switching to the thread. + *** Changes in GDB 14 * GDB now supports the AArch64 Scalable Matrix Extension 2 (SME2), which diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 82a617e9ad3..c72a070b223 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -48081,7 +48081,7 @@ the following structure: @smallexample <?xml version="1.0"?> <threads> - <thread id="id" core="0" name="name" handle="1a2b3c"> + <thread id="id" core="0" name="name" id_str="Thread 12.34" handle="1a2b3c"> ... description ... </thread> </threads> @@ -48093,7 +48093,10 @@ identifies the thread (@pxref{thread-id syntax}). The the thread was last executing on. The @samp{name} attribute, if present, specifies the human-readable name of the thread. The content of the of @samp{thread} element is interpreted as human-readable -auxiliary information. The @samp{handle} attribute, if present, +auxiliary information. The @samp{id_str} attribute, if present, +specifies what @value{GDBN} should print as the target ID of the +thread (e.g.@: in the @samp{info threads} command or when switching +to the thread). The @samp{handle} attribute, if present, is a hex encoded representation of the thread handle. diff --git a/gdb/remote.c b/gdb/remote.c index e278711df7b..e09a0c56eb3 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1537,6 +1537,12 @@ struct remote_thread_info : public private_thread_info std::string name; int core = -1; + /* The string representation for the thread's id. + + The target specifies this if they want to display the thread id + in a specific way. If empty, the default approach is used. */ + std::string id_str; + /* Thread handle, perhaps a pthread_t or thread_t value, stored as a sequence of bytes. */ gdb::byte_vector thread_handle; @@ -3951,6 +3957,9 @@ struct thread_item /* The thread's name. */ std::string name; + /* The thread's id, translated to a string for displaying. */ + std::string id_str; + /* The core the thread was running on. -1 if not known. */ int core = -1; @@ -4077,6 +4086,10 @@ start_thread (struct gdb_xml_parser *parser, if (attr != NULL) item.name = (const char *) attr->value.get (); + attr = xml_find_attribute (attributes, "id_str"); + if (attr != nullptr) + item.id_str = (const char *) attr->value.get (); + attr = xml_find_attribute (attributes, "handle"); if (attr != NULL) item.thread_handle = hex2bin ((const char *) attr->value.get ()); @@ -4098,6 +4111,7 @@ const struct gdb_xml_attribute thread_attributes[] = { { "id", GDB_XML_AF_NONE, NULL, NULL }, { "core", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL }, { "name", GDB_XML_AF_OPTIONAL, NULL, NULL }, + { "id_str", GDB_XML_AF_OPTIONAL, NULL, NULL }, { "handle", GDB_XML_AF_OPTIONAL, NULL, NULL }, { NULL, GDB_XML_AF_NONE, NULL, NULL } }; @@ -4282,6 +4296,7 @@ remote_target::update_thread_list () info->core = item.core; info->extra = std::move (item.extra); info->name = std::move (item.name); + info->id_str = std::move (item.id_str); info->thread_handle = std::move (item.thread_handle); } } @@ -12228,7 +12243,16 @@ remote_target::pid_to_str (ptid_t ptid) { if (magic_null_ptid == ptid) return "Thread <main>"; - else if (m_features.remote_multi_process_p ()) + + thread_info *thread = this->find_thread (ptid); + if ((thread != nullptr) && (thread->priv != nullptr)) + { + remote_thread_info *priv = get_remote_thread_info (thread); + if (!priv->id_str.empty ()) + return priv->id_str.c_str (); + } + + if (m_features.remote_multi_process_p ()) if (ptid.lwp () == 0) return normal_pid_to_str (ptid); else diff --git a/gdbserver/server.cc b/gdbserver/server.cc index c7d5cc1c1b0..018fbc04076 100644 --- a/gdbserver/server.cc +++ b/gdbserver/server.cc @@ -1994,6 +1994,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); @@ -2018,6 +2019,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); diff --git a/gdbserver/target.cc b/gdbserver/target.cc index 6db32da2e95..a26e1599975 100644 --- a/gdbserver/target.cc +++ b/gdbserver/target.cc @@ -807,6 +807,12 @@ process_stratum_target::thread_name (ptid_t thread) return nullptr; } +std::string +process_stratum_target::thread_id_str (thread_info *thread) +{ + return ""; +} + bool process_stratum_target::thread_handle (ptid_t ptid, gdb_byte **handle, int *handle_len) diff --git a/gdbserver/target.h b/gdbserver/target.h index 3643b9110da..a46b3fa47ff 100644 --- a/gdbserver/target.h +++ b/gdbserver/target.h @@ -475,6 +475,13 @@ class process_stratum_target caller. */ virtual const char *thread_name (ptid_t thread); + /* Return the string translation for THREAD's id. This gives the + target a chance to completely re-interpret the thread id and + present a target-specific description for displaying to the user. + Return empty if the target is fine with how an id is displayed + by default. */ + virtual std::string thread_id_str (thread_info *thread); + /* Thread ID to (numeric) thread handle: Return true on success and false for failure. Return pointer to thread handle via HANDLE and the handle's length via HANDLE_LEN. */ @@ -735,4 +742,10 @@ bool set_desired_process (); std::string target_pid_to_str (ptid_t); +static inline std::string +target_thread_id_str (thread_info *thread) +{ + return the_target->thread_id_str (thread); +} + #endif /* GDBSERVER_TARGET_H */ -- 2.34.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de> Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] doc: add the missing 'handle' attribute in xml 2024-04-02 10:20 [PATCH 1/2] doc: add the missing 'handle' attribute in xml Tankut Baris Aktemur 2024-04-02 10:20 ` [PATCH 2/2] gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML Tankut Baris Aktemur @ 2024-04-02 12:14 ` Eli Zaretskii 2024-04-03 14:49 ` Aktemur, Tankut Baris 1 sibling, 1 reply; 6+ messages in thread From: Eli Zaretskii @ 2024-04-02 12:14 UTC (permalink / raw) To: Tankut Baris Aktemur; +Cc: gdb-patches > From: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> > Date: Tue, 2 Apr 2024 12:20:19 +0200 > > The XML response to the "qXfer:threads:read" packet may include > a "handle" attribute. The attribute is mentioned in the document > but not shown in the sample XML structure. Add it. > --- > gdb/doc/gdb.texinfo | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo > index 727f9275bfb..41a368a0194 100644 > --- a/gdb/doc/gdb.texinfo > +++ b/gdb/doc/gdb.texinfo > @@ -48081,7 +48081,7 @@ the following structure: > @smallexample > <?xml version="1.0"?> > <threads> > - <thread id="id" core="0" name="name"> > + <thread id="id" core="0" name="name" handle="XX..."> > ... description ... > </thread> > </threads> Thanks, but can we put some string without dots there? IOW, an example of a real-life "handle" attribute, like the rest of the example does? ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH 1/2] doc: add the missing 'handle' attribute in xml 2024-04-02 12:14 ` [PATCH 1/2] doc: add the missing 'handle' attribute in xml Eli Zaretskii @ 2024-04-03 14:49 ` Aktemur, Tankut Baris 0 siblings, 0 replies; 6+ messages in thread From: Aktemur, Tankut Baris @ 2024-04-03 14:49 UTC (permalink / raw) To: Eli Zaretskii; +Cc: gdb-patches > > The XML response to the "qXfer:threads:read" packet may include > > a "handle" attribute. The attribute is mentioned in the document > > but not shown in the sample XML structure. Add it. > > --- > > gdb/doc/gdb.texinfo | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo > > index 727f9275bfb..41a368a0194 100644 > > --- a/gdb/doc/gdb.texinfo > > +++ b/gdb/doc/gdb.texinfo > > @@ -48081,7 +48081,7 @@ the following structure: > > @smallexample > > <?xml version="1.0"?> > > <threads> > > - <thread id="id" core="0" name="name"> > > + <thread id="id" core="0" name="name" handle="XX..."> > > ... description ... > > </thread> > > </threads> > > Thanks, but can we put some string without dots there? IOW, an > example of a real-life "handle" attribute, like the rest of the > example does? Thanks. I pushed this patch with handle="1a2b3c". -Baris Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de> Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928 ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-04-03 14:58 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-04-02 10:20 [PATCH 1/2] doc: add the missing 'handle' attribute in xml Tankut Baris Aktemur 2024-04-02 10:20 ` [PATCH 2/2] gdbserver, remote: introduce "id_str" in the "qXfer:threads:read" XML Tankut Baris Aktemur 2024-04-02 12:19 ` Eli Zaretskii 2024-04-03 14:57 ` [PATCH v2] " Tankut Baris Aktemur 2024-04-02 12:14 ` [PATCH 1/2] doc: add the missing 'handle' attribute in xml Eli Zaretskii 2024-04-03 14:49 ` Aktemur, Tankut Baris
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).