From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15692 invoked by alias); 19 Dec 2009 17:27:30 -0000 Received: (qmail 15684 invoked by uid 22791); 19 Dec 2009 17:27:29 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 19 Dec 2009 17:27:26 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id nBJHROI8016308 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 19 Dec 2009 12:27:24 -0500 Received: from zebedee.pink (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id nBJHRNbL004325; Sat, 19 Dec 2009 12:27:23 -0500 Message-ID: <4B2D0CFB.5080404@redhat.com> Date: Sat, 19 Dec 2009 17:27:00 -0000 From: Andrew Haley User-Agent: Thunderbird 2.0.0.23 (X11/20090825) MIME-Version: 1.0 To: Herman ten Brugge CC: java@gcc.gnu.org Subject: Re: Making -findirect-dispatch the default? References: <4B2CBCB2.3050401@home.nl> In-Reply-To: <4B2CBCB2.3050401@home.nl> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact java-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: java-owner@gcc.gnu.org X-SW-Source: 2009-12/txt/msg00047.txt.bz2 Herman ten Brugge wrote: > I would like to make a suggestion to make the "-findirect-dispatch" the > default when compiling code with gcj. > > If you do not do this you some times get the message: > > "Incorrect library ABI version detected. Aborting." > > This is really puzzling the first time you see it. You compiled you > source code from scratch and > still this message is given when running it. No, you only get this if you install binaries that are not compatible with the installed libraries. If you build with the same version you'll be fine. > I found the solution on the internet and used "-findirect-dispatch" to > solve it. > Why is this still not the default. I see that is was first introduced in the > "ftp://gcc.gnu.org/pub/gcc/summit/2004/GCJ New ABI.pdf" > because of serious ABI problems. But this was 5 years ago. Well, these were not, exactly, problems, although they could be. gcj defaults to the same ABI that C++ uses. > I also see that it has some performance penalties. But for optimizing > code we > always have to use some optimizing flags. We can then supply > "-fno-indirect-dispatch" > is we want faster code (and ABI incompatible). There are not many packages that depend on gcj's "old" ABI, the default. But there are some, and these include all of the packages that use CNI. If we change the default, we will break their build scripts. This is a Bad Thing. If indirect dispatch worked with CNI, this would be much easier, but it doesn't. gcc is in stage 3: bug fixes only. While there is considerable merit in making indirect dispatch the dafault, this isn't the time to make such an ABI-breaking change. Andrew.