DF-5580 / final_battery.sh
#!/bin/sh # DF-5580 final verification battery (runs on the guest, ~17 min total). # All exit codes captured to files (remote login shell is csh; $? quoting # is unreliable, so each phase writes its own status). cd /root/df5580 || exit 1 rm -f status_*.txt # 1. baseline userspace differential, 2^31 random + fixed sr64 battery cc -O2 -Wall -o df5580_diff df5580_diff.c || exit 1 (time ./df5580_diff x 2147483648 0x243F6A8885A308D3 0x13198A2E03707344) > run.log 2>&1 echo "baseline_rc=$?" > status_run.txt # 2. baseline again, different seeds (variance run) (time ./df5580_diff x 2147483648 0xB7E151628AED2A6A 0xBF7158809CF4F3C7) > run.2.log 2>&1 echo "baseline2_rc=$?" > status_run2.txt # 3. fixed-source differential, same seeds as (1) cc -O2 -Wall -o df5580_diff_fixed df5580_diff_fixed.c || exit 1 (time ./df5580_diff_fixed x 2147483648 0x243F6A8885A308D3 0x13198A2E03707344) > run_fixed.log 2>&1 echo "fixed_rc=$?" > status_run_fixed.txt # 4. UBSan abort-mode baseline (expect: UB fires, abort -> rc!=0) cc -O1 -g -fsanitize=shift -fno-sanitize-recover=shift -c df5580_diff.c -o df5580_diff_ubab.o cc -o df5580_ubsan_ab df5580_diff_ubab.o ubsan_stub.o ./df5580_ubsan_ab -e > ub_abort.log 2>&1 echo "ubsan_baseline_rc=$?" > status_ub_abort.txt # 5. UBSan recover-mode census, edge+exhaustive+sr64 (expect: many events) cc -O1 -g -fsanitize=shift -c df5580_diff.c -o df5580_diff_ubrec.o cc -o df5580_ubsan_rec2 df5580_diff_ubrec.o ubsan_stub.o ./df5580_ubsan_rec2 x 0 > ub_rec.log 2>&1 echo "ubsan_rec_rc=$?" > status_ub_rec.txt # 6. UBSan abort-mode FIXED source (expect: clean, rc=0) cc -O1 -g -fsanitize=shift -fno-sanitize-recover=shift -c df5580_diff_fixed.c -o df5580_diff_fixed_ubab.o cc -o df5580_ubsan_fixed_ab df5580_diff_fixed_ubab.o ubsan_stub.o ./df5580_ubsan_fixed_ab -e > ub_abort_fixed.log 2>&1 echo "ubsan_fixed_rc=$?" > status_ub_abort_fixed.txt echo "=== statuses ===" cat status_*.txt echo "=== run.log tail ===" tail -3 run.log echo "=== run.2.log tail ===" tail -3 run.2.log echo "=== run_fixed.log tail ===" tail -3 run_fixed.log echo "=== ub_abort.log ===" cat ub_abort.log echo "=== ub census by site ===" grep UBSAN-FIRED ub_rec.log | head -2 grep UBSAN-FIRED ub_rec.log | wc -l grep UBSAN-FIRED ub_rec.log | sed -E 's/.*udivti3[.]c/udivti3.c/' | cut -d: -f1-2 | cut -d' ' -f1 | sort | uniq -c | sort -rn echo "=== ub_abort_fixed.log tail ===" tail -3 ub_abort_fixed.log |