This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH v5 3/3] MI: tests for -catch-load/-catch-unload
- From: Mircea Gherzan <mircea dot gherzan at intel dot com>
- To: gdb-patches at sourceware dot org
- Cc: keven dot boell at intel dot com, mircea dot gherzan at intel dot com, marc dot khouzam at ericsson dot com, tromey at redhat dot com, vladimir at codesourcery dot com
- Date: Mon, 26 Nov 2012 17:34:12 +0100
- Subject: [PATCH v5 3/3] MI: tests for -catch-load/-catch-unload
- References: <1353947652-18567-1-git-send-email-mircea.gherzan@intel.com>
From: Keven Boell <keven.boell@intel.com>
Added basic MI tests for the -catch-load and
-catch-unload MI commands.
2012-11-19 Keven Boell <keven.boell@intel.com>
gdb/testsuite:
* gdb.mi/mi-catch-load-so.c: New. Clone of the
catch load test library source file.
* gdb.mi/mi-catch-load.c: New. Clone of the catch
load test source file.
* gdb.mi/mi-catch-load.exp: New. Test file for
basic MI -catch-load and -catch-unload tests.
Change-Id: Ib2d37393353136a2ae495dcc06d30d01e9f04372
Signed-off-by: Keven Boell <keven.boell@intel.com>
---
gdb/testsuite/gdb.mi/mi-catch-load-so.c | 22 ++++++++
gdb/testsuite/gdb.mi/mi-catch-load.c | 33 +++++++++++
gdb/testsuite/gdb.mi/mi-catch-load.exp | 89 +++++++++++++++++++++++++++++++
3 files changed, 144 insertions(+), 0 deletions(-)
create mode 100755 gdb/testsuite/gdb.mi/mi-catch-load-so.c
create mode 100755 gdb/testsuite/gdb.mi/mi-catch-load.c
create mode 100755 gdb/testsuite/gdb.mi/mi-catch-load.exp
diff --git a/gdb/testsuite/gdb.mi/mi-catch-load-so.c b/gdb/testsuite/gdb.mi/mi-catch-load-so.c
new file mode 100755
index 0000000..8c3d0d6
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/mi-catch-load-so.c
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ 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/>. */
+
+int
+f (void)
+{
+ return 23;
+}
diff --git a/gdb/testsuite/gdb.mi/mi-catch-load.c b/gdb/testsuite/gdb.mi/mi-catch-load.c
new file mode 100755
index 0000000..0035c88
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/mi-catch-load.c
@@ -0,0 +1,33 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ 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/>. */
+
+#include <dlfcn.h>
+#include <stdio.h>
+
+char *libname = "mi-catch-load-so.so";
+
+int
+main ()
+{
+ void *h;
+
+ h = dlopen (libname, RTLD_LAZY);
+
+ dlclose (h);
+
+ return 0;
+}
diff --git a/gdb/testsuite/gdb.mi/mi-catch-load.exp b/gdb/testsuite/gdb.mi/mi-catch-load.exp
new file mode 100755
index 0000000..e7f9b1e
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/mi-catch-load.exp
@@ -0,0 +1,89 @@
+# 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/>.
+#
+load_lib mi-support.exp
+
+if {[skip_shlib_tests]} {
+ return -1
+}
+
+gdb_exit
+if [mi_gdb_start] {
+ continue
+}
+
+if {[get_compiler_info]} {
+ warning "Could not get compiler info"
+ untested mi-catch-load.exp
+ return -1
+}
+
+standard_testfile mi-catch-load.c
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug shlib_load}] != "" } {
+ untested mi-catch-load.exp
+ return -1
+}
+
+set testfile2 mi-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 mi-catch-load.exp
+ return -1
+}
+mi_run_to_main
+
+# test -catch-load
+mi_gdb_test "111-gdb-set auto-solib-add on" ".*" "catch-load: auto-solib-add on"
+mi_gdb_test "222-catch-load -t mi-catch-load-so.so*" ".*breakpoint-created.*type=\"catchpoint\".*" "catch-load: catch load"
+mi_gdb_test "333-exec-continue" ".*" "catch-load: run"
+
+gdb_expect {
+ -re ".*stopped.*reason=\"solib-event\".*added=.*\r\n.*\r\n$mi_gdb_prompt$" {
+ pass "catch-load: solib-event stop"
+ }
+ -re ".*\r\n$mi_gdb_prompt$" {
+ fail "catch-load: solib-event stop"
+ }
+ timeout {
+ fail "(timeout) catch-load: solib-event stop"
+ }
+}
+
+mi_gdb_exit
+
+
+if [mi_gdb_start] {
+ continue
+}
+mi_run_to_main
+
+# test -catch-unload
+mi_gdb_test "111-gdb-set auto-solib-add on" ".*" "catch-unload: auto-solib-add on"
+mi_gdb_test "222-catch-unload -t mi-catch-load-so.so*" ".*breakpoint-created.*type=\"catchpoint\".*" "catch-unload: catch unload"
+mi_gdb_test "333-exec-continue" ".*" "catch-unload: run"
+
+gdb_expect {
+ -re ".*stopped.*reason=\"solib-event\".*removed=.*\r\n.*\r\n$mi_gdb_prompt$" {
+ pass "catch-unload: solib-event stop"
+ }
+ -re ".*\r\n$mi_gdb_prompt$" {
+ fail "catch-unload: solib-event stop"
+ }
+ timeout {
+ fail "(timeout) catch-unload: solib-event stop"
+ }
+}
--
1.7.7.6