Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>
>> [ typedef lists ]
>>
>
> Hmm ... the windows members are claiming that "int", "char", "float",
> "double" etc are typedefs, which doesn't exactly match up with my
> mental model of C. On the other hand, dungbeetle is failing to report
> a whole bunch of typedefs that it should report, for example
> AfterTriggerEventDataOneCtid which comes from entirely non platform
> specific code in commands/trigger.c.
>
> In short, I don't think I trust this data at all...
>
>
>
Well, the procedure for generating it is quite public.
The relevant piece of perl is this - feel free to suggest improvements:
if (@err == 1) # Linux { @dumpout = `objdump -W $bin 2>/dev/null | egrep -A3
'(DW_TAG_typedef|DW_TAG_structure_type|DW_TAG_union_type)' 2>/dev/null`; foreach (@dumpout) {
@flds = split; next if ($flds[0] ne 'DW_AT_name' || $flds[-1] =~
/^DW_FORM_str/); $syms{$flds[-1]} =1; } } else { @dumpout =
`objdump--stabs $bin 2>/dev/null`; foreach (@dumpout) { @flds = split;
nextif (@flds < 7); next if ($flds[1] ne 'LSYM' || $flds[6] !~ /([^:]+):[tT]/); $syms{$1}
=1; } }
cheers
andrew