| Index: gdb/testsuite/gdb.base/catch-load.exp
|
| diff --git a/gdb/testsuite/gdb.base/catch-load.exp b/gdb/testsuite/gdb.base/catch-load.exp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..97fe7d1117474cd05c322f7ded0718805d071d2a
|
| --- /dev/null
|
| +++ b/gdb/testsuite/gdb.base/catch-load.exp
|
| @@ -0,0 +1,113 @@
|
| +# Copyright 2012 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_shlib_tests]} {
|
| + untested catch-load.exp
|
| + return -1
|
| +}
|
| +
|
| +if {[get_compiler_info]} {
|
| + warning "Could not get compiler info"
|
| + untested catch-load.exp
|
| + return -1
|
| +}
|
| +
|
| +set testfile catch-load
|
| +set srcfile ${testfile}.c
|
| +set binfile ${objdir}/${subdir}/${testfile}
|
| +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug shlib_load}] != "" } {
|
| + untested catch-load.exp
|
| + return -1
|
| +}
|
| +
|
| +set testfile2 catch-load-so
|
| +set srcfile2 ${testfile2}.c
|
| +set binfile2 ${objdir}/${subdir}/${testfile2}.so
|
| +set binfile2_dlopen [shlib_target_file ${testfile2}.so]
|
| +if { [gdb_compile_shlib "${srcdir}/${subdir}/${srcfile2}" ${binfile2} {debug}] != "" } {
|
| + untested catch-load.exp
|
| + return -1
|
| +}
|
| +
|
| +# Run one set of tests.
|
| +# SCENARIO is the name of the test scenario, it is just used in test
|
| +# names.
|
| +# KIND is passed to the "catch" command.
|
| +# MATCH is a boolean saying whether we expect the catchpoint to be hit.
|
| +proc one_catch_load_test {scenario kind match sostop} { with_test_prefix "${scenario}" {
|
| + global verbose testfile testfile2 binfile2 binfile2_dlopen
|
| + global srcfile
|
| + global decimal gdb_prompt
|
| +
|
| + clean_restart $testfile
|
| + gdb_load_shlibs $binfile2
|
| +
|
| + if {![runto_main]} {
|
| + fail "can't run to main"
|
| + return
|
| + }
|
| +
|
| + gdb_breakpoint [gdb_get_line_number "final breakpoint here"]
|
| + gdb_test_no_output "set var libname = \"$binfile2_dlopen\""
|
| + gdb_test_no_output "set stop-on-solib-events $sostop"
|
| + gdb_test "catch $kind" "Catchpoint $decimal \\(.*\\)"
|
| +
|
| + gdb_test_multiple "continue" "continue" {
|
| + -re "Catchpoint $decimal\r\n.*loaded .*/$testfile2.*\r\n.*$gdb_prompt $" {
|
| + if {$match} {
|
| + pass "continue"
|
| + } else {
|
| + fail "continue"
|
| + }
|
| + }
|
| +
|
| + -re "Stopped due to shared library event.*\r\n$gdb_prompt $" {
|
| + if {$sostop} {
|
| + pass "continue"
|
| + } else {
|
| + fail "continue"
|
| + }
|
| + }
|
| +
|
| + -re "Breakpoint $decimal, .*\r\n$gdb_prompt $" {
|
| + if {!$match} {
|
| + pass "continue"
|
| + } else {
|
| + fail "continue"
|
| + }
|
| + }
|
| +
|
| + -re ".*$gdb_prompt $" {
|
| + fail "continue"
|
| + }
|
| + }
|
| +}}
|
| +
|
| +one_catch_load_test "plain load" "load" 1 0
|
| +one_catch_load_test "plain load with stop-on-solib-events" "load" 1 1
|
| +one_catch_load_test "rx load" "load $testfile2" 1 0
|
| +one_catch_load_test "rx load with stop-on-solib-events" "load $testfile2" 1 1
|
| +one_catch_load_test "non-matching load" "load zardoz" 0 0
|
| +one_catch_load_test "non-matching load with stop-on-solib-events" \
|
| + "load zardoz" 0 1
|
| +
|
| +one_catch_load_test "plain unload" "unload" 1 0
|
| +one_catch_load_test "plain unload with stop-on-solib-events" "unload" 1 1
|
| +one_catch_load_test "rx unload" "unload $testfile2" 1 0
|
| +one_catch_load_test "rx unload with stop-on-solib-events" \
|
| + "unload $testfile2" 1 1
|
| +one_catch_load_test "non-matching unload" "unload zardoz" 0 0
|
| +one_catch_load_test "non-matching unload with stop-on-solib-events" \
|
| + "unload zardoz" 0 1
|
|
|