public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v3 0/8] gdbserver improvements for AArch64 SVE support
@ 2023-01-30  4:45 Thiago Jung Bauermann
  2023-01-30  4:45 ` [PATCH v3 1/8] gdbserver: Add assert in find_register_by_number Thiago Jung Bauermann
                   ` (8 more replies)
  0 siblings, 9 replies; 94+ messages in thread
From: Thiago Jung Bauermann @ 2023-01-30  4:45 UTC (permalink / raw)
  To: gdb-patches; +Cc: Thiago Jung Bauermann

Hello,

This is version 3 of the patch series adding support to gdbserver for
inferiors that change the SVE vector length at runtime. This is already
supported by GDB, but not by gdbserver. Version 2 was posted here:

https://inbox.sourceware.org/gdb-patches/20221126020452.1686509-1-thiago.bauermann@linaro.org/

This version incorporates the review comments from v2 (thanks!). The
biggest change is that it implements Simon's idea¹:

> If it's the case, that we need to extend the RSP to allow fetching
> per-thread tdesc, here's the idea I had in mind for a while, to avoid
> adding too much overhead.  Stop replies and the qXfer:threads:read reply
> could include a per-thread tdesc identifier.  That tdesc identifier
> would be something short, either an incrementing number, or some kind of
> hash of the tdesc.  It would be something opaque chosen by the stub.  A
> new packet would be introduced to allow GDB to request the XML given
> that ID.  On the GDB side, GDB would request the XML when encountering a
> tdesc ID it doesn't know about, and then cache the result.

The only difference from the above in this series is that instead of
creating a new packet to allow GDB to request the XML given the ID, I'm
extending the qXfer:features:read request: GDB can send "target-id-%u.xml"
as the annex, where %u is the target description ID. Please let me know if
you think a separate packet would be better. The remote protocol changes
are documented in patch 5.

I had to drop the Reviewed-by tags from some patches because they have some
significant changes from the version that was reviewed.

There's also a new testcase exercising the case of an inferior's thread
changing its SVE vector length. The previous version of this series failed
the testcase, but this one passes it.

With this series applied, gdb.arch/aarch64-sve.exp passes all tests on
extended-remote aarch64-linux. Without them, it fails tests after the
testcase changes the vector length.

Tested on native and extended-remote aarch64-linux, x86_64-linux and
armv7l-linux-gnueabihf (the last one on QEMU TCG).

¹ https://inbox.sourceware.org/gdb-patches/559069a3-f3ce-2059-bf4a-44add43979f7@simark.ca/

Changes since v2:

- Patch “gdbserver: Add assert in find_register_by_number”
  - Rewritten to follow Simon's suggestion of putting the assert in another
    function.
- Patch “gdbserver: Add PID parameter to linux_get_auxv and linux_get_hwcap”
  - As suggested by Simon, directly access thread_info::id rather than use
    pid_of.
  - Also as suggested by Simon, updated doc comment of
    process_stratum_target::read_auxv.
- Patch “gdbserver/linux-aarch64: Factor out function to get aarch64_features”
  - As suggested by Simon, directly access thread_info::id rather than use
    lwpid_of.
  - Also as suggested by Simon, added doc comment for
    aarch64_get_arch_features.
- Patch “gdbserver/linux-aarch64: When thread stops, update its target description”
  - As suggested by Luis, added doc comments to thread_info::tdesc and
    arch_process_info::has_sve.
  - As suggested by Simon, renamed arch_update_tdesc to get_thread_tdesc,
    and return a target_desc pointer (or nullptr) instead of one wrapped in
    gdb::optional.  The code was changed a bit as well.
  - As suggested by Luis, expanded doc comment of get_thread_tdesc.
  - As suggested by Luis, abstracted away trying to fetch a tdesc from a
    thread and then from a process to a new function
    "get_thread_target_desc".
  - Export free_register_cache_thread in gdbserver/regcache.h.
  - Use free_register_cache_thread in linux_process_target::filter_event to
    implement Simon's suggestion of only freeing the regcache for the
    thread with a different tdesc.
- “gdb/aarch64: Factor out most of the thread_architecture method”
  - Dropped this patch. It's not needed anymore.
- “gdbserver: Transmit target description ID in thread list and stop reply”
  - New patch.
- “gdb/remote: Parse and use tdesc field in stop reply and threads list XML”
  - New patch.
- “gdb/aarch64: Detect vector length changes when debugging remotely”
  - As suggested by Luis, clarified in the patch description that this patch improves
    debugging programs remotely. Also, reworded description somewhat.
  - As suggested by Luis, changed VL references in comments to VG. Also reworded a bit the
    description of the update_architecture gdbarch method.
  - Changed the update_architecture gdbarch method (and consequently also
    aarch64_update_architecture) to take a target description instead of a vector of
    cached_reg_t.
  - Changed remote_target::update_thread_list to get the thread target description from
    the remote target.
  - Changed remote_target::process_stop_reply to get the thread target description from
    the remote target.
  - Renamed remote_thread_info::expedited_arch to arch.
  - Changed code of remote_target::thread_architecture to be a little bit clearer, and
    added doc comment.
