This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Setting long long bitfields
- From: Paul Hilfinger <hilfingr at EECS dot Berkeley dot EDU>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Sun, 31 Oct 2004 15:03:59 -0800
- Subject: Re: [RFA] Setting long long bitfields
- Reply-to: Hilfinger at CS dot Berkeley dot EDU
> > One possible tweak, several of us have an aversion to "?:", it would be
> > nice if it wasn't there :-)
>
> Like this perhaps:
>
> + ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize);
Andreas,
I had considered exactly that line, but unfortunately ran across the
following really irritating provision in the C standard:
"If the value of the right operand is negative or is
*greater than or equal to* the width of the promoted left
operand, the behavior is undefined."
[I know why the provision is there, of course: many machines treat a
shift of wordsize bits as 0, because they mask off bits to the left,
but it's STILL irritating.]
Now, I presume we will never encounter a bitfield size of 8 * sizeof
(ULONGEST), but the original code apparently tried to bullet-proof
against this possibility, so I just went along.
Paul