This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Question: Checking register value in buffer
- From: Joel Brobecker <brobecker at adacore dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Thu, 19 May 2005 12:04:44 +1000
- Subject: Question: Checking register value in buffer
Hello,
I'm wondering if there is a usual way for what I'm trying to do.
Basically, I have fetched a 64bit floating point register on alpha
using:
regcache_cooked_read (current_regcache, (insn >> 21) & 0x1f, reg);
where reg is a ``char reg[8]''.
Now, I'd like to perform the following tests:
zero (reg & 0x7fff_ffff_ffff_ffff) == 0
sign (reg & 0x8000_0000_0000_0000) != 0
Right now, I'm juggling with each byte of the buffer, and doing checks
like this:
fp_register_zero_p (char *buf)
{
return ((buf[1] & 0x0f) == 0 && buf[2] == 0 && buf[3] == 0
&& buf[4] == 0 && buf[5] == 0 && buf[6] == 0 && buf[7] == 0);
I thought about something like:
LONGEST rav = extract_signed_integer (buf, 8)
and then do the test using integer arithmetics. But then I'm not guarantied
that LONGEST is at least 64bit long, am I.
How are these sort of checks usually done in GDB?
Thanks,
--
Joel