- “gdb/testsuite: Add test to exercise multi-threaded AArch64 SVE inferiors”
  - New patch.

Thiago Jung Bauermann (8):
  gdbserver: Add assert in find_register_by_number
  gdbserver: Add PID parameter to linux_get_auxv and linux_get_hwcap
  gdbserver/linux-aarch64: Factor out function to get aarch64_features
  gdbserver/linux-aarch64: When thread stops, update its target
    description
  gdbserver: Transmit target description ID in thread list and stop
    reply
  gdb/remote: Parse tdesc field in stop reply and threads list XML
  gdb/aarch64: Detect vector length changes when debugging remotely
  gdb/testsuite: Add test to exercise multi-threaded AArch64 SVE
    inferiors

 gdb/aarch64-tdep.c                            |  20 +++
 gdb/arch-utils.c                              |   8 +
 gdb/arch-utils.h                              |   4 +
 gdb/doc/gdb.texinfo                           |  27 ++-
 gdb/features/threads.dtd                      |   1 +
 gdb/gdbarch-components.py                     |  15 ++
 gdb/gdbarch-gen.h                             |  10 ++
 gdb/gdbarch.c                                 |  22 +++
 gdb/remote.c                                  | 169 +++++++++++++++++-
 gdb/testsuite/gdb.arch/aarch64-sve-threads.c  | 125 +++++++++++++
 .../gdb.arch/aarch64-sve-threads.exp          |  70 ++++++++
 gdb/xml-tdesc.c                               |  27 ++-
 gdb/xml-tdesc.h                               |   6 +
 gdbserver/gdbthread.h                         |   4 +
 gdbserver/linux-aarch64-low.cc                |  68 +++++--
 gdbserver/linux-arm-low.cc                    |   2 +-
 gdbserver/linux-low.cc                        |  35 +++-
 gdbserver/linux-low.h                         |  15 +-
 gdbserver/linux-ppc-low.cc                    |   6 +-
 gdbserver/linux-s390-low.cc                   |   2 +-
 gdbserver/netbsd-low.cc                       |   4 +-
 gdbserver/netbsd-low.h                        |   2 +-
 gdbserver/regcache.cc                         |  14 +-
 gdbserver/regcache.h                          |   4 +
 gdbserver/remote-utils.cc                     |  57 ++++++
 gdbserver/remote-utils.h                      |   9 +
 gdbserver/server.cc                           |  20 ++-
 gdbserver/server.h                            |   4 +
 gdbserver/target.cc                           |   4 +-
 gdbserver/target.h                            |   4 +-
 gdbserver/tdesc.cc                            |  13 +-
 gdbserver/tdesc.h                             |   5 +
 32 files changed, 717 insertions(+), 59 deletions(-)
 create mode 100644 gdb/testsuite/gdb.arch/aarch64-sve-threads.c
 create mode 100644 gdb/testsuite/gdb.arch/aarch64-sve-threads.exp


base-commit: 6c76a6beade05f8b2ca93e939cf73da2917d379b

^ permalink raw reply	[flat|nested] 94+ messages in thread

end of thread, other threads:[~2023-02-10 21:01 UTC | newest]

