libctf, create: fix addition of anonymous struct/union members
A Solaris-era bug causes us to check the offsets of types with no names against the first such type when ctf_add_type()ing members to a struct or union. Members with no names (i.e. anonymous struct/union members) can appear as many times as you like in a struct/union, so this check should be skipped in this case. libctf/ * ctf-create.c (membcmp) Skip nameless members.
This commit is contained in:
parent
ab769488e7
commit
f47ca31135
2 changed files with 9 additions and 0 deletions
|
@ -1602,6 +1602,11 @@ membcmp (const char *name, ctf_id_t type _libctf_unused_, unsigned long offset,
|
|||
ctf_bundle_t *ctb = arg;
|
||||
ctf_membinfo_t ctm;
|
||||
|
||||
/* Don't check nameless members (e.g. anonymous structs/unions) against each
|
||||
other. */
|
||||
if (name[0] == 0)
|
||||
return 0;
|
||||
|
||||
if (ctf_member_info (ctb->ctb_file, ctb->ctb_type, name, &ctm) < 0)
|
||||
{
|
||||
ctf_dprintf ("Conflict due to member %s iteration error: %s.\n", name,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue