| # Copyright 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/>. |
| |
| standard_testfile ".S" |
| |
| if { ![istarget "x86_64-*-*"] || ![is_lp64_target] } { |
| verbose "Skipping $testfile.exp" |
| return |
| } |
| |
| if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } { |
| return -1 |
| } |
| |
| # Helper procedure to go to probe NAME |
| |
| proc goto_probe { name } { |
| global decimal hex |
| |
| gdb_test "break -pstap $name" "Breakpoint $decimal at $hex" |
| gdb_test "continue" "Breakpoint $decimal, main \\(\\) at .*\r\n.*STAP_PROBE1.*${name},.*\\)" |
| } |
| |
| # Helper procedure to test the probe's argument |
| |
| proc test_probe_value { value } { |
| gdb_test "print \$_probe_argc" "= 1" |
| gdb_test "print \$_probe_arg0" "= $value" |
| } |
| |
| if { ![runto_main] } { |
| return -1 |
| } |
| |
| # Name and expected value for each probe. |
| set probe_names_and_values { |
| { "log_neg" "0" } |
| { "minus" "-7" } |
| { "bit_neg" "-23" } |
| |
| { "plus1" "4" } |
| { "plus2" "135" } |
| { "plus3" "171" } |
| |
| { "and" "128" } |
| { "or" "12" } |
| } |
| |
| foreach probe_info $probe_names_and_values { |
| set name [lindex $probe_info 0] |
| set value [lindex $probe_info 1] |
| with_test_prefix $name { |
| goto_probe $name |
| test_probe_value $value |
| } |
| } |