int foo (int) __attribute__ ((ifunc ("resolve_foo"))); extern void abort (void); static int foo_impl (int x) { return x; } void bar (void) { int (*f)(int) = foo; if (foo (5) != 5) abort (); if (f (42) != 42) abort (); } void * resolve_foo (void) { return (void *) foo_impl; }