svn commit: r347607 - projects/runtime-coverage-v2/share/mk
Enji Cooper
ngie at FreeBSD.org
Wed May 15 04:24:30 UTC 2019
Author: ngie
Date: Wed May 15 04:24:28 2019
New Revision: 347607
URL: https://svnweb.freebsd.org/changeset/base/347607
Log:
Verify that the linker supports the DWARF v4 spec
This change goes one step further in testing for coverage support by ensuring
that the linker is LLD and supports DWARF v4.
This is a proper fix for the arm/armv6 case not supporting `--coverage` with
bfd.
As a side effect, this change intentionally blacklists `--coverage` support
with binutils, i.e., the raw gcc toolchain. I will need to figure out what
versions of binutils support DWARF v4, etc, then add support for them after
verifying that they function with `--coverage`, most likely using an
xtoolchain.
Modified:
projects/runtime-coverage-v2/share/mk/bsd.lib.mk
projects/runtime-coverage-v2/share/mk/bsd.linker.mk
projects/runtime-coverage-v2/share/mk/bsd.prog.mk
projects/runtime-coverage-v2/share/mk/src.opts.mk
Modified: projects/runtime-coverage-v2/share/mk/bsd.lib.mk
==============================================================================
--- projects/runtime-coverage-v2/share/mk/bsd.lib.mk Wed May 15 03:39:27 2019 (r347606)
+++ projects/runtime-coverage-v2/share/mk/bsd.lib.mk Wed May 15 04:24:28 2019 (r347607)
@@ -5,9 +5,10 @@
.include <bsd.init.mk>
.include <bsd.compiler.mk>
-# This forces coverage off if the compiler isn't capable, as src.opts.mk is too
-# late sometimes.
-.if !${COMPILER_FEATURES:Mcoverage}
+# This forces coverage off if the compiler/linker isn't capable, as src.opts.mk
+# is not always used in time.
+.if !${COMPILER_FEATURES:Mcoverage} && \
+ (${LINKER_TYPE} == "lld" && !${LINKER_FEATURES:Mdwarfv4})
MK_COVERAGE:= no
.endif
Modified: projects/runtime-coverage-v2/share/mk/bsd.linker.mk
==============================================================================
--- projects/runtime-coverage-v2/share/mk/bsd.linker.mk Wed May 15 03:39:27 2019 (r347606)
+++ projects/runtime-coverage-v2/share/mk/bsd.linker.mk Wed May 15 04:24:28 2019 (r347607)
@@ -13,6 +13,7 @@
# linker support for that feature:
#
# - build-id: support for generating a Build-ID note
+# - dwarfv4: support for DWARF v4 format
# - retpoline: support for generating PLT with retpoline speculative
# execution vulnerability mitigation
#
@@ -87,6 +88,7 @@ ${X_}LINKER_FEATURES+= build-id
${X_}LINKER_FEATURES+= ifunc
.endif
.if ${${X_}LINKER_TYPE} == "lld" && ${${X_}LINKER_VERSION} >= 60000
+${X_}LINKER_FEATURES+= dwarfv4
${X_}LINKER_FEATURES+= retpoline
.endif
.endif
Modified: projects/runtime-coverage-v2/share/mk/bsd.prog.mk
==============================================================================
--- projects/runtime-coverage-v2/share/mk/bsd.prog.mk Wed May 15 03:39:27 2019 (r347606)
+++ projects/runtime-coverage-v2/share/mk/bsd.prog.mk Wed May 15 04:24:28 2019 (r347607)
@@ -4,9 +4,10 @@
.include <bsd.init.mk>
.include <bsd.compiler.mk>
-# This forces coverage off if the compiler isn't capable, as src.opts.mk is too
-# late sometimes.
-.if !${COMPILER_FEATURES:Mcoverage}
+# This forces coverage off if the compiler/linker isn't capable, as src.opts.mk
+# is not always used in time.
+.if !${COMPILER_FEATURES:Mcoverage} && \
+ (${LINKER_TYPE} == "lld" && !${LINKER_FEATURES:Mdwarfv4})
MK_COVERAGE:= no
.endif
Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk
==============================================================================
--- projects/runtime-coverage-v2/share/mk/src.opts.mk Wed May 15 03:39:27 2019 (r347606)
+++ projects/runtime-coverage-v2/share/mk/src.opts.mk Wed May 15 04:24:28 2019 (r347607)
@@ -318,13 +318,6 @@ __DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_IS_C
.if ${__T} == "aarch64" || ${__T:Mriscv*} != ""
BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GCC GCC_BOOTSTRAP GDB
.endif
-# --coverage support does not work on arm/armv6 because LLD/LLVM is disabled on
-# these platforms by default, and the binutils in base lacks DWARF v4 support.
-#
-# Force support off.
-.if ${__T} == "arm" || ${__T} == "armv6"
-BROKEN_OPTIONS+=COVERAGE COVERAGE_SUPPORT
-.endif
.if ${__T:Mriscv*} != ""
BROKEN_OPTIONS+=OFED
.endif
More information about the svn-src-projects
mailing list