diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-27 15:26:46 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-27 15:26:46 +0000 |
commit | df6d86d8822458cf787b5f5620490d6a962da3b8 (patch) | |
tree | 8d499fa24a32a195bd6e384dfb70639c45c4a9bb /gmon/tst-gmon-static-gprof.sh | |
parent | 2c7242b971fd7b63fa842df15ec6fa3d0ff8aeb0 (diff) | |
parent | 1949a12d5da678a8532359a95717d8e63910d93b (diff) |
Merge commit 'refs/top-bases/t/____longjmp_chk' into t/____longjmp_chkt/____longjmp_chk
Diffstat (limited to 'gmon/tst-gmon-static-gprof.sh')
-rw-r--r-- | gmon/tst-gmon-static-gprof.sh | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/gmon/tst-gmon-static-gprof.sh b/gmon/tst-gmon-static-gprof.sh new file mode 100644 index 0000000000..34dd952bf3 --- /dev/null +++ b/gmon/tst-gmon-static-gprof.sh @@ -0,0 +1,62 @@ +#!/bin/sh +# Check the output of gprof against a carfully crafted static 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 +main 1 +EOF + +# Special version for powerpc with function descriptors. +cat > "$expected_dot" <<EOF +.f1 2000 +.f2 1000 +.main 1 +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 |