#!/bin/sh # # $OpenBSD: ctfstrip,v 1.3 2017/08/11 15:08:16 jasper Exp $ # # Copyright (c) 2017 Martin Pieuchot # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. set -o posix cleanup() { rm -f ${TMPFILE} exit 1 } trap "cleanup" 1 2 3 13 15 USAGE="usage: ${0##*/} [-S] [-o outfile] file" while getopts "o:S" opt; do case $opt in S) STRIPFLAG=-g;; o) OUTFILE="${OPTARG}";; *) print -u2 "${USAGE}"; exit 1;; esac done shift $((OPTIND-1)) if [[ $# == 0 ]]; then print -u2 "${USAGE}"; exit 1 fi LABEL="unknown" TMPFILE=$(mktemp /tmp/.ctf.XXXXXXXXXX) # Extract kernel version if [[ "$1" == bsd* ]]; then LABEL=`what $1 |tr -d '\n'|awk -F"$1 " '{ print $2 '\n' }'` fi ctfconv -o ${TMPFILE} -l "${LABEL}" $1 || cleanup objcopy --add-section .SUNW_ctf=${TMPFILE} ${STRIPFLAG} $1 ${OUTFILE} rm -f ${TMPFILE}