diff --git a/.gitattributes b/.gitattributes
index 081570451de17e26fb3e0ee67bbcad22ed6db8b9..b5e6f64b6f940d692df2a25d02b881a654366c88 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -38,6 +38,7 @@ c++_examples/newdel_broke4.cpp -text
 c++_examples/newdel_broke5.cpp -text
 c++_examples/newdel_broke6.cpp -text
 c++_examples/newdel_broke7.cpp -text
+c++_examples/throw.cpp -text
 chopzero_src/Makefile -text
 chopzero_src/chopzero.c -text
 demos/Makefile -text
diff --git a/c++_examples/Makefile b/c++_examples/Makefile
index 51dc91f0361c27be91eb846d5ef9fbc0eded1a4f..9b4dd60088d896b44a8666f4458e84e81e2e1154 100644
--- a/c++_examples/Makefile
+++ b/c++_examples/Makefile
@@ -5,9 +5,9 @@ CXX=DO_NOT_USE
 CFLAGS=DO_NOT_USE
 LD=DO_NOT_USE
 
-.SUFFIXES: .o .c .cpp .exe
+.SUFFIXES: .o .c .cpp .stock .protected
 
-exes=hanoi++.exe newdel.exe newdel_broke1.exe newdel_broke2.exe newdel_broke3.exe newdel_broke4.exe newdel_broke5.exe  newdel_broke6.exe  newdel_broke7.exe 
+exes=hanoi++.protected newdel.protected newdel_broke1.protected newdel_broke2.protected newdel_broke3.protected newdel_broke4.protected newdel_broke5.protected  newdel_broke6.protected  newdel_broke7.protected  throw.protected
 
 
 all: env_check  ${exes}
@@ -16,10 +16,11 @@ all: env_check  ${exes}
 
 .PHONY: env_check 
 
+.stock.protected:
+	${PEASOUP_HOME}/tools/ps_analyze.sh  $< $@
 
-.o.exe:
-	g++ $< -o $@ 
-	${PEASOUP_HOME}/tools/ps_analyze.sh  $@ $@
+.o.stock:
+	g++ -static -Bstatic $< -o $@ 
 
 .c.o:
 	${PEASOUP_HOME}/tools/ps_comp.sh $< 
@@ -56,7 +57,7 @@ env_check:
 
 clean:
 	rm -f *.o *.syms *.map chopzero hanoi hanoi_overrun hanoi_heap_overrun malloc block_copy print_ptr hanoi_stack_overrun dumbledore a.out memcpy hanoi_overrun_taintedenv dumbledore_cmd hanoi_overrun_tainted hello cmd_args_005
-	rm -f *.exe *.dis *.data *.idb *.log *.ncexe *.annot *.readelf temp.* *.temp *.stratafied *.asm *.SMPobjdump *.id0 *.id1 *.til *.nam
+	rm -f *.stock *.dis *.data *.idb *.log *.ncexe *.annot *.readelf temp.* *.temp *.stratafied *.asm *.SMPobjdump *.id0 *.id1 *.til *.nam *.protected
 	rm -Rf concolic.files_*
 	rm -Rf peasoup_executable_directory.*
 	rm -f strata.log.*
diff --git a/c++_examples/throw.cpp b/c++_examples/throw.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..783c6bc88dc2ebc38b72c898019fef8ab715b372
--- /dev/null
+++ b/c++_examples/throw.cpp
@@ -0,0 +1,31 @@
+
+#include <iostream>
+#include <string>
+using namespace std;
+
+void bar()
+{
+	throw string("Print this string");
+}
+
+void foo()
+{
+	string s=" shoult not print ";
+	bar();
+	cout<<s<<endl;
+
+}
+main()
+{
+
+	try	
+	{
+		foo();
+	}
+	catch(string s)
+	{
+		cout<<"Threw string s:" << s << endl;
+	}
+
+}
+
diff --git a/tools/ps_analyze.sh b/tools/ps_analyze.sh
index a229bbe67286bf72e75a6e8fbb879b007b33bbcd..981afdfa34f37bc2c2553733216dc6936d49a810 100755
--- a/tools/ps_analyze.sh
+++ b/tools/ps_analyze.sh
@@ -326,6 +326,16 @@ orig_exe=$1
 newname=a
 shift
 
+
+#
+# sanity check incoming arg.
+#
+if [ ! -f $orig_exe ]; then
+	echo ps_analyze cannot find file named $orig_exe.
+	echo exiting...	
+	exit -2
+fi
+
 #
 # record the new program's name
 #