http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58398
--- Comment #5 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- (In reply to Jan Hubicka from comment #4) > Yes, this seems OK. We probably do not want to be too ken about optimizing > around ifuncs. Yes, the problem is that the resolver function just looks like an alias, but it actually is not. the syntax in the assembler must look like this: .type magic, @gnu_indirect_function .set magic,resolver .globl main .type main, @function main: call magic but it is all linker-magic. if you disassemle that at runtime it looks like main: call implementation I am not sure, maybe returning AVAIL_OVERWRITABLE would be more conservative. it seems to work too.