From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15334 invoked by alias); 28 Jun 2006 21:32:59 -0000 Received: (qmail 15326 invoked by uid 22791); 28 Jun 2006 21:32:59 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Wed, 28 Jun 2006 21:32:57 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1FvheZ-0006T8-Db for gdb-patches@sourceware.org; Wed, 28 Jun 2006 17:32:55 -0400 Date: Wed, 28 Jun 2006 21:32:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Subject: Re: [PATCH] m32c-tdep.c: Don't choke on virtual functions in push_dummy_call Message-ID: <20060628213255.GA24718@nevyn.them.org> Mail-Followup-To: gdb-patches@sourceware.org References: <20060628141839.GA29012@calimero.vinschen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20060628141839.GA29012@calimero.vinschen.de> User-Agent: Mutt/1.5.11+cvs20060403 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-06/txt/msg00394.txt.bz2 On Wed, Jun 28, 2006 at 04:18:39PM +0200, Corinna Vinschen wrote: > Hi, > > the below patch fixes a couple of GDB internal errors when calling > virtual C++ methods. Virtual methods are not represented as type > TYPE_CODE_METHOD, but as TYPE_CODE_PTR pointing to TYPE_CODE_METHOD. > The m32c_push_dummy_call function only checks the function type for > TYPE_CODE_FUNC or TYPE_CODE_METHOD, which results in a failed assertion > in case of virtual methods. The below patch skips TYPE_CODE_PTR types > until it points to the actual TYPE_CODE_METHOD to evaluate further > necessary data. > > Ok to apply? In addition to Mark's question, which I am also curious about - did anything in the testsuite catch this, or if not, how can we reproduce it? - I am currently (i.e. right this moment) rewriting lots of this stuff. You may wish to wait a little while - though be sure to poke me about it if I don't have something to check in soon! It is all broken anyway; GDB is not going to succeed at calling a virtual pointer, it's going to go off into neverland. -- Daniel Jacobowitz CodeSourcery