Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pierre Langlois <pierre.langlois@arm.com>
To: gdb-patches@sourceware.org
Cc: Pierre Langlois <pierre.langlois@arm.com>
Subject: [PATCH] [AArch64] Mark single precision pseudo registers unavailable if invalid
Date: Wed, 15 Jul 2015 10:53:00 -0000	[thread overview]
Message-ID: <1436957554-1403-1-git-send-email-pierre.langlois@arm.com> (raw)

Hi all,

I noticed two failure in gdb.trace/mi-trace-frame-collected.exp:

FAIL: gdb.trace/mi-trace-frame-collected.exp: live:
  -trace-frame-collected (register)
FAIL: gdb.trace/mi-trace-frame-collected.exp: tfile:
  -trace-frame-collected (register)

In these cases, we are not collecting registers so the MI command
-trace-frame-collected should only give us the value of the PC.
However, it also gives us all of the single precision pseudo registers,
initialized with 0x0.

We can reproduce this error by simply issuing the
'maint print cooked-register' when no inferior is connected:

~~~
...
(gdb) maint print cooked-register
 Name         Nr  Rel Offset    Size  Type            Cooked value
 x0            0    0      0       8 long            <unavailable>
 x1            1    1      8       8 long            <unavailable>
 ...
 d30         130   62   1540       8 *1              <unavailable>
 d31         131   63   1548       8 *1              <unavailable>
 s0          132   64   1556       4 *1              0x00000000
 s1          133   65   1560       4 *1              0x00000000
 s2          134   66   1564       4 *1              0x00000000
 ...
 s28         160   92   1668       4 *1              0x00000000
 s29         161   93   1672       4 *1              0x00000000
 s30         162   94   1676       4 *1              0x00000000
 s31         163   95   1680       4 *1              0x00000000
 h0          164   96   1684       2 *1              <unavailable>
 h1          165   97   1686       2 *1              <unavailable>
 h2          166   98   1688       2 *1              <unavailable>
 ...
~~~

It turns out GDB does not check if S registers are valid before returning
a value for them.  It should return <unavailable> in this case.

Thanks,
Pierre

gdb/ChangeLog:

	* aarch64-tdep.c (aarch64_pseudo_read_value): Mark S register as
	unavailable if invalid.
---
 gdb/aarch64-tdep.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index 2cecad0..cec4d3e 100644
--- a/gdb/aarch64-tdep.c
+++ b/gdb/aarch64-tdep.c
@@ -2482,7 +2482,11 @@ aarch64_pseudo_read_value (struct gdbarch *gdbarch,
 
       v_regnum = AARCH64_V0_REGNUM + regnum - AARCH64_S0_REGNUM;
       status = regcache_raw_read (regcache, v_regnum, reg_buf);
-      memcpy (buf, reg_buf, S_REGISTER_SIZE);
+      if (status != REG_VALID)
+	mark_value_bytes_unavailable (result_value, 0,
+				      TYPE_LENGTH (value_type (result_value)));
+      else
+	memcpy (buf, reg_buf, S_REGISTER_SIZE);
       return result_value;
     }
 
-- 
2.1.0


             reply	other threads:[~2015-07-15 10:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-15 10:53 Pierre Langlois [this message]
2015-07-15 14:01 ` Yao Qi
2015-07-15 14:41   ` Yao Qi
2015-07-16  9:09     ` Pierre Langlois

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=1436957554-1403-1-git-send-email-pierre.langlois@arm.com \
    --to=pierre.langlois@arm.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