strip-kmod.sh 667 B

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