diff options
Diffstat (limited to 'libbacktrace/install-debuginfo-for-buildid.sh.in')
-rw-r--r-- | libbacktrace/install-debuginfo-for-buildid.sh.in | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/libbacktrace/install-debuginfo-for-buildid.sh.in b/libbacktrace/install-debuginfo-for-buildid.sh.in new file mode 100644 index 00000000000..b98d891d788 --- /dev/null +++ b/libbacktrace/install-debuginfo-for-buildid.sh.in @@ -0,0 +1,65 @@ +#!/bin/sh + +# install-debug-info-for-buildid.sh -- Helper script for libbacktrace library +# testing. +# Copyright (C) 2019 Free Software Foundation, Inc. + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: + +# (1) Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. + +# (2) Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. + +# (3) The name of the author may not be used to +# endorse or promote products derived from this software without +# specific prior written permission. + +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# Extract build-id from src, and copy debug info of src to +# $build_id_dir/aa/bb...zz.debug. + +set -e + +sed=@SED@ +awk=@AWK@ +grep=@GREP@ +objcopy=@OBJCOPY@ +readelf=@READELF@ +mkdir_p="@MKDIR_P@" + +build_id_dir="$1" +src="$2" + +buildid=$($readelf -n $src \ + | $grep "Build ID" \ + | $awk '{print $3}') + +prefix=$(echo $buildid \ + | $sed 's/^\(.\{2\}\).*/\1/') + +remainder=$(echo $buildid \ + | $sed 's/^.\{2\}//') + +dir=$build_id_dir/$prefix +dst=$dir/$remainder.debug + +$mkdir_p $dir + +$objcopy --only-keep-debug $src $dst |