rstrip.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # This file is part of the OpenADK project. OpenADK is copyrighted
  2. # material, please see the LICENCE file in the top-level directory.
  3. [[ -n $BASH_VERSION ]] && shopt -s extglob
  4. SELF=${0##*/}
  5. if [[ -z $prefix ]]; then
  6. echo >&2 "$SELF: strip command not defined ('prefix' variable not set)"
  7. exit 1
  8. fi
  9. if [[ $1 = +keep ]]; then
  10. stripcomm=
  11. shift
  12. else
  13. stripcomm=" -R .comment"
  14. fi
  15. TARGETS=$*
  16. if [[ -z $TARGETS ]]; then
  17. echo >&2 "$SELF: no directories / files specified"
  18. echo >&2 "usage: $SELF [PATH...]"
  19. exit 1
  20. fi
  21. find $TARGETS -type f -a -exec file {} \; | \
  22. while IFS= read -r line; do
  23. F=${line%%:*}
  24. V=${F##*/fake-+([!/])/}
  25. T="${prefix}strip"
  26. T=$T$stripcomm
  27. case $line in
  28. *ELF*executable*statically\ linked*)
  29. ;;
  30. *ELF*relocatable*,\ not\ stripped*)
  31. ;;
  32. esac
  33. case $line in
  34. *ELF*executable*,\ not\ stripped*)
  35. S=executable ;;
  36. */lib/modules/2.*.o:*ELF*relocatable*,\ not\ stripped* | \
  37. */lib/modules/2.*.ko:*ELF*relocatable*,\ not\ stripped*)
  38. # kernel module parametres must not be stripped off
  39. T="$T --strip-unneeded $(echo $(${prefix}nm $F | \
  40. sed -n -e '/__param_/s/^.*__param_/-K /p' \
  41. -e '/__module_parm_/s/^.*__module_parm_/-K /p'))"
  42. S='kernel module' ;;
  43. *ELF*shared\ object*,\ not\ stripped*)
  44. S='shared object' ;;
  45. *)
  46. continue ;;
  47. esac
  48. echo "$SELF: $V:$S"
  49. echo "-> $T $F"
  50. eval "$T $F"
  51. done
  52. exit 0