version 1.484, 2016/05/27 17:03:45 |
version 1.485, 2016/05/29 15:36:06 |
|
|
|
|
# Re-link libraries, placing the objects in a random order. |
# Re-link libraries, placing the objects in a random order. |
reorder_libs() { |
reorder_libs() { |
local _l _liba _libas _tmpdir _remount=false |
local _l _liba _libas _tmpdir _remount=false _error=false |
local _dkdev=/dev/$(stat -L -f '%Sd' /usr/lib) |
local _dkdev=/dev/$(stat -L -f '%Sd' /usr/lib) |
local _mp=$(mount | grep "^$_dkdev") |
local _mp=$(mount | grep "^$_dkdev") |
|
|
|
|
fi |
fi |
|
|
for _liba in $_libas; do |
for _liba in $_libas; do |
_tmpdir=$(mktemp -dq /tmp/_librebuild.XXXXXXXXXXXX) || return |
_tmpdir=$(mktemp -dq /tmp/_librebuild.XXXXXXXXXXXX) && ( |
( |
|
set -o errexit |
set -o errexit |
_lib=${_liba#/usr/lib/} |
_lib=${_liba#/usr/lib/} |
_lib=${_lib%.a} |
_lib=${_lib%.a} |
|
|
[[ -s $_lib ]] && file $_lib | fgrep -q 'shared object' |
[[ -s $_lib ]] && file $_lib | fgrep -q 'shared object' |
LD_BIND_NOW=1 LD_LIBRARY_PATH=$_tmpdir awk 'BEGIN {exit 0}' |
LD_BIND_NOW=1 LD_LIBRARY_PATH=$_tmpdir awk 'BEGIN {exit 0}' |
install -F -S -o root -g bin -m 0444 $_lib /usr/lib/$_lib |
install -F -S -o root -g bin -m 0444 $_lib /usr/lib/$_lib |
) |
) || { _error=true; break; } |
rm -rf /tmp/_librebuild.${_tmpdir#*.} |
|
done |
done |
|
|
|
rm -rf /tmp/_librebuild.* |
|
|
# Restore previous mount state if it was changed. |
# Restore previous mount state if it was changed. |
if $_remount; then |
if $_remount; then |
mount -u -r $_dkdev |
mount -u -r $_dkdev || _error=true |
fi |
fi |
|
|
echo ' done.' |
if $_error; then |
|
echo ' failed.' |
|
else |
|
echo ' done.' |
|
fi |
} |
} |
|
|
# Run rc.* script and email output to root. |
# Run rc.* script and email output to root. |