From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2705 invoked by alias); 6 Jul 2013 06:46:33 -0000 Mailing-List: contact java-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: java-patches-owner@gcc.gnu.org Received: (qmail 2669 invoked by uid 89); 6 Jul 2013 06:46:27 -0000 X-Spam-SWARE-Status: No, score=-3.1 required=5.0 tests=AWL,BAYES_00,KAM_MX3,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS,TW_GC,TW_IB,URIBL_BLACK autolearn=no version=3.3.1 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Sat, 06 Jul 2013 06:46:19 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r666kEtb007667 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 6 Jul 2013 02:46:14 -0400 Received: from zebedee.pink ([10.3.113.16]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r666kB4W011750; Sat, 6 Jul 2013 02:46:12 -0400 Message-ID: <51D7BD32.7050509@redhat.com> Date: Sat, 06 Jul 2013 06:46:00 -0000 From: Andrew Haley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6 MIME-Version: 1.0 To: Jack Howarth CC: java-patches@gcc.gnu.org Subject: Re: [PATCH] link libgcj directly to libiconv to resolve symbols References: <20130705161058.GA15079@bromo.med.uc.edu> <51D6F38B.4000205@redhat.com> <20130706035819.GA22350@bromo.med.uc.edu> In-Reply-To: <20130706035819.GA22350@bromo.med.uc.edu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-q3/txt/msg00005.txt.bz2 On 07/06/2013 04:58 AM, Jack Howarth wrote: > On Fri, Jul 05, 2013 at 05:25:47PM +0100, Andrew Haley wrote: >> On 07/05/2013 05:10 PM, Jack Howarth wrote: >>> Currently the build of the libgcj shared library in libjava >>> omits a direct linkage against the libiconv shared library to >>> resolve the undefined _libiconv, _libiconv_close and >>> _libiconv_open symbols in libgcj. My understanding of shared >>> library best practices is that shared libraries should always be >>> linked directly to the those shared libraries required to resolve >>> their undefined symbols rather than postponing this linkage until >>> when the shared library is used (as is currently done in >>> libjava/libgcj.spec.in). The attached patch achieves this by >>> removing the @LIBMATHSPEC@ from *lib: in libjava/libgcj.spec.in >>> and moving it as $(LDLIBICONV) onto libgcj_la_LDFLAGS in >>> libjava/Makefile.am and libjava/Makefile.in. >>> Bootstrap and regression tested on x86_64-apple-darwin12 for gcc >>> trunk and gcc-4_8-branch. >>> Okay for gcc trunk and gcc-4_8-branch? >> >> No. Some systems have iconv in libc, some have it in libiconv. > > I assume you are doing this to create binary tarball > distributions which can be deployed on various linux distros, > correct? Isn't this rather dangerous as you are compiling libgcj > against the headers of some unknown libiconv release and then having > it linked against a completely different one when deployed in the > field. It's never broken anything before. Why would it do so now? > Doesn't this require a lot of assumptions about the data structures > on libiconv calls not changing between the various releases? It > would seem to be safier if you just added an option to statically > link libiconv.a into libgcj if such a portable tarball release was > required. It'd help a lot if you explained what problem you're trying to solve. "shared library best practices" doesn't quite do it. Andrew.