Annotation of src/usr.bin/ctfconv/ctfstrip, Revision 1.12
1.1 mpi 1: #!/bin/sh
1.2 mpi 2: #
1.12 ! mpi 3: # $OpenBSD: ctfstrip,v 1.11 2019/05/27 09:31:08 jca 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:
1.10 sunil 26: usage() {
27: echo "usage: $(basename $0) [-S] [-o outfile] file" >&2
28: exit 1
29: }
30:
1.3 jasper 31: trap "cleanup" 1 2 3 13 15
1.1 mpi 32:
1.11 jca 33: while getopts So: opt; do
34: case $opt in
35: S) STRIPFLAG=-g;;
36: o) OUTFILE="$OPTARG";;
37: \?) usage;;
38: esac
1.1 mpi 39: done
1.11 jca 40:
41: shift $((OPTIND - 1))
1.1 mpi 42:
1.10 sunil 43: if [ $# -ne 1 ]; then
44: usage
1.1 mpi 45: fi
46:
1.10 sunil 47: INFILE="$1"
1.1 mpi 48: LABEL="unknown"
1.3 jasper 49: TMPFILE=$(mktemp /tmp/.ctf.XXXXXXXXXX)
1.1 mpi 50:
1.3 jasper 51: # Extract kernel version
1.5 jasper 52: if [ -z "${INFILE##bsd*}" ]; then
1.8 jasper 53: LABEL=`what "$INFILE" | sed -n '$s/^ //p'`
1.1 mpi 54: fi
55:
1.12 ! mpi 56: # If ctfstrip was passed a file that lacks useful debug sections, ctfconv will
! 57: # fail. So try to run ctfconv and silently fallback to plain strip(1) if that
! 58: # failed.
1.8 jasper 59: ctfconv -o ${TMPFILE} -l "${LABEL}" "${INFILE}" 2> /dev/null
1.4 jasper 60:
1.5 jasper 61: if [ $? -eq 0 ]; then
1.12 ! mpi 62: objcopy ${STRIPFLAG} \
! 63: --add-section .SUNW_ctf=${TMPFILE} "${INFILE}" ${OUTFILE}
! 64:
! 65: # Also add CTF data to the debug kernel
! 66: if [ -z "${INFILE##bsd.gdb}" ]; then
! 67: objcopy --add-section .SUNW_ctf=${TMPFILE} "${INFILE}"
! 68: fi
1.4 jasper 69: else
1.9 sunil 70: strip ${STRIPFLAG} ${OUTFILE:+"-o${OUTFILE}"} "${INFILE}"
1.4 jasper 71: fi
1.1 mpi 72:
73: rm -f ${TMPFILE}