Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 May 2018 20:10:03 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r333470 - in head: share/mk sys/conf
Message-ID:  <201805102010.w4AKA3Ww094768@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Thu May 10 20:10:02 2018
New Revision: 333470
URL: https://svnweb.freebsd.org/changeset/base/333470

Log:
  Error out on attempt to link amd64 kernel with old binutils linker
  
  As of r333461 we require ifunc support to link a working amd64 kernel.
  The default in-tree bootstrap linker is lld and it has the required
  support, as does any modern out-of-tree binutils linker.  The in-tree
  GNU ld is from binutils 2.17.50 and it does not have ifunc support,
  so produce an error rather than a broken kernel.
  
  Reviewed by:	kib
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D15378

Modified:
  head/share/mk/bsd.linker.mk
  head/sys/conf/kern.pre.mk

Modified: head/share/mk/bsd.linker.mk
==============================================================================
--- head/share/mk/bsd.linker.mk	Thu May 10 19:13:00 2018	(r333469)
+++ head/share/mk/bsd.linker.mk	Thu May 10 20:10:02 2018	(r333470)
@@ -71,6 +71,7 @@ ${X_}LINKER_VERSION!=	echo "${_v:M[1-9].[0-9]*}" | \
 ${X_}LINKER_FEATURES=
 .if ${${X_}LINKER_TYPE} != "bfd" || ${${X_}LINKER_VERSION} > 21750
 ${X_}LINKER_FEATURES+=	build-id
+${X_}LINKER_FEATURES+=	ifunc
 .endif
 .if ${${X_}LINKER_TYPE} != "lld" || ${${X_}LINKER_VERSION} >= 50000
 ${X_}LINKER_FEATURES+=	filter

Modified: head/sys/conf/kern.pre.mk
==============================================================================
--- head/sys/conf/kern.pre.mk	Thu May 10 19:13:00 2018	(r333469)
+++ head/sys/conf/kern.pre.mk	Thu May 10 20:10:02 2018	(r333470)
@@ -121,6 +121,9 @@ LDFLAGS+=	-Wl,--build-id=sha1
 .endif
 
 .if ${MACHINE_CPUARCH} == "amd64"
+.if defined(LINKER_FEATURES) && ${LINKER_FEATURES:Mifunc} == ""
+.error amd64 kernel requires linker ifunc support
+.endif
 LDFLAGS+=	-Wl,-z max-page-size=2097152 -Wl,-z common-page-size=4096
 .endif
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805102010.w4AKA3Ww094768>