Skip to content

Commit 2d0a429

Browse files
committed
scripts/gensyms: Allow use with existing symbols
1 parent 0a1b389 commit 2d0a429

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

scripts/gensyms

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,27 +35,30 @@ warn() {
3535
printf 'warning: %s\n' "$*" >&2
3636
}
3737

38-
if [ "$(stat -c %s "$symbols" || echo 0)" -gt 0 ]; then
39-
warn "Existing symbols for ${dir} would be overwritten! Quitting."
40-
exit 1
41-
fi
42-
4338
# Ensure the disassembled file exists
4439
make "$assembly"
4540

4641
# Add ARM interleaved instruction/immediate data marker
4742
if test "$ARCH" = "arm"; then
48-
grep -m1 'text$' "$sections" | sed 's/text/$a/' > "$symbols"
43+
grep -m1 'text$' "$sections" | sed 's/text/$a/' >> "$symbols"
4944
fi
5045

46+
# Merge the symbols
47+
sort -go "$symbols" -u "$symbols"
48+
5149
# Add all normally-called functions
5250
grep "${CALL_INSN}\s[[:xdigit:]]" "$assembly" |
5351
sed "s/^.*${CALL_INSN}\s//" |
5452
sort -gu |
55-
while read -r addr; do
53+
while read -r addr dummy; do
54+
{ printf "$addr" | grep -q "^0x"; } || addr=0x${addr}
55+
grep -q "$(printf '^0x%08x' "$addr")" "$symbols" && continue
5656
printf '0x%08x func_%08x\n' "$addr" "$addr"
5757
done >> "$symbols"
5858

59+
# Merge the symbols
60+
sort -go "$symbols" -u "$symbols"
61+
5962
# Update the disassembly
6063
make "$assembly"
6164

@@ -65,7 +68,9 @@ if test -n "$TAIL_INSN"; then
6568
grep "${TAIL_INSN}\s[[:xdigit:]]" |
6669
sed "s/^.*${TAIL_INSN}\s\([[:xdigit:]]\+\)\s.*$/0x\1/" |
6770
sort -gu |
68-
while read -r addr; do
71+
while read -r addr dummy; do
72+
{ printf "$addr" | grep -q "^0x"; } || addr=0x${addr}
73+
grep -q "$(printf '^0x%08x' "$addr")" "$symbols" && continue
6974
printf '0x%08x func_%08x\n' "$addr" "$addr"
7075
done >> "$symbols"
7176
fi

0 commit comments

Comments
 (0)