diff --git a/.gitignore b/.gitignore index 61312c8df5bdf7cf5b44f754cd81960c482d58ca..5ac251f57ade35c78aee7ef6eccac065491e33f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ cgc_spri/spawner chopzero_src/chopzero manifest.txt.config +tests/tmp* diff --git a/tests/bin_search/bin_search.du.sh b/tests/bin_search/bin_search.du.sh new file mode 100755 index 0000000000000000000000000000000000000000..d1a9e2805782bfd7629f8fd651bacd8d9226c204 --- /dev/null +++ b/tests/bin_search/bin_search.du.sh @@ -0,0 +1,101 @@ +#!/bin/bash + +start=0 +end=10000 +orig=$(realpath `which du`) + +protect() +{ + stop_at=$1 + out=$2 + + echo "Trying first $stop_at xforms." + set -x + + ZAFL_LIMIT_END=$stop_at zafl.sh $orig $out -o zafl:-v --tempdir results/peasoup.bin_search.$stop_at > $out.ps_output 2>&1 + + set +x + +} + +get_test_result() +{ + curdir=$PWD + exe=$(realpath $1) + touch $2 + exe_output=$(realpath $2) + + $exe -bh /home/an7s/zafl_umbrella/zipr_umbrella/peasoup_examples/tests/du/data >$exe_output 2>&1 + echo $? >> $exe_output +} + + +#################################################################################################### +# should need no changes after here +#################################################################################################### + +bin_search() +{ + my_start=$1 + my_end=$2 + my_orig=$3 + my_out_pattern=$4 + my_exe_pattern=$5 + my_correct_results=$6 + + while [[ $my_start -lt $(($my_end - 1)) ]] + do + mid=$(( ($my_start + $my_end) / 2 )) + echo "start=$my_start end=$my_end mid=$mid" + protect $mid $exe_pattern.$mid + get_test_result $exe_pattern.$mid $out_pattern.$mid + cmp $my_correct_results $my_out_pattern.$mid > /dev/null 2>&1 + if [ $? != 0 ]; then + # diff observed + echo "Detected that $mid generates differences"; + my_end=$(($mid)) + else + echo "Detected that $mid generates the same output"; + my_start=$(($mid)) + fi + + done + echo "Binary Search Complete. correct=$my_start broken=$my_end" + +} + +main() +{ + out_pattern=results/bin_search.out + exe_pattern=results/$(basename $orig).xform + correct_results=correct.txt + + + get_test_result $orig $correct_results + protect $start $exe_pattern.$start + get_test_result $exe_pattern.$start $out_pattern.$start + cmp correct.txt $out_pattern.$start > /dev/null 2>&1 + if [ $? != 0 ]; then + echo "starting point also fails test." + exit 1 + fi + + protect $end $exe_pattern.$end + get_test_result $exe_pattern.$end $out_pattern.$end + cmp correct.txt $out_pattern.$end > /dev/null 2>&1 + if [ $? == 0 ]; then + echo "Ending point doesn't fail test!" + exit 1 + fi + + bin_search $start $end $orig $out_pattern $exe_pattern $correct_results + + exit 0 + +} + +main + + + + diff --git a/tests/test_cmds.sh b/tests/test_cmds.sh index 7d93a01f3576aa653881571984b1bc2973c8f4d0..69837d16aaddc9b04a52b36fea68c8f0a29fa296 100755 --- a/tests/test_cmds.sh +++ b/tests/test_cmds.sh @@ -62,8 +62,8 @@ do progpath=$(which $prog) - if [ ! -e $progpath ]; then - echo "$prog not found: skipping..." + if [ "$progpath" = "" ]; then + echo "TEST: Original binary ($prog) not found: skipping..." continue fi @@ -75,6 +75,9 @@ do zafl) zafl.sh $progpath $protected --tempdir $temp_dir > test_${prog}.ps.log 2>&1 ;; + zafl0) + ZAFL_LIMIT_END=0 zafl.sh $progpath $protected --tempdir $temp_dir > test_${prog}.ps.log 2>&1 + ;; zafl_rida) zafl.sh $progpath $protected --rida --tempdir $temp_dir > test_${prog}.ps.log 2>&1 ;; diff --git a/tools/cfar.sh b/tools/cfar.sh index 9720ab1680cf3b8415e9a07390a51d6ad550de93..43244b8ae8f9c8842f88488aeb44e828eaa3f492 100755 --- a/tools/cfar.sh +++ b/tools/cfar.sh @@ -104,7 +104,7 @@ done # add default options for cfar which asks ps_analyze to fill in a variant specification for what it did. # and also by default dump the IRDB mapping information, useful for debugging. -new_cmd_line_options+=(--step generate_variant_config=on --step dump_map=on --step-option zipr:"--add-sections true --bss-opts false") +new_cmd_line_options+=(--step generate_variant_config=on -s rida=on -s meds_static=off --step dump_map=on --step-option zipr:"--add-sections true --bss-opts false") # # figure out a place for ps_analyze to work so we can examine results. diff --git a/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_zipr.sh b/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_zipr.sh index d98c46483e704f1c92294e53a99ed5ac3af89b4f..b03787ea415ea187221b5de47f946133f43cb175 100755 --- a/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_zipr.sh +++ b/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_zipr.sh @@ -1,5 +1,5 @@ #!/bin/bash source $(dirname $0)/../ps_wrapper.source $0 -$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step-option zipr:"--large_only:nog_on true" --step-option move_globals:-d --step-option move_globals:.interp +$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step-option zipr:"--large_only:nog_on true" --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive diff --git a/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_zipr.sh b/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_zipr.sh index cb7c4b3d7410f776c1c89f0e078b6006e781df4e..ab8d95ccd017c92ec7cd836a83c87a916b373548 100755 --- a/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_zipr.sh +++ b/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_zipr.sh @@ -1,4 +1,4 @@ #!/bin/bash source $(dirname $0)/../ps_wrapper.source $0 -$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --step-option zipr:"--large_only:on true" --structured_p1_canaries --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --structured_nog --step-option zipr:"--large_only:nog_on true" --step-option move_globals:-d --step-option move_globals:.interp +$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --step-option zipr:"--large_only:on true" --structured_p1_canaries --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --structured_nog --step-option zipr:"--large_only:nog_on true" --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive diff --git a/tools/generate_mvee_package.sh b/tools/generate_mvee_package.sh index cc85724aa36c2c743342c1f52c144fda33c7c012..517686bdca6da0299863695568c4825dd3806493 100755 --- a/tools/generate_mvee_package.sh +++ b/tools/generate_mvee_package.sh @@ -957,15 +957,24 @@ finalize_json() fi if [ "x"$use_noh = "x--enablenoh" ]; then ld_preload_var="/variant_specific/noh.so:$ld_preload_var" - #json_contents="${json_contents//<<ENV>>/\"NUMVARIANTS=$total_variants\",<<ENV>>}" fi # remove leading/trailing spaces. ld_preload_var=${ld_preload_var%% } ld_preload_var=${ld_preload_var## } ld_preload_var="${ld_preload_var}:$extra_preloads" - json_contents="${json_contents//<<ENV>>/\"LD_PRELOAD=$ld_preload_var\",<<ENV>>}" + # deal with extra ENV from supplement + if [[ ! -z $sad_file ]] ; then + sad_contents=$(cat $sad_file |jq .additional_env) + if [[ $sad_contents != 'null' ]]; then + sad_contents=$(echo "$sad_contents" |head -n -1|tail -n +2) # trim open and close []'s + if [[ ! -z $sad_contents ]]; then + json_contents="${json_contents//<<ENV>>/$sad_contents,<<ENV>>}" + fi + fi + fi + # if we are supposed to include checkpoint/restore lines in the file if [ "x"$use_includecr = "x--include-cr" ]; then echo "Including C/R support." diff --git a/tools/ps_zipr_rida.sh b/tools/ps_zipr_rida.sh new file mode 100755 index 0000000000000000000000000000000000000000..91bb54b1a77654ee8a7de530159b7c34279d913c --- /dev/null +++ b/tools/ps_zipr_rida.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +source $(dirname $0)/ps_wrapper.source $0 +$PEASOUP_HOME/tools/ps_analyze.sh "$@" --backend zipr -s meds_static=off -s rida=on