summaryrefslogtreecommitdiffstats
path: root/build/linux/dump_app_syms
blob: 1bbb9bc9dd5922eb0d5ff3c723d97c711da4edd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/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 "$0 <dump_syms_exe> <binary_with_symbols> <symbols_output>" >&2
}


if [ $# -ne 3 ]; then
  usage
  exit 1
fi

SCRIPTDIR="$(readlink -f "$(dirname "$0")")"
DUMPSYMS="$1"
INFILE="$2"
OUTFILE="$3"

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")
rm "$STRIPPED"

# Replace the old signature with the stripped signature in the symbols file.
sed -i "1s/ [0-9A-F]* / $NEWSIG /" "$OUTFILE"