From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12633 invoked by alias); 5 Jan 2004 21:34:35 -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 12611 invoked from network); 5 Jan 2004 21:34:34 -0000 Received: from unknown (HELO localhost.redhat.com) (66.30.197.194) by sources.redhat.com with SMTP; 5 Jan 2004 21:34:34 -0000 Received: from gnu.org (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 40C052B8F; Mon, 5 Jan 2004 16:34:35 -0500 (EST) Message-ID: <3FF9D86B.5000504@gnu.org> Date: Mon, 05 Jan 2004 21:34:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030820 MIME-Version: 1.0 To: Michael Elizabeth Chastain Cc: gdb-patches@sources.redhat.com Subject: Re: [patch/testsuite/cp] local.exp: accommodate gcc abi 2 References: <20040105202810.13B264B35A@berman.michael-chastain.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2004-01/txt/msg00112.txt.bz2 > ac> Is this "The New ABI" or a yet to be named but for the moment would be > ac> best refered to as "The New New ABI"? > > The former. > > It's minor version 2 of "The New ABI", also known as "The IA-64 ABI". > It contains small bug fixes to g++ to make it more compatible with > the spec for "The New ABI". > > gcc 2.95.3 old abi As daniel eluded to, there was an even earlier ABI (I've no idea of its history, I guess it was 1.x related). "The New ABI" is really the third ABI. > gcc 3.3.2 new abi, version 1 3.1 > gcc 3.4.0 new abi, version 2 3.2 > > Here's an example of the differences between "new abi, version 1" > and "new abi, version 2": suppose that a class has a virtual destructor, > but the user doesn't specify the virtual destructor, so the compiler > synthesizes it. With "new abi, version 1", the synthesized virtual > destructor appears in the vtable *before* the user's own virtual > methods. With "new abi, version 2", the synthesized virtual destructor > appears in the vtable *after* the user's own virtual methods. > > There are about 5-10 tweaks like this in gcc 3.4. > > So it's not "New New ABI", fortunately for us. It's just bug fixes > to "New ABI". It's the same mangling scheme and same data structures, > but gcc puts slightly different data into them. Different enough that > g++ 3.3.X and g++ 3.4.X are sometimes not link-compatible, but similar > enough that gdb will not need a new module. > > gcc 3.4 has a flag "-fabi-version" to select between "New Abi, > version 1" and "New Abi, version 2". "New Abi, version 2" is the > default. So "abi-version" is the minor version :-/ "logical" :-^ Andrew