diff options
Diffstat (limited to 'contrib/bc/scripts/release.sh')
-rwxr-xr-x | contrib/bc/scripts/release.sh | 779 |
1 files changed, 0 insertions, 779 deletions
diff --git a/contrib/bc/scripts/release.sh b/contrib/bc/scripts/release.sh deleted file mode 100755 index 638161f83732..000000000000 --- a/contrib/bc/scripts/release.sh +++ /dev/null @@ -1,779 +0,0 @@ -#! /bin/sh -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2018-2021 Gavin D. Howard and contributors. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -# For OpenBSD, run using the following: -# -# scripts/release.sh 1 0 1 0 0 0 0 1 0 0 0 0 -# -# For FreeBSD, run using the following: -# -# scripts/release.sh 1 0 1 0 0 0 0 1 0 1 0 0 -# -# There is one problem with running this script on FreeBSD: it takes overcommit -# to the extreme. This means that some tests that try to create allocation -# failures instead make bc and dc crash. So running this script on FreeBSD does -# not work right now. -# -# For Linux, run two separate ones (in different checkouts), like so: -# -# scripts/release.sh 1 1 1 0 1 0 0 1 0 1 0 1 -# scripts/release.sh 1 1 0 1 0 1 0 1 0 1 0 0 -# -# Yes, I usually do sanitizers with Clang and Valgrind with GCC. -# -# To run sanitizers or Valgrind with generated tests, use the following: -# -# scripts/release.sh 1 1 1 0 1 0 0 1 0 1 0 1 -# scripts/release.sh 1 1 0 1 0 1 0 1 0 1 0 0 -# -# If this script fails on any platform when starting the Karatsuba test, check -# that Python is installed, especially if the error says something like: -# "karatsuba.py: not found". - -# Print the usage and exit with an error. Each parameter should be an integer. -# Non-zero activates, and zero deactivates. -usage() { - printf 'usage: %s [run_tests] [generate_tests] [test_with_clang] [test_with_gcc] \n' "$script" - printf ' [run_sanitizers] [run_valgrind] [test_settings] [run_64_bit] \n' - printf ' [run_gen_script] [test_c11] [test_128_bit] [test_computed_goto]\n' - exit 1 -} - -# Print a header with a message. This is just to make it easy to track progress. -# @param msg The message to print in the header. -header() { - - _header_msg="$1" - shift - - printf '\n' - printf '*******************\n' - printf "$_header_msg" - printf '\n' - printf '*******************\n' - printf '\n' -} - -# Easy way to call make. -do_make() { - # No reason to do 64 except to see if I actually can overload my system. :) - # Well, also that it might actually improve throughput as other jobs can run - # while some are waiting. - make -j64 "$@" -} - -# Run configure.sh. -# @param CFLAGS The CFLAGS. -# @param CC The C compiler. -# @param configure_flags The flags for configure.sh itself. -# @param GEN_HOST The setting for GEN_HOST. -# @param LONG_BIT The setting for LONG_BIT. -configure() { - - _configure_CFLAGS="$1" - shift - - _configure_CC="$1" - shift - - _configure_configure_flags="$1" - shift - - _configure_GEN_HOST="$1" - shift - - _configure_LONG_BIT="$1" - shift - - # Make sure to not generate tests if necessary. - if [ "$gen_tests" -eq 0 ]; then - _configure_configure_flags="-G $_configure_configure_flags" - fi - - # Choose the right extra flags. - if [ "$_configure_CC" = "clang" ]; then - _configure_CFLAGS="$clang_flags $_configure_CFLAGS" - elif [ "$_configure_CC" = "gcc" ]; then - _configure_CFLAGS="$gcc_flags $_configure_CFLAGS" - fi - - # Print the header and do the job. - _configure_header=$(printf 'Running ./configure.sh %s ...' "$_configure_configure_flags") - _configure_header=$(printf "$_configure_header\n CC=\"%s\"\n" "$_configure_CC") - _configure_header=$(printf "$_configure_header\n CFLAGS=\"%s\"\n" "$_configure_CFLAGS") - _configure_header=$(printf "$_configure_header\n LONG_BIT=%s" "$_configure_LONG_BIT") - _configure_header=$(printf "$_configure_header\n GEN_HOST=%s" "$_configure_GEN_HOST") - - header "$_configure_header" - CFLAGS="$_configure_CFLAGS" CC="$_configure_CC" GEN_HOST="$_configure_GEN_HOST" \ - LONG_BIT="$_configure_LONG_BIT" ./configure.sh $_configure_configure_flags > /dev/null -} - -# Build with make. This function also captures and outputs any warnings if they -# exists because as far as I am concerned, warnings are not acceptable for -# release. -# @param CFLAGS The CFLAGS. -# @param CC The C compiler. -# @param configure_flags The flags for configure.sh itself. -# @param GEN_HOST The setting for GEN_HOST. -# @param LONG_BIT The setting for LONG_BIT. -build() { - - _build_CFLAGS="$1" - shift - - _build_CC="$1" - shift - - _build_configure_flags="$1" - shift - - _build_GEN_HOST="$1" - shift - - _build_LONG_BIT="$1" - shift - - configure "$_build_CFLAGS" "$_build_CC" "$_build_configure_flags" "$_build_GEN_HOST" "$_build_LONG_BIT" - - _build_header=$(printf 'Building...\n CC=%s' "$_build_CC") - _build_header=$(printf "$_build_header\n CFLAGS=\"%s\"" "$_build_CFLAGS") - _build_header=$(printf "$_build_header\n LONG_BIT=%s" "$_build_LONG_BIT") - _build_header=$(printf "$_build_header\n GEN_HOST=%s" "$_build_GEN_HOST") - - header "$_build_header" - - # Capture and print warnings. - do_make > /dev/null 2> "$scriptdir/../.test.txt" - - if [ -s "$scriptdir/../.test.txt" ]; then - printf '%s generated warning(s):\n' "$_build_CC" - printf '\n' - cat "$scriptdir/../.test.txt" - exit 1 - fi -} - -# Run tests with make. -runtest() { - - header "Running tests" - - if [ "$#" -gt 0 ]; then - do_make "$@" - else - do_make test - fi -} - -# Builds and runs tests with both calculators, then bc only, then dc only. If -# run_tests is false, then it just does the builds. -# @param CFLAGS The CFLAGS. -# @param CC The C compiler. -# @param configure_flags The flags for configure.sh itself. -# @param GEN_HOST The setting for GEN_HOST. -# @param LONG_BIT The setting for LONG_BIT. -# @param run_tests Whether to run tests or not. -runconfigtests() { - - _runconfigtests_CFLAGS="$1" - shift - - _runconfigtests_CC="$1" - shift - - _runconfigtests_configure_flags="$1" - shift - - _runconfigtests_GEN_HOST="$1" - shift - - _runconfigtests_LONG_BIT="$1" - shift - - _runconfigtests_run_tests="$1" - shift - - if [ "$_runconfigtests_run_tests" -ne 0 ]; then - _runconfigtests_header=$(printf 'Running tests with configure flags') - else - _runconfigtests_header=$(printf 'Building with configure flags') - fi - - _runconfigtests_header=$(printf "$_runconfigtests_header \"%s\" ...\n" "$_runconfigtests_configure_flags") - _runconfigtests_header=$(printf "$_runconfigtests_header\n CC=%s\n" "$_runconfigseries_CC") - _runconfigtests_header=$(printf "$_runconfigtests_header\n CFLAGS=\"%s\"" "$_runconfigseries_CFLAGS") - _runconfigtests_header=$(printf "$_runconfigtests_header\n LONG_BIT=%s" "$_runconfigtests_LONG_BIT") - _runconfigtests_header=$(printf "$_runconfigtests_header\n GEN_HOST=%s" "$_runconfigtests_GEN_HOST") - - header "$_runconfigtests_header" - - build "$_runconfigtests_CFLAGS" "$_runconfigtests_CC" \ - "$_runconfigtests_configure_flags" "$_runconfigtests_GEN_HOST" \ - "$_runconfigtests_LONG_BIT" - - if [ "$_runconfigtests_run_tests" -ne 0 ]; then - runtest - fi - - do_make clean - - build "$_runconfigtests_CFLAGS" "$_runconfigtests_CC" \ - "$_runconfigtests_configure_flags -b" "$_runconfigtests_GEN_HOST" \ - "$_runconfigtests_LONG_BIT" - - if [ "$_runconfigtests_run_tests" -ne 0 ]; then - runtest - fi - - do_make clean - - build "$_runconfigtests_CFLAGS" "$_runconfigtests_CC" \ - "$_runconfigtests_configure_flags -d" "$_runconfigtests_GEN_HOST" \ - "$_runconfigtests_LONG_BIT" - - if [ "$_runconfigtests_run_tests" -ne 0 ]; then - runtest - fi - - do_make clean -} - -# Builds and runs tests with runconfigtests(), but also does 64-bit, 32-bit, and -# 128-bit rand, if requested. It also does it with the gen script (strgen.sh) if -# requested. If run_tests is false, it just does the builds. -# @param CFLAGS The CFLAGS. -# @param CC The C compiler. -# @param configure_flags The flags for configure.sh itself. -# @param run_tests Whether to run tests or not. -runconfigseries() { - - _runconfigseries_CFLAGS="$1" - shift - - _runconfigseries_CC="$1" - shift - - _runconfigseries_configure_flags="$1" - shift - - _runconfigseries_run_tests="$1" - shift - - if [ "$run_64_bit" -ne 0 ]; then - - if [ "$test_128_bit" -ne 0 ]; then - runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \ - "$_runconfigseries_configure_flags" 1 64 "$_runconfigseries_run_tests" - fi - - if [ "$run_gen_script" -ne 0 ]; then - runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \ - "$_runconfigseries_configure_flags" 0 64 "$_runconfigseries_run_tests" - fi - - runconfigtests "$_runconfigseries_CFLAGS -DBC_RAND_BUILTIN=0" "$_runconfigseries_CC" \ - "$_runconfigseries_configure_flags" 1 64 "$_runconfigseries_run_tests" - - fi - - runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \ - "$_runconfigseries_configure_flags" 1 32 "$_runconfigseries_run_tests" - - if [ "$run_gen_script" -ne 0 ]; then - runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \ - "$_runconfigseries_configure_flags" 0 32 "$_runconfigseries_run_tests" - fi -} - -# Builds and runs tests with each setting combo running runconfigseries(). If -# run_tests is false, it just does the builds. -# @param CFLAGS The CFLAGS. -# @param CC The C compiler. -# @param configure_flags The flags for configure.sh itself. -# @param run_tests Whether to run tests or not. -runsettingsseries() { - - _runsettingsseries_CFLAGS="$1" - shift - - _runsettingsseries_CC="$1" - shift - - _runsettingsseries_configure_flags="$1" - shift - - _runsettingsseries_run_tests="$1" - shift - - if [ "$test_settings" -ne 0 ]; then - - while read _runsettingsseries_s; do - runconfigseries "$_runsettingsseries_CFLAGS" "$_runsettingsseries_CC" \ - "$_runsettingsseries_configure_flags $_runsettingsseries_s" \ - "$_runsettingsseries_run_tests" - done < "$scriptdir/release_settings.txt" - - else - runconfigseries "$_runsettingsseries_CFLAGS" "$_runsettingsseries_CC" \ - "$_runsettingsseries_configure_flags" "$_runsettingsseries_run_tests" - fi -} - -# Builds and runs tests with each build type running runsettingsseries(). If -# run_tests is false, it just does the builds. -# @param CFLAGS The CFLAGS. -# @param CC The C compiler. -# @param configure_flags The flags for configure.sh itself. -# @param run_tests Whether to run tests or not. -runtestseries() { - - _runtestseries_CFLAGS="$1" - shift - - _runtestseries_CC="$1" - shift - - _runtestseries_configure_flags="$1" - shift - - _runtestseries_run_tests="$1" - shift - - _runtestseries_flags="E H N EH EN HN EHN" - - runsettingsseries "$_runtestseries_CFLAGS" "$_runtestseries_CC" \ - "$_runtestseries_configure_flags" "$_runtestseries_run_tests" - - for _runtestseries_f in $_runtestseries_flags; do - runsettingsseries "$_runtestseries_CFLAGS" "$_runtestseries_CC" \ - "$_runtestseries_configure_flags -$_runtestseries_f" "$_runtestseries_run_tests" - done -} - -# Builds and runs the tests for bcl. If run_tests is false, it just does the -# builds. -# @param CFLAGS The CFLAGS. -# @param CC The C compiler. -# @param configure_flags The flags for configure.sh itself. -# @param run_tests Whether to run tests or not. -runlibtests() { - - _runlibtests_CFLAGS="$1" - shift - - _runlibtests_CC="$1" - shift - - _runlibtests_configure_flags="$1" - shift - - _runlibtests_run_tests="$1" - shift - - _runlibtests_configure_flags="$_runlibtests_configure_flags -a" - - build "$_runlibtests_CFLAGS" "$_runlibtests_CC" "$_runlibtests_configure_flags" 1 64 - - if [ "$_runlibtests_run_tests" -ne 0 ]; then - runtest - fi - - build "$_runlibtests_CFLAGS" "$_runlibtests_CC" "$_runlibtests_configure_flags" 1 32 - - if [ "$_runlibtests_run_tests" -ne 0 ]; then - runtest - fi -} - -# Builds and runs tests under C99, then C11, if requested, using -# runtestseries(). If run_tests is false, it just does the builds. -# @param CFLAGS The CFLAGS. -# @param CC The C compiler. -# @param configure_flags The flags for configure.sh itself. -# @param run_tests Whether to run tests or not. -runtests() { - - _runtests_CFLAGS="$1" - shift - - _runtests_CC="$1" - shift - - _runtests_configure_flags="$1" - shift - - _runtests_run_tests="$1" - shift - - runtestseries "-std=c99 $_runtests_CFLAGS" "$_runtests_CC" "$_runtests_configure_flags" "$_runtests_run_tests" - - if [ "$test_c11" -ne 0 ]; then - runtestseries "-std=c11 $_runtests_CFLAGS" "$_runtests_CC" "$_runtests_configure_flags" "$_runtests_run_tests" - fi -} - -# Runs the karatsuba tests. -karatsuba() { - - header "Running Karatsuba tests" - do_make karatsuba_test -} - -# Builds and runs under valgrind. It runs both, bc only, then dc only. -vg() { - - header "Running valgrind" - - if [ "$run_64_bit" -ne 0 ]; then - _vg_bits=64 - else - _vg_bits=32 - fi - - build "$debug -std=c99" "gcc" "-O3 -gv" "1" "$_vg_bits" - runtest test - - do_make clean_config - - build "$debug -std=c99" "gcc" "-O3 -gvb" "1" "$_vg_bits" - runtest test - - do_make clean_config - - build "$debug -std=c99" "gcc" "-O3 -gvd" "1" "$_vg_bits" - runtest test - - do_make clean_config - - build "$debug -std=c99" "gcc" "-O3 -gva" "1" "$_vg_bits" - runtest test - - do_make clean_config -} - -# Builds the debug series and runs the tests if run_tests allows. If sanitizers -# are enabled, it also does UBSan. -# @param CC The C compiler. -# @param run_tests Whether to run tests or not. -debug() { - - _debug_CC="$1" - shift - - _debug_run_tests="$1" - shift - - - if [ "$_debug_CC" = "clang" -a "$run_sanitizers" -ne 0 ]; then - runtests "$debug -fsanitize=undefined" "$_debug_CC" "-gm" "$_debug_run_tests" - else - runtests "$debug" "$_debug_CC" "-g" "$_debug_run_tests" - fi - - - if [ "$_debug_CC" = "clang" -a "$run_sanitizers" -ne 0 ]; then - runlibtests "$debug -fsanitize=undefined" "$_debug_CC" "-gm" "$_debug_run_tests" - else - runlibtests "$debug" "$_debug_CC" "-g" "$_debug_run_tests" - fi -} - -# Builds the release series and runs the test if run_tests allows. -# @param CC The C compiler. -# @param run_tests Whether to run tests or not. -release() { - - _release_CC="$1" - shift - - _release_run_tests="$1" - shift - - runtests "$release" "$_release_CC" "-O3" "$_release_run_tests" - - runlibtests "$release" "$_release_CC" "-O3" "$_release_run_tests" -} - -# Builds the release debug series and runs the test if run_tests allows. If -# sanitizers are enabled, it also does ASan and MSan. -# @param CC The C compiler. -# @param run_tests Whether to run tests or not. -reldebug() { - - _reldebug_CC="$1" - shift - - _reldebug_run_tests="$1" - shift - - - if [ "$_reldebug_CC" = "clang" -a "$run_sanitizers" -ne 0 ]; then - runtests "$debug -fsanitize=address" "$_reldebug_CC" "-mgO3" "$_reldebug_run_tests" - runtests "$debug -fsanitize=memory" "$_reldebug_CC" "-mgO3" "$_reldebug_run_tests" - else - runtests "$debug" "$_reldebug_CC" "-gO3" "$_reldebug_run_tests" - fi - - - if [ "$_reldebug_CC" = "clang" -a "$run_sanitizers" -ne 0 ]; then - runlibtests "$debug -fsanitize=address" "$_reldebug_CC" "-mgO3" "$_reldebug_run_tests" - runlibtests "$debug -fsanitize=memory" "$_reldebug_CC" "-mgO3" "$_reldebug_run_tests" - else - runlibtests "$debug" "$_reldebug_CC" "-gO3" "$_reldebug_run_tests" - fi -} - -# Builds the min size release series and runs the test if run_tests allows. -# @param CC The C compiler. -# @param run_tests Whether to run tests or not. -minsize() { - - _minsize_CC="$1" - shift - - _minsize_run_tests="$1" - shift - - runtests "$release" "$_minsize_CC" "-Os" "$_minsize_run_tests" - - runlibtests "$release" "$_minsize_CC" "-Os" "$_minsize_run_tests" -} - -# Builds all sets: debug, release, release debug, and min size, and runs the -# tests if run_tests allows. -# @param CC The C compiler. -# @param run_tests Whether to run tests or not. -build_set() { - - _build_set_CC="$1" - shift - - _build_set_run_tests="$1" - shift - - debug "$_build_set_CC" "$_build_set_run_tests" - release "$_build_set_CC" "$_build_set_run_tests" - reldebug "$_build_set_CC" "$_build_set_run_tests" - minsize "$_build_set_CC" "$_build_set_run_tests" -} - -# Set some strict warning flags. Clang's -Weverything can be way too strict, so -# we actually have to turn off some things. -clang_flags="-Weverything -Wno-padded -Wno-switch-enum -Wno-format-nonliteral" -clang_flags="$clang_flags -Wno-cast-align -Wno-missing-noreturn -Wno-disabled-macro-expansion" -clang_flags="$clang_flags -Wno-unreachable-code -Wno-unreachable-code-return" -clang_flags="$clang_flags -Wno-implicit-fallthrough -Wno-unused-macros -Wno-gnu-label-as-value" -gcc_flags="-Wno-maybe-uninitialized -Wno-clobbered" - -# Common CFLAGS. -cflags="-Wall -Wextra -Werror -pedantic -Wno-conditional-uninitialized" - -# Common debug and release flags. -debug="$cflags -fno-omit-frame-pointer" -release="$cflags -DNDEBUG" - -set -e - -script="$0" -scriptdir=$(dirname "$script") - -# Whether to run tests. -if [ "$#" -gt 0 ]; then - run_tests="$1" - shift -else - run_tests=1 -fi - -# Whether to generate tests. On platforms like OpenBSD, there is no GNU bc to -# generate tests, so this must be off. -if [ "$#" -gt 0 ]; then - gen_tests="$1" - shift -else - gen_tests=1 -fi - -# Whether to test with clang. -if [ "$#" -gt 0 ]; then - test_with_clang="$1" - shift -else - test_with_clang=1 -fi - -# Whether to test with gcc. -if [ "$#" -gt 0 ]; then - test_with_gcc="$1" - shift -else - test_with_gcc=1 -fi - -# Whether to test with sanitizers. -if [ "$#" -gt 0 ]; then - run_sanitizers="$1" - shift -else - run_sanitizers=1 -fi - -# Whether to test with valgrind. -if [ "$#" -gt 0 ]; then - run_valgrind="$1" - shift -else - run_valgrind=1 -fi - -# Whether to test all settings combos. -if [ "$#" -gt 0 ]; then - test_settings="$1" - shift -else - test_settings=1 -fi - -# Whether to test 64-bit in addition to 32-bit. -if [ "$#" -gt 0 ]; then - run_64_bit="$1" - shift -else - run_64_bit=1 -fi - -# Whether to test with strgen.sh in addition to strgen.c. -if [ "$#" -gt 0 ]; then - run_gen_script="$1" - shift -else - run_gen_script=0 -fi - -# Whether to test on C11 in addition to C99. -if [ "$#" -gt 0 ]; then - test_c11="$1" - shift -else - test_c11=0 -fi - -# Whether to test 128-bit integers in addition to no 128-bit integers. -if [ "$#" -gt 0 ]; then - test_128_bit="$1" - shift -else - test_128_bit=0 -fi - -# Whether to test with computed goto or not. -if [ "$#" -gt 0 ]; then - test_computed_goto="$1" - shift -else - test_computed_goto=0 -fi - -if [ "$run_64_bit" -ne 0 ]; then - bits=64 -else - bits=32 -fi - -if [ "$test_computed_goto" -eq 0 ]; then - clang_flags="-DBC_NO_COMPUTED_GOTO $clang_flags" - gcc_flags="-DBC_NO_COMPUTED_GOTO $gcc_flags" -fi - -cd "$scriptdir/.." - -# Setup a default compiler. -if [ "$test_with_clang" -ne 0 ]; then - defcc="clang" -elif [ "$test_with_gcc" -ne 0 ]; then - defcc="gcc" -else - defcc="c99" -fi - -export ASAN_OPTIONS="abort_on_error=1,allocator_may_return_null=1" -export UBSAN_OPTIONS="print_stack_trace=1,silence_unsigned_overflow=1" - -build "$debug -std=c99" "$defcc" "-g" "1" "$bits" - -header "Running math library under --standard" - -# Make sure the math library is POSIX compliant. -printf 'quit\n' | bin/bc -ls - -do_make clean_tests - -# Run the clang build sets. -if [ "$test_with_clang" -ne 0 ]; then - build_set "clang" "$run_tests" -fi - -# Run the gcc build sets. -if [ "$test_with_gcc" -ne 0 ]; then - build_set "gcc" "$run_tests" -fi - -if [ "$run_tests" -ne 0 ]; then - - build "$release" "$defcc" "-O3" "1" "$bits" - - # Run karatsuba. - karatsuba - - # Valgrind. - if [ "$run_valgrind" -ne 0 -a "$test_with_gcc" -ne 0 ]; then - vg - fi - - printf '\n' - printf 'Tests successful.\n' - - # I just assume that I am going to be fuzzing when I am done. - header "Building for AFL++..." - - "$scriptdir/fuzz_prep.sh" - - printf '\n' - printf 'Ready for scripts/randmath.py and for fuzzing.\n' - printf '\n' - printf 'Run scripts/randmath.py if you changed any math code.\n' - printf '\n' - printf 'Then if there are no problems, run the fuzzer.\n' - printf '\n' - printf 'Then run `scripts/fuzz_prep.sh -a`.\n' - printf '\n' - printf 'Then run `scripts/afl.py --asan`.\n' - -fi |