[Dwarf-discuss] Question on Clang 18.1.8 and DW_IDX_parent
Felipe de Azevedo Piovezan
fpiovezan@apple.com
Wed Sep 4 12:48:47 GMT 2024
David has pretty much summed it up, but to restate:
When we implemented this, we had to be able to distinguish the two cases below:
1. there are no IDX_parent in an accelerator table because the producer did not generate them.
2. there are no IDX_parent in an accelerator table because the parent is not indexed.
Case 1 is represented by the absence of IDX_parent, whereas Case 2 is captured by the "flag_present" case.
We also needed case 2 to be space-efficient, which is accomplished through the use of a Form that has no data associated with it (other than its abbreviation entry).
There is more context on this in the thread below.
https://discourse.llvm.org/t/rfc-improve-dwarf-5-debug-names-type-lookup-parsing-speed/74151/42
Maybe this is something we could submit for standardization?
> On Sep 3, 2024, at 15:05, Adrian Prantl via Dwarf-discuss <dwarf-discuss@lists.dwarfstd.org> wrote:
>
> CC'ing Felipe Piovezan, who implement this feature, in case he wants to fill in more details.
>
> -- adrian
>
>> On Sep 3, 2024, at 10:06 AM, David Blaikie via Dwarf-discuss <dwarf-discuss@lists.dwarfstd.org> wrote:
>>
>> Some context:
>> https://discourse.llvm.org/t/rfc-improve-dwarf-5-debug-names-type-lookup-parsing-speed/74151/44
>> https://github.com/llvm/llvm-project/pull/77457
>>
>> Essentially clang/llvm produces DW_IDX_parent with DW_FORM_flag_present when the entry has a parent, but that parent isn't indexed (I think this mostly comes up for the entities that are direct children of the unit DIE).
>>
>> This is designed to make it more efficient for consumers (lldb, in particular) to do quicker comparisons from the index for qualified names.
>>
>> My vague recollection is the idea that the consumer needs that info to know the difference between "this thing may or may not have a parent" and "this thing has an unnamed/unindexed parent".
>>
>> On Sat, Aug 31, 2024 at 1:03 PM David Anderson via Dwarf-discuss <dwarf-discuss@lists.dwarfstd.org <mailto:dwarf-discuss@lists.dwarfstd.org>> wrote:
>>> Dwarf5. The Name Table .debug_names
>>>
>>> Background:
>>> 6.1.1.2, page 141
>>> Parent debugging information entry, a reference to the
>>> index entry for the parent. This is represented as the
>>> offset of the entry relative to the start of the entry
>>> pool.
>>>
>>> Table 7.232 Name index attribute encodings
>>> DW_IDX_parent constant
>>>
>>>
>>> However clang version 18.1.8 generates
>>>
>>> DW_IDX_parent DW_FORM_flag_present
>>> when there is no parent entry to refer to.
>>>
>>> And that does not seem to match what DWARF5
>>> says to do.
>>>
>>> So what is 'true' supposed to mean for DW_IDX_parent?
>>>
>>> A bit puzzled here.
>>> Thanks for any insight.
>>> David Anderson
>>>
>>> --
>>> Lisp Users: Due to the holiday next
>>> Monday, there will be no garbage
>>> collection. --seen on Slashdot
>>> --
>>> Dwarf-discuss mailing list
>>> Dwarf-discuss@lists.dwarfstd.org <mailto:Dwarf-discuss@lists.dwarfstd.org>
>>> https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss
>> --
>> Dwarf-discuss mailing list
>> Dwarf-discuss@lists.dwarfstd.org
>> https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss
>
> --
> Dwarf-discuss mailing list
> Dwarf-discuss@lists.dwarfstd.org
> https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dwarfstd.org/pipermail/dwarf-discuss/attachments/20240904/a47ecfb2/attachment.htm>
More information about the Dwarf-discuss
mailing list