1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2015-2016 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18 #include <stdlib.h> 19 20 typedef int (*final_t) (int arg); 21 22 int 23 final (int arg) 24 { 25 return arg + 1; 26 } 27 28 asm (".type gnu_ifunc, %gnu_indirect_function"); 29 30 final_t 31 gnu_ifunc (void) 32 { 33 return final; 34 } 35 36 extern int gnu_ifunc_alias (int arg) __attribute__ ((alias ("gnu_ifunc"))); 37 38 static int resultvar; 39 40 int 41 main (void) 42 { 43 if (gnu_ifunc_alias (10) != 11) 44 abort (); 45 return resultvar; 46 } 47