git: 092c4b37c180 - main - Mk/Uses: Add elfctl
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 18 Feb 2022 18:15:23 UTC
The branch main has been updated by jrm:
URL: https://cgit.FreeBSD.org/ports/commit/?id=092c4b37c1802b46f3c54244e5880d4bf7515c0b
commit 092c4b37c1802b46f3c54244e5880d4bf7515c0b
Author: Joseph Mingrone <jrm@FreeBSD.org>
AuthorDate: 2022-01-31 23:11:26 +0000
Commit: Joseph Mingrone <jrm@FreeBSD.org>
CommitDate: 2022-02-18 18:15:08 +0000
Mk/Uses: Add elfctl
Add USES=elfctl to change an ELF binary's feature control note.
Example:
USES= elfctl
ELF_FEATURES= +noaslr,wxneeded:foo
Reported by: emaste
Approved by: brooks, tcberner (portmgr)
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D34125
---
Mk/Uses/elfctl.mk | 27 +++++++++++++++++++++++++++
Mk/bsd.commands.mk | 1 +
2 files changed, 28 insertions(+)
diff --git a/Mk/Uses/elfctl.mk b/Mk/Uses/elfctl.mk
new file mode 100644
index 000000000000..442f13db596f
--- /dev/null
+++ b/Mk/Uses/elfctl.mk
@@ -0,0 +1,27 @@
+# Change an ELF binary's feature control note
+#
+# Feature: elfctl
+# Usage: USES=elfctl
+# Valid ARGS: none
+#
+# Variables
+#
+# ELF_FEATURES= featurelist:path/to/file1 \
+# featurelist:path/to/file1 \
+ featurelist:path/to/file2
+#
+# The file paths listed in ELF_FEATURES are relative to ${BUILD_WRKSRC}.
+#
+
+.if !defined(_INCLUDE_USES_ELFCTL_MK)
+_INCLUDE_USES_ELFCTL_MK= yes
+
+. if ! empty(ELF_FEATURES)
+_USES_build+= 720:elfctl-post-build
+elfctl-post-build:
+. for feat in ${ELF_FEATURES}
+ ${ELFCTL} -i -e ${feat:C/:.*//} ${BUILD_WRKSRC}/${feat:C/.*://}
+. endfor
+. endif
+
+.endif
diff --git a/Mk/bsd.commands.mk b/Mk/bsd.commands.mk
index 620c62eb1533..221a04e4b8f2 100644
--- a/Mk/bsd.commands.mk
+++ b/Mk/bsd.commands.mk
@@ -34,6 +34,7 @@ DIALOG4PORTS?= ${LOCALBASE}/bin/dialog4ports
DIFF?= /usr/bin/diff
DIRNAME?= /usr/bin/dirname
EGREP?= /usr/bin/egrep
+ELFCTL?= /usr/bin/elfctl
EXPR?= /bin/expr
FALSE?= false # Shell builtin
FILE?= /usr/bin/file