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]

Re: RFA: correctly compute addresses of embedded objects


Jim Blandy <jimb@zwingli.cygnus.com> writes:

> 2001-05-17  Jim Blandy  <jimb@redhat.com>
> 
> 	* valops.c (value_addr): Don't include VALUE_EMBEDDED_OFFSET in
> 	the pointer value we return.  It should point at the embedded
> 	object ARG1 represents, not at the enclosing object ARG1 might
> 	also be holding.

Errr, value_addr gives back something for which arg1 is the contents.

We then set the VALUE_POINTED_TO_OFFSET to the VALUE_EMBEDDED_OFFSET of
arg1, to keep track of the relative location  of the subobject in the
full object.
In other words, the embedded object is at the address of the enclosing
object + the embedded offset .
So the actual pointer *should* include the embedded offset, because
this is where the embedded object really is. 

Otherwise, you've not only made it not point to the embedded object,
you've screwed the POINTED_TO_OFFSET calculation as well.

I'm not quite sure of what problem you are trying to fix, maybe if you
could throw me a testcase?



-- 
"I owed my friend George $25.  For about three weeks I owed it to
him.  The whole time I had the money on me -- he didn't know it.
Walking through New York City, 2:30 in the morning and got held
up.  He said, "Gimme all your money."  I said, "Wait a minute."
I said, "George, here's the 25 dollars I owe you."  The the
thief took a thousand dollars out of his own money and he gave
it to George.  At gunpoint made me borrow a thousand dollars
from George.
"-Steven Wright


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