Artifacts for "An Integer Overflow Endgame: Compiler and Architecture Support for Default-On Integer Overflow Mitigation"
Résumé fourni par la source
Overview The artifacts contain the following files: install.sh: install dependencies and build toolchains. README.md: this file. reproduce_all.sh: run all benchmarks and generate results. results/: contains SPEC launch scripts, logs, CSV results, and plots for all benchmarks. rust/: contains README for Rust, patches, and scripts to build Rust toolchains and run benchmarks. scripts/: contains scripts and other files that are used by the top-level scripts. spec2017/: SPEC CPU 2017 for industry-standard performance evaluation. We do not include it here due to licensing restrictions, please obtain it separately. We use unmodified version 1.1.9 of SPEC2017, but only test SPECspeed on integer benchmarks. src/: lfi-bench/: popular libraries for multimedia, compression, and XML processing. We only modify the build scripts to remove LFI flags and use our custom toolchains. llvm-project/: our modified LLVM fork based on LLVM 19.1.0 with hardware/software integer overflow checking support. rust/: our modified Rust fork based on Rust 1.86.0. Speckle/: scripts to compile and run SPEC2017 benchmarks. hashbrown/, npb/: Rust benchmarks including NPB-Rust and Hashbrown. We only modify the build scripts to use our custom toolchains. Downloaded by scripts in `rust/` automatically. redis/, rocksdb/, sqlite-src-3530000/: database benchmarks including SQLite, RocksDB, and Redis. We only modify the build scripts to use our custom toolchains. test/: contains basic test cases to verify the functionality of toolchains. ubsan_new2.txt: contains known overflow locations in SPEC2017 to ignore when compiling all variants. To install SPEC CPU 2017,you can either place the installer ISO image (cpu2017-1.1.9.iso) under /optand run /opt/overflow/scripts/install_spec.sh, or manually install SPEC CPU 2017 directly into/opt/overflow/spec2017. Note that evaluating on virtual machines (VMs) might result in severe result noises, so it is highly discouraged. If you have to run on VMs, make sure to run /opt/overflow/scripts/bench.sh on host to disable SMT and fix frequency. Installation If a CloudLab account is available, using the CloudLab profile is more convenient. Once the profile is instantiated as an experiment, everything is set up on the machine. Otherwise, the artifacts can be installed manually from the Zenodo archive:# requires rootsudo tar xfz overflow.tar.gz -C /optsudo chown -R $USER /opt/overflow Regardless of the previous step, install dependencies and build toolchains (estimated 30 minutes):cd /opt/overflow./install.sh Verify that the installation completed successfully:source "$HOME/.cargo/env"rustc --version# expected: rustc 1.86.0-dev/opt/overflow/llvm/bin/clang -v# expected: clang version 19.1.0 Basic Test Perform a basic test on the built toolchains to verify their functionality:cd /opt/overflow/test./basic_test.sh# expected: Basic Functionality Test Complete! Evaluation Run the following command in tmux to start the orchestration script: cd /opt/overflowbash reproduce_all.sh > reproduce.log 2>&1 SKIP_SPEC, SKIP_LFI, SKIP_DB, and SKIP_RUST can be set to 1 to skip SPEC CPU 2017, popular libraries and CoreMark, databases (SQLite, RocksDB, and Redis), and Rust benchmarks if needed. Results The figures are generated under /opt/overflow/results as PDF files: fig8.pdf: SPEC CPU 2017 performance with opX fig9.pdf: SPEC CPU 2017 performance with LCI fig12.pdf: Popular libraries and CoreMark performance fig13.pdf: Hashbrown and NPB-Rust performance fig16.pdf: Database performance (optional) Compare these figures with the results in the paper.
Ce résumé expose les affirmations des auteurs. BNTIC ne l’interprète pas comme une validation indépendante des résultats.
Contrôle bibliographique ouvert
Institutions déclarées
Une affiliation ne permet pas de déduire la nationalité d’un auteur.