This is PR33738.
In short issue is next. Imagine code and script.
Version script:
{ local: *; };
DSO code:
.text callq foo@PLT .weak foo
foo here is a weak undefined symbol that can be found in archive.
Undefined weak will not fetch archive members
During scan of relocations we call isPreemptible() which calls includeInDynsym() inside,
the latter one calls computeBinding() which computed binding as STB_LOCAL for such symbols,
making it non-preemptible what broke output.
Is this the same as isDefined()?