kernel: do not rename module symbols with kallsyms enabled
[openwrt.git] / scripts / strip-kmod.sh
1 #!/usr/bin/env bash
2 [ -n "$CROSS" ] || {
3         echo "The variable CROSS must be set to point to the cross-compiler prefix"
4         exit 1
5 }
6
7 MODULE="$1"
8
9 [ "$#" -ne 1 ] && {
10         echo "Usage: $0 <module>"
11         exit 1
12 }
13
14 ${CROSS}objcopy \
15         --strip-unneeded \
16         -R .comment \
17         -R .pdr \
18         -R .mdebug.abi32 \
19         -R .note.gnu.build-id \
20         -R .gnu.attributes \
21         -R .reginfo \
22         -G __this_module \
23         -x "$MODULE" "$MODULE.tmp"
24
25 [ -n "$NO_RENAME" ] && {
26         mv "${MODULE}.tmp" "$MODULE"
27         exit 0
28 }
29
30 ${CROSS}nm "$MODULE.tmp" | awk '
31 BEGIN {
32         n = 0
33 }
34
35 $3 && $2 ~ /[brtd]/ && $3 !~ /\$LC/ {
36         print "--redefine-sym "$3"=_"n;
37         n = n + 1
38 }
39 ' > "$MODULE.tmp1"
40
41 ${CROSS}objcopy `cat ${MODULE}.tmp1` ${MODULE}.tmp ${MODULE}.out
42 mv "${MODULE}.out" "${MODULE}"
43 rm -f "${MODULE}".t*