new file mode 100644
@@ -0,0 +1,23 @@
+SUMMARY = "execstack tool"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+
+DEPENDS = "binutils-native elfutils-native"
+
+SRC_URI = "git://git.yoctoproject.org/prelink-cross;protocol=https;branch=master"
+SRCREV = "ff2561c02ade96c5d4d56ddd4e27ff064840a176"
+PV = "1.0+git${SRCPV}"
+
+# The last tagged release was 20151030. Track this as a git tree to
+# see if there are any updates
+UPSTREAM_CHECK_COMMITS = "1"
+
+inherit autotools native
+
+do_compile() {
+ oe_runmake -C ${B}/src execstack
+}
+
+do_install() {
+ oe_runmake -C ${B}/src install-binPROGRAMS DESTDIR="${D}"
+}
new file mode 100644
@@ -0,0 +1,26 @@
+# Clear the executable stack flag on named shared libraries. This are typically
+# not needed, and glibc 2.41 will refuse to dlopen() a library that expects
+# an executable stack.
+#
+# The stack permissions can be checked with readelf -lW <.so> | grep GNU_STACK.
+# RW is read/write, RWE is read/write/execute.
+
+DEPENDS += "execstack-native"
+
+REMOVE_EXECSTACKS ?= ""
+
+do_install:append() {
+ for SO in ${REMOVE_EXECSTACKS}; do
+ NAME=$(basename $SO)
+ SO=${D}$SO
+
+ test -f $SO || bbfatal remove-execstack: cannot find $SO
+
+ if execstack --query $SO | grep -q ^X; then
+ bbnote "Stripping executable stack bit on $NAME"
+ execstack --clear-execstack $SO
+ else
+ bbwarn "Executable stack stripping no longer required for $NAME, remove"
+ fi
+ done
+}