diff options
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/bp_c_mixed_case.exp | 58 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb | 3 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c | 21 |
4 files changed, 88 insertions, 2 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 7a2ffb6..9a3d0f1 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 7787646..c0920be 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 88e0c31..7cd17c2 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 0000000..eea4304 --- /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) +{ +} |