This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]