mirror of
https://github.com/gentoo-mirror/gentoo-zh.git
synced 2025-04-18 07:18:58 -04:00
34 lines
1015 B
Bash
Executable File
34 lines
1015 B
Bash
Executable File
#!/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}
|