1# Copyright 2015-2020 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 16if {[skip_ifunc_tests]} { 17 return 0 18} 19 20standard_testfile 21 22get_compiler_info 23set flags "" 24if [test_compiler_info gcc*] { 25 set flags additional_flags=-Wno-attribute-alias 26} 27 28with_test_prefix "nodebug" { 29 30 if { [prepare_for_testing "failed to prepare" "$testfile-nodebug" \ 31 $srcfile $flags] } { 32 return -1 33 } 34 35 if ![runto_main] { 36 return -1 37 } 38 39 # This binary has no debug information, so force the language to C in case 40 # GDB happened to see real asm code when it stopped at the entry point 41 # when talking to a remote target, like gdbserver. This guarantees the 42 # feature check below will work. 43 gdb_test_no_output "set language c" "" 44 45 if {[skip_compile_feature_tests]} { 46 untested "compile command not supported (could not find libcc1 shared library?)" 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