Author: emaste
Date: Mon Nov 26 17:07:35 2018
New Revision: 340984
URL: https://svnweb.freebsd.org/changeset/base/340984

Log:
  Do not install GNU ld if lld is /usr/bin/ld
  
  GNU binutils ld.bfd 2.17.50 does not support ifuncs and produces broken
  binaries when ifuncs are in use.  When LLD_IS_LD is default we have an
  ifunc-capable system linker and can just avoid installing ld.bfd.
  
  Reported by:  theraven
  Reviewed by:  bz
  Sponsored by: The FreeBSD Foundation
  Differential Revision:        https://reviews.freebsd.org/D18340

Modified:
  head/gnu/usr.bin/binutils/Makefile
  head/tools/build/mk/OptionalObsoleteFiles.inc
  head/tools/build/options/WITHOUT_BINUTILS
  head/tools/build/options/WITH_BINUTILS

Modified: head/gnu/usr.bin/binutils/Makefile
==============================================================================
--- head/gnu/usr.bin/binutils/Makefile  Mon Nov 26 17:00:39 2018        
(r340983)
+++ head/gnu/usr.bin/binutils/Makefile  Mon Nov 26 17:07:35 2018        
(r340984)
@@ -8,9 +8,13 @@ SUBDIR=        doc\
        libopcodes \
        libbinutils \
        as \
-       ld \
        objdump
 
+# When we use ld.lld as /usr/bin/ld, do not install the non-ifunc-capable
+# GNU binutils 2.17.50 ld.
+.if ${MK_LLD_IS_LD} == "no"
+SUBDIR+=ld
+.endif
 
 SUBDIR_DEPEND_libbinutils=libbfd               # for bfdver.h
 SUBDIR_DEPEND_as=libbfd libiberty libopcodes

Modified: head/tools/build/mk/OptionalObsoleteFiles.inc
==============================================================================
--- head/tools/build/mk/OptionalObsoleteFiles.inc       Mon Nov 26 17:00:39 
2018        (r340983)
+++ head/tools/build/mk/OptionalObsoleteFiles.inc       Mon Nov 26 17:07:35 
2018        (r340984)
@@ -208,7 +208,6 @@ OLD_FILES+=usr/bin/as
 OLD_FILES+=usr/bin/ld
 OLD_FILES+=usr/share/man/man1/ld.1.gz
 .endif
-OLD_FILES+=usr/bin/ld.bfd
 OLD_FILES+=usr/bin/objdump
 OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.x
 OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xbn
@@ -411,6 +410,9 @@ OLD_FILES+=usr/share/man/man7/as.7.gz
 OLD_FILES+=usr/share/man/man7/ld.7.gz
 OLD_FILES+=usr/share/man/man7/ldint.7.gz
 OLD_FILES+=usr/share/man/man7/binutils.7.gz
+.endif
+.if ${MK_BINUTILS} == no || ${MK_LLD_IS_LD} == yes
+OLD_FILES+=usr/bin/ld.bfd
 .endif
 
 .if ${MK_BLACKLIST} == no

Modified: head/tools/build/options/WITHOUT_BINUTILS
==============================================================================
--- head/tools/build/options/WITHOUT_BINUTILS   Mon Nov 26 17:00:39 2018        
(r340983)
+++ head/tools/build/options/WITHOUT_BINUTILS   Mon Nov 26 17:07:35 2018        
(r340984)
@@ -1,4 +1,9 @@
 .\" $FreeBSD$
-Set to not build or install binutils (as, ld, and objdump) as part
+Set to not build or install GNU
+.Xr as 1 ,
+.Xr objdump 1 ,
+and for some CPU architectures
+.Xr ld.bfd 1
+as part
 of the normal system build.
 The resulting system cannot build programs from source.

Modified: head/tools/build/options/WITH_BINUTILS
==============================================================================
--- head/tools/build/options/WITH_BINUTILS      Mon Nov 26 17:00:39 2018        
(r340983)
+++ head/tools/build/options/WITH_BINUTILS      Mon Nov 26 17:07:35 2018        
(r340984)
@@ -1,3 +1,8 @@
 .\" $FreeBSD$
-Set to build and install binutils (as, ld, and objdump) as part
+Set to build and install GNU
+.Xr as 1 ,
+.Xr objdump 1 ,
+and for some CPU architectures
+.Xr ld.bfd 1
+as part
 of the normal system build.
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to