From patchwork Wed Feb 11 06:25:51 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Evans X-Patchwork-Id: 5034 Received: (qmail 5753 invoked by alias); 11 Feb 2015 06:26:41 -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 4922 invoked by uid 89); 11 Feb 2015 06:26:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.5 required=5.0 tests=AWL, BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, KAM_FROM_URIBL_PCCC, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-pd0-f178.google.com Received: from mail-pd0-f178.google.com (HELO mail-pd0-f178.google.com) (209.85.192.178) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 11 Feb 2015 06:26:39 +0000 Received: by pdbfl12 with SMTP id fl12so2385418pdb.4 for ; Tue, 10 Feb 2015 22:26:38 -0800 (PST) X-Received: by 10.68.204.3 with SMTP id ku3mr30782031pbc.148.1423635997867; Tue, 10 Feb 2015 22:26:37 -0800 (PST) Received: from seba.sebabeach.org.gmail.com (173-13-178-53-sfba.hfc.comcastbusiness.net. [173.13.178.53]) by mx.google.com with ESMTPSA id rj7sm21127016pbc.58.2015.02.10.22.26.36 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Feb 2015 22:26:37 -0800 (PST) From: Doug Evans To: gdb-patches@sourceware.org, pierre.muller@ics-cnrs.unistra.fr Subject: [PATCH] gdb.pascal/stub-method.exp Date: Tue, 10 Feb 2015 22:25:51 -0800 Message-ID: MIME-Version: 1.0 X-IsSubscribed: yes Hi. This patch is based on the testcase provided here: https://sourceware.org/ml/gdb-patches/2015-02/msg00181.html I've verified that it catches the internal error discovered here: https://sourceware.org/ml/gdb-patches/2015-02/msg00139.html One needs to make sure one is compiling with stabs. How to do that for pascal is a topic for a separate patch. 2015-02-10 Doug Evans * lib/gdb.exp (clean_restart): Return result of gdb_load. * gdb.pascal/stub-method.exp: New file. * gdb.pascal/stub-method.pas: New file. diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index bbc657c..b4c9117 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -4697,6 +4697,7 @@ proc build_executable { testname executable {sources ""} {options {debug}} } { # Starts fresh GDB binary and loads EXECUTABLE into GDB. EXECUTABLE is # the basename of the binary. +# The return value is 0 for success, -1 for failure. proc clean_restart { executable } { global srcdir global subdir @@ -4705,7 +4706,7 @@ proc clean_restart { executable } { gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir - gdb_load ${binfile} + return [gdb_load ${binfile}] } # Prepares for testing by calling build_executable_full, then diff --git a/gdb/testsuite/gdb.pascal/stub-method.exp b/gdb/testsuite/gdb.pascal/stub-method.exp new file mode 100644 index 0000000..f6be83e --- /dev/null +++ b/gdb/testsuite/gdb.pascal/stub-method.exp @@ -0,0 +1,30 @@ +# Copyright 2007-2015 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 . + +# Test loading of a file that when compiled with stabs uses a stub method. +# This exercises gdbtypes.c:allocate_stub_method. + +load_lib "pascal.exp" + +standard_testfile .pas + +if {[gdb_compile_pascal "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug ]] != "" } { + return -1 +} + +# If this fails, the failure will have already been recorded. +if { [clean_restart ${testfile}] == 0 } { + pass "loading file with stub method" +} diff --git a/gdb/testsuite/gdb.pascal/stub-method.pas b/gdb/testsuite/gdb.pascal/stub-method.pas new file mode 100644 index 0000000..30c45fb --- /dev/null +++ b/gdb/testsuite/gdb.pascal/stub-method.pas @@ -0,0 +1,33 @@ +{ + Copyright 2015 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 . +} + +type + tobj = object +constructor create; +end; + +constructor tobj.create; + +begin +end; + +var + t : tobj; + +begin + t.create; +end.