demangle symbols from stripdiff script [ci skip]

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2021-09-09 17:14:46 +03:00
parent d74dcc3210
commit 620ba97e9d

View file

@ -2,6 +2,25 @@
set -e
demanglersrc="/tmp/demangler.cpp"
demanglerfile="/tmp/demangler"
printf "
#include <stdlib.h>
#include <stdio.h>
#include <cxxabi.h>
int main(int argc, char** argv) {
int status;
char* demangled = abi::__cxa_demangle(argv[1], nullptr, nullptr, &status);
if (status == 0) {
::printf(\"%%s\\\n\", demangled);
::free(demangled);
}
return 0;
}
" > "$demanglersrc"
g++ "$demanglersrc" -o "$demanglerfile"
sofile="$@"
sobase="$(basename $sofile)"
sosym="/tmp/$sobase.sym"
@ -18,7 +37,7 @@ readelf -s -W "$stripfile" | awk -F' ' '{print $8}' > "$stripsym"
uniq "$sosym" "$usosym"
uniq "$stripsym" "$ustripsym"
while read line; do
grep -q "^${line}$" "$ustripsym" || echo "$line"
grep -q "^${line}$" "$ustripsym" || "$demanglerfile" "$line"
done < "$usosym"
rm -vf "$stripfile" "$sosym" "$usosym" "$stripsym" "$ustripsym"
rm -vf "$demanglersrc" "$demanglerfile" "$stripfile" "$sosym" "$usosym" "$stripsym" "$ustripsym"