From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Berlin To: Jim Blandy Cc: gdb-patches@sources.redhat.com Subject: Re: RFA: correctly compute addresses of embedded objects Date: Fri, 18 May 2001 18:10:00 -0000 Message-id: <87d796cff9.fsf@dynamic-addr-83-177.resnet.rochester.edu> References: <20010518001422.142275E9DB@zwingli.cygnus.com> X-SW-Source: 2001-05/msg00362.html Jim Blandy writes: > 2001-05-17 Jim Blandy > > * 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