From 289483b6a06c7a24ee9ae9021d2728ca4700b7a6 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Thu, 4 Jan 2018 03:10:34 -0500 Subject: [PATCH] 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 Function "" 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. --- gdb/testsuite/ChangeLog | 5 ++ gdb/testsuite/gdb.ada/bp_c_mixed_case.exp | 52 +++++++++++++++++++ gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c | 21 ++++++++ .../gdb.ada/bp_c_mixed_case/foo_h731_021.adb | 21 ++++++++ 4 files changed, 99 insertions(+) create mode 100644 gdb/testsuite/gdb.ada/bp_c_mixed_case.exp create mode 100644 gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c create mode 100644 gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index a81f9dae9a6..c3b38c4abe8 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-01-04 Joel Brobecker + + PR gdb/22670 + * gdb.ada/bp_c_mixed_case: New testcase. + 2018-01-04 Joel Brobecker PR gdb/22670 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 00000000000..54c61e3a8e8 --- /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 . + +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 " \ + "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 00000000000..4bcbfa89fa3 --- /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 . */ + +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 00000000000..88e0c319be4 --- /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 . + +procedure Foo_H731_021 is + Procedure C_Func; + pragma Import (C, C_Func, "MixedCaseFunc"); +begin + C_Func; +end Foo_H731_021; -- 2.30.2