From patchwork Tue Feb 11 09:01:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tankut Baris Aktemur X-Patchwork-Id: 37904 Received: (qmail 117953 invoked by alias); 11 Feb 2020 09:03:28 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 117330 invoked by uid 89); 11 Feb 2020 09:03:25 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=5818, 7610 X-HELO: mga17.intel.com Received: from mga17.intel.com (HELO mga17.intel.com) (192.55.52.151) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 11 Feb 2020 09:03:20 +0000 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Feb 2020 01:03:18 -0800 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga002.jf.intel.com with ESMTP; 11 Feb 2020 01:03:17 -0800 Received: from ulvlx001.iul.intel.com (ulvlx001.iul.intel.com [172.28.207.17]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 01B93H5E002162; Tue, 11 Feb 2020 09:03:17 GMT Received: from ulvlx001.iul.intel.com (localhost [127.0.0.1]) by ulvlx001.iul.intel.com with ESMTP id 01B93H2n010426; Tue, 11 Feb 2020 10:03:17 +0100 Received: (from taktemur@localhost) by ulvlx001.iul.intel.com with LOCAL id 01B93GE8010422; Tue, 11 Feb 2020 10:03:17 +0100 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Subject: [PATCH 12/58] gdbserver: turn target ops 'fetch_registers' and 'store_registers' into methods Date: Tue, 11 Feb 2020 10:01:24 +0100 Message-Id: <394145e7808c4db6c64c7f537e3e35eb3fe15362.1581410933.git.tankut.baris.aktemur@intel.com> In-Reply-To: References: In-Reply-To: References: X-IsSubscribed: yes gdbserver/ChangeLog: 2020-02-10 Tankut Baris Aktemur Make process_stratum_target's fetch_registers and store_registers ops methods of process_target. * target.h (struct process_stratum_target): Remove the target ops. (class process_target): Add the target ops. (fetch_inferior_registers): Update the macro. (store_inferior_registers): Update the macro. Update the derived structs and callers below. * linux-low.c (linux_target_ops): Update. (linux_fetch_registers): Turn into ... (linux_process_target::fetch_registers): ... this. (linux_store_registers): Turn into ... (linux_process_target::store_registers): ... this. * linux-low.h (class linux_process_target): Update. * lynx-low.c (lynx_target_ops): Update. (lynx_fetch_registers): Turn into ... (lynx_process_target::fetch_registers): ... this. (lynx_store_registers): Turn into ... (lynx_process_target::store_registers): ... this. * lynx-low.h (class lynx_process_target): Update. * nto-low.c (nto_target_ops): Update. (nto_fetch_registers): Turn into ... (nto_process_target::fetch_registers): ... this. (nto_store_registers): Turn into ... (nto_process_target::store_registers): ... this. * nto-low.h (class nto_process_target): Update. * win32-low.c (win32_target_ops): Update. (win32_fetch_inferior_registers): Turn into ... (win32_process_target::fetch_registers): ... this. (win32_store_inferior_registers): Turn into ... (win32_process_target::store_registers): ... this. * win32-low.h (class win32_process_target): Update. --- gdbserver/linux-low.c | 10 ++++------ gdbserver/linux-low.h | 4 ++++ gdbserver/lynx-low.c | 10 ++++------ gdbserver/lynx-low.h | 4 ++++ gdbserver/nto-low.c | 10 ++++------ gdbserver/nto-low.h | 4 ++++ gdbserver/target.h | 26 ++++++++++++-------------- gdbserver/win32-low.c | 10 ++++------ gdbserver/win32-low.h | 4 ++++ 9 files changed, 44 insertions(+), 38 deletions(-) diff --git a/gdbserver/linux-low.c b/gdbserver/linux-low.c index 9f6f1064f45..9514cffb589 100644 --- a/gdbserver/linux-low.c +++ b/gdbserver/linux-low.c @@ -5650,8 +5650,8 @@ usr_store_inferior_registers (const struct regs_info *regs_info, #endif -static void -linux_fetch_registers (struct regcache *regcache, int regno) +void +linux_process_target::fetch_registers (regcache *regcache, int regno) { int use_regsets; int all = 0; @@ -5683,8 +5683,8 @@ linux_fetch_registers (struct regcache *regcache, int regno) } } -static void -linux_store_registers (struct regcache *regcache, int regno) +void +linux_process_target::store_registers (regcache *regcache, int regno) { int use_regsets; int all = 0; @@ -7359,8 +7359,6 @@ linux_get_hwcap2 (int wordsize) static linux_process_target the_linux_target; static process_stratum_target linux_target_ops = { - linux_fetch_registers, - linux_store_registers, linux_prepare_to_access_memory, linux_done_accessing_memory, linux_read_memory, diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h index c402d8e1c94..e361f29877c 100644 --- a/gdbserver/linux-low.h +++ b/gdbserver/linux-low.h @@ -290,6 +290,10 @@ public: ptid_t wait (ptid_t ptid, target_waitstatus *status, int options) override; + + void fetch_registers (regcache *regcache, int regno) override; + + void store_registers (regcache *regcache, int regno) override; }; #define get_thread_lwp(thr) ((struct lwp_info *) (thread_target_data (thr))) diff --git a/gdbserver/lynx-low.c b/gdbserver/lynx-low.c index 24830d1c289..c27c1182415 100644 --- a/gdbserver/lynx-low.c +++ b/gdbserver/lynx-low.c @@ -581,8 +581,8 @@ lynx_process_target::thread_alive (ptid_t ptid) /* Implement the fetch_registers target_ops method. */ -static void -lynx_fetch_registers (struct regcache *regcache, int regno) +void +lynx_process_target::fetch_registers (regcache *regcache, int regno) { struct lynx_regset_info *regset = lynx_target_regsets; ptid_t inferior_ptid = ptid_of (current_thread); @@ -606,8 +606,8 @@ lynx_fetch_registers (struct regcache *regcache, int regno) /* Implement the store_registers target_ops method. */ -static void -lynx_store_registers (struct regcache *regcache, int regno) +void +lynx_process_target::store_registers (regcache *regcache, int regno) { struct lynx_regset_info *regset = lynx_target_regsets; ptid_t inferior_ptid = ptid_of (current_thread); @@ -727,8 +727,6 @@ static lynx_process_target the_lynx_target; /* The LynxOS target_ops vector. */ static process_stratum_target lynx_target_ops = { - lynx_fetch_registers, - lynx_store_registers, NULL, /* prepare_to_access_memory */ NULL, /* done_accessing_memory */ lynx_read_memory, diff --git a/gdbserver/lynx-low.h b/gdbserver/lynx-low.h index 1b21ffb4c0a..0d82f86e94e 100644 --- a/gdbserver/lynx-low.h +++ b/gdbserver/lynx-low.h @@ -76,6 +76,10 @@ public: ptid_t wait (ptid_t ptid, target_waitstatus *status, int options) override; + + void fetch_registers (regcache *regcache, int regno) override; + + void store_registers (regcache *regcache, int regno) override; }; /* The inferior's target description. This is a global because the diff --git a/gdbserver/nto-low.c b/gdbserver/nto-low.c index 462936f5eb7..7dce2fa9cb5 100644 --- a/gdbserver/nto-low.c +++ b/gdbserver/nto-low.c @@ -623,8 +623,8 @@ nto_process_target::wait (ptid_t ptid, target_waitstatus *ourstatus, /* Fetch inferior's registers for currently selected thread (CURRENT_INFERIOR). If REGNO is -1, fetch all registers, or REGNO register only otherwise. */ -static void -nto_fetch_registers (struct regcache *regcache, int regno) +void +nto_process_target::fetch_registers (regcache *regcache, int regno) { int regsize; procfs_greg greg; @@ -671,8 +671,8 @@ nto_fetch_registers (struct regcache *regcache, int regno) /* Store registers for currently selected thread (CURRENT_INFERIOR). We always store all registers, regardless of REGNO. */ -static void -nto_store_registers (struct regcache *regcache, int regno) +void +nto_process_target::store_registers (regcache *regcache, int regno) { procfs_greg greg; int err; @@ -941,8 +941,6 @@ nto_sw_breakpoint_from_kind (int kind, int *size) static nto_process_target the_nto_target; static process_stratum_target nto_target_ops = { - nto_fetch_registers, - nto_store_registers, NULL, /* prepare_to_access_memory */ NULL, /* done_accessing_memory */ nto_read_memory, diff --git a/gdbserver/nto-low.h b/gdbserver/nto-low.h index faa7cab2941..1fb57f4f73d 100644 --- a/gdbserver/nto-low.h +++ b/gdbserver/nto-low.h @@ -66,6 +66,10 @@ public: ptid_t wait (ptid_t ptid, target_waitstatus *status, int options) override; + + void fetch_registers (regcache *regcache, int regno) override; + + void store_registers (regcache *regcache, int regno) override; }; /* The inferior's target description. This is a global because the diff --git a/gdbserver/target.h b/gdbserver/target.h index 43532161f34..41f1fc2e27d 100644 --- a/gdbserver/target.h +++ b/gdbserver/target.h @@ -70,18 +70,6 @@ class process_target; shared code. */ struct process_stratum_target { - /* Fetch registers from the inferior process. - - If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO. */ - - void (*fetch_registers) (struct regcache *regcache, int regno); - - /* Store registers to the inferior process. - - If REGNO is -1, store all registers; otherwise, store at least REGNO. */ - - void (*store_registers) (struct regcache *regcache, int regno); - /* Prepare to read or write memory from the inferior process. Targets use this to do what is necessary to get the state of the inferior such that it is possible to access memory. @@ -481,6 +469,16 @@ public: null_ptid/TARGET_WAITKIND_IGNORE. */ virtual ptid_t wait (ptid_t ptid, target_waitstatus *status, int options) = 0; + + /* Fetch registers from the inferior process. + + If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO. */ + virtual void fetch_registers (regcache *regcache, int regno) = 0; + + /* Store registers to the inferior process. + + If REGNO is -1, store all registers; otherwise, store at least REGNO. */ + virtual void store_registers (regcache *regcache, int regno) = 0; }; extern process_stratum_target *the_target; @@ -524,10 +522,10 @@ int kill_inferior (process_info *proc); the_target->pt->thread_alive (pid) #define fetch_inferior_registers(regcache, regno) \ - (*the_target->fetch_registers) (regcache, regno) + the_target->pt->fetch_registers (regcache, regno) #define store_inferior_registers(regcache, regno) \ - (*the_target->store_registers) (regcache, regno) + the_target->pt->store_registers (regcache, regno) #define join_inferior(pid) \ the_target->pt->join (pid) diff --git a/gdbserver/win32-low.c b/gdbserver/win32-low.c index b2723b6d292..1774c22ca9b 100644 --- a/gdbserver/win32-low.c +++ b/gdbserver/win32-low.c @@ -1649,16 +1649,16 @@ win32_process_target::wait (ptid_t ptid, target_waitstatus *ourstatus, /* Fetch registers from the inferior process. If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO. */ -static void -win32_fetch_inferior_registers (struct regcache *regcache, int regno) +void +win32_process_target::fetch_registers (regcache *regcache, int regno) { child_fetch_inferior_registers (regcache, regno); } /* Store registers to the inferior process. If REGNO is -1, store all registers; otherwise, store at least REGNO. */ -static void -win32_store_inferior_registers (struct regcache *regcache, int regno) +void +win32_process_target::store_registers (regcache *regcache, int regno) { child_store_inferior_registers (regcache, regno); } @@ -1827,8 +1827,6 @@ win32_sw_breakpoint_from_kind (int kind, int *size) static win32_process_target the_win32_target; static process_stratum_target win32_target_ops = { - win32_fetch_inferior_registers, - win32_store_inferior_registers, NULL, /* prepare_to_access_memory */ NULL, /* done_accessing_memory */ win32_read_inferior_memory, diff --git a/gdbserver/win32-low.h b/gdbserver/win32-low.h index aa509f64ca8..451c3f1b17d 100644 --- a/gdbserver/win32-low.h +++ b/gdbserver/win32-low.h @@ -125,6 +125,10 @@ public: ptid_t wait (ptid_t ptid, target_waitstatus *status, int options) override; + + void fetch_registers (regcache *regcache, int regno) override; + + void store_registers (regcache *regcache, int regno) override; }; /* Retrieve the context for this thread, if not already retrieved. */