[PATCH] D26567: Improve DWARF parsing speed by improving DWARFAbbreviationDeclaration
Paul Robinson via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 14 07:47:15 PST 2016
probinson added inline comments.
================
Comment at: lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp:68
+ ++FixedAttributeSize->NumAddrs;
+ else if (F == DW_FORM_ref_addr)
+ ++FixedAttributeSize->NumRefAddrs;
----------------
clayborg wrote:
> clayborg wrote:
> > probinson wrote:
> > > Is there some reason you're only considering FORM_ref_addr here? I'd think you would want to count all of the format-dependent reference forms here (ref_addr, strp, sec_offset, and all the similar new ones in DWARF 5). I'd especially think FORM_strp would be important as that's used by pretty much every abbreviation that has a DW_AT_name.
> > Yep, I need to fix this. Good catch.
> Actually isn't DW_FORM_ref_addr special? It is AddrSize in DWARF 2, and in DWARF 3 and later it is 4 bytes for DWARF32 and 8 for DWARF64. So I need an extra field in FixedSizeInfo that counts the DWARF32/DWARF64 only variants. Am I correct in that the following:
>
> ```
> case DW_FORM_strp:
> case DW_FORM_GNU_ref_alt:
> case DW_FORM_GNU_strp_alt:
> case DW_FORM_line_strp:
> case DW_FORM_sec_offset:
> case DW_FORM_strp_sup:
> case DW_FORM_ref_sup:
> ```
>
> They are not AddrSize in DWARF 2 right? It just switches off of DWARF32/DWARF64.
>
Yes, DW_FORM_ref_addr is special for DWARF v2. The other forms you list did not exist in DWARF 2 and so are only dependent on the 32/64 format.
https://reviews.llvm.org/D26567
More information about the llvm-commits
mailing list