From patchwork Tue Feb 11 09:01:54 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: 37931 Received: (qmail 122756 invoked by alias); 11 Feb 2020 09:04:00 -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 119990 invoked by uid 89); 11 Feb 2020 09:03:42 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.5 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= X-HELO: mga07.intel.com Received: from mga07.intel.com (HELO mga07.intel.com) (134.134.136.100) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 11 Feb 2020 09:03:30 +0000 Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Feb 2020 01:03:25 -0800 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga005.jf.intel.com with ESMTP; 11 Feb 2020 01:03:25 -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 01B93OWX002282; Tue, 11 Feb 2020 09:03:24 GMT Received: from ulvlx001.iul.intel.com (localhost [127.0.0.1]) by ulvlx001.iul.intel.com with ESMTP id 01B93OqP010639; Tue, 11 Feb 2020 10:03:24 +0100 Received: (from taktemur@localhost) by ulvlx001.iul.intel.com with LOCAL id 01B93OHI010635; Tue, 11 Feb 2020 10:03:24 +0100 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Subject: [PATCH 42/58] gdbserver: turn target op 'stabilize_threads' into a method Date: Tue, 11 Feb 2020 10:01:54 +0100 Message-Id: <8f6041ce2434d03369a36eabbf3b1cd457687c64.1581410935.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 stabilize_threads op a method of process_target. * target.h (struct process_stratum_target): Remove the target op. (class process_target): Add the target op. (target_stabilize_threads): Update the macro. * target.c (process_target::stabilize_threads): Define. Update the derived structs and callers below. * server.c (handle_status): Update. * tracepoint.c (cmd_qtdp): Update. (cmd_qtstart): Update. * linux-low.c (linux_target_ops): Update. (linux_stabilize_threads): Turn into ... (linux_process_target::stabilize_threads): ... this. (linux_wait_1): Update. * linux-low.h (class linux_process_target): Update. * lynx-low.c (lynx_target_ops): Update. * nto-low.c (nto_target_ops): Update. * win32-low.c (win32_target_ops): Update. --- gdbserver/linux-low.c | 9 ++++----- gdbserver/linux-low.h | 2 ++ gdbserver/lynx-low.c | 1 - gdbserver/nto-low.c | 1 - gdbserver/server.c | 2 +- gdbserver/target.c | 6 ++++++ gdbserver/target.h | 14 +++++--------- gdbserver/tracepoint.c | 4 ++-- gdbserver/win32-low.c | 1 - 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gdbserver/linux-low.c b/gdbserver/linux-low.c index 696eec432fc..6b6412f0808 100644 --- a/gdbserver/linux-low.c +++ b/gdbserver/linux-low.c @@ -1620,7 +1620,7 @@ linux_process_target::detach (process_info *process) #endif /* Stabilize threads (move out of jump pads). */ - stabilize_threads (); + target_stabilize_threads (); /* Detach from the clone lwps first. If the thread group exits just while we're detaching, we must reap the clone lwps before we're @@ -2926,8 +2926,8 @@ static ptid_t linux_wait_1 (ptid_t ptid, since for something else in the new run, the thread would now execute the wrong / random instructions. */ -static void -linux_stabilize_threads (void) +void +linux_process_target::stabilize_threads () { thread_info *thread_stuck = find_thread (stuck_in_jump_pad_callback); @@ -3713,7 +3713,7 @@ linux_wait_1 (ptid_t ptid, /* Stabilize threads (move out of jump pads). */ if (!non_stop) - stabilize_threads (); + target_stabilize_threads (); } else { @@ -7444,7 +7444,6 @@ linux_get_hwcap2 (int wordsize) static linux_process_target the_linux_target; static process_stratum_target linux_target_ops = { - linux_stabilize_threads, linux_install_fast_tracepoint_jump_pad, linux_emit_ops, linux_supports_disable_randomization, diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h index f219a90528b..91395038724 100644 --- a/gdbserver/linux-low.h +++ b/gdbserver/linux-low.h @@ -403,6 +403,8 @@ public: void pause_all (bool freeze) override; void unpause_all (bool unfreeze) override; + + void stabilize_threads () 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 1b4b3b74d7a..742c2a85543 100644 --- a/gdbserver/lynx-low.c +++ b/gdbserver/lynx-low.c @@ -735,7 +735,6 @@ static lynx_process_target the_lynx_target; /* The LynxOS target_ops vector. */ static process_stratum_target lynx_target_ops = { - NULL, /* stabilize_threads */ NULL, /* install_fast_tracepoint_jump_pad */ NULL, /* emit_ops */ NULL, /* supports_disable_randomization */ diff --git a/gdbserver/nto-low.c b/gdbserver/nto-low.c index 3c4ba5dcc28..2e1039a83ea 100644 --- a/gdbserver/nto-low.c +++ b/gdbserver/nto-low.c @@ -947,7 +947,6 @@ nto_sw_breakpoint_from_kind (int kind, int *size) static nto_process_target the_nto_target; static process_stratum_target nto_target_ops = { - NULL, /* stabilize_threads */ NULL, /* install_fast_tracepoint_jump_pad */ NULL, /* emit_ops */ NULL, /* supports_disable_randomization */ diff --git a/gdbserver/server.c b/gdbserver/server.c index 670c0fed968..448089fd47c 100644 --- a/gdbserver/server.c +++ b/gdbserver/server.c @@ -3324,7 +3324,7 @@ handle_status (char *own_buf) thread_info *thread = NULL; target_pause_all (false); - stabilize_threads (); + target_stabilize_threads (); gdb_wants_all_threads_stopped (); /* We can only report one status, but we might be coming out of diff --git a/gdbserver/target.c b/gdbserver/target.c index aea66038e1f..d4c0884fd7c 100644 --- a/gdbserver/target.c +++ b/gdbserver/target.c @@ -662,3 +662,9 @@ process_target::unpause_all (bool unfreeze) { /* Nop. */ } + +void +process_target::stabilize_threads () +{ + /* Nop. */ +} diff --git a/gdbserver/target.h b/gdbserver/target.h index 183a35a593e..f1a59d8f09f 100644 --- a/gdbserver/target.h +++ b/gdbserver/target.h @@ -70,9 +70,6 @@ class process_target; shared code. */ struct process_stratum_target { - /* Stabilize all threads. That is, force them out of jump pads. */ - void (*stabilize_threads) (void); - /* Install a fast tracepoint jump pad. TPOINT is the address of the tracepoint internal object as used by the IPA agent. TPADDR is the address of tracepoint. COLLECTOR is address of the function @@ -494,6 +491,9 @@ public: pair should not end up resuming threads that were stopped before the pause call. */ virtual void unpause_all (bool unfreeze); + + /* Stabilize all threads. That is, force them out of jump pads. */ + virtual void stabilize_threads (); }; extern process_stratum_target *the_target; @@ -574,12 +574,8 @@ int kill_inferior (process_info *proc); #define target_unpause_all(unfreeze) \ the_target->pt->unpause_all (unfreeze) -#define stabilize_threads() \ - do \ - { \ - if (the_target->stabilize_threads) \ - (*the_target->stabilize_threads) (); \ - } while (0) +#define target_stabilize_threads() \ + the_target->pt->stabilize_threads () #define install_fast_tracepoint_jump_pad(tpoint, tpaddr, \ collector, lockaddr, \ diff --git a/gdbserver/tracepoint.c b/gdbserver/tracepoint.c index ffa819cf24e..be40c9b4cf1 100644 --- a/gdbserver/tracepoint.c +++ b/gdbserver/tracepoint.c @@ -2606,7 +2606,7 @@ cmd_qtdp (char *own_buf) /* download_tracepoint will update global `tracepoints' list, so it is unsafe to leave threads in jump pad. */ - stabilize_threads (); + target_stabilize_threads (); /* Freeze threads. */ target_pause_all (true); @@ -3226,7 +3226,7 @@ cmd_qtstart (char *packet) top level command. And, required to do here, since we're deleting/rewriting jump pads. */ - stabilize_threads (); + target_stabilize_threads (); /* Freeze threads. */ target_pause_all (true); diff --git a/gdbserver/win32-low.c b/gdbserver/win32-low.c index 4cfdeae88f4..693e0de4a3c 100644 --- a/gdbserver/win32-low.c +++ b/gdbserver/win32-low.c @@ -1848,7 +1848,6 @@ win32_sw_breakpoint_from_kind (int kind, int *size) static win32_process_target the_win32_target; static process_stratum_target win32_target_ops = { - NULL, /* stabilize_threads */ NULL, /* install_fast_tracepoint_jump_pad */ NULL, /* emit_ops */ NULL, /* supports_disable_randomization */