From 3df141b1ebfce658b201216e27476f51d27a68e6 Mon Sep 17 00:00:00 2001
From: Jason Hiser <jdhiser@gmail.com>
Date: Mon, 4 Mar 2019 15:31:46 -0500
Subject: [PATCH] added building of builtin xforms

---
 .gitignore                                    |  1 +
 SConscript                                    |  5 +++-
 SConstruct                                    |  1 +
 builtin_xforms/add_lib/SConscript             | 14 +++++++----
 builtin_xforms/add_lib/al.cpp                 |  1 -
 builtin_xforms/move_globals/SConscript        | 22 +++++++++--------
 .../AnnotationBoundaryGenerator.cpp           |  4 +++-
 .../AnnotationBoundaryGenerator.hpp           | 12 +++++-----
 builtin_xforms/p1transform/PNMain.cpp         | 14 +++++------
 builtin_xforms/p1transform/SConscript         | 24 +++++++++----------
 builtin_xforms/resolve_callbacks/SConscript   | 22 +++++++----------
 11 files changed, 64 insertions(+), 56 deletions(-)

diff --git a/.gitignore b/.gitignore
index 67677395d..5953e4c85 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,4 @@ irdb-libs/scons_build/
 *.os
 *.so
 *.exe
+.*.swp
diff --git a/SConscript b/SConscript
index c12088c74..6e244b663 100644
--- a/SConscript
+++ b/SConscript
@@ -52,7 +52,10 @@ Export('env')
 
 # list of zipr plugins and irdb xforms to build
 transformDirs='''
-	irdb_transforms
+	builtin_xforms/add_lib  	
+	builtin_xforms/move_globals  	
+	builtin_xforms/p1transform  	
+	builtin_xforms/resolve_callbacks
 	zipr_push64_reloc_plugin
 	zipr
 	zipr_unpin_plugin
diff --git a/SConstruct b/SConstruct
index 524cf2db0..217ce0e12 100644
--- a/SConstruct
+++ b/SConstruct
@@ -14,6 +14,7 @@ env.Replace(SHLINKFLAGS="-fPIC -fmax-errors=2 -Wall -Werror -fmax-errors=2 -shar
 env.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
 env.Replace(IRDB_SDK=os.environ['IRDB_SDK'])
 env.Replace(SMPSA_HOME=os.environ['SMPSA_HOME'])
+env.Replace(PEASOUP_HOME=os.environ['PEASOUP_HOME'])
 env.Replace(debug=ARGUMENTS.get("debug",0))
 env.Replace(PEDI_HOME=os.environ['PEDI_HOME'])
 env.Replace(ZIPR_INSTALL=os.environ['ZIPR_INSTALL'])
diff --git a/builtin_xforms/add_lib/SConscript b/builtin_xforms/add_lib/SConscript
index 1a15530d2..4a770b8c1 100644
--- a/builtin_xforms/add_lib/SConscript
+++ b/builtin_xforms/add_lib/SConscript
@@ -2,19 +2,25 @@ import os
 
 
 
-Import('irdb_env')
+Import('env')
 
 # import and create a copy of the environment so we don't screw up anyone elses env.
-myenv=irdb_env.Clone()
+myenv=env.Clone()
 
-cpppath=myenv['IRDB_INC']
 files=Glob( Dir('.').srcnode().abspath+"/*.cpp")
 
+cpppath='''
+	$IRDB_SDK/include 
+	'''
+
+myenv.Append(CPPPATH=Split(cpppath))
+
+
+
 pgm="add_lib.exe"
 
 LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
 LIBS=Split("stars "+ myenv.subst('$BASE_IRDB_LIBS')+ " irdb-elfdep irdb-transform") 
-myenv=myenv.Clone(CPPPATH=Split(cpppath))
 pgm=myenv.Program(pgm,  files,  LIBPATH=LIBPATH, LIBS=LIBS)
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm)
 Default(install)
diff --git a/builtin_xforms/add_lib/al.cpp b/builtin_xforms/add_lib/al.cpp
index 32dda4d6b..0e7ad7220 100644
--- a/builtin_xforms/add_lib/al.cpp
+++ b/builtin_xforms/add_lib/al.cpp
@@ -12,7 +12,6 @@ AddLib_t::AddLib_t(FileIR_t* firp, const StringSet_t &p_prepended, const StringS
 {
 }
 
-	
 int AddLib_t::execute()
 {
 
diff --git a/builtin_xforms/move_globals/SConscript b/builtin_xforms/move_globals/SConscript
index 98e2b932f..bde873bfb 100644
--- a/builtin_xforms/move_globals/SConscript
+++ b/builtin_xforms/move_globals/SConscript
@@ -2,25 +2,27 @@ import os
 
 
 
-Import('irdb_env')
+Import('env')
 
 # import and create a copy of the environment so we don't screw up anyone elses env.
-myenv=irdb_env.Clone()
-myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
-myenv.Replace(ZIPR_HOME=os.environ['ZIPR_HOME'])
-myenv.Replace(ZIPR_SDK=os.environ['ZIPR_SDK'])
-myenv.Replace(ZIPR_INSTALL=os.environ['ZIPR_INSTALL'])
-myenv.Append(CXXFLAGS = " -std=c++11 -Wall ")
+myenv=env.Clone()
+
+cpppath='''
+	 $SECURITY_TRANSFORMS_HOME/third_party/elfio-code
+	 $PEASOUP_HOME/irdb-libs/libStructDiv/include
+	 $PEASOUP_HOME/irdb-libs/libEXEIO/include
+         $IRDB_SDK/include
+        '''
+
 
-cpppath=myenv['IRDB_INC'] + " $SECURITY_TRANSFORMS_HOME/third_party/elfio-code "
 
 files=Glob( Dir('.').srcnode().abspath+"/*.cpp")
 
 pgm="move_globals.so"
 
 LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
-LIBS=Split("stars "+ myenv.subst('$BASE_IRDB_LIBS')+ " irdb-cfg irdb-util irdb-transform irdb-deep StructDiv EXEIO ") 
-myenv=myenv.Clone(CPPPATH=Split(cpppath))
+LIBS=Split("irdb-core irdb-cfg irdb-util irdb-transform irdb-deep StructDiv EXEIO ") 
+myenv.Append(CPPPATH=Split(cpppath))
 pgm=myenv.SharedLibrary(pgm,  files,  LIBPATH=LIBPATH, LIBS=LIBS)
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm)
 Default(install)
diff --git a/builtin_xforms/p1transform/AnnotationBoundaryGenerator.cpp b/builtin_xforms/p1transform/AnnotationBoundaryGenerator.cpp
index 098c78260..d45f07e34 100644
--- a/builtin_xforms/p1transform/AnnotationBoundaryGenerator.cpp
+++ b/builtin_xforms/p1transform/AnnotationBoundaryGenerator.cpp
@@ -26,12 +26,13 @@
 
 using namespace std;
 using namespace IRDB_SDK;
-using namespace MEDS_Annotation;
 //using namespace MEDS_Annotation;
 
 
 vector<Range> AnnotationBoundaryGenerator::GetBoundaries(IRDB_SDK::Function_t *func)
 {
+	assert(0);
+#if 0
 	vector<Range> ranges;
 	
 //	std::multimap<VirtualOffset, MEDS_AnnotationBase> 
@@ -95,4 +96,5 @@ vector<Range> AnnotationBoundaryGenerator::GetBoundaries(IRDB_SDK::Function_t *f
 	}
 
 	return ranges;
+#endif
 }
diff --git a/builtin_xforms/p1transform/AnnotationBoundaryGenerator.hpp b/builtin_xforms/p1transform/AnnotationBoundaryGenerator.hpp
index 9f7e8e406..b426b5a37 100644
--- a/builtin_xforms/p1transform/AnnotationBoundaryGenerator.hpp
+++ b/builtin_xforms/p1transform/AnnotationBoundaryGenerator.hpp
@@ -21,19 +21,19 @@
 #ifndef __ANNOTBOUNDGEN
 #define __ANNOTBOUNDGEN
 #include "PrecedenceBoundaryGenerator.hpp"
-#include "MEDS_AnnotationParser.hpp"
-#include "MEDS_AnnotationBase.hpp"
-#include "MEDS_InstructionCheckAnnotation.hpp"
-#include "VirtualOffset.hpp"
+//#include "MEDS_AnnotationParser.hpp"
+//#include "MEDS_AnnotationBase.hpp"
+//#include "MEDS_InstructionCheckAnnotation.hpp"
+// #include "VirtualOffset.hpp"
 
 #include <fstream>
 
 class AnnotationBoundaryGenerator : public PrecedenceBoundaryGenerator
 {
 protected:
-	MEDS_Annotation::MEDS_AnnotationParser *annotParser;
+// 	MEDS_Annotation::MEDS_AnnotationParser *annotParser;
 public:
-	AnnotationBoundaryGenerator(MEDS_Annotation::MEDS_AnnotationParser *annotParser) : annotParser(annotParser){}
+//	AnnotationBoundaryGenerator(MEDS_Annotation::MEDS_AnnotationParser *annotParser) : annotParser(annotParser){}
 	virtual std::vector<Range> GetBoundaries(IRDB_SDK::Function_t *func);
 };
 
diff --git a/builtin_xforms/p1transform/PNMain.cpp b/builtin_xforms/p1transform/PNMain.cpp
index 1c1603e69..75c547505 100644
--- a/builtin_xforms/p1transform/PNMain.cpp
+++ b/builtin_xforms/p1transform/PNMain.cpp
@@ -33,7 +33,7 @@
 
 #include "PrecedenceBoundaryInference.hpp"
 #include "AnnotationBoundaryGenerator.hpp"
-#include "MEDS_AnnotationParser.hpp"
+// #include "MEDS_AnnotationParser.hpp"
 
 #include <iostream>
 #include <fstream>
@@ -48,7 +48,7 @@
 
 using namespace std;
 using namespace IRDB_SDK;
-using namespace MEDS_Annotation;
+// using namespace MEDS_Annotation;
 
 #define ALLOF(a) begin(a),end(a)
 
@@ -535,24 +535,24 @@ int executeStep(IRDBObjects_t *const irdb_objects)
 		ifstream annotationFile("a.ncexe.infoannot", ifstream::in);
 		assert(annotationFile.is_open());
 
-		AnnotationBoundaryGenerator *abgen = new AnnotationBoundaryGenerator(new MEDS_AnnotationParser(annotationFile));
+// 		AnnotationBoundaryGenerator *abgen = new AnnotationBoundaryGenerator(new MEDS_AnnotationParser(annotationFile));
 
-		PrecedenceBoundaryInference *aggressive_memset_inference = new PrecedenceBoundaryInference(offset_inference,abgen);
+// 		PrecedenceBoundaryInference *aggressive_memset_inference = new PrecedenceBoundaryInference(offset_inference,abgen);
 
 		DirectOffsetInference *direct_offset_inference = new DirectOffsetInference(offset_inference);
 		ScaledOffsetInference *scaled_offset_inference = new ScaledOffsetInference(offset_inference);
 		P1Inference *p1 = new P1Inference(offset_inference);
-		PrecedenceBoundaryInference *conservative_memset_inference = new PrecedenceBoundaryInference(p1, abgen);
+		// PrecedenceBoundaryInference *conservative_memset_inference = new PrecedenceBoundaryInference(p1, abgen);
 
 		//Add new boundary inferences here
 
 		//TODO: in addition to a hierarchy there should be equivalence classes, a failure in one member, is a failure for all. 
 
-		transform_driver.AddInference(aggressive_memset_inference);
+// 		transform_driver.AddInference(aggressive_memset_inference);
 		transform_driver.AddInference(offset_inference,1);
 		transform_driver.AddInference(direct_offset_inference,1);
 		transform_driver.AddInference(scaled_offset_inference,1);
-		transform_driver.AddInference(conservative_memset_inference,1);
+//		transform_driver.AddInference(conservative_memset_inference,1);
 		transform_driver.AddInference(p1,2);
 
 		transform_driver.AddBlacklist(blackListOfFunctions);
diff --git a/builtin_xforms/p1transform/SConscript b/builtin_xforms/p1transform/SConscript
index bee94540c..85bebeb8c 100644
--- a/builtin_xforms/p1transform/SConscript
+++ b/builtin_xforms/p1transform/SConscript
@@ -1,26 +1,26 @@
 import os
 
-Import('irdb_env')
-myenv=irdb_env.Clone()
-myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
+Import('env')
+myenv=env.Clone()
 
 
-cpppath=irdb_env['IRDB_INC'] + " $SECURITY_TRANSFORMS_HOME/libMEDSannotation/include "
+LIBS= " irdb-cfg irdb-transform irdb-core "
 
-LIBS= " irdb-cfg MEDSannotation irdb-transform EXEIO " + irdb_env.subst('$BASE_IRDB_LIBS') 
-LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
+cpppath='''
+        $IRDB_SDK/include
+	$PEASOUP_HOME/irdb-libs/libEXEIO/include
+        '''
 
-#integer_files="transformutils.cpp integertransformdriver.cpp"
+libpath="$SECURITY_TRANSFORMS_HOME/lib"
+myenv.Append(LIBPATH=Split(libpath))
+myenv.Append(CPPPATH=Split(cpppath))
 
-# doesn't work on solaris.
-myenv.Append(CXXFLAGS = " -std=c++11 ")
 
-all_files="P1_utility.cpp PNTransformDriver.cpp PNStackLayout.cpp PNRange.cpp Range.cpp OffsetInference.cpp DirectOffsetInference.cpp ScaledOffsetInference.cpp P1Inference.cpp PNRegularExpressions.cpp PNMain.cpp StackLayout.cpp General_Utility.cpp AnnotationBoundaryGenerator.cpp PrecedenceBoundaryInference.cpp PNIrdbManager.cpp EhUpdater.cpp"
 
 
-myenv=myenv.Clone(CPPPATH=Split(cpppath))
+all_files="P1_utility.cpp PNTransformDriver.cpp PNStackLayout.cpp PNRange.cpp Range.cpp OffsetInference.cpp DirectOffsetInference.cpp ScaledOffsetInference.cpp P1Inference.cpp PNRegularExpressions.cpp PNMain.cpp StackLayout.cpp General_Utility.cpp AnnotationBoundaryGenerator.cpp PrecedenceBoundaryInference.cpp PNIrdbManager.cpp EhUpdater.cpp"
 
-p1=myenv.SharedLibrary("p1transform.so", Split(all_files), LIBS=Split(LIBS), LIBPATH=Split(LIBPATH))
+p1=myenv.SharedLibrary("p1transform.so", Split(all_files), LIBS=Split(LIBS))
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", p1)
 Default(install)
 
diff --git a/builtin_xforms/resolve_callbacks/SConscript b/builtin_xforms/resolve_callbacks/SConscript
index ff326a6cc..7da12b8d3 100644
--- a/builtin_xforms/resolve_callbacks/SConscript
+++ b/builtin_xforms/resolve_callbacks/SConscript
@@ -1,23 +1,17 @@
-import os
 
+Import('env')
+myenv=env.Clone()
 
-Import('irdb_env')
-myenv=irdb_env.Clone()
-myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
 
-cpppath=irdb_env['IRDB_INC'] + " $SECURITY_TRANSFORMS_HOME/third_party/elfio-code/ "
-LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
-LIBS=Split( myenv.subst('$BASE_IRDB_LIBS') + " irdb-core irdb-cfg irdb-util irdb-transform MEDSannotation")
+cpppath=" $IRDB_SDK/include $SECURITY_TRANSFORMS_HOME/third_party/elfio-code/ "
+libpath="$SECURITY_TRANSFORMS_HOME/lib"
+LIBS=Split( " irdb-core irdb-cfg irdb-util irdb-transform ")
 
-if 'debug' in myenv and int(myenv['debug']) == 1:
-        print "Setting debug mode in resolve_callbacks"
-        myenv.Append(CFLAGS=" -g -O0")
-        myenv.Append(CXXFLAGS=" -g -O0")
-        myenv.Append(LINKFLAGS=" -g -O0")
 
-myenv=myenv.Clone(CPPPATH=Split(cpppath))
+myenv.Append(LIBPATH=Split(libpath))
+myenv.Append(CPPPATH=Split(cpppath))
 
-pgm=myenv.Program(target="resolve_callbacks.exe", source=Split("callbacks.cpp callbacks_driver.cpp"), LIBPATH=LIBPATH, LIBS=LIBS)
+pgm=myenv.Program(target="resolve_callbacks.exe", source=Split("callbacks.cpp callbacks_driver.cpp"), LIBS=LIBS)
 install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm)
 Default(install)
 Return('install')
-- 
GitLab