From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32180 invoked by alias); 18 Sep 2002 14:58:40 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 32170 invoked from network); 18 Sep 2002 14:58:38 -0000 Received: from unknown (HELO cerbere.u-strasbg.fr) (130.79.112.250) by sources.redhat.com with SMTP; 18 Sep 2002 14:58:38 -0000 Received: from laocoon (laocoon.u-strasbg.fr [130.79.112.72]) by cerbere.u-strasbg.fr (Postfix) with ESMTP id 1D73A5B9; Wed, 18 Sep 2002 16:59:54 +0200 (CEST) Message-Id: <4.2.0.58.20020918165204.02010968@ics.u-strasbg.fr> X-Sender: muller@ics.u-strasbg.fr Date: Wed, 18 Sep 2002 07:58:00 -0000 To: Daniel Jacobowitz From: Pierre Muller Subject: Re: [Problem] gnu-v3 abi loaded wronly. Cc: gdb-patches@sources.redhat.com In-Reply-To: <20020918145132.GA14392@nevyn.them.org> References: <4.2.0.58.20020918152959.02110ad8@ics.u-strasbg.fr> <4.2.0.58.20020918115440.015557e8@ics.u-strasbg.fr> <4.2.0.58.20020918115440.015557e8@ics.u-strasbg.fr> <4.2.0.58.20020918152959.02110ad8@ics.u-strasbg.fr> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit X-SW-Source: 2002-09/txt/msg00393.txt.bz2 At 16:51 18/09/2002 , Daniel Jacobowitz a écrit: >On Wed, Sep 18, 2002 at 03:35:41PM +0200, Pierre Muller wrote: > > At 15:17 18/09/2002 , Daniel Jacobowitz a écrit: > > >On Wed, Sep 18, 2002 at 12:00:22PM +0200, Pierre Muller wrote: > > > > > > > > > > > > The code for loading gnu-v3-abi is symply to > > > > look if there is a minimal symbol starting with > > > > _Z > > > > underscore followed by a capital Z: > > > > > > > > Why is this test so imprecise? > > > > To what symbol generated by GCC > > > > v3 does it correspond? > > > > Why is it not a full name test? > > > > > > > > Currently this creates a problem for me when > > > > I mix GCC 2.95.X code with Free Pascal generated > > > > code on linux, because Free Pascal defines > > > > a minimal symbol _ZONE_NAMES > > > > that is recognized as a GCC v3 marker... > > > > > > > > if you create a c code with a static variable > > > > called _Zzzz > > > > you will probably get the same error... > > > > > > > > I consider this to be a bug in GDB, but > > > > I would like to get the arguments of the > > > > interested people. > > > > > >Every mangled name in v3 starts with _Z. We've always held that if you > > >use names in the reserved namespace for your own functions, you get > > >what you deserve - but we hadn't thought any other compilers used this > > >namespace... > > > > > >We could require that the first _Z symbol be a valid mangled C++ name. > > >That would sometimes break the test in the other direction if you had > > >v3 code linked with Free Pascal code. Does Free Pascal define a large > > >number of symbols starting with _Z, or just the one? If it's just the > > > > No, its just a static variable that starts with Z > > so there can be others around... > > (Free Pascal adds a leading underscore to all > > static variables, regardless of what GCC does...) > >Blech. > > > >one we can fix this by checking all _Z symbols until we find one that > > >is v3 mangled. > > > > I started to write a Free Pascal version of xx-abi.c > > because there are other object/class related problems > > with Free Pascal. > > > > The other solution would be to check for "fpc_compiled" > > and then declare that its an Free Pascal compiled object, > > but that would not solve the problem of my > > IDE that has both Free Pascal code and > > GCC code of libgdb... > > because in that case it would mean that we need to decide > > which abi to use depending on the source file type, > > would that be possible? > >GDB is definitely not set up to do this. If you mix code that requires >particular ABI support, you'll just confuse it hopelessly. For >instance, we can determine the ABI without debug information (though we >don't use it for much in that case) - which ABI do you pick if two are >marked? > >For C++ this is generally OK. No one except Apple is crazy enough to >try to mix-n-match. If Free Pascal code is commonly linked with C++ >code, then we need to think about this further. I have no C++ code in my problem... Libgdb is only C code, but the problem arises nevertheless... Pierre Muller Institut Charles Sadron 6,rue Boussingault F 67083 STRASBOURG CEDEX (France) mailto:muller@ics.u-strasbg.fr Phone : (33)-3-88-41-40-07 Fax : (33)-3-88-41-40-99