public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 00/58] Turn gdbserver's process_stratum_target into a class
@ 2020-02-11  9:02 Tankut Baris Aktemur
  2020-02-11  9:03 ` [PATCH 06/58] gdbserver: turn target op 'detach' into a method Tankut Baris Aktemur
                   ` (59 more replies)
  0 siblings, 60 replies; 75+ messages in thread
From: Tankut Baris Aktemur @ 2020-02-11  9:02 UTC (permalink / raw)
  To: gdb-patches

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 6962 bytes --]

Hi All,

This is a C++'ification series that aims to convert the target ops
vector in gdbserver into a class.  Currently, the target ops is a
struct of function pointers.  At the end of the series, it becomes a
class with methods, and the existing low target definitions become
subclasses.  That is, we end up with the following class hierarchy:

process_stratum_target
^
├── linux-low
├── lynx-low
├── nto-low
└── win32-low

process_stratum_target either defines the default behavior for the
target ops or leaves them as pure virtual for the subclasses to
override.

PATCH 1's commit message gives more details about the approach in this
transformation.

If and when this series is accepted, the next step is to C++'ify linux
low targets, giving a hierarchy that looks like below.  (This second
phase is not included in this series.)

process_stratum_target
^
├── linux-low
│   ^
│   ├── linux-arm-low
│   ├── linux-ppc-low
│   ├── linux-x86-low
│   └── ...
├── lynx-low
├── nto-low
└── win32-low

My goal in this series was to make gdbserver buildable after each
patch.  I could test this for linux-low, but not for other targets --
in particular, for lynx-low, nto-low, and win32-low.  I verified their
code manually to my best; however, I may have made typos or some
oversights that break build on these systems.  Can builbot be used to
test?

The patches are also available at

https://github.com/barisaktemur/gdb/commits/gdbserver-cppify-target-v1

Thanks.
Baris

Tankut Baris Aktemur (58):
  gdbserver: start turning the target ops vector into a class
  gdbserver: turn target op 'create_inferior' into a method
  gdbserver: turn target op 'post_create_inferior' into a method
  gdbserver: turn target op 'attach' into a method
  gdbserver: turn target op 'kill' into a method
  gdbserver: turn target op 'detach' into a method
  gdbserver: turn target op 'mourn' into a method
  gdbserver: turn target op 'join' into a method
  gdbserver: turn target op 'thread_alive' into a method
  gdbserver: turn target op 'resume' into a method
  gdbserver: turn target op 'wait' into a method
  gdbserver: turn target ops 'fetch_registers' and 'store_registers'
    into methods
  gdbserver: turn prepare_to_access_memory & done_accessing_memory into
    methods
  gdbserver: turn target ops 'read_memory' and 'write_memory' into
    methods
  gdbserver: turn target op 'look_up_symbols' into a method
  gdbserver: turn target op 'request_interrupt' into a method
  gdbserver: turn target op 'read_auxv' into a method
  gdbserver: turn target op 'supports_z_point_type' into a method
  gdbserver: turn target ops 'insert_point' and 'remove_point' into
    methods
  gdbserver: turn target op '{supports_}stopped_by_sw_breakpoint' into a
    method
  gdbserver: turn target op '{supports_}stopped_by_hw_breakpoint' into a
    method
  gdbserver: turn target op 'supports_hardware_single_step' into a
    method
  gdbserver: turn target ops 'stopped_by_watchpoint' and
    'stopped_data_address' into methods
  gdbserver: turn target op 'read_offsets' into a method
  gdbserver: turn target op 'get_tls_address' into a method
  gdbserver: turn target op 'hostio_last_error' into a method
  gdbserver: turn target op 'qxfer_osdata' into a method
  gdbserver: turn target op 'qxfer_siginfo' into a method
  gdbserver: turn non-stop and async target ops into methods
  gdbserver: turn target op 'supports_multi_process' into a method
  gdbserver: turn target ops 'supports_{fork,vfork,exec}_events' into
    methods
  gdbserver: turn target op 'handle_new_gdb_connection' into a method
  gdbserver: turn target op 'handle_monitor_command' into a method
  gdbserver: turn target op 'core_of_thread' into a method
  gdbserver: turn target op 'read_loadmap' into a method
  gdbserver: turn target op 'process_qsupported' into a method
  gdbserver: turn target op 'supports_tracepoints' into a method
  gdbserver: turn target ops 'read_pc' and 'write_pc' into methods
  gdbserver: turn target op 'thread_stopped' into a method
  gdbserver: turn target op 'get_tib_address' into a method
  gdbserver: turn target ops 'pause_all' and 'unpause_all' into methods
  gdbserver: turn target op 'stabilize_threads' into a method
  gdbserver: turn fast tracepoint target ops into methods
  gdbserver: turn target op 'emit_ops' into a method
  gdbserver: turn target op 'supports_disable_randomization' into a
    method
  gdbserver: turn target op 'qxfer_libraries_svr4' into a method
  gdbserver: turn target op 'supports_agent' into a method
  gdbserver: turn btrace-related target ops into methods
  gdbserver: turn target op 'supports_range_stepping' into a method
  gdbserver: turn target op 'pid_to_exec_file' into a method
  gdbserver: turn target ops 'multifs_{open, readlink, unlink}' into
    methods
  gdbserver: turn breakpoint kind-related target ops into methods
  gdbserver: turn target ops 'thread_name' and 'thread_handle' into
    methods
  gdbserver: turn target op 'supports_software_single_step' into a
    method
  gdbserver: turn target op 'supports_catch_syscall' into a method
  gdbserver: turn target op 'get_ipa_tdesc_idx' into a method
  gdbserver: use unique_ptr for 'the_target'
  gdbserver: finish turning the target ops vector into a class

 gdbserver/fork-child.c        |   2 +-
 gdbserver/hostio.c            |  13 +-
 gdbserver/linux-aarch32-low.c |   6 +-
 gdbserver/linux-aarch64-low.c |   4 +-
 gdbserver/linux-arm-low.c     |   8 +-
 gdbserver/linux-cris-low.c    |   4 +-
 gdbserver/linux-crisv32-low.c |   4 +-
 gdbserver/linux-low.c         | 635 ++++++++++++++++++----------------
 gdbserver/linux-low.h         | 222 ++++++++++++
 gdbserver/linux-m32r-low.c    |   4 +-
 gdbserver/linux-mips-low.c    |   2 +-
 gdbserver/linux-nios2-low.c   |   4 +-
 gdbserver/linux-ppc-low.c     |   2 +-
 gdbserver/linux-sh-low.c      |   2 +-
 gdbserver/linux-sparc-low.c   |   6 +-
 gdbserver/linux-tic6x-low.c   |   2 +-
 gdbserver/linux-tile-low.c    |   2 +-
 gdbserver/linux-x86-low.c     |   2 +-
 gdbserver/linux-xtensa-low.c  |   4 +-
 gdbserver/lynx-low.c          | 128 +++----
 gdbserver/lynx-low.h          |  42 +++
 gdbserver/mem-break.c         |  11 +-
 gdbserver/nto-low.c           | 208 ++++-------
 gdbserver/nto-low.h           |  59 ++++
 gdbserver/regcache.c          |  16 +-
 gdbserver/remote-utils.c      |  15 +-
 gdbserver/server.c            |  77 +++--
 gdbserver/target.c            | 578 +++++++++++++++++++++++++++----
 gdbserver/target.h            | 555 ++++++++++++++---------------
 gdbserver/tracepoint.c        |  54 ++-
 gdbserver/win32-low.c         | 214 +++++-------
 gdbserver/win32-low.h         |  68 ++++
 32 files changed, 1803 insertions(+), 1150 deletions(-)

