OSDN Git Service

drop support for static text [ci reset]
[kde/Katie.git] / scripts / stripdiff.sh
1 #!/bin/sh
2
3 set -e
4
5 demanglersrc="/tmp/demangler.cpp"
6 demanglerfile="/tmp/demangler"
7 printf "
8 #include <stdlib.h>
9 #include <stdio.h>
10 #include <cxxabi.h>
11
12 int main(int argc, char** argv) {
13     int status;
14     char* demangled = abi::__cxa_demangle(argv[1], nullptr, nullptr, &status);
15     if (status == 0) {
16         ::printf(\"%%s\\\n\", demangled);
17         ::free(demangled);
18     }
19     return 0;
20 }
21 " > "$demanglersrc"
22 g++ "$demanglersrc" -o "$demanglerfile"
23
24 sofile="$@"
25 sobase="$(basename $sofile)"
26 sosym="/tmp/$sobase.sym"
27 usosym="/tmp/uniq_$sobase.sym"
28 stripfile="/tmp/stripped_$sobase"
29 stripsym="/tmp/stripped_$sobase.sym"
30 ustripsym="/tmp/uniq_stripped_$sobase.sym"
31
32 readelf -s -W "$sofile" | awk -F' ' '{print $8}' > "$sosym"
33
34 objcopy -v -g --strip-unneeded "$sofile" "$stripfile"
35 readelf -s -W "$stripfile" | awk -F' ' '{print $8}' > "$stripsym"
36
37 uniq "$sosym" "$usosym"
38 uniq "$stripsym" "$ustripsym"
39 while read line; do
40     grep -q "^${line}$" "$ustripsym" || "$demanglerfile" "$line"
41 done < "$usosym"
42
43 rm -vf "$demanglersrc" "$demanglerfile" "$stripfile" "$sosym" "$usosym" "$stripsym" "$ustripsym"