On 20/10/18 12:18 +0200, Romain Geissler wrote:
Hi,
I would like to raise again the question of supporting -fuse-ld=ldd. A
patch implementing it was already submitted in
https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01722.html by Davide
Italiano. This patch still applies correctly to current trunk. I am CC-ing
the original author and re-posting it here unchanged for reference.
I think we can consider this patch as relevant despite the goals and
licence difference of LLVM vs GNU, based on what was written by Mike Stump
in https://gcc.gnu.org/ml/gcc-patches/2016-07/msg00157.html
Back then, the technical problem raised by lld was reported as
https://bugs.llvm.org/show_bug.cgi?id=28414 now closed. In this bug, every
reported problems have been fixed except the last one. H.J. Lu mentions
this last problem (lld does not produces symbol versions predecessor
relationship while ld.bfd and ld.gold do, which seems to be a decision
taken on purpose and advertised as a harmless change) as being one reason
against supporting in -fuse-ld=ldd in gcc. Is it still the case today, and
if yes, why ?
Is there any other reason why -fuse-ld=ldd shall not be supported by gcc ?
This patch was committed to trunk (r265940), but HJ's review comments
were never addressed (and look correct to me):
https://gcc.gnu.org/ml/gcc-patches/2016-07/msg00146.html
The multi-line condition should be split before the || operator not
after it, and the negation of -fuse-ld=lld is not -fuse-ld-lld.