From owner-freebsd-amd64@FreeBSD.ORG Wed Apr 27 09:23:48 2005 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C135116A4CE for ; Wed, 27 Apr 2005 09:23:48 +0000 (GMT) Received: from neon.webfusion.co.uk (neon.webfusion.co.uk [212.67.202.39]) by mx1.FreeBSD.org (Postfix) with ESMTP id 17B0C43D46 for ; Wed, 27 Apr 2005 09:23:48 +0000 (GMT) (envelope-from michael.hopkins@hopkins-research.com) Received: from 83-216-132-201.markch725.adsl.metronet.co.uk ([83.216.132.201] helo=[192.168.0.5]) by neon.webfusion.co.uk with asmtp (Exim 3.36 #1) id 1DQill-0001Np-00; Wed, 27 Apr 2005 10:23:45 +0100 User-Agent: Microsoft-Entourage/10.1.1.2418 Date: Wed, 27 Apr 2005 10:23:39 +0100 From: Michael Hopkins To: "freebsd-amd64@freebsd.org" Message-ID: Mime-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit Subject: Shared library relocation R_X86_64_32 solution on amd64? X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Apr 2005 09:23:48 -0000 Hi all I have been doing some research about why gnustep-base won't link on amd64. It seems as if the problem I am getting here is quite common. ------------------------------------------------------------------------ gmake[1]: Leaving directory `/usr/home/mwh/Coding/Obj-C/gnustep/core/base/Source' Making all in SSL... gmake[1]: Entering directory `/usr/home/mwh/Coding/Obj-C/gnustep/core/base/SSL' Making all for bundle SSL... Creating SSL.bundle/amd64/freebsd/gnu-gnu-gnu... Compiling file GSSSLHandle.m ... Linking bundle SSL ... /usr/bin/ld: /usr/lib/libobjc.a(Protocol.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /usr/lib/libobjc.a: could not read symbols: Bad value gmake[2]: *** [SSL.bundle/amd64/freebsd/gnu-gnu-gnu/SSL] Error 1 gmake[1]: *** [SSL.all.bundle.variables] Error 2 gmake[1]: Leaving directory `/usr/home/mwh/Coding/Obj-C/gnustep/core/base/SSL' gmake: *** [internal-all] Error 2 ------------------------------------------------------------------------ It has been mentioned a few times on this list: my understanding of this issue is that you can't link to shared libraries unless they have been compiled with -fPIC. Is that right? The first place that the gnustep-base build died was here: --------------------------------------- /usr/bin/ld: /usr/local/lib/libcallback.a(misc.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libcallback.a: could not read symbols: Bad value collect2: ld returned 1 exit status --------------------------------------- I found out that libcallback.a was installed by ffcall, so I removed that and reinstalled it with CFLAGS += -fPIC in the makefile. This let the build continue. I have two main questions in this post. 1) What installs libobjc.a? I want to reinstall it with CFLAGS += -fPIC. I assumed that it was installed by gcc-objc but after reinstalling that with -fPIC the libobjc.a library was untouched! 2) What is the standard method for dealing with this problem on amd64? I'm sure it will hit a lot of people on many different ports and if it's a tier 1 platform then don't we need to have a proper strategy for dealing with this? TIA Michael _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ _/ _/ _/_/_/ Hopkins Research Ltd _/ _/ _/ _/ _/_/_/_/ _/_/_/ http://www.hopkins-research.com/ _/ _/ _/ _/ _/ _/ _/ _/ 'touch the future' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/