Done with debugging. Script didn't work because of low limit on open files on the bot. This reverts commit 220293da53b5049ded67b1a251bd85069fa068e7.
55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Script that checks that critical functions in TSan runtime have correct number
|
|
# of push/pop/rsp instructions to verify that runtime is efficient enough.
|
|
#
|
|
# This test can fail when backend code generation changes the output for various
|
|
# tsan interceptors. When such a change happens, you can ensure that the
|
|
# performance has not regressed by running the following benchmarks before and
|
|
# after the breaking change to verify that the values in this file are safe to
|
|
# update:
|
|
# ./projects/compiler-rt/lib/tsan/tests/rtl/TsanRtlTest-x86_64-Test
|
|
# --gtest_also_run_disabled_tests --gtest_filter=DISABLED_BENCH.Mop*
|
|
|
|
set -u
|
|
|
|
if [[ "$#" != 1 ]]; then
|
|
echo "Usage: $0 /path/to/binary/built/with/tsan"
|
|
exit 1
|
|
fi
|
|
|
|
SCRIPTDIR=$(dirname $0)
|
|
RES=$(${SCRIPTDIR}/analyze_libtsan.sh $1)
|
|
PrintRes() {
|
|
printf "%s\n" "$RES"
|
|
}
|
|
|
|
PrintRes
|
|
|
|
check() {
|
|
res=$(PrintRes | egrep "$1 .* $2 $3; ")
|
|
if [ "$res" == "" ]; then
|
|
echo FAILED $1 must contain $2 $3
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
for f in write1 write2 write4 write8; do
|
|
check $f rsp 1
|
|
check $f push 2
|
|
done
|
|
|
|
for f in read1 read2 read4 read8; do
|
|
check $f rsp 1
|
|
check $f push 3
|
|
done
|
|
|
|
for f in func_entry func_exit; do
|
|
check $f rsp 0
|
|
check $f push 0
|
|
check $f pop 0
|
|
check $f call 1 # TraceSwitch()
|
|
done
|
|
|
|
echo LGTM
|