mbox series

[RESEND,0/6] gdbstub: Add support for info proc mappings

Message ID 20230510202654.225689-1-iii@linux.ibm.com (mailing list archive)
Headers show
Series gdbstub: Add support for info proc mappings | expand

Message

Ilya Leoshkevich May 10, 2023, 8:26 p.m. UTC
[Apologies to people in To: and Cc:, who will get this the second time -
I forgot to Cc: the mailing list initially.]

Hi,

this series partially implements the Host I/O feature of the GDB Remote
Serial Protocol in order to make generate-core-file work with qemu-user.
It borrows heavily from the abandoned patch by Dominik [1], hence 4/6
carries the respective Co-developed-by: tag. I hope that's okay. I also
peeked at gdbserver/hostio.cc quite a few times.

The changes compared to Dominik's patch are:

- Implement readlink.
- Move the main functionality to user-target.c.
- Allocate buffers on heap.
- Add a test.
- Update gdb.rst.
- Split refactorings to the existing code into separate patches.
- Rename do_openat() to do_guest_openat().
- Do not retry pread(), since GDB is capable of doing it itself.
- Add an extra sanity check to gdb_handle_query_xfer_exec_file().
- Replace citations of the spec by a single link.

Best regards,
Ilya

[1] https://lore.kernel.org/all/20220221030910.3203063-1-dominik.b.czarnota@gmail.com/

Ilya Leoshkevich (6):
  linux-user: Expose do_guest_openat() and do_guest_readlink()
  gdbstub: Expose gdb_get_process() and gdb_get_first_cpu_in_process()
  gdbstub: Report the actual qemu-user pid
  gdbstub: Add support for info proc mappings
  docs: Document security implications of debugging
  tests/tcg: Add a test for info proc mappings

 docs/system/gdb.rst                           |  15 ++
 gdbstub/gdbstub.c                             |  86 ++++++++---
 gdbstub/internals.h                           |   7 +
 gdbstub/user-target.c                         | 139 ++++++++++++++++++
 linux-user/qemu.h                             |   3 +
 linux-user/syscall.c                          |  54 ++++---
 tests/tcg/aarch64/Makefile.target             |   3 +-
 tests/tcg/multiarch/Makefile.target           |   7 +
 .../multiarch/gdbstub/test-proc-mappings.py   |  55 +++++++
 tests/tcg/s390x/Makefile.target               |   2 +-
 10 files changed, 332 insertions(+), 39 deletions(-)
 create mode 100644 tests/tcg/multiarch/gdbstub/test-proc-mappings.py

Comments

Ilya Leoshkevich May 24, 2023, 9:01 a.m. UTC | #1
On Wed, 2023-05-10 at 22:26 +0200, Ilya Leoshkevich wrote:
> [Apologies to people in To: and Cc:, who will get this the second
> time -
> I forgot to Cc: the mailing list initially.]
> 
> Hi,
> 
> this series partially implements the Host I/O feature of the GDB
> Remote
> Serial Protocol in order to make generate-core-file work with qemu-
> user.
> It borrows heavily from the abandoned patch by Dominik [1], hence 4/6
> carries the respective Co-developed-by: tag. I hope that's okay. I
> also
> peeked at gdbserver/hostio.cc quite a few times.
> 
> The changes compared to Dominik's patch are:
> 
> - Implement readlink.
> - Move the main functionality to user-target.c.
> - Allocate buffers on heap.
> - Add a test.
> - Update gdb.rst.
> - Split refactorings to the existing code into separate patches.
> - Rename do_openat() to do_guest_openat().
> - Do not retry pread(), since GDB is capable of doing it itself.
> - Add an extra sanity check to gdb_handle_query_xfer_exec_file().
> - Replace citations of the spec by a single link.
> 
> Best regards,
> Ilya
> 
> [1]
> https://lore.kernel.org/all/20220221030910.3203063-1-dominik.b.czarnota@gmail.com/
> 
> Ilya Leoshkevich (6):
>   linux-user: Expose do_guest_openat() and do_guest_readlink()
>   gdbstub: Expose gdb_get_process() and
> gdb_get_first_cpu_in_process()
>   gdbstub: Report the actual qemu-user pid
>   gdbstub: Add support for info proc mappings
>   docs: Document security implications of debugging
>   tests/tcg: Add a test for info proc mappings
> 
>  docs/system/gdb.rst                           |  15 ++
>  gdbstub/gdbstub.c                             |  86 ++++++++---
>  gdbstub/internals.h                           |   7 +
>  gdbstub/user-target.c                         | 139
> ++++++++++++++++++
>  linux-user/qemu.h                             |   3 +
>  linux-user/syscall.c                          |  54 ++++---
>  tests/tcg/aarch64/Makefile.target             |   3 +-
>  tests/tcg/multiarch/Makefile.target           |   7 +
>  .../multiarch/gdbstub/test-proc-mappings.py   |  55 +++++++
>  tests/tcg/s390x/Makefile.target               |   2 +-
>  10 files changed, 332 insertions(+), 39 deletions(-)
>  create mode 100644 tests/tcg/multiarch/gdbstub/test-proc-mappings.py

Ping.