Dave Anderson wrote on Fri, Feb 07, 2020: > > Actually, for do_datatype_addr(), I'm pretty sure we never use the > > member_offset at all -- I just replaced member_to_datatype() by > > something that just assigned the member to dm->member and things just > > work for anything I could try (struct foo, struct foo.member, struct > > foo.member1,member2, struct foo.member1.innermember, struct -o foo, > > struct -o foo.member...) > > I'm not following, your SHOW_RAW_DATA patch bumps the incoming addr by > dm->member_offset right? Or do you mean in the normal case? You are > probably right there. Yes, I meant the normal case does not seem to use the result of member_to_datatype() at all, except for it setting dm->member to memberlist[i] Sorry, I'm just mostly thinking out loud, it's just annoying me to call datatype_info twice when most of the time it will get both offset and size filled in. I just tried and with 1000 elements time spent here goes up from 0.79s to 0.97s but that still is very acceptable compared to... 132.30s for the version without -r. It's the stingy part of me that doesn't like doing the same gdb call twice :) > > Can get it in one call with casts, but that's not exactly pretty... > > "(u64)(&((type*)0)->member + 1) - (u64)&((type*)0)->member"... > > > > Would that work for you? > > I'd prefer to put it a separate function and macro, i.e., a new ANON_MEMBER_SIZE() > macro and accompanying anon_member_size(), just to follow convention. Yes, I meant doing that in a new function, was just worried the size computation is a bit too convoluted. I will do as you suggested and submit a new patch when I find some time to cleanup what I have. Cheers, -- Dominique -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility