| # Copyright 2015-2021 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 <http://www.gnu.org/licenses/>. |
| |
| if {[skip_ifunc_tests]} { |
| return 0 |
| } |
| |
| standard_testfile |
| |
| get_compiler_info |
| 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" |
| |
| } |