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

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}