diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-27 14:28:23 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-27 14:28:23 +0000 |
commit | dc3064332cec5ca6edc9a44f5f6111e506eb037b (patch) | |
tree | 79686327822b075f3970aec7ef73372142760047 /gmon/tst-gmon-gprof.sh | |
parent | 86af500777f45066aa6a6817d4b695cf4b626c38 (diff) | |
parent | 963c37d5c0eb62b38f8764b23931c0dcdd497a13 (diff) |
Merge commit 'refs/top-bases/cvs/exc2signal-template' into cvs/exc2signal-template
Diffstat (limited to 'gmon/tst-gmon-gprof.sh')
-rw-r--r-- | gmon/tst-gmon-gprof.sh | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/gmon/tst-gmon-gprof.sh b/gmon/tst-gmon-gprof.sh new file mode 100644 index 0000000000..1afec48b0b --- /dev/null +++ b/gmon/tst-gmon-gprof.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# Check the output of gprof against a carfully crafted binary. +# Copyright (C) 2017-2018 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# <http://www.gnu.org/licenses/>. + +LC_ALL=C +export LC_ALL +set -e +exec 2>&1 + +GPROF="$1" +program="$2" +data="$3" + +actual=$(mktemp) +expected=$(mktemp) +expected_dot=$(mktemp) +cleanup () { + rm -f "$actual" + rm -f "$expected" + rm -f "$expected_dot" +} +trap cleanup 0 + +cat > "$expected" <<EOF +f1 2000 +f2 1000 +EOF + +# Special version for powerpc with function descriptors. +cat > "$expected_dot" <<EOF +.f1 2000 +.f2 1000 +EOF + +"$GPROF" -C "$program" "$data" \ + | awk -F '[(): ]' '/executions/{print $5, $8}' \ + | sort > "$actual" + +if cmp -s "$actual" "$expected_dot" \ + || diff -u --label expected "$expected" --label actual "$actual" ; then + echo "PASS" +else + echo "FAIL" + exit 1 +fi |