1/* Test 3 STT_GNU_IFUNC symbols. */ 2 3#include "ifunc-sel.h" 4 5int global __attribute__ ((visibility ("hidden"))) = -1; 6 7static int 8one (void) 9{ 10 return 1; 11} 12 13static int 14minus_one (void) 15{ 16 return -1; 17} 18 19static int 20zero (void) 21{ 22 return 0; 23} 24 25void * foo1_ifunc (void) __asm__ ("foo1"); 26__asm__(".type foo1, %gnu_indirect_function"); 27 28void * 29foo1_ifunc (void) 30{ 31 return ifunc_sel (one, minus_one, zero); 32} 33 34void * foo2_ifunc (void) __asm__ ("foo2"); 35__asm__(".type foo2, %gnu_indirect_function"); 36 37void * 38foo2_ifunc (void) 39{ 40 return ifunc_sel (minus_one, one, zero); 41} 42 43void * foo3_ifunc (void) __asm__ ("foo3"); 44__asm__(".type foo3, %gnu_indirect_function"); 45 46void * 47foo3_ifunc (void) 48{ 49 return ifunc_sel (one, zero, minus_one); 50} 51