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