From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4612 invoked by alias); 5 Jan 2004 20:27:56 -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 4506 invoked from network); 5 Jan 2004 20:27:55 -0000 Received: from unknown (HELO blount.mail.mindspring.net) (207.69.200.226) by sources.redhat.com with SMTP; 5 Jan 2004 20:27:55 -0000 Received: from user-119a90a.biz.mindspring.com ([66.149.36.10] helo=berman.michael-chastain.com) by blount.mail.mindspring.net with esmtp (Exim 3.33 #1) id 1AdbKL-0000XL-00; Mon, 05 Jan 2004 15:27:53 -0500 Received: by berman.michael-chastain.com (Postfix, from userid 502) id 13B264B35A; Mon, 5 Jan 2004 15:28:10 -0500 (EST) To: cagney@gnu.org, mec.gnu@mindspring.com Subject: Re: [patch/testsuite/cp] local.exp: accommodate gcc abi 2 Cc: gdb-patches@sources.redhat.com Message-Id: <20040105202810.13B264B35A@berman.michael-chastain.com> Date: Mon, 05 Jan 2004 20:27:00 -0000 From: mec.gnu@mindspring.com (Michael Elizabeth Chastain) X-SW-Source: 2004-01/txt/msg00103.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 gcc 3.3.2 new abi, version 1 gcc 3.4.0 new abi, version 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. Michael C