1# Copyright 2015-2023 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16load_lib compile-support.exp 17 18if {[skip_ifunc_tests]} { 19 return 0 20} 21 22standard_testfile 23 24set flags "" 25if [test_compiler_info gcc*] { 26 set flags additional_flags=-Wno-attribute-alias 27} 28 29with_test_prefix "nodebug" { 30 31 if { [prepare_for_testing "failed to prepare" "$testfile-nodebug" \ 32 $srcfile $flags] } { 33 return -1 34 } 35 36 if ![runto_main] { 37 return -1 38 } 39 40 # This binary has no debug information, so force the language to C in case 41 # GDB happened to see real asm code when it stopped at the entry point 42 # when talking to a remote target, like gdbserver. This guarantees the 43 # feature check below will work. 44 gdb_test_no_output "set language c" "" 45 46 if {[skip_compile_feature_untested]} { 47 return -1 48 } 49 50 gdb_test "compile code resultvar = gnu_ifunc (10);" \ 51 [multi_line \ 52 "warning: variable has unknown type; assuming int" \ 53 "warning: function has unknown return type; assuming int"] 54 55 gdb_test "p (int) resultvar" " = 11" 56 57} 58 59with_test_prefix "debug" { 60 61 if { [prepare_for_testing "failed to prepare" "$testfile-debug" \ 62 $srcfile "debug $flags"] } { 63 return -1 64 } 65 66 if ![runto_main] { 67 return -1 68 } 69 # gnu_ifunc (10): error: too many arguments to function 'gnu_ifunc' 70 gdb_test "compile code resultvar = gnu_ifunc_alias (10);" \ 71 "warning: function has unknown return type; assuming int" 72 gdb_test "p resultvar" " = 11" 73 74} 75