diff --git Makefile.inc1 Makefile.inc1 index 7ef7005691f1..67ea098b38b4 100644 --- Makefile.inc1 +++ Makefile.inc1 @@ -184,6 +184,7 @@ _COMPILER_METADATA_VARS= COMPILER_VERSION \ COMPILER_TYPE \ COMPILER_FEATURES \ COMPILER_FREEBSD_VERSION \ + LINKER_FEATURES \ LINKER_VERSION \ LINKER_TYPE compiler-metadata.mk: .PHONY .META diff --git share/mk/bsd.linker.mk share/mk/bsd.linker.mk index 8160d3a8fbfe..97a849abcd60 100644 --- share/mk/bsd.linker.mk +++ share/mk/bsd.linker.mk @@ -9,6 +9,9 @@ # major * 10000 + minor * 100 + tiny # It too can be overridden on the command line. # +# LINKER_FEATURES may contain some features the linker supports. +# build-id +# # These variables with an X_ prefix will also be provided if XLD is set. # # This file may be included multiple times, but only has effect the first time. @@ -22,7 +25,7 @@ ____: # Try to import LINKER_TYPE and LINKER_VERSION from parent make. # The value is only used/exported for the same environment that impacts # LD and LINKER_* settings here. -_exported_vars= ${X_}LINKER_TYPE ${X_}LINKER_VERSION +_exported_vars= ${X_}LINKER_TYPE ${X_}LINKER_VERSION ${X_}LINKER_FEATURES ${X_}_ld_hash= ${${ld}}${MACHINE}${PATH} ${X_}_ld_hash:= ${${X_}_ld_hash:hash} # Only import if none of the vars are set somehow else. @@ -59,11 +62,16 @@ ${X_}LINKER_VERSION!= echo "${_v:M[1-9].[0-9]*}" | \ awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3;}' .undef _ld_version .undef _v +${X_}LINKER_FEATURES= +.if ${${X_}LINKER_TYPE} != "bfd" || ${${X_}LINKER_VERSION} > 21750 +${X_}LINKER_FEATURES+= build-id +.endif .endif .else # Use LD's values X_LINKER_TYPE= ${LINKER_TYPE} X_LINKER_VERSION= ${LINKER_VERSION} +X_LINKER_FEATURES= ${LINKER_FEATURES} .endif # ${ld} == "LD" || (${ld} == "XLD" && ${XLD} != ${LD}) # Export the values so sub-makes don't have to look them up again, using the