Differentiate between whether the name for an extern decl came from the link_name attribute or
just from declaration itself. This is important because we don’t want to report clashes on
symbol name if they don’t actually clash because one or the other links against a symbol with a
different name.
Get the name of the symbol that’s linked against for a given extern declaration. That is,
the name specified in a #[link_name = …] attribute if one was specified, else, just the
symbol’s name.
Checks whether two types are structurally the same enough that the declarations shouldn’t
clash. We need this so we don’t emit a lint when two modules both declare an extern struct,
with the same members (as the declarations shouldn’t clash).