summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-libs/webkit-gtk/files/gir-paxctl-lt-wrapper')
-rwxr-xr-xnet-libs/webkit-gtk/files/gir-paxctl-lt-wrapper33
1 files changed, 33 insertions, 0 deletions
diff --git a/net-libs/webkit-gtk/files/gir-paxctl-lt-wrapper b/net-libs/webkit-gtk/files/gir-paxctl-lt-wrapper
new file mode 100755
index 000000000000..d4f270c2fce7
--- /dev/null
+++ b/net-libs/webkit-gtk/files/gir-paxctl-lt-wrapper
@@ -0,0 +1,33 @@
+#!/bin/bash
+# Wrapper for $(LIBTOOL) that performs PaX marking on the dumper binary
+# generated by g-ir-scanner.
+# PaX marking code stolen from pax-utils.eclass
+
+flags=${1//-}; shift
+
+echo ${LIBTOOL} "$@"
+${LIBTOOL} "$@"
+
+retval=$?
+
+files=$(find . -path "*tmp-introspect*/.libs/*")
+
+if type -p paxctl > /dev/null; then
+ echo "PT PaX marking -${flags} ${files}"
+ for f in ${files}; do
+ # First, try modifying the existing PAX_FLAGS header
+ paxctl -q${flags} "${f}" && continue
+ # Second, try stealing the (unused under PaX) PT_GNU_STACK header
+ paxctl -qc${flags} "${f}" && continue
+ # Third, try pulling the base down a page, to create space and
+ # insert a PT_GNU_STACK header (works on ET_EXEC)
+ paxctl -qC${flags} "${f}" && continue
+ done
+elif type -p scanelf > /dev/null; then
+ # Try scanelf, the Gentoo swiss-army knife ELF utility
+ # Currently this sets PT if it can, no option to control what it does.
+ echo "Fallback PaX marking -${flags} ${files}"
+ scanelf -Xxz ${flags} ${files}
+fi
+
+exit ${retval}