Skip to content

Commit

Permalink
Do not install GNU ld if lld is /usr/bin/ld
Browse files Browse the repository at this point in the history
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
  • Loading branch information
emaste committed Nov 26, 2018
1 parent 6b26cac commit eda7d3b
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 4 deletions.
6 changes: 5 additions & 1 deletion gnu/usr.bin/binutils/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion tools/build/mk/OptionalObsoleteFiles.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -412,6 +411,9 @@ 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
OLD_FILES+=etc/rc.d/blacklistd
Expand Down
7 changes: 6 additions & 1 deletion tools/build/options/WITHOUT_BINUTILS
Original file line number Diff line number Diff line change
@@ -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.
7 changes: 6 additions & 1 deletion tools/build/options/WITH_BINUTILS
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit eda7d3b

Please sign in to comment.