As per NonSemantic Debug Info specification in https://github.com/KhronosGroup/SPIRV-Registry/blob/main/nonsemantic/NonSemantic.Shader.DebugInfo.100.asciidoc#DebugTypeComposite, we have the following quote:
Note: To represent a source language opaque type, this instruction must have no Members operands, Size operand must be DebugInfoNone, and Name must start with @ to avoid clashes with user defined names.
However, GLSLANG is prepending @ sign to linkage name instead of name. TBH, I think GLSLANG's behavior makes sense since Name should reflect the real identifier in the source program while linkage name could have arbitrary mangling to carry additional information. However, it is a contradiction with the spec nonetheless. Do we want to fix that in GLSLANG? Or should we try to update the specification? Please help share your comment.