nixpkgs-suyu/pkgs/stdenv/cygwin/rebase-x86_64.sh

25 lines
702 B
Bash
Raw Normal View History

fixupOutputHooks+=(_cygwinFixAutoImageBase)
2015-05-26 15:18:49 +02:00
_cygwinFixAutoImageBase() {
if [ "$dontRebase" == 1 ] || [ ! -d "$prefix" ]; then
return
fi
find "$prefix" -name "*.dll" -type f | while read DLL; do
2015-05-26 15:18:49 +02:00
if [ -f /etc/rebasenix.nextbase ]; then
NEXTBASE="$(</etc/rebasenix.nextbase)"
fi
NEXTBASE=${NEXTBASE:-0x200000001}
2015-05-26 15:18:49 +02:00
REBASE=(`/bin/rebase -i $DLL`)
BASE=${REBASE[2]}
SIZE=${REBASE[4]}
SKIP=$(((($SIZE>>16)+1)<<16))
echo "REBASE FIX: $DLL $BASE -> $NEXTBASE"
/bin/rebase -b $NEXTBASE $DLL
NEXTBASE="0x`printf %x $(($NEXTBASE+$SKIP))`"
echo $NEXTBASE > /etc/rebasenix.nextbase
done
}