diff options
Diffstat (limited to 'gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp')
-rw-r--r-- | gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp b/gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp new file mode 100644 index 0000000..cc9d6c3 --- /dev/null +++ b/gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp @@ -0,0 +1,57 @@ +# Copyright 2014 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/>. + +# This testcase is for PR breakpoints/16889 + +standard_testfile ".S" + +if { ![istarget "x86_64-*-*"] } { + 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 reg_val } { + gdb_test "print \$_probe_argc" "= 1" + gdb_test "print \$_probe_arg0" "= $value" + gdb_test "print \$_probe_arg0 == *((unsigned int *) (${reg_val}))" "= 1" +} + +if { ![runto_main] } { + return -1 +} + +foreach probe_name [list "foo" "bar" "foo_prefix" "bar_prefix"] \ + probe_val [list "42" "42" "42" "42"] \ + probe_reg_val [list "\$rsp" "\$rbp - 8" "\$rsp" "\$rbp - 8"] { + with_test_prefix $probe_name { + goto_probe $probe_name + test_probe_value $probe_val $probe_reg_val + } +} |