From owner-freebsd-current Wed Jan 28 10:33:22 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id KAA18874 for current-outgoing; Wed, 28 Jan 1998 10:33:22 -0800 (PST) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from nemesis.fortean.com (root@nemesis.fortean.com [209.42.194.41]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id KAA18809 for ; Wed, 28 Jan 1998 10:33:16 -0800 (PST) (envelope-from walter@nemesis.fortean.com) Received: (from root@localhost) by nemesis.fortean.com (8.8.8/8.8.8) id JAA01514 for current@FreeBSD.ORG; Wed, 28 Jan 1998 09:26:50 -0500 (EST) (envelope-from walter) Received: from smyrno.sol.net (mail@smyrno.sol.net [206.55.64.117]) by nemesis.fortean.com (8.8.8/8.8.8) with ESMTP id WAA02986 for ; Tue, 27 Jan 1998 22:38:47 -0500 (EST) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from hub.freebsd.org (hub.FreeBSD.ORG [204.216.27.18]) by smyrno.sol.net (8.8.8/8.8.8/SNNS-1.02) with ESMTP id BAA22042; Wed, 28 Jan 1998 01:42:35 -0600 (CST) Received: from localhost (daemon@localhost) by hub.freebsd.org (8.8.8/8.8.8) with SMTP id XAA13223; Tue, 27 Jan 1998 23:42:33 -0800 (PST) (envelope-from owner-freebsd-current) Received: by hub.freebsd.org (bulk_mailer v1.6); Tue, 27 Jan 1998 23:42:03 -0800 Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id XAA13033 for current-outgoing; Tue, 27 Jan 1998 23:42:01 -0800 (PST) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from frmug.org (frmug-gw.frmug.org [193.56.58.252]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id XAA13022 for ; Tue, 27 Jan 1998 23:41:55 -0800 (PST) (envelope-from roberto@keltia.freenix.fr) Received: (from uucp@localhost) by frmug.org (8.8.8/frmug-2.2/nospam) with UUCP id IAA18747; Wed, 28 Jan 1998 08:41:52 +0100 (CET) (envelope-from roberto@keltia.freenix.fr) Received: (from roberto@localhost) by keltia.freenix.fr (8.8.8/keltia-2.13/nospam) id IAA06733; Wed, 28 Jan 1998 08:35:55 +0100 (CET) (envelope-from roberto) Message-ID: <19980128083555.25754@keltia.freenix.fr> Date: Wed, 28 Jan 1998 08:35:55 +0100 From: Ollivier Robert To: current@FreeBSD.ORG Subject: Re: Building EGCS. What am I missing? Mail-Followup-To: current@freebsd.org References: <19980127002052.38606@keltia.freenix.fr> <19980127084505.42012@keltia.freenix.fr> <199801280252.SAA27219@austin.polstra.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.89i In-Reply-To: <199801280252.SAA27219@austin.polstra.com>; from John Polstra on Tue, Jan 27, 1998 at 06:52:17PM -0800 X-Operating-System: FreeBSD 3.0-CURRENT ctm#4019 AMD-K6 MMX @ 225 MHz Status: O Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk According to John Polstra: > Probably building shared libraries by hand with "ld -Bshareable > /usr/lib/c++rt0.o *.so ..." will work OK. The problem just affects > "gcc -shared". Here is John's fix, adapted to egcs. The fix was made on pgcc 980122 but it should apply mostly cleanly on every version of either egcs or pgcc. I was able to build a shared lib with our bsd.lib.mk after that. egcs doesn't have a STARTFILE_SPEC so I added our own (I'm not sure about it). I'll send them to the egcs folks. --- freebsd.h.old Mon Jan 26 22:07:49 1998 +++ freebsd.h Wed Jan 28 07:56:19 1998 @@ -38,7 +38,7 @@ #define CPP_PREDEFINES "-Dunix -Di386 -Dbsd4_4 -D__FreeBSD__=2 -D__386BSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)" /* Like the default, except no -lg. */ -#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}" +#define LIB_SPEC "%{!shared:%{!pg:-lc}%{pg:-lc_p}}" #undef SIZE_TYPE #define SIZE_TYPE "unsigned int" @@ -220,7 +220,15 @@ #define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}" #define LINK_SPEC \ - "%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*}" + "%{p:%e`-p' not supported; use `-pg' and gprof(1)} \ + %{shared:-Bshareable} \ + %{!shared:%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} \ + %{pg:-Bstatic} %{Z}} \ + %{assert*} %{R*}" + +#define STARTFILE_SPEC \ + "%{shared:c++rt0.o%s} \ + %{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}" /* This is defined when gcc is compiled in the BSD-directory-tree, and must * make up for the gap to all the stuff done in the GNU-makefiles. -- Ollivier ROBERT -=- FreeBSD: The Power to Serve! -=- roberto@keltia.freenix.fr FreeBSD keltia.freenix.fr 3.0-CURRENT #54: Mon Jan 26 20:29:17 CET 1998