public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Palmer Dabbelt <palmer@sifive.com>
To: andrew.burgess@embecosm.com
Cc: gdb-patches@sourceware.org, andrew.burgess@embecosm.com
Subject: Re: [PATCH 2/3] gdb/testsuite: Filter out some registers for riscv
Date: Mon, 09 Apr 2018 21:28:00 -0000	[thread overview]
Message-ID: <mhng-74df0d03-8bb9-46b9-b50a-779b86c1aa81@palmer-si-x1c4> (raw)
In-Reply-To: <994fa101380c1495e1ca97a6dcbfdb3bd23ae173.1523286728.git.andrew.burgess@embecosm.com>

On Mon, 09 Apr 2018 08:15:28 PDT (-0700), andrew.burgess@embecosm.com wrote:
> On riscv the cycle counter, and instructions retired counter CSRs are
> read only, this causes problems in the gdb.base/callfuncs.exp test, as
> the values in these CSRs change after an inferior call, the check that
> no target registers have been modified then fails.
>
> Luckily the test already has a mechanism in place for filtering out
> registers that are modified (and can't be restored) by an inferior call,
> so this commit adds the problem registers into this list for riscv.
>
> In the future we may end up needing to filter out more CSRs, but right
> now, for the targets I have access too, these are the only ones causing
> problems.
>
> gdb/testsuite/ChangeLog:
>
> 	* gdb.base/callfuncs.exp (fetch_all_registers): Add riscv register
> 	filter pattern.
> ---
>  gdb/testsuite/ChangeLog              |  5 +++++
>  gdb/testsuite/gdb.base/callfuncs.exp | 10 ++++++++++
>  2 files changed, 15 insertions(+)
>
> diff --git a/gdb/testsuite/gdb.base/callfuncs.exp b/gdb/testsuite/gdb.base/callfuncs.exp
> index 94636938752..c5e39918c2a 100644
> --- a/gdb/testsuite/gdb.base/callfuncs.exp
> +++ b/gdb/testsuite/gdb.base/callfuncs.exp
> @@ -285,6 +285,16 @@ proc fetch_all_registers {test} {
>  	    }
>  	    exp_continue
>  	}
> +	-re "^\(?:cycle\|instret\)\[ \t\]+\[^\r\n\]+\r\n" {
> +	    if [istarget "riscv*-*-*"] {
> +		# Filter out the cycle counter and instructions
> +		# retired counter CSRs which are read-only, giving
> +		# spurious differences.
> +	    } else {
> +		lappend all_registers_lines $expect_out(0,string)
> +	    }
> +	    exp_continue
> +	}
>  	-re "^\[^ \t\]+\[ \t\]+\[^\r\n\]+\r\n" {
>  	    lappend all_registers_lines $expect_out(0,string)
>  	    exp_continue

I think we only want to check the X and F registers here -- essentially every 
CSR is a special register where you can't really rely on the value not being 
changed somewhere by hardware.  For example:

* The interrupt pending bits could flip at any point, even if interrupts are 
  disabled.
* The floating-point dirty and exception state bits could change if a
  floating-point instruction executes.
* The various trap CSRs (epc, badaddr, cause, etc) get set whenever a trap is 
  executed.

  reply	other threads:[~2018-04-09 21:28 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-09 15:15 [PATCH 0/3] Small testsuite updates Andrew Burgess
2018-04-09 15:15 ` [PATCH 3/3] gdb/testsuite: Handle targets with lots of registers Andrew Burgess
2018-04-12 23:40   ` Maciej W. Rozycki
2018-04-13 13:10     ` Pedro Alves
2018-04-13 13:57       ` Maciej W. Rozycki
2018-05-04 12:01         ` Andrew Burgess
2018-05-04 12:47           ` Pedro Alves
2018-04-09 15:15 ` [PATCH 1/3] gdb/testsuite: Fix broken regexp in gdbstub case Andrew Burgess
2018-04-13 12:12   ` Pedro Alves
2018-05-03 19:41     ` Andrew Burgess
2018-05-04  9:18       ` Pedro Alves
2018-04-09 15:15 ` [PATCH 2/3] gdb/testsuite: Filter out some registers for riscv Andrew Burgess
2018-04-09 21:28   ` Palmer Dabbelt [this message]
2018-04-09 22:26     ` Andrew Burgess
2018-04-10 20:25       ` Palmer Dabbelt
2018-04-13 12:55         ` Pedro Alves

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=mhng-74df0d03-8bb9-46b9-b50a-779b86c1aa81@palmer-si-x1c4 \
    --to=palmer@sifive.com \
    --cc=andrew.burgess@embecosm.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).