int library_func1 (void) { return 2; } int global = 1; #ifdef WITH_IFUNC static int minus_one (void) { return -1; } static int zero (void) { return 0; } void * library_func2_ifunc (void) __asm__ ("library_func2"); void * library_func2_ifunc (void) { return global ? minus_one : zero ; } __asm__(".type library_func2, %gnu_indirect_function"); extern int library_func2 (int); extern __typeof (library_func2) library_func2 __asm__ ("__GI_library_func2"); __asm__(".global __GI_library_func2"); __asm__(".hidden __GI_library_func2"); __asm__("__GI_library_func2 = library_func2"); int library_func (int x) { return library_func2 (x); } #else /* WITHOUT_IFUNC */ int library_func2 (void) { return 3; } #endif |