strip-kmod.sh 776 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. MODULE="$1"
  7. [ "$#" -ne 1 ] && {
  8. echo "Usage: $0 <module>"
  9. exit 1
  10. }
  11. ARGS=
  12. [ -n "$KEEP_SYMBOLS" ] || ARGS="-x -G __this_module --strip-unneeded"
  13. ${CROSS}objcopy \
  14. -R .comment \
  15. -R .pdr \
  16. -R .mdebug.abi32 \
  17. -R .note.gnu.build-id \
  18. -R .gnu.attributes \
  19. -R .reginfo \
  20. $ARGS \
  21. "$MODULE" "$MODULE.tmp"
  22. [ -n "$NO_RENAME" ] && {
  23. mv "${MODULE}.tmp" "$MODULE"
  24. exit 0
  25. }
  26. ${CROSS}nm "$MODULE.tmp" | awk '
  27. BEGIN {
  28. n = 0
  29. }
  30. $3 && $2 ~ /[brtd]/ && $3 !~ /\$LC/ {
  31. print "--redefine-sym "$3"=_"n;
  32. n = n + 1
  33. }
  34. ' > "$MODULE.tmp1"
  35. ${CROSS}objcopy `cat ${MODULE}.tmp1` ${MODULE}.tmp ${MODULE}.out
  36. mv "${MODULE}.out" "${MODULE}"
  37. rm -f "${MODULE}".t*