summaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/ChangeLog8
-rw-r--r--gdb/testsuite/gdb.ada/bp_c_mixed_case.exp58
-rw-r--r--gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb3
-rw-r--r--gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c21
4 files changed, 88 insertions, 2 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 9e62ee8b08..8612d1e32a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,6 +1,14 @@
2018-01-10 Pedro Alves <palves@redhat.com>
PR gdb/22670
+ * gdb.ada/bp_c_mixed_case.exp: Add intro comment. Test printing C
+ functions too. Test setting breakpoints and printing C functions
+ with no debug info too.
+ * gdb.ada/bp_c_mixed_case/qux.c: New file.
+
+2018-01-10 Pedro Alves <palves@redhat.com>
+
+ PR gdb/22670
* gdb.ada/complete.exp ("complete break ada"): Replace kfail with
a fail.
diff --git a/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp b/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp
index 7787646c67..c0920bee06 100644
--- a/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp
+++ b/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp
@@ -13,6 +13,11 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# Test setting breakpoints in C functions with some uppercase letters
+# in their name, using the "<...>" notation. See gdb/22670. While at
+# it, also try evaluating expressions involving calls to such
+# functions.
+
load_lib "ada.exp"
standard_ada_testfile foo_h731_021
@@ -21,8 +26,19 @@ set cfile "bar"
set csrcfile ${srcdir}/${subdir}/${testdir}/${cfile}.c
set cobject [standard_output_file ${cfile}.o]
+set cfile2 "qux"
+set csrcfile2 ${srcdir}/${subdir}/${testdir}/${cfile2}.c
+set cobject2 [standard_output_file ${cfile2}.o]
+
gdb_compile "${csrcfile}" "${cobject}" object [list debug]
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-largs additional_flags=${cobject} additional_flags=-margs]] != "" } {
+gdb_compile "${csrcfile2}" "${cobject2}" object ""
+
+set options [list debug \
+ additional_flags=-largs \
+ additional_flags=${cobject} \
+ additional_flags=${cobject2} \
+ additional_flags=-margs]
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $options] != "" } {
return -1
}
@@ -37,14 +53,52 @@ if ![runto "foo_h731_021"] then {
gdb_test "show lang" \
"\"auto; currently ada\"\\."
+# Before running to the C function (and thus switching out of Ada
+# mode), try printing the function using the "<...>" notation.
+gdb_test "p <MixedCaseFunc>" \
+ " = void" \
+ "p <MixedCaseFunc>, in Ada"
+
+gdb_test "p <NoDebugMixedCaseFunc>" \
+ " = {<text variable, no debug info>} $hex <NoDebugMixedCaseFunc>" \
+ "p <NoDebugMixedCaseFunc>, in Ada"
+
# Try inserting a breakpoint inside a C function. Because the function's
# name has some uppercase letters, we need to use the "<...>" notation.
# The purpose of this testcase is to verify that we can in fact do so
-# and that it inserts the breakpoint at the expected location. See gdb/22670.
+# and that it inserts the breakpoint at the expected location.
gdb_test "break <MixedCaseFunc>" \
"Breakpoint $decimal at $hex: file .*bar.c, line $decimal\\."
+# Same, but this time on the function with no debug info.
+gdb_test "break <NoDebugMixedCaseFunc>" \
+ "Breakpoint $decimal at $hex"
+
# Resume the program's execution, verifying that it lands at the expected
# location.
gdb_test "continue" \
"Breakpoint $decimal, MixedCaseFunc \\(\\) at .*bar\\.c:$decimal.*"
+
+# Try printing again using the "<...>" notation. This shouldn't work
+# now, since the current frame is a C function.
+gdb_test "p <MixedCaseFunc>" \
+ "A syntax error in expression, near `<MixedCaseFunc>'\\." \
+ "p <MixedCaseFunc>, in C"
+
+gdb_test "p <NoDebugMixedCaseFunc>" \
+ "A syntax error in expression, near `<NoDebugMixedCaseFunc>'\\." \
+ "p <NoDebugMixedCaseFunc>, in C"
+
+set test "break <MixedCaseFunc>, in C"
+gdb_test_multiple "break <MixedCaseFunc>" $test {
+ -re "Function \"<MixedCaseFunc>\" not defined\..*Make breakpoint pending on future shared library load.*y or .n.. $" {
+ gdb_test_no_output "n" $test
+ }
+}
+
+set test "break <NoDebugMixedCaseFunc>, in C"
+gdb_test_multiple "break <NoDebugMixedCaseFunc>" $test {
+ -re "Function \"<NoDebugMixedCaseFunc>\" not defined\..*Make breakpoint pending on future shared library load.*y or .n.. $" {
+ gdb_test_no_output "n" $test
+ }
+}
diff --git a/gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb b/gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb
index 88e0c319be..7cd17c24ce 100644
--- a/gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb
+++ b/gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb
@@ -15,7 +15,10 @@
procedure Foo_H731_021 is
Procedure C_Func;
+ Procedure C_FuncNoDebug;
pragma Import (C, C_Func, "MixedCaseFunc");
+ pragma Import (C, C_FuncNoDebug, "NoDebugMixedCaseFunc");
begin
C_Func;
+ C_FuncNoDebug;
end Foo_H731_021;
diff --git a/gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c b/gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c
new file mode 100644
index 0000000000..eea43041bf
--- /dev/null
+++ b/gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c
@@ -0,0 +1,21 @@
+/* Copyright 2018 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ 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/>. */
+
+void
+NoDebugMixedCaseFunc (void)
+{
+}