Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Dec 2012 13:10:43 +0000
From:      David Chisnall <theraven@FreeBSD.org>
To:        Erik Cederstrand <erik@cederstrand.dk>
Cc:        "toolchain@freebsd.org" <toolchain@FreeBSD.org>, Pete chou <pete.chou@gmail.com>
Subject:   Re: Using non-standard linker
Message-ID:  <5880F938-A9EC-4B2D-8079-42504DFA87F9@FreeBSD.org>
In-Reply-To: <089FCDB5-C0D2-4675-AB71-FD7089BFA031@cederstrand.dk>
References:  <089FCDB5-C0D2-4675-AB71-FD7089BFA031@cederstrand.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
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"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5880F938-A9EC-4B2D-8079-42504DFA87F9>