0,0 → 1,26 |
#!/bin/bash |
# This script processes symbols output by Gallium using glibc to human-readable function names |
|
lastbin= |
i=-1 |
dir="$(mktemp -d)" |
input="$1" |
|
# Gather all unique addresses for each binary |
sed -nre 's|([^ ]*/[^ ]*)\(\+0x([^)]*).*|\1 \2|p' "$input"|sort|uniq|while read bin addr; do |
if test "$lastbin" != "$bin"; then |
((++i)) |
lastbin="$bin" |
echo "$bin" > "$dir/$i.addrs.bin" |
fi |
echo "$addr" >> "$dir/$i.addrs" |
done |
|
# Construct a sed script to convert hex address to human readable form, and apply it |
for i in "$dir"/*.addrs; do |
bin="$(<"$i.bin")" |
addr2line -p -e "$bin" -a -f < "$i"|sed -nre 's@^0x0*([^:]*): ([^?]*)$@s|'"$bin"'(+0x\1)|\2|g@gp' |
rm -f "$i" "$i.bin" |
done|sed -f - "$input" |
|
rmdir "$dir" |