cmd/link: fix DWARF refs so that they always point to the typedef entry
For types defined as:
type typename struct { ... }
the linker produces two DIEs: (1) a DW_TAG_structure_type DIE and (2) a
DW_TAG_typedef_type DIE having (1) as its type attribute.
All subsequent references to 'typename' should use the
DW_TAG_typedef_type DIE, not the DW_TAG_structure_type. Mostly this is
true but sometimes one reference will use the DW_TAG_structure_type
directly. In particular, this happens to the 'first' reference to the
type in question (where 'first' means whatever happens first in the way
the linker scans its symbols).
This isn't only true of struct types: pointer types, array types, etc.
can also be affected.
This fix solves the problem by always returning the typedef DIE in
newtype, when one is created.