1#!/bin/sh 2# Check the output of gprof against a carfully crafted binary. 3# Copyright (C) 2017-2022 Free Software Foundation, Inc. 4# This file is part of the GNU C Library. 5 6# The GNU C Library is free software; you can redistribute it and/or 7# modify it under the terms of the GNU Lesser General Public 8# License as published by the Free Software Foundation; either 9# version 2.1 of the License, or (at your option) any later version. 10 11# The GNU C Library is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14# Lesser General Public License for more details. 15 16# You should have received a copy of the GNU Lesser General Public 17# License along with the GNU C Library; if not, see 18# <https://www.gnu.org/licenses/>. 19 20LC_ALL=C 21export LC_ALL 22set -e 23exec 2>&1 24 25GPROF="$1" 26program="$2" 27data="$3" 28 29actual=$(mktemp) 30expected=$(mktemp) 31expected_dot=$(mktemp) 32cleanup () { 33 rm -f "$actual" 34 rm -f "$expected" 35 rm -f "$expected_dot" 36} 37trap cleanup 0 38 39cat > "$expected" <<EOF 40f1 2000 41f2 1000 42f3 1 43EOF 44 45# Special version for powerpc with function descriptors. 46cat > "$expected_dot" <<EOF 47.f1 2000 48.f2 1000 49.f3 1 50EOF 51 52"$GPROF" -C "$program" "$data" \ 53 | awk -F '[(): ]' '/executions/{print $5, $8}' \ 54 | sort > "$actual" 55 56if cmp -s "$actual" "$expected_dot" \ 57 || diff -u --label expected "$expected" --label actual "$actual" ; then 58 echo "PASS" 59else 60 echo "FAIL" 61 exit 1 62fi 63