65816-llvm-mos/tests/ubsan/build.sh
Scott Duensing da095402ec Updated
2026-06-02 23:17:57 -05:00

33 lines
1 KiB
Bash
Executable file

#!/usr/bin/env bash
# Phase 6.2 UBSan-min smoke probe build.
#
# Compiles ubsanProbe.c with:
# -fsanitize=undefined -fsanitize-minimal-runtime
# so clang emits __ubsan_handle_*_minimal calls at every UB site. The
# probe overrides the three recovering handlers it exercises with
# strong defs (see ubsanProbe.c); the remaining handlers are pulled
# in from runtime/ubsan.o at link time.
#
# Output: build/ubsanProbe.o
#
# Usage:
# bash tests/ubsan/build.sh
set -eu
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
OUT="$SCRIPT_DIR/build"
CLANG="$PROJECT_ROOT/tools/llvm-mos-build/bin/clang"
mkdir -p "$OUT"
CFLAGS=(--target=w65816 -O2 -ffunction-sections
-I "$PROJECT_ROOT/runtime/include"
-fsanitize=undefined -fsanitize-minimal-runtime)
echo " CC ubsanProbe.c (-fsanitize=undefined -fsanitize-minimal-runtime)"
"$CLANG" "${CFLAGS[@]}" -c "$SCRIPT_DIR/ubsanProbe.c" \
-o "$OUT/ubsanProbe.o"
echo ""
echo "UBSan probe built: $(ls -1 "$OUT"/*.o | wc -l) objects, $(du -sh "$OUT" | cut -f1) total"