https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120568

Mark Wielaard <mark at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mark at gcc dot gnu.org

--- Comment #2 from Mark Wielaard <mark at gcc dot gnu.org> ---
There is a specification of how to compute a type signature in 7.32 Type
Signature Computation. With an example in E.2 Using Type Units.

I believe this code implements step 4, for other attribute values:

Other attribute values use the letter ’A’ as the marker, and the value consists
of the form code (encoded as an unsigned LEB128 value) followed by the encoding
of the value according to the form code. To ensure reproducibility of the
signature, the set of forms used in the signature computation is limited to the
following: DW_FORM_sdata, DW_FORM_flag, DW_FORM_string, DW_FORM_exprloc, and
DW_FORM_block.

So if I am reading the specification correctly then DW_FORM_udata wouldn't be
allowed here.

I don't think there is an inter-operability issue here. A producer would
generate both the signature and the COMDAT section it refers to. A linker would
just not be able to merge them if the producers use slightly different
signature checksums.

Reply via email to