blob: 7043b10d0b84206bf57ec4ffb56997562630347e [file] [log] [blame]
#!/bin/sh
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Helper script to run dump_syms on Chrome Linux executables and "fixup" the
# generated sigs (due to changes to the binary from stripping).
set -e
usage() {
echo -n "$0 <dump_syms_exe> <strip_binary> " >&2
echo "<binary_with_symbols> <symbols_output>" >&2
}
if [ $# -ne 4 ]; then
usage
exit 1
fi
SCRIPTDIR="$(readlink -f "$(dirname "$0")")"
DUMPSYMS="$1"
KEEP_STRIPPED_BINARY="$2"
INFILE="$3"
OUTFILE="$4"
STRIPPED=$(mktemp -q -t stripped-XXXXX)
if [ $? -ne 0 ]; then
echo "ERROR: Could not create temp stripped '$INFILE'" >&2
exit 1
fi
# Dump the symbols from the given binary.
if [ ! -e "$OUTFILE" -o "$INFILE" -nt "$OUTFILE" ]; then
"$DUMPSYMS" "$INFILE" > "$OUTFILE"
fi
# Strip the binary and calculate the signature of that, since that's what ships.
strip "$INFILE" -o "$STRIPPED"
NEWSIG=$("$SCRIPTDIR/dump_signature.py" "$STRIPPED")
if [ "$KEEP_STRIPPED_BINARY" != "0" ]; then
mv "$STRIPPED" "$INFILE"
else
rm "$STRIPPED"
fi
# Replace the old signature with the stripped signature in the symbols file.
sed -i "1s/ [0-9A-F]* / $NEWSIG /" "$OUTFILE"