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