From: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 00/26] gdbserver: refactor regcache and allow gradually populating
Date: Tue, 28 Feb 2023 12:27:58 +0100 [thread overview]
Message-ID: <cover.1677582744.git.tankut.baris.aktemur@intel.com> (raw)
Hello,
Gdbserver's regcache is defined and used in a way that it is either
invalid or fetches all the registers from the target prior to being
used. It also seems some regcache functions have two different contracts
based on argument values (e.g. a buffer being nullptr).
This is an attempt to refactor the regcache in gdbserver to
- convert several free functions to methods.
- use and update register statuses more consistently.
- allow populating register values gradually, instead of having to
fetch all register values from the target.
The last item above is utilized in our (Intel) downstream debugger.
No gdbserver low target is modified to utilize that feature in this
series.
Regression-tested on X86_64 Linux using the native-gdbserver and
native-extended-gdbserver board files.
Tankut Baris Aktemur (26):
gdbserver: convert init_register_cache into regcache::initialize
gdbserver: convert new_register_cache into a regcache constructor
gdbserver: by-pass regcache to access tdesc only
gdbserver: boolify and defaultize the 'fetch' parameter of
get_thread_regcache
gdbserver: add a pointer to the owner thread in regcache
gdbserver: turn part of get_thread_regcache into regcache::fetch
gdbserver: convert regcache_cpy into regcache::copy_from
gdbserver: convert free_register_cache into a destructor of regcache
gdbserver: extract out regcache::invalidate and regcache::discard
gdbserver: convert registers_to_string into
regcache::registers_to_string
gdbserver: convert registers_from_string into
regcache::registers_from_string
gdbserver: convert supply_regblock to regcache::supply_regblock
gdbserver: convert register_data into regcache::register_data
gdbserver: introduce and use regcache::set_register_status
gdbserver: check for nullptr condition in
regcache::get_register_status
gdbserver: boolify regcache fields
gdbserver: rename regcache's registers_valid to registers_fetched
gdbsupport: fix a typo in a comment in common-regcache.h
gdbserver: fix the declared type of register_status in regcache
gdbserver: make some regcache fields private
gdbserver: use REG_UNKNOWN for a regcache's register statuses
gdbserver: zero-out register values in regcache-discard
gdbserver: set register statuses in registers_from_string
gdbserver: return tracked register status in
regcache_raw_read_unsigned
gdbserver: refuse null argument in regcache::supply_regblock
gdbserver: allow gradually populating and selectively storing a
regcache
gdbserver/gdbthread.h | 2 +-
gdbserver/linux-aarch32-low.cc | 2 +-
gdbserver/linux-low.cc | 18 +-
gdbserver/linux-ppc-low.cc | 12 +-
gdbserver/linux-s390-low.cc | 14 +-
gdbserver/linux-x86-low.cc | 9 +-
gdbserver/mem-break.cc | 4 +-
gdbserver/proc-service.cc | 2 +-
gdbserver/regcache.cc | 305 ++++++++++++++++++++-------------
gdbserver/regcache.h | 92 ++++++----
gdbserver/remote-utils.cc | 2 +-
gdbserver/server.cc | 16 +-
gdbserver/tracepoint.cc | 25 ++-
gdbserver/win32-low.cc | 2 +-
gdbsupport/common-regcache.h | 11 +-
15 files changed, 302 insertions(+), 214 deletions(-)
--
2.25.1
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
next reply other threads:[~2023-02-28 11:28 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-28 11:27 Tankut Baris Aktemur [this message]
2023-02-28 11:27 ` [PATCH 01/26] gdbserver: convert init_register_cache into regcache::initialize Tankut Baris Aktemur
2023-12-21 20:12 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 02/26] gdbserver: convert new_register_cache into a regcache constructor Tankut Baris Aktemur
2023-12-21 20:19 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 03/26] gdbserver: by-pass regcache to access tdesc only Tankut Baris Aktemur
2023-12-21 20:22 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 04/26] gdbserver: boolify and defaultize the 'fetch' parameter of get_thread_regcache Tankut Baris Aktemur
2023-12-21 20:24 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 05/26] gdbserver: add a pointer to the owner thread in regcache Tankut Baris Aktemur
2023-12-21 20:28 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 06/26] gdbserver: turn part of get_thread_regcache into regcache::fetch Tankut Baris Aktemur
2023-12-21 20:48 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 07/26] gdbserver: convert regcache_cpy into regcache::copy_from Tankut Baris Aktemur
2023-12-21 20:50 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 08/26] gdbserver: convert free_register_cache into a destructor of regcache Tankut Baris Aktemur
2023-12-21 20:57 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 09/26] gdbserver: extract out regcache::invalidate and regcache::discard Tankut Baris Aktemur
2023-12-21 21:08 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 10/26] gdbserver: convert registers_to_string into regcache::registers_to_string Tankut Baris Aktemur
2023-12-21 21:13 ` Simon Marchi
2023-12-21 21:19 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 11/26] gdbserver: convert registers_from_string into regcache::registers_from_string Tankut Baris Aktemur
2023-02-28 11:28 ` [PATCH 12/26] gdbserver: convert supply_regblock to regcache::supply_regblock Tankut Baris Aktemur
2023-12-21 21:23 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 13/26] gdbserver: convert register_data into regcache::register_data Tankut Baris Aktemur
2023-12-21 21:26 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 14/26] gdbserver: introduce and use regcache::set_register_status Tankut Baris Aktemur
2023-12-21 21:30 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 15/26] gdbserver: check for nullptr condition in regcache::get_register_status Tankut Baris Aktemur
2023-12-21 21:32 ` Simon Marchi
2023-12-21 21:34 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 16/26] gdbserver: boolify regcache fields Tankut Baris Aktemur
2023-12-22 3:20 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 17/26] gdbserver: rename regcache's registers_valid to registers_fetched Tankut Baris Aktemur
2023-12-22 3:23 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 18/26] gdbsupport: fix a typo in a comment in common-regcache.h Tankut Baris Aktemur
2023-12-22 3:24 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 19/26] gdbserver: fix the declared type of register_status in regcache Tankut Baris Aktemur
2023-12-22 3:35 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 20/26] gdbserver: make some regcache fields private Tankut Baris Aktemur
2023-12-22 3:39 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 21/26] gdbserver: use REG_UNKNOWN for a regcache's register statuses Tankut Baris Aktemur
2023-12-22 4:32 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 22/26] gdbserver: zero-out register values in regcache-discard Tankut Baris Aktemur
2023-12-22 4:36 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 23/26] gdbserver: set register statuses in registers_from_string Tankut Baris Aktemur
2023-12-22 4:40 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 24/26] gdbserver: return tracked register status in regcache_raw_read_unsigned Tankut Baris Aktemur
2023-12-22 4:42 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 25/26] gdbserver: refuse null argument in regcache::supply_regblock Tankut Baris Aktemur
2023-12-22 4:54 ` Simon Marchi
2023-02-28 11:28 ` [PATCH 26/26] gdbserver: allow gradually populating and selectively storing a regcache Tankut Baris Aktemur
2023-12-22 16:25 ` Simon Marchi
2023-03-07 20:39 ` [PATCH 00/26] gdbserver: refactor regcache and allow gradually populating Tom Tromey
2023-03-13 14:33 ` Aktemur, Tankut Baris
2023-03-28 13:42 ` Aktemur, Tankut Baris
2023-06-20 12:58 ` Aktemur, Tankut Baris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1677582744.git.tankut.baris.aktemur@intel.com \
--to=tankut.baris.aktemur@intel.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).