Thread overview: 94+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-30  4:45 [PATCH v3 0/8] gdbserver improvements for AArch64 SVE support Thiago Jung Bauermann
2023-01-30  4:45 ` [PATCH v3 1/8] gdbserver: Add assert in find_register_by_number Thiago Jung Bauermann
2023-01-31 17:05   ` Simon Marchi
2023-01-31 19:49     ` Thiago Jung Bauermann
2023-02-01 15:43       ` Simon Marchi
2023-01-30  4:45 ` [PATCH v3 2/8] gdbserver: Add PID parameter to linux_get_auxv and linux_get_hwcap Thiago Jung Bauermann
2023-02-01  9:07   ` Luis Machado
2023-02-01 10:54   ` Andrew Burgess
2023-02-01 16:01     ` Simon Marchi
2023-02-01 19:33       ` Thiago Jung Bauermann
2023-02-01 19:53         ` Simon Marchi
2023-02-01 21:55           ` Thiago Jung Bauermann
2023-02-06 19:54   ` Pedro Alves
2023-02-06 20:16     ` Simon Marchi
2023-02-07 15:19       ` Pedro Alves
2023-02-07 21:47         ` Thiago Jung Bauermann
2023-02-09  1:31           ` Simon Marchi
2023-02-10  3:54             ` Thiago Jung Bauermann
2023-02-07 22:28     ` Thiago Jung Bauermann
2023-01-30  4:45 ` [PATCH v3 3/8] gdbserver/linux-aarch64: Factor out function to get aarch64_features Thiago Jung Bauermann
2023-02-01  8:59   ` Luis Machado
2023-02-01 16:04     ` Simon Marchi
2023-02-01 22:13       ` Thiago Jung Bauermann
2023-01-30  4:45 ` [PATCH v3 4/8] gdbserver/linux-aarch64: When thread stops, update its target description Thiago Jung Bauermann
2023-02-01  9:05   ` Luis Machado
2023-02-01 11:06   ` Andrew Burgess
2023-02-01 16:21     ` Simon Marchi
2023-02-01 16:32       ` Luis Machado
2023-02-02  2:54         ` Thiago Jung Bauermann
2023-02-02  3:47           ` Simon Marchi
2023-02-03  3:47             ` Thiago Jung Bauermann
2023-02-03 11:13               ` Luis Machado
2023-02-04 15:26                 ` Thiago Jung Bauermann
2023-02-03 11:11             ` Luis Machado
2023-02-04 15:21               ` Thiago Jung Bauermann
2023-02-06  9:07                 ` Luis Machado
2023-02-06 12:15                   ` Thiago Jung Bauermann
2023-02-06 20:29                 ` Pedro Alves
2023-02-07  8:11                   ` Luis Machado
2023-02-07 14:39                     ` Thiago Jung Bauermann
2023-02-03 10:57           ` Luis Machado
2023-02-04  6:18             ` Thiago Jung Bauermann
2023-02-06 20:26           ` Pedro Alves
2023-02-07 21:06             ` Thiago Jung Bauermann
2023-02-09  2:46               ` Simon Marchi
2023-02-10  3:29                 ` Thiago Jung Bauermann
2023-02-10 14:56                   ` Luis Machado
2023-02-10 15:04                     ` Tom Tromey
2023-02-10 15:28                       ` Luis Machado
2023-02-10 17:26                       ` Thiago Jung Bauermann
2023-02-10 21:01                         ` Simon Marchi
2023-01-30  4:45 ` [PATCH v3 5/8] gdbserver: Transmit target description ID in thread list and stop reply Thiago Jung Bauermann
2023-01-30 12:52   ` Eli Zaretskii
2023-01-30 14:05     ` Thiago Jung Bauermann
2023-02-01  9:39   ` Luis Machado
2023-02-01 12:07   ` Andrew Burgess
2023-02-01 13:03     ` Eli Zaretskii
2023-02-01 17:37     ` Simon Marchi
2023-02-02 20:36       ` Thiago Jung Bauermann
2023-02-02 20:56         ` Simon Marchi
2023-02-01 20:46     ` Simon Marchi
2023-02-02 21:43       ` Thiago Jung Bauermann
2023-02-01 14:51   ` Andrew Burgess
2023-02-01 17:03     ` Simon Marchi
2023-02-02 19:52       ` Thiago Jung Bauermann
2023-02-02 20:51         ` Simon Marchi
2023-02-03  2:44           ` Thiago Jung Bauermann
2023-02-03 16:29             ` Andrew Burgess
2023-02-04  6:08               ` Thiago Jung Bauermann
2023-02-03 11:22       ` Luis Machado
2023-02-03 12:50         ` Simon Marchi
2023-01-30  4:45 ` [PATCH v3 6/8] gdb/remote: Parse tdesc field in stop reply and threads list XML Thiago Jung Bauermann
2023-02-01  9:52   ` Luis Machado
2023-02-05  0:06     ` Thiago Jung Bauermann
2023-02-06  9:10       ` Luis Machado
2023-02-01 14:32   ` Andrew Burgess
2023-02-01 19:50     ` Simon Marchi
2023-02-01 20:16       ` Simon Marchi
2023-02-03 11:27         ` Luis Machado
2023-02-03 13:19           ` Simon Marchi
2023-02-03 16:33             ` Andrew Burgess
2023-01-30  4:45 ` [PATCH v3 7/8] gdb/aarch64: Detect vector length changes when debugging remotely Thiago Jung Bauermann
2023-02-01  9:58   ` Luis Machado
2023-02-01 15:26   ` Andrew Burgess
2023-02-01 20:20     ` Simon Marchi
2023-02-03 11:31       ` Luis Machado
2023-02-03 16:38       ` Andrew Burgess
2023-02-03 19:07         ` Simon Marchi
2023-01-30  4:45 ` [PATCH v3 8/8] gdb/testsuite: Add test to exercise multi-threaded AArch64 SVE inferiors Thiago Jung Bauermann
2023-02-01 10:10   ` Luis Machado
2023-02-06 19:11 ` [PATCH v3 0/8] gdbserver improvements for AArch64 SVE support Pedro Alves
2023-02-06 20:05   ` Simon Marchi
2023-02-06 21:06     ` Pedro Alves
2023-02-07 13:49       ` Simon Marchi

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).