From owner-freebsd-toolchain@FreeBSD.ORG Thu Dec 13 13:10:54 2012 Return-Path: Delivered-To: toolchain@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 74524CBE for ; Thu, 13 Dec 2012 13:10:54 +0000 (UTC) (envelope-from theraven@FreeBSD.org) Received: from theravensnest.org (theraven.freebsd.your.org [216.14.102.27]) by mx1.freebsd.org (Postfix) with ESMTP id 1D2DA8FC12 for ; Thu, 13 Dec 2012 13:10:53 +0000 (UTC) Received: from c120.sec.cl.cam.ac.uk (c120.sec.cl.cam.ac.uk [128.232.18.120]) (authenticated bits=0) by theravensnest.org (8.14.5/8.14.5) with ESMTP id qBDDAiBS096643 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO); Thu, 13 Dec 2012 13:10:45 GMT (envelope-from theraven@FreeBSD.org) Subject: Re: Using non-standard linker Mime-Version: 1.0 (Apple Message framework v1278) Content-Type: text/plain; charset=us-ascii From: David Chisnall In-Reply-To: <089FCDB5-C0D2-4675-AB71-FD7089BFA031@cederstrand.dk> Date: Thu, 13 Dec 2012 13:10:43 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: <5880F938-A9EC-4B2D-8079-42504DFA87F9@FreeBSD.org> References: <089FCDB5-C0D2-4675-AB71-FD7089BFA031@cederstrand.dk> To: Erik Cederstrand X-Mailer: Apple Mail (2.1278) Cc: "toolchain@freebsd.org" , Pete chou X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Dec 2012 13:10:54 -0000 Hi Eric, The easiest way of doing this is to make /usr/bin/ld (in the host system = and in the bootstrap) into a symbolic link that points to whatever the = selected linker is. I had to do this when testing gold as well (we end = up with ld-gold and ld-bfd and ld being a symlink to one of them). =20 A better solution would be to teach clang about mclinker. I was = pondering adding a linker selection flag, along the lines of the = existing -stdlib=3D for selecting the C++ standard library, as you may = want to pass different options to different linkers. David On 13 Dec 2012, at 12:36, Erik Cederstrand wrote: > Hi folks, >=20 > I'm working with Pete Chou from MCLinker (actually, he's doing almost = all the work) to get mclinker to survive a buildworld. The goal is to = allow mclinker to be a drop-in replacement for GNU ld. >=20 > My first suggestion was to just add LD=3D/usr/local/bin/mclinker to = src.conf. But this only works when ld is invoked explicitly (and only = when 'ld' is not hard-coded, of course). >=20 > When ld is invoked internally by the compiler, Pete has tested that = gcc(collect2) and clang do not respect the LD variable, but search for = 'ld' in COMPILER_PATH and then PATH instead. Since mclinker is not part = of the build process, it isn't found in COMPILER_PATH, and GNU ld is = used instead. Instead, he can add an additional compiler search path via = the "-B" flag, which seems to work. >=20 > I'm worried that 'ld' is so hard-wired everywhere that it's impossible = to specify another name. In that case, my suggestion would be to use = build knobs, e.g. WITH_GNU_LD and WITH_MCLINKER_LD to install either GNU = ld or mclinker as 'ld', but that wouldn't work unless mclinker is = imported into base. >=20 > What's the FreeBSD way of doing this? What do other toolchains do if = they use a non-GNU ld linker? >=20 > Thanks, > Erik > _______________________________________________ > freebsd-toolchain@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-toolchain > To unsubscribe, send any mail to = "freebsd-toolchain-unsubscribe@freebsd.org"