Annotation of src/usr.bin/ctfconv/ctfstrip, Revision 1.4
1.1 mpi 1: #!/bin/sh
1.2 mpi 2: #
1.4 ! jasper 3: # $OpenBSD: ctfstrip,v 1.3 2017/08/11 15:08:16 jasper Exp $
1.2 mpi 4: #
1.4 ! jasper 5: # Copyright (c) 2017 Martin Pieuchot
1.2 mpi 6: #
7: # Permission to use, copy, modify, and distribute this software for any
8: # purpose with or without fee is hereby granted, provided that the above
9: # copyright notice and this permission notice appear in all copies.
10: #
11: # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12: # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13: # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14: # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15: # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16: # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17: # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.1 mpi 18:
1.3 jasper 19: set -o posix
20:
21: cleanup() {
22: rm -f ${TMPFILE}
23: exit 1
24: }
25:
26: trap "cleanup" 1 2 3 13 15
1.1 mpi 27:
28: USAGE="usage: ${0##*/} [-S] [-o outfile] file"
29:
1.4 ! jasper 30: for arg in "$@"; do
! 31: if [ -n "$OSET" ]; then
! 32: OUTFILE="$arg"
! 33: unset OSET
! 34: shift
! 35: continue
! 36: fi
! 37: case "$arg" in
! 38: -o) OSET=1; shift; continue;;
! 39: -S) STRIPFLAG=-g; shift; continue;;
1.1 mpi 40: esac
1.4 ! jasper 41: shift
! 42: set -- "$@" "$arg"
1.1 mpi 43: done
44:
45: if [[ $# == 0 ]]; then
46: print -u2 "${USAGE}";
47: exit 1
48: fi
49:
50: LABEL="unknown"
1.3 jasper 51: TMPFILE=$(mktemp /tmp/.ctf.XXXXXXXXXX)
1.4 ! jasper 52: INFILE=$(eval "echo \${$#}")
1.1 mpi 53:
1.3 jasper 54: # Extract kernel version
1.4 ! jasper 55: if [[ "$INFILE" == bsd* ]]; then
! 56: LABEL=`what $INFILE |tr -d '\n'|awk -F"${INFILE} " '{ print $2 '\n' }'`
1.1 mpi 57: fi
58:
1.4 ! jasper 59: # If ctfstrip was passed a file that lacks useful debug sections, ctfconv will fail.
! 60: # So try to run ctfconv and silently fallback to plain strip(1) if that failed.
! 61: ctfconv -o ${TMPFILE} -l "${LABEL}" ${INFILE} 2> /dev/null
! 62:
! 63: if [[ $? == 0 ]]; then
! 64: objcopy --add-section .SUNW_ctf=${TMPFILE} ${STRIPFLAG} ${INFILE} ${OUTFILE}
! 65: else
! 66: strip ${STRIPFLAG} $@ -o ${OUTFILE} ${INFILE}
! 67: fi
1.1 mpi 68:
69: rm -f ${TMPFILE}