From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7661398960198602634==" MIME-Version: 1.0 From: Conrad Rad To: elfutils-devel@lists.fedorahosted.org Subject: Re: dwarf_aggregate_size() seems to fall over on pointer types Date: Wed, 01 Oct 2014 15:26:34 -0400 Message-ID: In-Reply-To: CAG6CVpVuLt_z40N==1v3=PwXqEuS_wJtB5PSoRm3iBNoggL63g@mail.gmail.com --===============7661398960198602634== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Wed, Oct 1, 2014 at 3:23 PM, Conrad Rad wrote: > On Wed, Oct 1, 2014 at 3:10 PM, Conrad Rad wrote: >> On Wed, Oct 1, 2014 at 2:33 PM, Mark Wielaard wrote: >>> On Wed, Oct 01, 2014 at 10:46:52AM -0700, Josh Stone wrote: >>> How about the attached patch? (I haven't yet looked at the MIPS issue, >>> but think it reasonable to require the producer to add an explicit >>> DW_AT_byte_size if the assumption of address size is not correct.) >> >> On my repro, it fixes the pointer member, but not the array-of-pointer m= ember. > > Oh, wow, I misread. No, that's wrong. > >> struct b { >> char *d; >> void *e[3]; >> ... >> }; >> >> $ ./repro a.out: >> ... >> agg_size(b. (type ) d): 8, 0xffffffff > > This should be 0, 0x8. The size goes in the *size, return value of > dwarf_aggregate_size() should be zero on success, not 8. The patch is > not good as is. > > Thanks, > Conrad With the fixed patch (attached), it works: agg_size(b.d): 0, 0x8 agg_size(b.e): 0, 0x18 Thanks, Conrad --===============7661398960198602634== Content-Type: text/x-patch MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="a.patch" ZGlmZiAtLWdpdCBhL2xpYmR3L0NoYW5nZUxvZyBiL2xpYmR3L0NoYW5nZUxvZwppbmRleCA0MTBi MzFhLi5lNjcxNmQ2IDEwMDY0NAotLS0gYS9saWJkdy9DaGFuZ2VMb2cKKysrIGIvbGliZHcvQ2hh bmdlTG9nCkBAIC0xLDUgKzEsMTEgQEAKKzIwMTQtMTAtMDEgIE1hcmsgV2llbGFhcmQgIDxtandA cmVkaGF0LmNvbT4KKworCSogZHdhcmZfYWdncmVnYXRlX3NpemUuYyAoYWdncmVnYXRlX3NpemUp OiBSZXR1cm4gQ1UgYWRkcmVzc19zaXplCisJZm9yIHNpemVsZXNzIERXX1RBR19wb2ludGVyX3R5 cGUsIERXX1RBR19yZWZlcmVuY2VfdHlwZSBvcgorCURXX1RBR19ydmFsdWVfcmVmZXJlbmNlX3R5 cGUuCisKIDIwMTQtMDktMTIgIFBldHIgTWFjaGF0YSAgPHBtYWNoYXRhQHJlZGhhdC5jb20+CiAK IAkqIG1lbW9yeS1hY2Nlc3MuaCAocmVhZF91Ynl0ZV91bmFsaWduZWRfaW5jKTogQWxsb3cgb25s eSA0LSBhbmQKIAk4LWJ5dGUgcXVhbnRpdGllcy4gIENvbnNlcXVlbnRseSwgcmVuYW1lIHRvLi4u CiAJKHJlYWRfYWRkcl91bmFsaWduZWRfaW5jKTogLi4uIHRoaXMuCmRpZmYgLS1naXQgYS9saWJk dy9kd2FyZl9hZ2dyZWdhdGVfc2l6ZS5jIGIvbGliZHcvZHdhcmZfYWdncmVnYXRlX3NpemUuYwpp bmRleCAwN2M1M2EyLi41ZDIzNTQxIDEwMDY0NAotLS0gYS9saWJkdy9kd2FyZl9hZ2dyZWdhdGVf c2l6ZS5jCisrKyBiL2xpYmR3L2R3YXJmX2FnZ3JlZ2F0ZV9zaXplLmMKQEAgLTEsNyArMSw3IEBA CiAvKiBDb21wdXRlIHNpemUgb2YgYW4gYWdncmVnYXRlIHR5cGUgZnJvbSBEV0FSRi4KLSAgIENv cHlyaWdodCAoQykgMjAxMCBSZWQgSGF0LCBJbmMuCisgICBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw MTQgUmVkIEhhdCwgSW5jLgogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgZWxmdXRpbHMuCiAKICAg IFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgZWl0aGVyCiAKQEAgLTIwMywxMCAr MjAzLDE4IEBAIGFnZ3JlZ2F0ZV9zaXplIChEd2FyZl9EaWUgKmRpZSwgRHdhcmZfV29yZCAqc2l6 ZSwgRHdhcmZfRGllICp0eXBlX21lbSkKICAgICAgIHJldHVybiBhZ2dyZWdhdGVfc2l6ZSAoZ2V0 X3R5cGUgKGRpZSwgJmF0dHJfbWVtLCB0eXBlX21lbSksCiAJCQkgICAgIHNpemUsIHR5cGVfbWVt KTsgLyogVGFpbCBjYWxsLiAgKi8KIAogICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6CiAgICAg ICByZXR1cm4gYXJyYXlfc2l6ZSAoZGllLCBzaXplLCAmYXR0cl9tZW0sIHR5cGVfbWVtKTsKKwor ICAgIC8qIEFzc3VtZSByZWZlcmVuY2VzIGFuZCBwb2ludGVycyBoYXZlIHBvaW50ZXIgc2l6ZSBp ZiBub3QgZ2l2ZW4gYW4KKyAgICAgICBleHBsaWNpdCBEV19BVF9ieXRlX3NpemUuICAqLworICAg IGNhc2UgRFdfVEFHX3BvaW50ZXJfdHlwZToKKyAgICBjYXNlIERXX1RBR19yZWZlcmVuY2VfdHlw ZToKKyAgICBjYXNlIERXX1RBR19ydmFsdWVfcmVmZXJlbmNlX3R5cGU6CisgICAgICAqc2l6ZSA9 IGRpZS0+Y3UtPmFkZHJlc3Nfc2l6ZTsKKyAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAvKiBN b3N0IHR5cGVzIG11c3QgZ2l2ZSB0aGVpciBzaXplIGRpcmVjdGx5LiAgKi8KICAgcmV0dXJuIC0x OwogfQo= --===============7661398960198602634==--