From 693cd1192757b52ef42f1ffb4695ae4f6fca43c4 Mon Sep 17 00:00:00 2001
From: jdh8d <jdh8d@git.zephyr-software.com>
Date: Mon, 25 Sep 2017 15:36:35 +0000
Subject: [PATCH] Better EH verbose messages for zipr, stack stamping+EH
 support, a new cfar config (NOG+SS vrs NogOF+SS), as well as an IR refinement
 technique to do recursive-decent disassembly when a landing pad is not part
 of a function.

Former-commit-id: 7fc665e949b9b78dce836b8d181faa509e2e7e8d
---
 .gitattributes                                 |  1 +
 cpp-examples/testit.sh                         | 18 +++++++++++++-----
 .../cfar_structNog_structSS_phase1_zipr.sh     |  6 ++++++
 3 files changed, 20 insertions(+), 5 deletions(-)
 create mode 100755 tools/cfar_configs/cfar_structNog_structSS_phase1_zipr.sh

diff --git a/.gitattributes b/.gitattributes
index 3168e2d82..0f7de35af 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -986,6 +986,7 @@ tools/cfar_configs/cfar_structNogOF_structSS_structDS_phase1_zipr.sh -text
 tools/cfar_configs/cfar_structNog_phase1_zipr.sh -text
 tools/cfar_configs/cfar_structNog_structNol_structNoh_structNos_structNoc_probHeaprand_zipr.sh -text
 tools/cfar_configs/cfar_structNog_structNol_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh -text
+tools/cfar_configs/cfar_structNog_structSS_phase1_zipr.sh -text
 tools/cfar_configs/cfar_structNoh_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh -text
 tools/cfar_configs/cfar_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh -text
 tools/cfar_configs/cfar_structNol_structNoh_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh -text
diff --git a/cpp-examples/testit.sh b/cpp-examples/testit.sh
index f446d187e..5cf57205e 100755
--- a/cpp-examples/testit.sh
+++ b/cpp-examples/testit.sh
@@ -1,18 +1,23 @@
 #!/bin/bash
 
-src_files="derived4_throw.cpp derived3_throw.cpp derived2_throw.cpp  derived_throw.cpp simple_throw.cpp throw.cpp "
+src_files=" simple_throw.cpp throw.cpp derived_throw.cpp derived2_throw.cpp  derived3_throw.cpp derived4_throw.cpp "
 throws="THROW_INT THROW_CHAR THROW_FLOAT"
 
 #---------------
 
 compare()
 {
+
+	rm -f good.txt xform.txt 
+
 	env $1 ./a.out > good.txt 2>&1 
+	exit1=$?
 	env $1 ./xxx > xform.txt 2>&1 
+	exit2=$?
 
 	cmp good.txt xform.txt > /dev/null 2>&1
 
-	if [ $? != 0 ]; then
+	if [[ $? != 0 ]] || [[ $exit1 != $exit2 ]]; then
 		echo "Failed test: $1"; 
 		diff good.txt xform.txt
 		exit 2
@@ -27,7 +32,7 @@ doit()
 
 	echo  "------------------------------------------------------"
 	echo "Trying $src with options: $options"
-	echo "And psflags=$psflags "
+	echo "And psflags=$psopts "
 	g++ -w $options $src 
 	rm -Rf peasoup_executable_direc*
 	EHIR_VERBOSE=1 $PSZ ./a.out ./xxx --step-option fill_in_indtargs:--split-eh-frame --step-option zipr:'--add-sections true' 	$psopts
@@ -38,6 +43,8 @@ doit()
 	do
 		compare $throw=1	
 	done
+	echo "Passed test!"
+	echo  "------------------------------------------------------"
 }
 
 
@@ -61,8 +68,9 @@ main()
 	do
 		for option in -O0 -O1 -O2 -O3 -Os -Og
 		do
-			doit_meta $src "$option" ""
-			doit_meta $src "$option" "--step p1transform=on"
+			#doit_meta $src "$option" ""
+			#doit_meta $src "$option" "--step p1transform=on"
+			doit_meta $src "$option" "--step stack_stamp=on"
 		done
 	done
 }
diff --git a/tools/cfar_configs/cfar_structNog_structSS_phase1_zipr.sh b/tools/cfar_configs/cfar_structNog_structSS_phase1_zipr.sh
new file mode 100755
index 000000000..533a59e04
--- /dev/null
+++ b/tools/cfar_configs/cfar_structNog_structSS_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/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_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true " --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp
+
-- 
GitLab