# Copyright 2015-2022 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . if {[skip_ifunc_tests]} { return 0 } standard_testfile set flags "" if [test_compiler_info gcc*] { set flags additional_flags=-Wno-attribute-alias } with_test_prefix "nodebug" { if { [prepare_for_testing "failed to prepare" "$testfile-nodebug" \ $srcfile $flags] } { return -1 } if ![runto_main] { return -1 } # This binary has no debug information, so force the language to C in case # GDB happened to see real asm code when it stopped at the entry point # when talking to a remote target, like gdbserver. This guarantees the # feature check below will work. gdb_test_no_output "set language c" "" if {[skip_compile_feature_tests]} { untested "compile command not supported (could not find libcc1 shared library?)" return -1 } gdb_test "compile code resultvar = gnu_ifunc (10);" \ [multi_line \ "warning: variable has unknown type; assuming int" \ "warning: function has unknown return type; assuming int"] gdb_test "p (int) resultvar" " = 11" } with_test_prefix "debug" { if { [prepare_for_testing "failed to prepare" "$testfile-debug" \ $srcfile "debug $flags"] } { return -1 } if ![runto_main] { return -1 } # gnu_ifunc (10): error: too many arguments to function 'gnu_ifunc' gdb_test "compile code resultvar = gnu_ifunc_alias (10);" \ "warning: function has unknown return type; assuming int" gdb_test "p resultvar" " = 11" }