In Section 6.1.1.2, the parent index entry attribute is described as:

  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.

But in Table 6.1, DW_IDX_parent is described as:

  Index of name table entry for parent

These two seem to contradict each other.  The first one makes more
sense, as it points to a specific index entry, making it non-ambiguous.
With the second one, pointing to an name table entry, how to you know
which of the (possibly multiple) entries associated to that name is the
parent?

Is is just an honest mistake that should be fixed, or am I missing
something?

This caused confusion with the LLVM team here, where it was believed
that either meaning was acceptable:

https://discourse.llvm.org/t/rfc-improve-dwarf-5-debug-names-type-lookup-parsing-speed/74151/16

In the end, LLVM implemented the "offset to the index entry" approach.

Unfortunately, GDB implemented the "name table index" approach (but Tom
Tromey noted that it was a curious choice on the part of DWARF, because
of the ambiguousness, I guess he only saw the Table 6.1 definition).
However, I believe it should be possible to migrate to the other
approach, and differentiate which approach is used using the form, on
the reader side.

Simon
-- 
Dwarf-discuss mailing list
Dwarf-discuss@lists.dwarfstd.org
https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss

Reply via email to