diff options
author | Joel Brobecker <brobecker@adacore.com> | 2018-01-04 03:10:34 -0500 |
---|---|---|
committer | Joel Brobecker <brobecker@adacore.com> | 2018-01-04 03:30:39 -0500 |
commit | 289483b6a06c7a24ee9ae9021d2728ca4700b7a6 (patch) | |
tree | 61830b1718fb7a6a6c63a118255e2f7d5c8a170d | |
parent | 344420da6beac1e0b2f7964e7101f8dcdb509b0d (diff) | |
download | gdb-289483b6a06c7a24ee9ae9021d2728ca4700b7a6.zip gdb-289483b6a06c7a24ee9ae9021d2728ca4700b7a6.tar.gz gdb-289483b6a06c7a24ee9ae9021d2728ca4700b7a6.tar.bz2 |
Add new gdb.ada/bp_c_mixed_case testcase for PR gdb/22670
This patch adds a new testcase to demonstrate a regression introduced by:
commit b5ec771e60c1a0863e51eb491c85c674097e9e13
Date: Wed Nov 8 14:22:32 2017 +0000
Subject: Introduce lookup_name_info and generalize Ada's FULL/WILD name matching
The purpose of the testcase is to verify that a user can insert
a breakpoint on a C function while debugging Ada, even if the name
of the function includes uppercase letters, requiring us to use
Ada's "<...>" notation to tell the GDB that the symbol name should
be looked up verbatim.
As of the commit above, GDB is no longer finding the function:
(gdb) break <MixedCaseFunc>
Function "<MixedCaseFunc>" not defined.
Make breakpoint pending on future shared library load? (y or [n])
Before the patch, the breakpoint was inserted without problem.
gdb/testsuite/ChangeLog:
PR gdb/22670
* gdb.ada/bp_c_mixed_case: New testcase.
Tested on x86_64-linux; generates a KPASS before the regression
was introduced, and now generates a KFAIL.
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/bp_c_mixed_case.exp | 52 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c | 21 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb | 21 |
4 files changed, 99 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index a81f9da..c3b38c4 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2018-01-04 Joel Brobecker <brobecker@adacore.com> PR gdb/22670 + * gdb.ada/bp_c_mixed_case: New testcase. + +2018-01-04 Joel Brobecker <brobecker@adacore.com> + + PR gdb/22670 * gdb.ada/complete.exp: Add "complete break ada" test. 2018-01-04 Joel Brobecker <brobecker@adacore.com> diff --git a/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp b/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp new file mode 100644 index 0000000..54c61e3 --- /dev/null +++ b/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp @@ -0,0 +1,52 @@ +# Copyright 2018 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 "ada.exp" + +standard_ada_testfile foo_h731_021 + +set cfile "bar" +set csrcfile ${srcdir}/${subdir}/${testdir}/${cfile}.c +set cobject [standard_output_file ${cfile}.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]] != "" } { + return -1 +} + +clean_restart ${testfile} + +if ![runto "foo_h731_021"] then { + perror "Couldn't run ${testfile}" + return +} + +# Verify that the current language is Ada. +gdb_test "show lang" \ + "\"auto; currently 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. +setup_kfail gdb/22670 "*-*-*" +gdb_test "break <MixedCaseFunc>" \ + "Breakpoint $decimal at $hex: file .*bar.c, line $decimal\\." + +# Resume the program's execution, verifying that it lands at the expected +# location. +setup_kfail gdb/22670 "*-*-*" +gdb_test "continue" \ + "Breakpoint $decimal, MixedCaseFunc \\(\\) at .*bar\\.c:$decimal.*" diff --git a/gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c b/gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c new file mode 100644 index 0000000..4bcbfa8 --- /dev/null +++ b/gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.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 +MixedCaseFunc (void) +{ +} 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 new file mode 100644 index 0000000..88e0c31 --- /dev/null +++ b/gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb @@ -0,0 +1,21 @@ +-- Copyright 2018 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/>. + +procedure Foo_H731_021 is + Procedure C_Func; + pragma Import (C, C_Func, "MixedCaseFunc"); +begin + C_Func; +end Foo_H731_021; |