svn commit: r320272 - head/sys/conf

Bryan Drewery bdrewery at FreeBSD.org
Fri Jun 23 16:43:13 UTC 2017


On 6/23/2017 9:28 AM, Konstantin Belousov wrote:
> On Fri, Jun 23, 2017 at 03:57:58PM +0000, Ed Maste wrote:
>> Author: emaste
>> Date: Fri Jun 23 15:57:58 2017
>> New Revision: 320272
>> URL: https://svnweb.freebsd.org/changeset/base/320272
>>
>> Log:
>>   enable --build-id for the kernel link
>>   
>>   A Build-ID is an identifier generated at link time to uniquely identify
>>   ELF binaries.  It allows efficient confirmation that an executable or
>>   shared library and a corresponding standalone debuginfo file match.
>>   (Otherwise, a checksum of the debuginfo file must be calculated when
>>   opening it in a debugger.)
>>   
>>   The FreeBSD base system includes GNU bfd ld 2.17.50 as the linker for
>>   architectures other than arm64.  Build-ID support was added to bfd ld
>>   shortly after that version, so was not previously available to us.
>>   
>>   We can now start making use of Build-ID as we migrate to using lld or
>>   bfd ld from ports, conditionally enabled based on the LINKER_TYPE and
>>   LINKER_VERSION make variables added in r320244 and subsequent commits.
>>   
>>   Reviewed by:	dim
>>   MFC after:	3 weeks
>>   Sponsored by:	The FreeBSD Foundation
>>   Differential Revision:	https://reviews.freebsd.org/D11314
>>
>> Modified:
>>   head/sys/conf/kern.pre.mk
>>   head/sys/conf/kmod.mk
>>
>> Modified: head/sys/conf/kern.pre.mk
>> ==============================================================================
>> --- head/sys/conf/kern.pre.mk	Fri Jun 23 15:27:23 2017	(r320271)
>> +++ head/sys/conf/kern.pre.mk	Fri Jun 23 15:57:58 2017	(r320272)
>> @@ -114,6 +114,10 @@ DEFINED_PROF=	${PROF}
>>  # can override the others.
>>  CFLAGS+=	${CONF_CFLAGS}
>>  
>> +.if ${LINKER_TYPE} != "bfd" || ${LINKER_VERSION} > 21750
> I believe such tests is the road to misery.  I suggest that an ld feature
> presence must define some variable for make, and the places using the
> ld feature would test for the variable.
> 
> In other words, checking the features must be centralized.  There is too
> many linkers already: bfd, gold, lld.  Since two new linkers appeared in
> five years, I would be not surprised if more will.

Agreed.  We can have a LINKER_FEATURES like we do for the compiler.

In this case I suggest just moving the same condition you have added
into bsd.linker.mk with something like
https://people.freebsd.org/~bdrewery/patches/linker-features-build-id.diff

Then in these sys/conf places you just:
.if ${LINKER_FEATURES:Mbuild-id}
LDFLAGS+=

> 
> Having to deal with combinations at places of use is not scalable.  We do
> it close to right with C compilers and sys/cdefs.h.
> 
>> +LDFLAGS+=	-Wl,--build-id=sha1
>> +.endif
>> +
>>  # Optional linting. This can be overridden in /etc/make.conf.
>>  LINTFLAGS=	${LINTOBJKERNFLAGS}
>>  
>>
>> Modified: head/sys/conf/kmod.mk
>> ==============================================================================
>> --- head/sys/conf/kmod.mk	Fri Jun 23 15:27:23 2017	(r320271)
>> +++ head/sys/conf/kmod.mk	Fri Jun 23 15:57:58 2017	(r320272)
>> @@ -125,6 +125,10 @@ CFLAGS.gcc+= --param large-function-growth=1000
>>  CFLAGS+=	-fno-common
>>  LDFLAGS+=	-d -warn-common
>>  
>> +.if ${LINKER_TYPE} != "bfd" || ${LINKER_VERSION} > 21750
>> +LDFLAGS+=	-Wl,--build-id=sha1
>> +.endif
>> +
>>  CFLAGS+=	${DEBUG_FLAGS}
>>  .if ${MACHINE_CPUARCH} == amd64
>>  CFLAGS+=	-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
> 


-- 
Regards,
Bryan Drewery

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20170623/bc1f1534/attachment.sig>


More information about the svn-src-head mailing list