-- 
2.17.1

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

end of thread, other threads:[~2020-02-14 13:07 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-11  9:02 [PATCH 00/58] Turn gdbserver's process_stratum_target into a class Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 06/58] gdbserver: turn target op 'detach' into a method Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 12/58] gdbserver: turn target ops 'fetch_registers' and 'store_registers' into methods Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 22/58] gdbserver: turn target op 'supports_hardware_single_step' into a method Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 26/58] gdbserver: turn target op 'hostio_last_error' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 48/58] gdbserver: turn btrace-related target ops into methods Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 28/58] gdbserver: turn target op 'qxfer_siginfo' into a method Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 04/58] gdbserver: turn target op 'attach' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 33/58] gdbserver: turn target op 'handle_monitor_command' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 24/58] gdbserver: turn target op 'read_offsets' " Tankut Baris Aktemur
2020-02-13 20:29   ` Pedro Alves
2020-02-11  9:03 ` [PATCH 07/58] gdbserver: turn target op 'mourn' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 20/58] gdbserver: turn target op '{supports_}stopped_by_sw_breakpoint' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 09/58] gdbserver: turn target op 'thread_alive' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 37/58] gdbserver: turn target op 'supports_tracepoints' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 21/58] gdbserver: turn target op '{supports_}stopped_by_hw_breakpoint' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 03/58] gdbserver: turn target op 'post_create_inferior' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 23/58] gdbserver: turn target ops 'stopped_by_watchpoint' and 'stopped_data_address' into methods Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 25/58] gdbserver: turn target op 'get_tls_address' into a method Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 32/58] gdbserver: turn target op 'handle_new_gdb_connection' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 01/58] gdbserver: start turning the target ops vector into a class Tankut Baris Aktemur
2020-02-13 20:26   ` Pedro Alves
2020-02-11  9:03 ` [PATCH 43/58] gdbserver: turn fast tracepoint target ops into methods Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 08/58] gdbserver: turn target op 'join' into a method Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 40/58] gdbserver: turn target op 'get_tib_address' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 36/58] gdbserver: turn target op 'process_qsupported' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 13/58] gdbserver: turn prepare_to_access_memory & done_accessing_memory into methods Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 15/58] gdbserver: turn target op 'look_up_symbols' into a method Tankut Baris Aktemur
2020-02-13 20:28   ` Pedro Alves
2020-02-11  9:03 ` [PATCH 27/58] gdbserver: turn target op 'qxfer_osdata' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 19/58] gdbserver: turn target ops 'insert_point' and 'remove_point' into methods Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 05/58] gdbserver: turn target op 'kill' into a method Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 02/58] gdbserver: turn target op 'create_inferior' " Tankut Baris Aktemur
2020-02-13 20:27   ` Pedro Alves
2020-02-14 11:01     ` Aktemur, Tankut Baris
2020-02-14 13:07       ` Pedro Alves
2020-02-11  9:03 ` [PATCH 45/58] gdbserver: turn target op 'supports_disable_randomization' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 11/58] gdbserver: turn target op 'wait' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 46/58] gdbserver: turn target op 'qxfer_libraries_svr4' " Tankut Baris Aktemur
2020-02-11  9:03 ` [PATCH 18/58] gdbserver: turn target op 'supports_z_point_type' " Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 49/58] gdbserver: turn target op 'supports_range_stepping' " Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 47/58] gdbserver: turn target op 'supports_agent' " Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 14/58] gdbserver: turn target ops 'read_memory' and 'write_memory' into methods Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 52/58] gdbserver: turn breakpoint kind-related target ops " Tankut Baris Aktemur
2020-02-13 20:29   ` Pedro Alves
2020-02-11  9:04 ` [PATCH 34/58] gdbserver: turn target op 'core_of_thread' into a method Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 39/58] gdbserver: turn target op 'thread_stopped' " Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 54/58] gdbserver: turn target op 'supports_software_single_step' " Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 17/58] gdbserver: turn target op 'read_auxv' " Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 42/58] gdbserver: turn target op 'stabilize_threads' " Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 53/58] gdbserver: turn target ops 'thread_name' and 'thread_handle' into methods Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 56/58] gdbserver: turn target op 'get_ipa_tdesc_idx' into a method Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 57/58] gdbserver: use unique_ptr for 'the_target' Tankut Baris Aktemur
2020-02-11 16:43   ` Christian Biesinger via gdb-patches
2020-02-12  8:32     ` Aktemur, Tankut Baris
2020-02-13 20:31   ` Pedro Alves
2020-02-11  9:04 ` [PATCH 38/58] gdbserver: turn target ops 'read_pc' and 'write_pc' into methods Tankut Baris Aktemur
2020-02-13 20:29   ` Pedro Alves
2020-02-11  9:04 ` [PATCH 31/58] gdbserver: turn target ops 'supports_{fork,vfork,exec}_events' " Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 50/58] gdbserver: turn target op 'pid_to_exec_file' into a method Tankut Baris Aktemur
2020-02-11  9:04 ` [PATCH 55/58] gdbserver: turn target op 'supports_catch_syscall' " Tankut Baris Aktemur
2020-02-11  9:05 ` [PATCH 44/58] gdbserver: turn target op 'emit_ops' " Tankut Baris Aktemur
2020-02-11  9:05 ` [PATCH 58/58] gdbserver: finish turning the target ops vector into a class Tankut Baris Aktemur
2020-02-13 20:31   ` Pedro Alves
2020-02-11  9:05 ` [PATCH 29/58] gdbserver: turn non-stop and async target ops into methods Tankut Baris Aktemur
2020-02-11  9:05 ` [PATCH 30/58] gdbserver: turn target op 'supports_multi_process' into a method Tankut Baris Aktemur
2020-02-11  9:05 ` [PATCH 10/58] gdbserver: turn target op 'resume' " Tankut Baris Aktemur
2020-02-11  9:05 ` [PATCH 35/58] gdbserver: turn target op 'read_loadmap' " Tankut Baris Aktemur
2020-02-11  9:05 ` [PATCH 41/58] gdbserver: turn target ops 'pause_all' and 'unpause_all' into methods Tankut Baris Aktemur
2020-02-11  9:05 ` [PATCH 16/58] gdbserver: turn target op 'request_interrupt' into a method Tankut Baris Aktemur
2020-02-11  9:05 ` [PATCH 51/58] gdbserver: turn target ops 'multifs_{open, readlink, unlink}' into methods Tankut Baris Aktemur
2020-02-11 17:41 ` [PATCH 00/58] Turn gdbserver's process_stratum_target into a class Christian Biesinger via gdb-patches
2020-02-12  8:18   ` Aktemur, Tankut Baris
2020-02-12 16:43     ` Christian Biesinger via gdb-patches
2020-02-13 20:26 ` Pedro Alves

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