>>> Yes, I understand that's broken, but there are no consumers at this >>> point that make any use of that offset. Would it be acceptable if we >>> just put 0 there? (Given that I expect .debug_pub* to go away soon, I >>> don't think it's worth the trouble of filling in the offset with >>> anything more meaningful.) >> >> I wouldn't expect it to be much harder to put the skeleton there than plain >> 0. > > I was concerned that we might not always have a skeleton type to point > to, but I confess I haven't looked closely enough to know whether > that's a valid concern.
At the time we emit the pubtypes table, we have a pointer to the DIE that has been moved to the type unit, and there's no mapping from that back to the skeleton DIE. As it stands, we don't even emit a skeleton DIE unless one of its descendants is a declaration, so we can't count on always having a skeleton DIE to point to. In the case of enumeration constants, if we did have a skeleton DIE, it would only be for the parent enumeration type. How about we modify the patch to just emit a 0 for the DIE offset in a pubtype entry? -cary