From patchwork Thu Jan 4 08:35:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Brobecker X-Patchwork-Id: 25205 Received: (qmail 3201 invoked by alias); 4 Jan 2018 08:36:12 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 3115 invoked by uid 89); 4 Jan 2018 08:36:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 04 Jan 2018 08:36:01 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id E74691176E2 for ; Thu, 4 Jan 2018 03:35:59 -0500 (EST) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id RY5Q8w0nY3Cl for ; Thu, 4 Jan 2018 03:35:59 -0500 (EST) Received: from tron.gnat.com (tron.gnat.com [IPv6:2620:20:4000:0:46a8:42ff:fe0e:e294]) by rock.gnat.com (Postfix) with ESMTP id D5C55116E2E for ; Thu, 4 Jan 2018 03:35:59 -0500 (EST) Received: by tron.gnat.com (Postfix, from userid 4233) id D4B3548A; Thu, 4 Jan 2018 03:35:59 -0500 (EST) From: Joel Brobecker To: gdb-patches@sourceware.org Subject: [PATCH 3/3] Add new gdb.ada/bp_c_mixed_case testcase for PR gdb/22670 Date: Thu, 4 Jan 2018 03:35:53 -0500 Message-Id: <1515054953-81012-4-git-send-email-brobecker@adacore.com> In-Reply-To: <1515054953-81012-1-git-send-email-brobecker@adacore.com> References: <1515054953-81012-1-git-send-email-brobecker@adacore.com> 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 a81f9da..c3b38c4 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2018-01-04 Joel Brobecker PR gdb/22670 + * gdb.ada/bp_c_mixed_case: New testcase. + +2018-01-04 Joel Brobecker + + PR gdb/22670 * gdb.ada/complete.exp: Add "complete break ada" test. 2018-01-04 Joel Brobecker 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 . + +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 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 . */ + +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 . + +procedure Foo_H731_021 is + Procedure C_Func; + pragma Import (C, C_Func, "MixedCaseFunc"); +begin + C_Func; +end Foo_H731_021;