| #!/bin/sh |
| [ -n "$CROSS" ] || { |
| echo "The variable CROSS must be set to point to the cross-compiler prefix" |
| exit 1 |
| } |
| |
| MODULE="$1" |
| |
| [ "$#" -ne 1 ] && { |
| echo "Usage: $0 <module>" |
| exit 1 |
| } |
| |
| ARGS= |
| if [ -n "$KEEP_SYMBOLS" ]; then |
| ARGS="-X --strip-debug" |
| else |
| ARGS="-x -G __this_module --strip-unneeded" |
| fi |
| |
| if [ -z "$KEEP_BUILD_ID" ]; then |
| ARGS="$ARGS -R .note.gnu.build-id" |
| fi |
| |
| ${CROSS}objcopy \ |
| -R .comment \ |
| -R .pdr \ |
| -R .mdebug.abi32 \ |
| -R .gnu.attributes \ |
| -R .reginfo \ |
| -R .MIPS.abiflags \ |
| -R .note.GNU-stack \ |
| $ARGS \ |
| "$MODULE" "$MODULE.tmp" |
| |
| [ -n "$NO_RENAME" ] && { |
| mv "${MODULE}.tmp" "$MODULE" |
| exit 0 |
| } |
| |
| ${CROSS}nm "$MODULE.tmp" | awk ' |
| BEGIN { |
| n = 0 |
| } |
| |
| $3 && $2 ~ /[brtd]/ && $3 !~ /\$LC/ && !def[$3] { |
| print "--redefine-sym "$3"=_"n; |
| n = n + 1 |
| def[$3] = 1 |
| } |
| ' > "$MODULE.tmp1" |
| |
| ${CROSS}objcopy $(cat ${MODULE}.tmp1) ${MODULE}.tmp ${MODULE}.out |
| mv "${MODULE}.out" "${MODULE}" |
| rm -f "${MODULE}".t* |