Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • opensrc/zafl
1 result
Show changes
Commits on Source (19)
Showing
with 535 additions and 980 deletions
# Zafl (Zipr-based AFL) # ZAFL: Zipr-based AFL
Welcome to **ZAFL**: a project to extend compiler-quality instrumentation speed *and* transformation support to the fuzzing of x86-64 binary programs. The key features of ZAFL include:
Welcome to *Zafl*, a project to fuzz X86 64-bit binary programs. * Fast, space-efficient, and inlined binary fuzzing instrumentation via the Zipr binary rewriting infrastructure.
* A platform to extend and combine compiler-style code transformations (e.g., CMP unfolding) to binary-only fuzzing.
Key features of Zafl: * Full compatibility with the AFL and AFLPlusPlus fuzzer ecosystem.
* Uses Zipr, a fast, space-efficient binary rewriter to inline AFL-style instrumentations * **For more information, video demos, troubleshooting, and licensing, please see [our wiki page](https://git.zephyr-software.com/opensrc/libzafl/-/wikis/Home).**
* 100% AFL compatible
* Platform for experimenting with other instrumentation to guide afl, e.g., add calling context to the edge-profile function (a la Angora) <table><tr><td align=center colspan="2"><div><b>Presented in our paper</b> <a href="https://www.usenix.org/conference/usenixsecurity21/presentation/nagy"><i>Breaking-through Binaries: Compiler-quality Instrumentation for Better Binary-only Fuzzing</i></a><br>(2021 USENIX Security Symposium).</td </tr>
<tr><td><b>Citing this repository:</b></td>
## Installation with Docker <td><code class="rich-diff-level-one">@inproceedings{nagy:breakingthrough, title = {Breaking Through Binaries: Compiler-quality Instrumentation for Better Binary-only Fuzzing}, author = {Stefan Nagy and Anh Nguyen-Tuong and Jason D. Hiser and Jack W. Davidson and Matthew Hicks}, booktitle = {{USENIX} Security Symposium (USENIX)}, year = {2021},}</code></td></tr>
<tr><td><b>Licensing:</b></td><td>See <a href="https://git.zephyr-software.com/opensrc/libzafl/-/wikis/Licensing">our Licensing wiki page</a>.</td></tr>
A Docker-based installation is recommended for those getting started with Zafl. <tr><td><b>Disclaimer:</b></td><td><i>This software is provided as-is with no warranty.</i></td></tr></table>
Please intending to develop new functionality or fix bugs in existing code should install from source (see next section).
## Prerequisites
To install the docker-based installation, please see the [install and use directions for the Docker-based setup.](https://git.zephyr-software.com/opensrc/libzafl/-/wikis/home) * **Install environment**: ZAFL's installation currently supports recent 64-bit Linux environments (i.e., Ubuntu 16.04 and up).
* **Supported binaries**: ZAFL supports instrumenting/transforming x86-64 Linux binaries of varying type (C and C++, stripped and unstripped, and position independent and position-non-independent). At this time, ZAFL cannot support binaries with DRM, obfuscation, or tamper-resistant protections.
## Installation from Source * **Windows binaries**: ZAFL offers preliminary cross-platform instrumentation support for Windows 7 PE32+ binaries, though WinAFL-compatible fuzzing instrumentation is not yet supported at this time.
* **Recommended installation**: For first-time users we recommend the *Docker-based* installation. For developers and advanced users we recommend the *source-based* installation.
Installing from source is not recommended for first-time Zafl users. Please see the Docker-based setup instructions.
This method is recommended only for those intending to bug-fix or develop new features for Zafl. ## Installation from Docker (recommended)
**The following instructions assume you are running a compatible Linux environment** (i.e., Ubuntu 16.04 and up) **with AFL installed**.
#### Step 0: Install the libzafl support library
See the instructions located here: https://git.zephyr-software.com/opensrc/libzafl
#### Step 1: Pull the Docker image
First, pull the ZAFL Docker image:
```bash
docker pull git.zephyr-software.com:4567/opensrc/zafl/zafl:latest
```
Verify that the image is successfully installed by grepping for its name:
```bash
docker images | grep git.zephyr-software.com:4567/opensrc/zafl/zafl
```
The instructions that follow assume that: #### Step 2: Instrument and transform a binary
* you are using a recent version of Linux, e.g., Ubuntu 18.04 Below presents an example of instrumenting the `bc` binary for fuzzing.
### Install AFL locally First, copy the binary to `/tmp` (we'll mount this directory as `/io` in the guest container):
```bash
cp $(which bc) /tmp/bc
```
Then, instrument it using ZAFL's Docker container:
```bash
sudo docker run -t -v /tmp:/io git.zephyr-software.com:4567/opensrc/zafl/zafl:latest /io/bc /io/bc.zafl
```
The output should contain the following:
```
Zafl: inferring main to be at: 0x401510
Zafl: Transforming input binary /io/bc into /io/bc.zafl
Zafl: Issuing command: /opt/ps_zipr/tools/ps_zipr.sh /io/bc /io/bc.zafl -c rida -c move_globals -c zax -o move_globals:--elftables-only -o move_globals:--no-use-stars -o zax:--stars -o zax:--enable-floating-instrumentation -o zax:'-e 0x401510'
Using Zipr backend.
Detected ELF non-PIE executable.
Performing step rida [dependencies=mandatory] ...Done. Successful.
Performing step pdb_register [dependencies=mandatory] ...Done. Successful.
Performing step fill_in_cfg [dependencies=unknown] ...Done. Successful.
Performing step fill_in_indtargs [dependencies=unknown] ...Done. Successful.
Performing step fix_calls [dependencies=unknown] ...Done. Successful.
Performing step move_globals [dependencies=unknown] ...Done. Successful.
Performing step zax [dependencies=none] ...Done. Successful.
Performing step zipr [dependencies=none] ...Done. Successful.
Zafl: success. Output file is: /io/bc.zafl
```
The output binary, `bc.zafl`, should now exist in the host's `/tmp` directory.
Though this binary is ready to be fuzzed with AFL, it can still be run normally, e.g.:
```bash ```bash
git clone https://github.com/google/AFL echo "2+2" | /tmp/bc.zafl
``` ```
The above command should print `4`.
Follow directions to build and install AFL
### Install the Zipr static binary rewriting infrastructure ## Installation from Source (for developers)
See directions for this at https://git.zephyr-software.com/opensrc/zipr Installing from source is recommended only for those intending to bug-fix or develop new features for ZAFL. **The following instructions assume you are running a compatible Linux environment** (i.e., Ubuntu 16.04 and up) **with AFL installed**.
### Testing Zipr #### Step 0: Install the Zipr rewriting infrastructure
Test the binary rewriting infrastructure by rewriting /bin/ls See https://git.zephyr-software.com/opensrc/zipr.
Before continuing, be sure to prepare Zipr's environment by doing the following:
```bash ```bash
cd /tmp cd /path/to/zipr && . set_env_vars
$PSZ /bin/ls ls.zipr -c rida
``` ```
#### Step 1: Testing Zipr
Test the binary rewriting infrastructure by rewriting Linux's `ls` binary:
```bash
$PSZ /bin/ls /tmp/ls.zipr -c rida
```
Your terminal's output should look like this: Your terminal's output should look like this:
``` ```
Using Zipr backend. Using Zipr backend.
...@@ -53,46 +98,21 @@ Performing step fix_calls [dependencies=mandatory] ...Done. Successful. ...@@ -53,46 +98,21 @@ Performing step fix_calls [dependencies=mandatory] ...Done. Successful.
Program not detected in signature database. Program not detected in signature database.
Performing step zipr [dependencies=clone,fill_in_indtargs,fill_in_cfg,pdb_register] ...Done. Successful. Performing step zipr [dependencies=clone,fill_in_indtargs,fill_in_cfg,pdb_register] ...Done. Successful.
``` ```
Invoke the rewritten version and make sure it runs normally:
Invoke the rewritten version of /bin/ls and make sure it runs normally:
``` ```
./ls.zipr ./tmp/ls.zipr
``` ```
### Download and Set environment for IRDB-SDK and IRDB-libs #### Step 2: Download and build ZAFL
First, clone ZAFL's repository:
Option 1:
If you built Zipr from source, you can use Zipr's set_env_vars feature to
include the right settings.
Option 2:
Download the sdk:
```bash
git clone --recurse-submodules http://git.zephyr-software.com:opensrc/irdb-sdk.git
export IRDB_SDK=$PWD/irdb-sdk
```
Download the the built libraries for your system:
```
TBD
export IRDB_LIBS=/path/to/irdb-libs/libs
```
### Downloading and Building ZAFL
Once Zipr has been installed, clone the repo for ZAFL and build.
```bash ```bash
git clone --recurse-submodules http://git.zephyr-software.com:opensrc/zafl.git git clone --recurse-submodules https://git.zephyr-software.com/opensrc/zafl.git
# or: git clone --recurse-submodules git@git.zephyr-software.com:opensrc/zafl.git
cd zafl
``` ```
Setup your environment: Second, prepare ZAFL's environment:
```bash ```bash
. set_env_vars cd /path/to/zafl && . set_env_vars
``` ```
Lastly, build ZAFL:
And build zafl.
```bash ```bash
scons scons
# or scons debug=1 # or scons debug=1
...@@ -100,117 +120,86 @@ scons ...@@ -100,117 +120,86 @@ scons
# or scons debug=1 -j3 # or scons debug=1 -j3
``` ```
## Testing Zafl #### Step 3: Prepare ZAFL's environment
Before running Zafl, always make sure to have the proper environment variables set Before running ZAFL from a source build, **always make sure to prepare both it and Zipr's environments**:
```bash ```bash
cd ~/zafl_umbrella cd /path/to/zipr && . set_env_vars
. set_env_vars cd /path/to/zafl && . set_env_vars
``` ```
Furthermore, it is recommended to ensure that ZAFL's smoke tests succeed:
Zafl also needs to find Zipr, which can be done by setting:
```bash ```bash
export PSZ=/path/to/ps_zipr.sh cd /path/to/zafl/test/bc && ./test_bc.sh
# or
export PATH=$PATH:$(dirname /path/to/ps_zipr.sh)
``` ```
This test will instrument and fuzz a copy of Linux's `bc` binary. If successful, the final output should contain something like:
#### Running Zafl smoke tests
```bash ```bash
cd $ZAFL_HOME/test/bc command_line : afl-fuzz -i zafl_in -o zafl_out -- ./bc.zafl
./test_bc.sh TEST PASS: ./bc.zafl: execs_per_sec : 1904.76
``` ```
The test will run afl on bc, instrumented with the proper instrumentation inlined. #### Step 4: Instrument and transform a binary
You will see several fuzzing run, each of which should take on the order of 30 seconds. Once everything is installed properly, you can prepare a binary for fuzzing with the simple command:
```bash
Once done, the output should end with something like: zafl.sh <target_binary> <zafl_output_binary>
```
unique_crashes : 0
unique_hangs : 0
last_path : 0
last_crash : 0
last_hang : 0
execs_since_crash : 30242
exec_timeout : 20
afl_banner : bc
afl_version : 2.52b
target_mode : default
command_line : afl-fuzz -i zafl_in -o zafl_out -- /usr/bin/bc
TEST PASS: /usr/bin/bc: execs_per_sec : 1904.76
~/zafl_umbrella/test/bc
``` ```
Below presents an example of running it on the `bc` binary
#### Final sanity check
```bash ```bash
cd /tmp zafl.sh /bin/bc /tmp/bc.zafl
zafl.sh /bin/ls ls.zafl
``` ```
The output should contain the following:
**zafl.sh** is the primary script for adding afl instrumentation to binaries.
You should see:
``` ```
zafl.sh /bin/ls ls.zafl Zafl: main exec is PIE... use entry point address (0x5850) for fork server
Zafl: Transforming input binary /bin/ls into ls.zafl Zafl: Transforming input binary /bin/bc into ./tmp/bc.zafl
Zafl: Issuing command: /home/zafl_guest/zafl_umbrella/install/zipr_umbrella/peasoup_examples/tools/ps_zipr.sh /bin/ls ls.zafl -c move_globals=on -c zafl=on -o move_globals:--elftables -o zipr:--traceplacement:on -o zipr:true -o zafl:--stars Zafl: Issuing command: ~/zipr/installed/tools/ps_zipr.sh /bin/bc ./tmp/bc.zafl -c rida -s move_globals -c zax -o move_globals:--elftables-only -o move_globals:--no-use-stars -o zax:--stars -o zax:--enable-floating-instrumentation -o zax:'-e 0x5850'
Using Zipr backend. Using Zipr backend.
Detected ELF file. Detected ELF shared object.
Performing step gather_libraries [dependencies=mandatory] ...Done. Successful. Performing step rida [dependencies=mandatory] ...Done. Successful.
Performing step meds_static [dependencies=mandatory] ...Done. Successful. Performing step pdb_register [dependencies=mandatory] ...Done. Successful.
Performing step pdb_register [dependencies=mandatory] ...Done. Successful. Performing step fill_in_cfg [dependencies=unknown] ...Done. Successful.
Performing step fill_in_cfg [dependencies=mandatory] ...Done. Successful. Performing step fill_in_indtargs [dependencies=unknown] ...Done. Successful.
Performing step fill_in_indtargs [dependencies=mandatory] ...Done. Successful. Performing step fix_calls [dependencies=unknown] ...Done. Successful.
Performing step clone [dependencies=mandatory] ...Done. Successful. Performing step move_globals [dependencies=unknown] ...Done. Successful.
Performing step fix_calls [dependencies=mandatory] ...Done. Successful. Performing step zax [dependencies=none] ...Done. Successful.
Program not detected in signature database. Performing step zipr [dependencies=none] ...Done. Successful.
Performing step move_globals [dependencies=none] ...Done. Successful. Zafl: success. Output file is: ./tmp/bc.zafl
Performing step zafl [dependencies=none] ...Done. Successful. ```
Performing step zipr [dependencies=clone,fill_in_indtargs,fill_in_cfg,pdb_register] ...Done. Successful. All ZAFL'd binaries can be run normally just as their original uninstrumented versions, e.g.: ```./tmp/bc.zafl```.
``` To ensure the binary has been instrumented properly, run: ```ZAFL_DEBUG=1 ./tmp/bc.zafl```.
You can run **ls.zafl** as you would **ls**: ```./ls.zafl```
Zafl'd binaries can be run normally. There is no extra output.
To make sure the binary has been instrumented properly: ```ZAFL_DEBUG=1 ./ls.zafl```
The output should start with: The output should start with:
``` ```
Error getting shm environment variable - fake allocate AFL trace map Error getting shm environment variable - fake allocate AFL trace map
Success at mmap! Success at mmap!
libautozafl: auto-initialize fork server libautozafl: auto-initialize fork server
``` ```
Let's prep for fuzzing:
## Fuzzing an Instrumented Binary
Below continues the preceding examples (i.e., it is assumed that you have an instrumented binary, `/tmp/bc.zafl`).
Let's first prepare a seed directory for fuzzing:
```bash ```bash
mkdir input_seeds mkdir in_dir && echo "hello" > in_dir/seed
echo "hello" > input_seeds/hello.seed
``` ```
Let's now run the ZAFL'd binary with AFL:
Let's now run the Zafl'd binary with afl:
```bash ```bash
afl-fuzz -i input_seeds -o out -- ./ls.zafl @@ afl-fuzz -i in_dir -o out_dir -- ./tmp/bc.zafl @@
``` ```
If AFL complains about `Looks like the target binary is not instrumented!`, you'll need to set the following environment variable before fuzzing:
If afl complains about `missing instrumentation`, you'll need to set the following environment variable:
```bash ```bash
export AFL_SKIP_BIN_CHECK=1 export AFL_SKIP_BIN_CHECK=1
``` ```
ZAFL's instrumentation also supports AFL's other utilities, e.g.:
You can also run the usual afl utilities, e.g:
```bash ```bash
afl-showmap -o map.out -- ./ls.zafl afl-showmap -o map.out -- ./tmp/bc.zafl
afl-cmin -i out/queue/ -o out.cmin -- ./ls.zafl @@ afl-cmin -i out_dir/queue/ -o cmin.out -- ./tmp/bc.zafl @@
``` ```
Et voila! ## Using ZAFL for Windows Binaries
ZAFL offers preliminary instrumentation support for Windows 7 PE32+ binaries, though WinAFL-compatible fuzzing instrumentation is not yet supported at this time. Instrumenting Windows binaries must be performed with a *Linux-based* ZAFL install. **This mode requires IDA Pro and the following modified command**:
# TL;DR
Once everything is installed properly, you can prep a binary for fuzzing with the simple command:
```bash ```bash
zafl.sh <target_binary> <zafl_output_binary> zafl.sh <target_binary> <zafl_output_binary> -F --ida --no-stars
``` ```
We hope to improve our Windows support in the near future.
## Supported Transformations
To see the full list of fuzzing-enhancing code transformations that ZAFL currently supports, run `zafl.sh --help` (or for Docker-based installs, `docker run git.zephyr-software.com:4567/opensrc/zafl/zafl:latest`).
**We welcome any community contributions, and ideas for improvements and new fuzzing transformations!** To open an issue or merge request, please contact one of the developers (`hiser@virginia.edu`, `an7s@virginia.edu`, `jwd@virginia.edu`, or `snagy2@vt.edu`). **Happy fuzzing!**
...@@ -28,8 +28,10 @@ usage() ...@@ -28,8 +28,10 @@ usage()
echo echo
echo "zafl.sh <input_binary> <output_zafl_binary> [options]" echo "zafl.sh <input_binary> <output_zafl_binary> [options]"
echo echo
echo "options:" echo "Help options:"
echo " -h, --help Print this screen and exit." echo " -h, --help Print this screen and exit."
echo
echo "Optimization options:"
echo " -s, --stars Use STARS (default)" echo " -s, --stars Use STARS (default)"
echo " -S, --no-stars Do not use STARS" echo " -S, --no-stars Do not use STARS"
echo " -g, --graph-optimization Use control flow graph optimizations" echo " -g, --graph-optimization Use control flow graph optimizations"
...@@ -39,6 +41,8 @@ usage() ...@@ -39,6 +41,8 @@ usage()
echo " -t, --tempdir <dir> Specify location of analysis results directory" echo " -t, --tempdir <dir> Specify location of analysis results directory"
echo " -e, --entry Specify fork server entry point" echo " -e, --entry Specify fork server entry point"
echo " -E, --exit Specify fork server exit point(s)" echo " -E, --exit Specify fork server exit point(s)"
echo
echo "Instrumentation options:"
echo " --instrumentation-style <mode> mode = {edge, block} (default: edge a la AFL)" echo " --instrumentation-style <mode> mode = {edge, block} (default: edge a la AFL)"
echo " -u, --untracer Specify untracer instrumentation" echo " -u, --untracer Specify untracer instrumentation"
echo " -c, --break-critical-edges [<type>] Breakup critical edges, type={all,targets,fallthroughs,none}, if -c is used without an argument, all is specified" echo " -c, --break-critical-edges [<type>] Breakup critical edges, type={all,targets,fallthroughs,none}, if -c is used without an argument, all is specified"
...@@ -55,15 +59,19 @@ usage() ...@@ -55,15 +59,19 @@ usage()
echo " -i, --enable-floating-instrumentation Select best instrumentation point within basic block (default)" echo " -i, --enable-floating-instrumentation Select best instrumentation point within basic block (default)"
echo " -I, --disable-floating-instrumentation Use first instruction for instrumentation in basic blocks" echo " -I, --disable-floating-instrumentation Use first instruction for instrumentation in basic blocks"
echo " --enable-context-sensitivity Enable context sensitivity (function)" echo " --enable-context-sensitivity Enable context sensitivity (function)"
echo " -r, --random-seed <value> Specify random seed"
echo " -w, --whitelist <file> Specify function whitelist (one function per line)" echo " -w, --whitelist <file> Specify function whitelist (one function per line)"
echo " -b, --blacklist <file> Specify function blacklist (one function per line)" echo " -b, --blacklist <file> Specify function blacklist (one function per line)"
echo " -l, --enable-laf Enable laf-intel style instrumentation" echo " -l, --enable-laf Enable laf-intel style instrumentation"
echo " -L, --disable-laf Disable laf-intel style instrumentation (default)" echo " -L, --disable-laf Disable laf-intel style instrumentation (default)"
echo " -a, --args <args> Add extra args to be passed to backend analysis engine"
echo " --auto-zafl-libraries Auto-initialize fork server when fuzzing just libraries" echo " --auto-zafl-libraries Auto-initialize fork server when fuzzing just libraries"
echo
echo "Error Detector Options"
echo " --add-stack-canaries Enable the p1tranform step (make sure you have p1transform built) to add stack canary checking"
ehco
echo "Misc options:"
echo " -v Verbose mode" echo " -v Verbose mode"
echo echo " -a, --args <args> Add extra args to be passed to backend analysis engine"
echo " -r, --random-seed <value> Specify random seed"
} }
ida_or_rida_opt=" -c rida " ida_or_rida_opt=" -c rida "
...@@ -77,6 +85,7 @@ trace_opt="" ...@@ -77,6 +85,7 @@ trace_opt=""
zipr_opt="" zipr_opt=""
random_seed="" random_seed=""
laf_opt="" laf_opt=""
p1_opt=""
auto_zafl_opt="" auto_zafl_opt=""
extra_args="" extra_args=""
...@@ -349,6 +358,10 @@ parse_args() ...@@ -349,6 +358,10 @@ parse_args()
auto_zafl_libraries="yes" auto_zafl_libraries="yes"
shift shift
;; ;;
--add-stack-canaries | --add-stack-canary)
p1_opt=" -c p1transform -o '--min_stack_padding 8 --max_stack_padding 8'"
shift
;;
-*|--*=) # unsupported flags -*|--*=) # unsupported flags
echo "Error: Unsupported flag $1" >&2 echo "Error: Unsupported flag $1" >&2
exit 1 exit 1
...@@ -453,6 +466,8 @@ verify_zafl_symbols() ...@@ -453,6 +466,8 @@ verify_zafl_symbols()
main() main()
{ {
local optional_step=""
parse_args "$@" parse_args "$@"
if [ -z "$entry_opt" ]; then if [ -z "$entry_opt" ]; then
find_main find_main
...@@ -469,7 +484,6 @@ main() ...@@ -469,7 +484,6 @@ main()
# #
log_msg "Transforming input binary $input_binary into $output_zafl_binary" log_msg "Transforming input binary $input_binary into $output_zafl_binary"
optional_step=""
if [ ! -z "$laf_opt" ]; if [ ! -z "$laf_opt" ];
then then
if [ ! -z "$verbose_opt" ]; then if [ ! -z "$verbose_opt" ]; then
...@@ -479,7 +493,7 @@ main() ...@@ -479,7 +493,7 @@ main()
fi fi
zax_opt=" $zax_opt $float_opt $auto_zafl_opt " zax_opt=" $zax_opt $float_opt $auto_zafl_opt "
cmd="$ZAFL_TM_ENV $PSZ $input_binary $output_zafl_binary $ida_or_rida_opt -s move_globals $optional_step -c zax -o move_globals:--elftables-only -o move_globals:--no-use-stars $stars_opt $zax_opt $verbose_opt $options $other_args $trace_opt $zipr_opt $extra_args" cmd="$ZAFL_TM_ENV $PSZ $input_binary $output_zafl_binary $ida_or_rida_opt -c move_globals $p1_opt $optional_step -c zax -o move_globals:--elftables-only -o move_globals:--no-use-stars $stars_opt $zax_opt $verbose_opt $options $other_args $trace_opt $zipr_opt $extra_args"
if [ ! -z "$ZAFL_TM_ENV" ]; then if [ ! -z "$ZAFL_TM_ENV" ]; then
......
...@@ -30,24 +30,25 @@ do_build_image() ...@@ -30,24 +30,25 @@ do_build_image()
do_test() do_test()
{ {
local tmppath=/tmp/$(whoami)
mkdir -p $tmppath
chmod 777 $tmppath
# use the container to xform /bin/ls # use the container to xform /bin/ls
cp $(which cat) /tmp cp $(which cat) $tmppath
if [ -x /tmp/cat.zafl ]; then rm -f $tmppath/cat.zafl
sudo rm /tmp/cat.zafl
fi
# map /io inside of containter to /tmp locally # map /io inside of containter to /tmp locally
docker run -v /tmp:/io -t $DOCKER_ZAFL /io/cat /io/cat.zafl docker run -v $tmppath:/io -t $DOCKER_ZAFL /io/cat /io/cat.zafl
ldd /tmp/cat.zafl ldd $tmppath/cat.zafl
ldd /tmp/cat.zafl | grep -v "not found" ldd $tmppath/cat.zafl | grep -v "not found"
# verify functional correctness # verify functional correctness
echo "Verify functional correctness of cat" echo "Verify functional correctness of cat"
echo "hello" > /tmp/hello echo "hello" > $tmppath/hello
/tmp/cat.zafl /tmp/hello > /tmp/hello2 $tmppath/cat.zafl $tmppath/hello > $tmppath/hello2
diff /tmp/hello /tmp/hello2 diff $tmppath/hello $tmppath/hello2
rm /tmp/hello /tmp/hello2 rm $tmppath/hello $tmppath/hello2
} }
do_push() do_push()
......
...@@ -3,8 +3,13 @@ ...@@ -3,8 +3,13 @@
display_license_agreement() display_license_agreement()
{ {
echo echo
echo "BY USING THIS DOCKER IMAGE, YOU AGREE TO BE BOUND BY THE" echo "BSD 3-Clause License"
echo "CREATIVE COMMONS ATTRIBUTION-NONCOMMERCIAL 4.0 INTERNATIONAL LICENSE" echo
echo "Copyright (c) 2018-2021, Zephyr Software LLC"
echo "All rights reserved."
echo
echo "See the full license here:"
echo "https://git.zephyr-software.com/opensrc/zafl/-/blob/master/LICENSE"
echo echo
} }
...@@ -12,10 +17,10 @@ display_license() ...@@ -12,10 +17,10 @@ display_license()
{ {
echo echo
echo "This docker container is made available to the public by Zephyr Software" echo "This docker container is made available to the public by Zephyr Software"
echo "(contact: jwd@zephyr-software.com) under the Creative Commons Attribution-" echo "(contact: jwd@zephyr-software.com) under the BSD #-Clause License"
echo " NonCommercial 4.0 International license (CC BY-NC 4.0)."
echo echo
echo "https://creativecommons.org/licenses/by-nc/4.0/legalcode" echo "See the full license here:"
echo "https://git.zephyr-software.com/opensrc/zafl/-/blob/master/LICENSE"
echo echo
echo "Linux, Gcc, and other relevant open source projects are licensed under their" echo "Linux, Gcc, and other relevant open source projects are licensed under their"
echo "own license and are exempt from this license statement." echo "own license and are exempt from this license statement."
......
Subproject commit 1b48865fd9ec44ca1517d5daa5ea89fa49aa4c4a Subproject commit 197fe12072606664d00d9cc9582f3f7efe7a2988
...@@ -25,20 +25,14 @@ else ...@@ -25,20 +25,14 @@ else
fi fi
UBUNTU16_FOUND=0 UBUNTU16_FOUND=0
UBUNTU18_FOUND=0
echo "$unamestr" | grep "ubuntu" - > /dev/null echo "$unamestr" | grep "ubuntu" - > /dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "$unamestr" | grep "16.0" - > /dev/null echo "$unamestr" | grep "16.0" - > /dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
UBUNTU16_FOUND=1 UBUNTU16_FOUND=1
echo "Found Ubuntu16" echo "Found Ubuntu16"
fi
echo "$unamestr" | grep "18.0" - > /dev/null
if [ $? -eq 0 ]; then
UBUNTU18_FOUND=1
echo "Found Ubuntu18"
else else
echo "Ubuntu found, but neither Ubuntu16 nor Ubuntu18 found." echo "Found Ubuntu, assuming >=16"
fi fi
else else
echo "Did not find Ubuntu" echo "Did not find Ubuntu"
......
#!/bin/bash
export AFL_SKIP_CPUFREQ=1
export AFL_SKIP_BIN_CHECK=1
export AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
# the bad boys
#benchmarks="
# 400.perlbench
# 403.gcc
# 445.gobmk
# 450.soplex
# 453.povray
# 458.sjeng
# 464.h264ref
# 465.tonto
# 471.omnetpp
# 481.wrf
# 482.sphinx3
# 483.xalancbmk
# "
# all
all_benchmarks="400.perlbench 401.bzip2 403.gcc 410.bwaves 416.gamess 429.mcf 433.milc 434.zeusmp 435.gromacs 436.cactusADM 437.leslie3d 444.namd 445.gobmk 450.soplex 453.povray 454.calculix 456.hmmer 458.sjeng 459.GemsFDTD 462.libquantum 464.h264ref 465.tonto 470.lbm 471.omnetpp 473.astar 481.wrf 482.sphinx3 483.xalancbmk"
#all_benchmarks=" 403.gcc "
#all_benchmarks=" 401.bzip2 "
# should be 3 for reportable run
number=1
setup()
{
if [ ! -d spec2006 ]; then
#svn co ^/spec2006/trunk spec2006
git clone --depth 1 http://git.zephyr-software.com/allzp/spec2006.git spec2006
fi
if [[ ! -f /usr/bin/gfortran ]]; then
sudo apt-get install gfortran -y
fi
cd spec2006/
if [ ! -L bin ]; then
ln -s bin.power/ bin
fi
source shrc
bin/relocate
}
run_test()
{
config_name=$1
config=$2
benchmarks="$3"
cd $SPEC
if [ ! -d result.$config_name ]; then
dropdb $PGDATABASE
createdb $PGDATABASE
$PEASOUP_HOME/tools/db/pdb_setup.sh
rm -Rf result/*
runspec --action scrub --config $config $benchmarks
echo
echo "**************************************************************************"
echo "Starting test of $config_name"
echo "**************************************************************************"
echo
runspec --action validate --config $config -n $number $benchmarks
cp benchspec/CPU2006/*/exe/* result
mv result result.$config_name
for bench in $benchmarks
do
mv benchspec/CPU2006/$bench/run/build*/peasoup*/logs result.$config_name/$bench.log
done
fi
}
get_size_result()
{
bench=$1
if [ -e $bench ]; then
size=$(stat --printf="%s" $bench)
#echo -n "$size"
#LC_ALL= numfmt --grouping $size
#LC_ALL= printf "%'d" $size
#LC_NUMERIC=en_US printf "%'d" $size
#LC_NUMERIC=en_US printf "%'f" $size
#LC_NUMERIC=en_US printf "%'.f" $size
#LC_NUMERIC=en_US printf "%'10.10f" $size
#LC_NUMERIC=en_US /usr/bin/printf "%'d" $size
echo $size
else
echo -n "0"
fi
}
get_result()
{
bench=$1
config=$2
results=$(cat $SPEC/result.$config/CPU2006.002.log|grep Success|grep $bench|grep ratio=|sed 's/.*ratio=//'|sed 's/,.*//')
sum=0
count=0
for res in $results
do
sum=$(echo $sum + $res | bc)
count=$(echo $count + 1 | bc)
done
#echo sum=$sum
#echo count=$count
res=$(echo "scale=2; $sum / $count" | bc 2> /dev/null )
count=$(echo $res|wc -w)
if [ $count = 1 ]; then
echo -n $res
else
echo -n "0"
fi
}
get_raw_results()
{
get_raw_perf_results "$@"
get_raw_size_results "$@"
#get_raw_fde_results "$@"
}
get_raw_perf_results()
{
configs=$*
first_config=$1
echo "--------------------------------------------------------------"
echo "Performance results are:"
echo "--------------------------------------------------------------"
echo benchmark $configs
for bench in $benchmarks
do
echo -n "$bench "
for config in $*
do
get_result $bench $config
echo -n " "
done
echo
done
}
get_raw_size_results()
{
echo "--------------------------------------------------------------"
echo "Size results are:"
echo "--------------------------------------------------------------"
configs=$*
echo benchmark $configs
for bench in $SPEC/result.$first_config/*_base.amd64-m64-gcc42-nn
do
echo -n "$(basename $bench _base.amd64-m64-gcc42-nn) "
for config in $*
do
if [[ $config == "baseline" ]]; then
file="$SPEC/result.$config/$(basename $bench)"
cp $file /tmp/foo.exe
strip /tmp/foo.exe
file="/tmp/foo.exe"
else
file="$SPEC/result.$config/$(basename $bench)"
fi
res=$(get_size_result $file)
#printf "%15s" $res
echo -n " $res"
done
echo
done
}
get_raw_fde_results()
{
echo "--------------------------------------------------------------"
echo "FDE results are:"
echo "--------------------------------------------------------------"
configs=$*
echo benchmark $configs
for bench in $SPEC/result.$first_config/*_base.amd64-m64-gcc42-nn
do
#printf "%-20s" $(basename $bench _base.amd64-m64-gcc42-nn)
echo -n $(basename $bench _base.amd64-m64-gcc42-nn)
for config in $*
do
file="$SPEC/result.$config/$(basename $bench)"
res=$(readelf -w $file |grep FDE|wc -l )
#if [[ $config == "baseline" ]]; then
#else
#fi
#printf "%15s" $res
echo -n " $res"
done
echo
done
}
main()
{
zipr_flags=" --backend zipr --step-option zipr:--add-sections --step-option zipr:true"
trace_flags=" --step-option zipr:--traceplacement:on --step-option zipr:true"
relax_flags=" --step-option zipr:--relax:on --step-option zipr:true --step-option zipr:--unpin:on --step-option zipr:false"
nounpin_flags=" --step-option zipr:--unpin:on --step-option zipr:false"
split_flags=" --step-option fill_in_indtargs:--split-eh-frame "
icall_flags=" --step-option fix_calls:--no-fix-icalls "
p1flags=" -c p1transform=on "
zafl_flags=" --backend zipr -s meds_static=off -s rida=on -c move_globals=on -c zax=on -o move_globals:--elftables-only "
zafl_opt_flags="--backend zipr -s meds_static=off -s rida=on -c move_globals=on -c zax=on -o move_globals:--elftables-only -o zipr:--traceplacement:on -o zax:--stars "
start_dir=$(pwd)
setup
# baseline
run_test baseline $SPEC/config/ubuntu14.04lts-64bit.cfg "$all_benchmarks"
# should be 100% success, tested by jdh on 4/11/18 as 100% success.
PSOPTS="$zipr_flags " run_test zipr $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
PSOPTS="$zafl_flags " run_test zafl $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
# PSOPTS="$zafl_opt_flags " run_test zafl $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
get_raw_results baseline zipr zafl
}
main "$@"
#!/bin/bash
export AFL_SKIP_CPUFREQ=1
export AFL_SKIP_BIN_CHECK=1
export AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1
run_size="test"
all_benchmarks="
600.perlbench_s 602.gcc_s 603.bwaves_s 605.mcf_s 607.cactuBSSN_s 619.lbm_s 620.omnetpp_s 621.wrf_s 623.xalancbmk_s 625.x264_s 627.cam4_s 628.pop2_s 631.deepsjeng_s 638.imagick_s 641.leela_s 644.nab_s 648.exchange2_s 649.fotonik3d_s 654.roms_s 657.xz_s 996.specrand_fs 998.specrand_is
"
all_benchmarks="
502.gcc_s 625.x264_s
"
number=1
setup()
{
if [ ! -d spec2017 ]; then
#svn co ^/spec2017/trunk spec2017
git clone --depth 1 git@git.zephyr-software.com:allzp/spec2017.git spec2017
fi
if [[ ! -f /usr/bin/gfortran ]]; then
sudo apt-get install gfortran gcc g++ -y
fi
cd spec2017/
source shrc
}
run_test()
{
local config_name="$1"
local config="$2"
local benchmarks="$3"
tests_that_ran="$tests_that_ran $config_name"
cd $SPEC
if [ ! -d result.$config_name ]; then
bash -x $PEASOUP_UMBRELLA_DIR/postgres_reset.sh
rm -Rf result/*
runcpu --action scrub --config $config $benchmarks
echo
echo "**************************************************************************"
echo "Starting test of $config_name"
echo "**************************************************************************"
echo
#runspec --action validate --config $config -n $number $benchmarks
runcpu --config $config --iterations $number --size $run_size --copies=8 --parallel_test_workload $run_size --noreportable $benchmarks
cp benchspec/CPU/*/exe/* result
mv result result.$config_name
for bench in $benchmarks
do
mv benchspec/CPU/$bench/build/build*/peasoup*/logs result.$config_name/$bench.log
done
fi
}
get_size_result()
{
bench=$1
if [ -e $bench ]; then
size=$(stat --printf="%s" $bench)
#echo -n "$size"
#LC_ALL= numfmt --grouping $size
#LC_ALL= printf "%'d" $size
#LC_NUMERIC=en_US printf "%'d" $size
#LC_NUMERIC=en_US printf "%'f" $size
#LC_NUMERIC=en_US printf "%'.f" $size
#LC_NUMERIC=en_US printf "%'10.10f" $size
#LC_NUMERIC=en_US /usr/bin/printf "%'d" $size
echo $size
else
echo -n "0"
fi
}
get_result()
{
bench=$1
config=$2
results=$(cat $SPEC/result.$config/CPU2017.002.log|grep Success|grep $bench|grep ratio=|sed 's/.*ratio=//'|sed 's/,.*//')
sum=0
count=0
for res in $results
do
sum=$(echo $sum + $res | bc)
count=$(echo $count + 1 | bc)
done
#echo sum=$sum
#echo count=$count
res=$(echo "scale=2; $sum / $count" | bc 2> /dev/null )
count=$(echo $res|wc -w)
if [ $count = 1 ]; then
echo -n $res
else
echo -n "0"
fi
}
get_raw_results()
{
get_raw_perf_results $tests_that_ran
get_raw_size_results $tests_that_ran
#get_raw_fde_results $tests_that_ran
}
get_raw_perf_results()
{
configs="$*"
first_config=$1
echo "--------------------------------------------------------------"
echo "Performance results are:"
echo "--------------------------------------------------------------"
echo benchmark $configs
for bench in $all_benchmarks
do
echo -n "$bench "
for config in $*
do
get_result $bench $config
echo -n " "
done
echo
done
}
get_raw_size_results()
{
echo "--------------------------------------------------------------"
echo "Size results are:"
echo "--------------------------------------------------------------"
configs=$*
echo benchmark $configs
for bench in $SPEC/result.$first_config/*mytest-m64
do
echo -n "$(basename $bench _base.mytest-m64) "
for config in $*
do
if [[ $config == "baseline" ]]; then
file="$SPEC/result.$config/$(basename $bench)"
cp $file /tmp/foo.exe
strip /tmp/foo.exe
file="/tmp/foo.exe"
else
file="$SPEC/result.$config/$(basename $bench)"
fi
res=$(get_size_result $file)
#printf "%15s" $res
echo -n " $res"
done
echo
done
}
get_raw_fde_results()
{
echo "--------------------------------------------------------------"
echo "FDE results are:"
echo "--------------------------------------------------------------"
configs=$*
echo benchmark $configs
for bench in $SPEC/result.$first_config/*mytest-m64
do
#printf "%-20s" $(basename $bench _base.amd64-m64-gcc42-nn)
echo -n $(basename $bench _base.amd64-m64-gcc42-nn)
for config in $*
do
file="$SPEC/result.$config/$(basename $bench)"
res=$(readelf -w $file |grep FDE|wc -l )
#if [[ $config == "baseline" ]]; then
#else
#fi
#printf "%15s" $res
echo -n " $res"
done
echo
done
}
main()
{
local zipr_flags=" --backend zipr --step-option zipr:--add-sections --step-option zipr:true"
local rida_flags=" -c rida "
local trace_flags=" --step-option zipr:--traceplacement:on --step-option zipr:true"
local relax_flags=" --step-option zipr:--relax:on --step-option zipr:true --step-option zipr:--unpin:on --step-option zipr:false"
local nounpin_flags=" --step-option zipr:--unpin:on --step-option zipr:false"
local split_flags=" --step-option fill_in_indtargs:--split-eh-frame "
local icall_flags=" --step-option fix_calls:--no-fix-icalls "
local p1flags=" -c p1transform=on "
local zafl_flags=" "
local zafl_domgraphflags=" -d "
# sets $SPEC
setup
local nops_config=$SPEC/config/ubuntu14.cfg
local withps_config=$SPEC/config/ubuntu14_withps.cfg
# baseline
run_test baseline $SPEC/config/ubuntu14.cfg "$all_benchmarks"
PSOPTS="$zipr_flags $rida_flags " run_test zipr.rida $withps_config "$all_benchmarks"
PS="zafl.sh" PSOPTS="$zafl_flags " run_test zafl.vanilla $withps_config "$all_benchmarks"
PS="zafl.sh" PSOPTS="$zafl_domgraph_flags " run_test zafl.domgraph $withps_config "$all_benchmarks"
get_raw_results
}
main "$@"
# @HEADER_LANG python # @HEADER_LANG python
# @HEADER_COMPONENT zafl # @HEADER_COMPONENT zafl
# @HEADER_BEGIN # @HEADER_BEGIN
# #
# Copyright (c) 2018-2019 Zephyr Software LLC # Copyright (c) 2018-2021 Zephyr Software LLC
# #
# This file may be used and modified for non-commercial purposes as long as # Redistribution and use in source and binary forms, with or without
# all copyright, permission, and nonwarranty notices are preserved. # modification, are permitted provided that the following conditions are
# Redistribution is prohibited without prior written consent from Zephyr # met:
# Software. #
# # (1) Redistributions of source code must retain the above copyright
# Please contact the authors for restrictions applying to commercial use. # notice, this list of conditions and the following disclaimer.
# #
# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED # (2) Redistributions in binary form must reproduce the above copyright
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # notice, this list of conditions and the following disclaimer in
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # the documentation and/or other materials provided with the
# # distribution.
# Author: Zephyr Software #
# e-mail: jwd@zephyr-software.com # (3)The name of the author may not be used to
# URL : http://www.zephyr-software.com/ # endorse or promote products derived from this software without
# # specific prior written permission.
# This software was developed with SBIR funding and is subject to SBIR Data Rights, #
# as detailed below. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# SBIR DATA RIGHTS # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
# Contract No. __FA8750-17-C-0295___________________________. # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# Contractor Name __Zephyr Software LLC_____________________. # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# Address __4826 Stony Point Rd, Barboursville, VA 22923____. # 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.
#
# @HEADER_END # @HEADER_END
import os import os
......
# @HEADER_LANG python # @HEADER_LANG python
# @HEADER_COMPONENT zafl # @HEADER_COMPONENT zafl
# @HEADER_BEGIN # @HEADER_BEGIN
# #
# Copyright (c) 2018-2019 Zephyr Software LLC # Copyright (c) 2018-2021 Zephyr Software LLC
# #
# This file may be used and modified for non-commercial purposes as long as # Redistribution and use in source and binary forms, with or without
# all copyright, permission, and nonwarranty notices are preserved. # modification, are permitted provided that the following conditions are
# Redistribution is prohibited without prior written consent from Zephyr # met:
# Software. #
# # (1) Redistributions of source code must retain the above copyright
# Please contact the authors for restrictions applying to commercial use. # notice, this list of conditions and the following disclaimer.
# #
# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED # (2) Redistributions in binary form must reproduce the above copyright
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # notice, this list of conditions and the following disclaimer in
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # the documentation and/or other materials provided with the
# # distribution.
# Author: Zephyr Software #
# e-mail: jwd@zephyr-software.com # (3)The name of the author may not be used to
# URL : http://www.zephyr-software.com/ # endorse or promote products derived from this software without
# # specific prior written permission.
# This software was developed with SBIR funding and is subject to SBIR Data Rights, #
# as detailed below. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# SBIR DATA RIGHTS # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
# Contract No. __FA8750-17-C-0295___________________________. # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# Contractor Name __Zephyr Software LLC_____________________. # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# Address __4826 Stony Point Rd, Barboursville, VA 22923____. # 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.
#
# @HEADER_END # @HEADER_END
......
...@@ -2,32 +2,35 @@ ...@@ -2,32 +2,35 @@
// @HEADER_COMPONENT zafl // @HEADER_COMPONENT zafl
// @HEADER_BEGIN // @HEADER_BEGIN
/* /*
* Copyright (c) 2018-2019 Zephyr Software LLC Copyright (c) 2018-2021 Zephyr Software LLC
*
* This file may be used and modified for non-commercial purposes as long as Redistribution and use in source and binary forms, with or without
* all copyright, permission, and nonwarranty notices are preserved. modification, are permitted provided that the following conditions are
* Redistribution is prohibited without prior written consent from Zephyr met:
* Software.
* (1) Redistributions of source code must retain the above copyright
* Please contact the authors for restrictions applying to commercial use. notice, this list of conditions and the following disclaimer.
*
* THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED (2) Redistributions in binary form must reproduce the above copyright
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF notice, this list of conditions and the following disclaimer in
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. the documentation and/or other materials provided with the
* distribution.
* Author: Zephyr Software
* e-mail: jwd@zephyr-software.com (3) The name of the author may not be used to
* URL : http://www.zephyr-software.com/ endorse or promote products derived from this software without
* specific prior written permission.
* This software was developed with SBIR funding and is subject to SBIR Data Rights,
* as detailed below. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* SBIR DATA RIGHTS WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* Contract No. __FA8750-17-C-0295___________________________. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* Contractor Name __Zephyr Software LLC_____________________. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* Address __4826 Stony Point Rd, Barboursville, VA 22923____. 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.
*/ */
// @HEADER_END // @HEADER_END
......
...@@ -2,32 +2,35 @@ ...@@ -2,32 +2,35 @@
// @HEADER_COMPONENT zafl // @HEADER_COMPONENT zafl
// @HEADER_BEGIN // @HEADER_BEGIN
/* /*
* Copyright (c) 2018-2019 Zephyr Software LLC Copyright (c) 2018-2021 Zephyr Software LLC
*
* This file may be used and modified for non-commercial purposes as long as Redistribution and use in source and binary forms, with or without
* all copyright, permission, and nonwarranty notices are preserved. modification, are permitted provided that the following conditions are
* Redistribution is prohibited without prior written consent from Zephyr met:
* Software.
* (1) Redistributions of source code must retain the above copyright
* Please contact the authors for restrictions applying to commercial use. notice, this list of conditions and the following disclaimer.
*
* THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED (2) Redistributions in binary form must reproduce the above copyright
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF notice, this list of conditions and the following disclaimer in
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. the documentation and/or other materials provided with the
* distribution.
* Author: Zephyr Software
* e-mail: jwd@zephyr-software.com (3) The name of the author may not be used to
* URL : http://www.zephyr-software.com/ endorse or promote products derived from this software without
* specific prior written permission.
* This software was developed with SBIR funding and is subject to SBIR Data Rights,
* as detailed below. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* SBIR DATA RIGHTS WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* Contract No. __FA8750-17-C-0295___________________________. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* Contractor Name __Zephyr Software LLC_____________________. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* Address __4826 Stony Point Rd, Barboursville, VA 22923____. 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.
*/ */
// @HEADER_END // @HEADER_END
......
...@@ -2,32 +2,35 @@ ...@@ -2,32 +2,35 @@
// @HEADER_COMPONENT zafl // @HEADER_COMPONENT zafl
// @HEADER_BEGIN // @HEADER_BEGIN
/* /*
* Copyright (c) 2018-2019 Zephyr Software LLC Copyright (c) 2018-2021 Zephyr Software LLC
*
* This file may be used and modified for non-commercial purposes as long as Redistribution and use in source and binary forms, with or without
* all copyright, permission, and nonwarranty notices are preserved. modification, are permitted provided that the following conditions are
* Redistribution is prohibited without prior written consent from Zephyr met:
* Software.
* (1) Redistributions of source code must retain the above copyright
* Please contact the authors for restrictions applying to commercial use. notice, this list of conditions and the following disclaimer.
*
* THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED (2) Redistributions in binary form must reproduce the above copyright
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF notice, this list of conditions and the following disclaimer in
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. the documentation and/or other materials provided with the
* distribution.
* Author: Zephyr Software
* e-mail: jwd@zephyr-software.com (3) The name of the author may not be used to
* URL : http://www.zephyr-software.com/ endorse or promote products derived from this software without
* specific prior written permission.
* This software was developed with SBIR funding and is subject to SBIR Data Rights,
* as detailed below. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* SBIR DATA RIGHTS WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* Contract No. __FA8750-17-C-0295___________________________. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* Contractor Name __Zephyr Software LLC_____________________. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* Address __4826 Stony Point Rd, Barboursville, VA 22923____. 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.
*/ */
// @HEADER_END // @HEADER_END
......
# @HEADER_LANG python # @HEADER_LANG python
# @HEADER_COMPONENT zafl # @HEADER_COMPONENT zafl
# @HEADER_BEGIN # @HEADER_BEGIN
# #
# Copyright (c) 2018-2019 Zephyr Software LLC # Copyright (c) 2018-2021 Zephyr Software LLC
# #
# This file may be used and modified for non-commercial purposes as long as # Redistribution and use in source and binary forms, with or without
# all copyright, permission, and nonwarranty notices are preserved. # modification, are permitted provided that the following conditions are
# Redistribution is prohibited without prior written consent from Zephyr # met:
# Software. #
# # (1) Redistributions of source code must retain the above copyright
# Please contact the authors for restrictions applying to commercial use. # notice, this list of conditions and the following disclaimer.
# #
# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED # (2) Redistributions in binary form must reproduce the above copyright
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # notice, this list of conditions and the following disclaimer in
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # the documentation and/or other materials provided with the
# # distribution.
# Author: Zephyr Software #
# e-mail: jwd@zephyr-software.com # (3)The name of the author may not be used to
# URL : http://www.zephyr-software.com/ # endorse or promote products derived from this software without
# # specific prior written permission.
# This software was developed with SBIR funding and is subject to SBIR Data Rights, #
# as detailed below. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# SBIR DATA RIGHTS # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
# Contract No. __FA8750-17-C-0295___________________________. # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# Contractor Name __Zephyr Software LLC_____________________. # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# Address __4826 Stony Point Rd, Barboursville, VA 22923____. # 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.
#
# @HEADER_END # @HEADER_END
import os import os
......
# @HEADER_LANG python # @HEADER_LANG python
# @HEADER_COMPONENT zafl # @HEADER_COMPONENT zafl
# @HEADER_BEGIN # @HEADER_BEGIN
# #
# Copyright (c) 2018-2019 Zephyr Software LLC # Copyright (c) 2018-2021 Zephyr Software LLC
# #
# This file may be used and modified for non-commercial purposes as long as # Redistribution and use in source and binary forms, with or without
# all copyright, permission, and nonwarranty notices are preserved. # modification, are permitted provided that the following conditions are
# Redistribution is prohibited without prior written consent from Zephyr # met:
# Software. #
# # (1) Redistributions of source code must retain the above copyright
# Please contact the authors for restrictions applying to commercial use. # notice, this list of conditions and the following disclaimer.
# #
# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED # (2) Redistributions in binary form must reproduce the above copyright
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # notice, this list of conditions and the following disclaimer in
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # the documentation and/or other materials provided with the
# # distribution.
# Author: Zephyr Software #
# e-mail: jwd@zephyr-software.com # (3)The name of the author may not be used to
# URL : http://www.zephyr-software.com/ # endorse or promote products derived from this software without
# # specific prior written permission.
# This software was developed with SBIR funding and is subject to SBIR Data Rights, #
# as detailed below. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# SBIR DATA RIGHTS # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
# Contract No. __FA8750-17-C-0295___________________________. # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# Contractor Name __Zephyr Software LLC_____________________. # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# Address __4826 Stony Point Rd, Barboursville, VA 22923____. # 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.
#
# @HEADER_END # @HEADER_END
env=Environment() env=Environment()
......
...@@ -2,32 +2,35 @@ ...@@ -2,32 +2,35 @@
// @HEADER_COMPONENT zafl // @HEADER_COMPONENT zafl
// @HEADER_BEGIN // @HEADER_BEGIN
/* /*
* Copyright (c) 2018-2019 Zephyr Software LLC Copyright (c) 2018-2021 Zephyr Software LLC
*
* This file may be used and modified for non-commercial purposes as long as Redistribution and use in source and binary forms, with or without
* all copyright, permission, and nonwarranty notices are preserved. modification, are permitted provided that the following conditions are
* Redistribution is prohibited without prior written consent from Zephyr met:
* Software.
* (1) Redistributions of source code must retain the above copyright
* Please contact the authors for restrictions applying to commercial use. notice, this list of conditions and the following disclaimer.
*
* THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED (2) Redistributions in binary form must reproduce the above copyright
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF notice, this list of conditions and the following disclaimer in
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. the documentation and/or other materials provided with the
* distribution.
* Author: Zephyr Software
* e-mail: jwd@zephyr-software.com (3) The name of the author may not be used to
* URL : http://www.zephyr-software.com/ endorse or promote products derived from this software without
* specific prior written permission.
* This software was developed with SBIR funding and is subject to SBIR Data Rights,
* as detailed below. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* SBIR DATA RIGHTS WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* Contract No. __FA8750-17-C-0295___________________________. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* Contractor Name __Zephyr Software LLC_____________________. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* Address __4826 Stony Point Rd, Barboursville, VA 22923____. 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.
*/ */
// @HEADER_END // @HEADER_END
......
...@@ -2,32 +2,35 @@ ...@@ -2,32 +2,35 @@
// @HEADER_COMPONENT zafl // @HEADER_COMPONENT zafl
// @HEADER_BEGIN // @HEADER_BEGIN
/* /*
* Copyright (c) 2018-2019 Zephyr Software LLC Copyright (c) 2018-2021 Zephyr Software LLC
*
* This file may be used and modified for non-commercial purposes as long as Redistribution and use in source and binary forms, with or without
* all copyright, permission, and nonwarranty notices are preserved. modification, are permitted provided that the following conditions are
* Redistribution is prohibited without prior written consent from Zephyr met:
* Software.
* (1) Redistributions of source code must retain the above copyright
* Please contact the authors for restrictions applying to commercial use. notice, this list of conditions and the following disclaimer.
*
* THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED (2) Redistributions in binary form must reproduce the above copyright
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF notice, this list of conditions and the following disclaimer in
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. the documentation and/or other materials provided with the
* distribution.
* Author: Zephyr Software
* e-mail: jwd@zephyr-software.com (3) The name of the author may not be used to
* URL : http://www.zephyr-software.com/ endorse or promote products derived from this software without
* specific prior written permission.
* This software was developed with SBIR funding and is subject to SBIR Data Rights,
* as detailed below. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* SBIR DATA RIGHTS WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* Contract No. __FA8750-17-C-0295___________________________. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* Contractor Name __Zephyr Software LLC_____________________. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* Address __4826 Stony Point Rd, Barboursville, VA 22923____. 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.
*/ */
// @HEADER_END // @HEADER_END
......
...@@ -2,32 +2,35 @@ ...@@ -2,32 +2,35 @@
// @HEADER_COMPONENT zafl // @HEADER_COMPONENT zafl
// @HEADER_BEGIN // @HEADER_BEGIN
/* /*
* Copyright (c) 2018-2019 Zephyr Software LLC Copyright (c) 2018-2021 Zephyr Software LLC
*
* This file may be used and modified for non-commercial purposes as long as Redistribution and use in source and binary forms, with or without
* all copyright, permission, and nonwarranty notices are preserved. modification, are permitted provided that the following conditions are
* Redistribution is prohibited without prior written consent from Zephyr met:
* Software.
* (1) Redistributions of source code must retain the above copyright
* Please contact the authors for restrictions applying to commercial use. notice, this list of conditions and the following disclaimer.
*
* THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED (2) Redistributions in binary form must reproduce the above copyright
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF notice, this list of conditions and the following disclaimer in
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. the documentation and/or other materials provided with the
* distribution.
* Author: Zephyr Software
* e-mail: jwd@zephyr-software.com (3) The name of the author may not be used to
* URL : http://www.zephyr-software.com/ endorse or promote products derived from this software without
* specific prior written permission.
* This software was developed with SBIR funding and is subject to SBIR Data Rights,
* as detailed below. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* SBIR DATA RIGHTS WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* Contract No. __FA8750-17-C-0295___________________________. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* Contractor Name __Zephyr Software LLC_____________________. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* Address __4826 Stony Point Rd, Barboursville, VA 22923____. 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.
*/ */
// @HEADER_END // @HEADER_END
......
...@@ -2,32 +2,35 @@ ...@@ -2,32 +2,35 @@
// @HEADER_COMPONENT zafl // @HEADER_COMPONENT zafl
// @HEADER_BEGIN // @HEADER_BEGIN
/* /*
* Copyright (c) 2018-2019 Zephyr Software LLC Copyright (c) 2018-2021 Zephyr Software LLC
*
* This file may be used and modified for non-commercial purposes as long as Redistribution and use in source and binary forms, with or without
* all copyright, permission, and nonwarranty notices are preserved. modification, are permitted provided that the following conditions are
* Redistribution is prohibited without prior written consent from Zephyr met:
* Software.
* (1) Redistributions of source code must retain the above copyright
* Please contact the authors for restrictions applying to commercial use. notice, this list of conditions and the following disclaimer.
*
* THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED (2) Redistributions in binary form must reproduce the above copyright
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF notice, this list of conditions and the following disclaimer in
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. the documentation and/or other materials provided with the
* distribution.
* Author: Zephyr Software
* e-mail: jwd@zephyr-software.com (3) The name of the author may not be used to
* URL : http://www.zephyr-software.com/ endorse or promote products derived from this software without
* specific prior written permission.
* This software was developed with SBIR funding and is subject to SBIR Data Rights,
* as detailed below. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* SBIR DATA RIGHTS WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* Contract No. __FA8750-17-C-0295___________________________. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* Contractor Name __Zephyr Software LLC_____________________. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* Address __4826 Stony Point Rd, Barboursville, VA 22923____. 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.
*/ */
// @HEADER_END // @HEADER_END
......
...@@ -2,32 +2,35 @@ ...@@ -2,32 +2,35 @@
// @HEADER_COMPONENT zafl // @HEADER_COMPONENT zafl
// @HEADER_BEGIN // @HEADER_BEGIN
/* /*
* Copyright (c) 2018-2019 Zephyr Software LLC Copyright (c) 2018-2021 Zephyr Software LLC
*
* This file may be used and modified for non-commercial purposes as long as Redistribution and use in source and binary forms, with or without
* all copyright, permission, and nonwarranty notices are preserved. modification, are permitted provided that the following conditions are
* Redistribution is prohibited without prior written consent from Zephyr met:
* Software.
* (1) Redistributions of source code must retain the above copyright
* Please contact the authors for restrictions applying to commercial use. notice, this list of conditions and the following disclaimer.
*
* THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED (2) Redistributions in binary form must reproduce the above copyright
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF notice, this list of conditions and the following disclaimer in
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. the documentation and/or other materials provided with the
* distribution.
* Author: Zephyr Software
* e-mail: jwd@zephyr-software.com (3) The name of the author may not be used to
* URL : http://www.zephyr-software.com/ endorse or promote products derived from this software without
* specific prior written permission.
* This software was developed with SBIR funding and is subject to SBIR Data Rights,
* as detailed below. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* SBIR DATA RIGHTS WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* Contract No. __FA8750-17-C-0295___________________________. INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* Contractor Name __Zephyr Software LLC_____________________. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* Address __4826 Stony Point Rd, Barboursville, VA 22923____. 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.
*/ */
// @HEADER_END // @HEADER_END
......