1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/sh
HERE=`dirname "$0"`
TARGET="$1"
shift
if [ -d /opt/picolibc-ci ]; then
TOP=/opt/picolibc-ci
else
TOP=/opt
fi
# Put only the relevant toolchain in PATH for specific CI targets.
# Fallback to previous behavior for other targets.
case "$TARGET" in
*clang-hexagon*)
for p in "$TOP"/*hexagon*/bin "$TOP"/*/models/*; do
[ -d "$p" ] && PATH="$p":$PATH
done
;;
*clang-arm*|*clang-aarch64*|*clang-thumb*)
for p in "$TOP"/LLVM-ET-Arm*/bin "$TOP"/*/models/*; do
[ -d "$p" ] && PATH="$p":$PATH
done
;;
*)
for p in "$TOP"/*/bin "$TOP"/*/models/*; do
PATH="$p":$PATH
done
;;
esac
# We can't use both the analyzer and sanitizer because
# the analyzer is run after the sanitizer and generates a lot
# of false positives, so just use the sanitizer as it
# appears to find more relevant bugs at this point.
SANITIZER="-Dsanitize=undefined"
# Use traps with the sanitizer on msp430 as the handlers make many
# tests too large
case "$TARGET" in
*msp430*)
SANITIZER="$SANITIZER -Dsanitize-trap-on-error=true"
;;
esac
OPTIONS="$SANITIZER -Dexhaustive-math-tests=native"
"$HERE"/do-run "$TARGET" $OPTIONS "$@"