|
Packit Service |
97d2fb |
#!/bin/sh
|
|
Packit Service |
97d2fb |
#
|
|
Packit Service |
97d2fb |
# Script to make an offline archive for debugging with libdwfl-based tools.
|
|
Packit Service |
97d2fb |
#
|
|
Packit Service |
97d2fb |
# make-debug-archive ARCHIVE {options}
|
|
Packit Service |
97d2fb |
# make-debug-archive --kernel [--force] [RELEASE]
|
|
Packit Service |
97d2fb |
#
|
|
Packit Service |
97d2fb |
# Valid options are those listed under 'Input selection options'
|
|
Packit Service |
97d2fb |
# by running @UNSTRIP@ --help.
|
|
Packit Service |
97d2fb |
#
|
|
Packit Service |
97d2fb |
# The archive installed by --kernel be used automatically by -K.
|
|
Packit Service |
97d2fb |
# An offline archive can be used via -e in any tool that accepts those options.
|
|
Packit Service |
97d2fb |
#
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
UNSTRIP=${UNSTRIP:-@UNSTRIP@}
|
|
Packit Service |
97d2fb |
AR=${AR:-@AR@}
|
|
Packit Service |
97d2fb |
SUDO=${SUDO:-/usr/bin/sudo}
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
LS=/bin/ls
|
|
Packit Service |
97d2fb |
RM=/bin/rm
|
|
Packit Service |
97d2fb |
MV=/bin/mv
|
|
Packit Service |
97d2fb |
MKDIR=/bin/mkdir
|
|
Packit Service |
97d2fb |
XARGS=/usr/bin/xargs
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
outdir=${TMPDIR:-/tmp}/debugar$$
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
usage()
|
|
Packit Service |
97d2fb |
{
|
|
Packit Service |
97d2fb |
echo "Usage: $0 ARCHIVE {options}"
|
|
Packit Service |
97d2fb |
echo " or: $0 --kernel [--sudo] [--force] [RELEASE]"
|
|
Packit Service |
97d2fb |
echo
|
|
Packit Service |
97d2fb |
echo "Valid options are listed under 'Input selection options'"
|
|
Packit Service |
97d2fb |
echo "when running: $UNSTRIP --help"
|
|
Packit Service |
97d2fb |
echo
|
|
Packit Service |
97d2fb |
echo "The --kernel form updates the file used by -K if the"
|
|
Packit Service |
97d2fb |
echo "kernel installation has changed, or always with --force."
|
|
Packit Service |
97d2fb |
echo "With --sudo, touches the installed file via $SUDO."
|
|
Packit Service |
97d2fb |
}
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
fatal_usage()
|
|
Packit Service |
97d2fb |
{
|
|
Packit Service |
97d2fb |
usage >&2
|
|
Packit Service |
97d2fb |
exit 2
|
|
Packit Service |
97d2fb |
}
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
script_version()
|
|
Packit Service |
97d2fb |
{
|
|
Packit Service |
97d2fb |
echo "`basename $0` (@PACKAGE_NAME@) @PACKAGE_VERSION@"
|
|
Packit Service |
97d2fb |
echo "Copyright (C) 2007 Red Hat, Inc."
|
|
Packit Service |
97d2fb |
echo "This is free software; see the source for copying conditions."
|
|
Packit Service |
97d2fb |
echo "There is NO warranty; not even for MERCHANTABILITY or"
|
|
Packit Service |
97d2fb |
echo "FITNESS FOR A PARTICULAR PURPOSE."
|
|
Packit Service |
97d2fb |
echo "Written by Roland McGrath."
|
|
Packit Service |
97d2fb |
}
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
sudo=
|
|
Packit Service |
97d2fb |
kernel=no
|
|
Packit Service |
97d2fb |
force_kernel=no
|
|
Packit Service |
97d2fb |
while [ $# -gt 0 ]; do
|
|
Packit Service |
97d2fb |
case "x$1" in
|
|
Packit Service |
97d2fb |
x--help) usage; exit 0 ;;
|
|
Packit Service |
97d2fb |
x--version) script_version; exit 0 ;;
|
|
Packit Service |
97d2fb |
x--kernel) kernel=yes ;;
|
|
Packit Service |
97d2fb |
x--force) force_kernel=yes ;;
|
|
Packit Service |
97d2fb |
x--sudo) sudo=$SUDO ;;
|
|
Packit Service |
97d2fb |
*) break ;;
|
|
Packit Service |
97d2fb |
esac
|
|
Packit Service |
97d2fb |
shift
|
|
Packit Service |
97d2fb |
done
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
if [ $kernel = no ] && [ $force_kernel = yes -o -n "$sudo" ]; then
|
|
Packit Service |
97d2fb |
usage
|
|
Packit Service |
97d2fb |
fi
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
if [ $kernel = yes ]; then
|
|
Packit Service |
97d2fb |
if [ $# -eq 0 ]; then
|
|
Packit Service |
97d2fb |
release=`uname -r`
|
|
Packit Service |
97d2fb |
elif [ $# -eq 1 ]; then
|
|
Packit Service |
97d2fb |
release=$1
|
|
Packit Service |
97d2fb |
else
|
|
Packit Service |
97d2fb |
fatal_usage
|
|
Packit Service |
97d2fb |
fi
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
dir=/usr/lib/debug/lib/modules/$release
|
|
Packit Service |
97d2fb |
archive=$dir/debug.a
|
|
Packit Service |
97d2fb |
dep=/lib/modules/$release/modules.dep
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
if [ ! -d $dir ]; then
|
|
Packit Service |
97d2fb |
echo >&2 "$0: $dir not installed"
|
|
Packit Service |
97d2fb |
exit 1
|
|
Packit Service |
97d2fb |
fi
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
# Without --force, bail if the kernel installation is not newer.
|
|
Packit Service |
97d2fb |
# This file is normally touched by installing new kernels or modules.
|
|
Packit Service |
97d2fb |
if [ $force_kernel = no -a "$archive" -nt "$dep" ]; then
|
|
Packit Service |
97d2fb |
exit 0
|
|
Packit Service |
97d2fb |
fi
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
# We have to kill the old one first, because our own -K would use it.
|
|
Packit Service |
97d2fb |
[ ! -e "$archive" ] || $sudo $RM -f "$archive" || exit
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
set "$archive" "-K$release"
|
|
Packit Service |
97d2fb |
fi
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
if [ $# -lt 2 ]; then
|
|
Packit Service |
97d2fb |
fatal_usage
|
|
Packit Service |
97d2fb |
fi
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
archive="$1"
|
|
Packit Service |
97d2fb |
shift
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
case "$archive" in
|
|
Packit Service |
97d2fb |
/*) ;;
|
|
Packit Service |
97d2fb |
*) archive="`/bin/pwd`/$archive" ;;
|
|
Packit Service |
97d2fb |
esac
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
if [ -z "$sudo" ]; then
|
|
Packit Service |
97d2fb |
new_archive="$archive.new"
|
|
Packit Service |
97d2fb |
else
|
|
Packit Service |
97d2fb |
new_archive="$outdir.a"
|
|
Packit Service |
97d2fb |
fi
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
$RM -f "$new_archive" || exit
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
trap '$RM -rf "$outdir" "$new_archive"' 0 1 2 15
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
$MKDIR "$outdir" &&
|
|
Packit Service |
97d2fb |
$UNSTRIP -d "$outdir" -m -a -R "$@" &&
|
|
Packit Service |
97d2fb |
(cd "$outdir" && $LS | $XARGS $AR cq "$new_archive") &&
|
|
Packit Service |
97d2fb |
$sudo $MV -f "$new_archive" "$archive"
|
|
Packit Service |
97d2fb |
|
|
Packit Service |
97d2fb |
exit
|