[BACK]Return to ctfstrip CVS log [TXT][DIR] Up to [local] / src / usr.bin / ctfconv

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}