We prioritize non-* wildcards overs VER_NDX_LOCAL/VER_NDX_GLOBAL "*".
This patch generalizes the rule to "*" of other versions and thus fixes PR40176.
I don't feel strongly about this GNU linkers' behavior but the
generalization simplifies code.
Delete config->defaultSymbolVersion which was used to special case
VER_NDX_LOCAL/VER_NDX_GLOBAL "*".
In SymbolTable::scanVersionScript, custom versions are handled the same
way as VER_NDX_LOCAL/VER_NDX_GLOBAL. So merge
config->versionScript{Locals,Globals} into config->versionDefinitions.
Overall this seems to simplify the code.
In SymbolTable::assign{Exact,Wildcard}Versions,
sym->verdefIndex == config->defaultSymbolVersion is changed to
verdefIndex == UINT32_C(-1).
This allows us to give duplicate assignment diagnostics for
{ global: foo; }; V1 { global: foo; };
In test/linkerscript/version-script.s:
vs_index of an undefined symbol changes from 0 to 1. This doesn't matter (arguably 1 is better because the binding is STB_GLOBAL) because vs_index of an undefined symbol is ignored.