From owner-freebsd-amd64@FreeBSD.ORG Sun Feb 22 10:52:09 2004 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 2EB9716A4CE for ; Sun, 22 Feb 2004 10:52:09 -0800 (PST) Received: from ns1.xcllnt.net (209-128-86-226.bayarea.net [209.128.86.226]) by mx1.FreeBSD.org (Postfix) with ESMTP id DDD8843D1F for ; Sun, 22 Feb 2004 10:52:08 -0800 (PST) (envelope-from marcel@xcllnt.net) Received: from dhcp01.pn.xcllnt.net (dhcp01.pn.xcllnt.net [192.168.4.201]) by ns1.xcllnt.net (8.12.10/8.12.10) with ESMTP id i1MIq8OE040661 for ; Sun, 22 Feb 2004 10:52:08 -0800 (PST) (envelope-from marcel@piii.pn.xcllnt.net) Received: from dhcp01.pn.xcllnt.net (localhost [127.0.0.1]) by dhcp01.pn.xcllnt.net (8.12.11/8.12.11) with ESMTP id i1MIq8oF053670 for ; Sun, 22 Feb 2004 10:52:08 -0800 (PST) (envelope-from marcel@dhcp01.pn.xcllnt.net) Received: (from marcel@localhost) by dhcp01.pn.xcllnt.net (8.12.11/8.12.11/Submit) id i1MIq8BI053669 for freebsd-amd64@freebsd.org; Sun, 22 Feb 2004 10:52:08 -0800 (PST) (envelope-from marcel) Date: Sun, 22 Feb 2004 10:52:08 -0800 From: Marcel Moolenaar To: freebsd-amd64@freebsd.org Message-ID: <20040222185208.GA53610@dhcp01.pn.xcllnt.net> References: <4CC57F17-64E9-11D8-ACAA-000A95BAD088@raisdorf.net> <200402220033.01795.peter@wemm.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200402220033.01795.peter@wemm.org> User-Agent: Mutt/1.4.2.1i Subject: Re: CFLAGS+= -fPIC per default? 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: Sun, 22 Feb 2004 18:52:09 -0000 On Sun, Feb 22, 2004 at 12:33:01AM -0800, Peter Wemm wrote: > On Saturday 21 February 2004 07:43 pm, Hendrik Scholz wrote: > > On Feb 21, 2004, at 9:59 PM, Christian Weisgerber wrote: > > > Why are these shared objects not built with -fPIC in the first > > > place? > > > > Ask the authors of the third party applications :) > > Most architectures don't need -fPIC and/or it slows them down (thanks > > for the > > comment Peter!). > > Yes, exactly. Some folks thought it would be an idea to add a flag to > libtool to force it to link non-pic code into shared libraries. > Essentially this reduces the sharability since we do relocations on the > text segment, but the flipside is that its faster on i386 and on some > libraries they figured it was worth burning extra memory that would be > wasted by not using -fPIC. Not to mention that people generally attach -fPIC to the kind of library they are making and thus do not build with -fPIC if they create an archive library (the BSD make infrastructure has this too). This most of the time works, but not when the archive library is subsequently linked *into* a shared library later on. So, the use of -fPIC is determined by how the object files are eventually used to make up a process and that's not always known to the person writing the libraries, let alone some (in)convenience tools like libtool or automake/autoconf. With shared libraries the norm, the safest default would be -fPIC on some archs (amd64 and ia64 for example). The group of people that build archive only libraries and complete executables for performance reasons, a pretty small group, know how to fiddle with options to get the compiler/linker emit the best code for their purpose and a -fNOPIC doesn't add to the hazzle. I think it was Christian who asked why -fPIC was not the default and I think it's a good question. Although it should be compiler default, not some make logic to add to CFLAGS... -- Marcel Moolenaar USPA: A-39004 marcel@xcllnt.net