http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46820
--- Comment #10 from Jan Hubicka <hubicka at gcc dot gnu.org> 2010-12-14 10:27:03 UTC --- __asm__(".weak\tfoo\n\t.set\tfoo,bar"); sets FOO as equivalent of BAR. I guess this breaks when asm ends up in different partition than BAR and also leads to undefined symbols when LTO symtab is used since that one does not define any of symbols defined in asm statements. I am affraid that there is currently no way to make such asm statement LTO friendly and also that we are quite broken WRT symbols defined in the asm statements (I guess I didn't see this with Mozilla since it is shared library). Isn't there function attribute that does the same as your asm statement?