On Tue, 2012-03-20 at 14:20 -0700, Roland McGrath wrote:
All in all, this looks to me like a half-measure to handle just one
particular case you've encountered. That case is part of a large class of
general ET_REL cases that we decided long ago libdw had no reason to try to
handle. Either we should handle the full generality of ET_REL files
thoroughly--a lot of work that I'm quite doubtful is worthwhile--or we
should stick to the existing decision that we handle ET_REL files only for
the very special case of Linux .ko files (in which the DWARF info looks
much more like the output of a final link for most purposes).
I admit that I had to look up section groups and COMDATs again, so
please yell and scream if I messed up the details. But isn't this
special .ko case easy to spot? When the dwarf_begin_elf is called
without scngrp (aka in global mode) then only pick up .debug_types from
section groups that have the GRP_COMDAT set and contain only one
section, the .debug_type (and the cross check would be that the
signature is referenced by a "global" .debug_info section CU).