summaryrefslogtreecommitdiff
blob: d4f270c2fce7fbb83369c99e71c6d04cf6a50294 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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}