On Tue, Sep 11, 2012 at 03:55:04PM -0700, Ian Lance Taylor wrote:
> +/* The DWARF abbreviations for a compilation unit.  This structure
> +   only exists while reading the compilation unit.  Most DWARF readers
> +   seem to a hash table to map abbrev ID's to abbrev entries.
> +   However, we primarily care about GCC, and GCC simply issues ID's in
> +   numerical order starting at 1.  So we simply keep a sorted vector,
> +   and try to just look up the code.  */

As soon as you run dwz on it, the abbrevs won't be in numerical order,
and even GCC really should be changed to sort the abbrevs by decreasing
use count if there are more than 127 abbrevs (special casing the base types
that are used for typed DWARF stack).

The patch also doesn't handle DW_TAG_imported_unit/DW_TAG_partial_unit,
which is a show stopper if dwz is used (and
DW_FORM_GNU_strp_alt/DW_FORM_GNU_ref_alt isn't handled properly).

BTW, the library doesn't seem to implement what gdb does, in particular
improved support for tail calls.  In gdb that was (at least);
2011-10-09  Jan Kratochvil  <jan.kratoch...@redhat.com>

        Protect entry values against self tail calls.
...

2011-10-09  Jan Kratochvil  <jan.kratoch...@redhat.com>

        Recognize virtual tail call frames.
...

        Jakub

Reply via email to