https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83967
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- Still not 100% sure which Handler should prevail in resolving the symbol for Dispatch. Currently it seems the non-weak one prevails which looks correct. I think in both cases the resolution from GNU ld is bogus. Take the working one: 190 16b2980a71930688 PREEMPTED_REG Handler that's clearly wrong -- Handler prevails! 190 801577c96f9ccef3 PREVAILING_DEF_IRONLY Handler that's wrong because in the assembler file Handler is used to resolve the symbol at Dispatch. gold seems to get it correct as PREVAILING_DEF (but not _IRONLY).