Skip to content
Snippets Groups Projects
Commit 3df141b1 authored by Jason Hiser's avatar Jason Hiser :tractor:
Browse files

added building of builtin xforms

parent c24f52da
No related branches found
No related tags found
No related merge requests found
Pipeline #2397 failed
...@@ -26,3 +26,4 @@ irdb-libs/scons_build/ ...@@ -26,3 +26,4 @@ irdb-libs/scons_build/
*.os *.os
*.so *.so
*.exe *.exe
.*.swp
...@@ -52,7 +52,10 @@ Export('env') ...@@ -52,7 +52,10 @@ Export('env')
# list of zipr plugins and irdb xforms to build # list of zipr plugins and irdb xforms to build
transformDirs=''' transformDirs='''
irdb_transforms builtin_xforms/add_lib
builtin_xforms/move_globals
builtin_xforms/p1transform
builtin_xforms/resolve_callbacks
zipr_push64_reloc_plugin zipr_push64_reloc_plugin
zipr zipr
zipr_unpin_plugin zipr_unpin_plugin
......
...@@ -14,6 +14,7 @@ env.Replace(SHLINKFLAGS="-fPIC -fmax-errors=2 -Wall -Werror -fmax-errors=2 -shar ...@@ -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(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
env.Replace(IRDB_SDK=os.environ['IRDB_SDK']) env.Replace(IRDB_SDK=os.environ['IRDB_SDK'])
env.Replace(SMPSA_HOME=os.environ['SMPSA_HOME']) 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(debug=ARGUMENTS.get("debug",0))
env.Replace(PEDI_HOME=os.environ['PEDI_HOME']) env.Replace(PEDI_HOME=os.environ['PEDI_HOME'])
env.Replace(ZIPR_INSTALL=os.environ['ZIPR_INSTALL']) env.Replace(ZIPR_INSTALL=os.environ['ZIPR_INSTALL'])
......
...@@ -2,19 +2,25 @@ import os ...@@ -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. # 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") files=Glob( Dir('.').srcnode().abspath+"/*.cpp")
cpppath='''
$IRDB_SDK/include
'''
myenv.Append(CPPPATH=Split(cpppath))
pgm="add_lib.exe" pgm="add_lib.exe"
LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
LIBS=Split("stars "+ myenv.subst('$BASE_IRDB_LIBS')+ " irdb-elfdep irdb-transform") 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) pgm=myenv.Program(pgm, files, LIBPATH=LIBPATH, LIBS=LIBS)
install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm)
Default(install) Default(install)
......
...@@ -12,7 +12,6 @@ AddLib_t::AddLib_t(FileIR_t* firp, const StringSet_t &p_prepended, const StringS ...@@ -12,7 +12,6 @@ AddLib_t::AddLib_t(FileIR_t* firp, const StringSet_t &p_prepended, const StringS
{ {
} }
int AddLib_t::execute() int AddLib_t::execute()
{ {
......
...@@ -2,25 +2,27 @@ import os ...@@ -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. # import and create a copy of the environment so we don't screw up anyone elses env.
myenv=irdb_env.Clone() myenv=env.Clone()
myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
myenv.Replace(ZIPR_HOME=os.environ['ZIPR_HOME']) cpppath='''
myenv.Replace(ZIPR_SDK=os.environ['ZIPR_SDK']) $SECURITY_TRANSFORMS_HOME/third_party/elfio-code
myenv.Replace(ZIPR_INSTALL=os.environ['ZIPR_INSTALL']) $PEASOUP_HOME/irdb-libs/libStructDiv/include
myenv.Append(CXXFLAGS = " -std=c++11 -Wall ") $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") files=Glob( Dir('.').srcnode().abspath+"/*.cpp")
pgm="move_globals.so" pgm="move_globals.so"
LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" LIBPATH="$SECURITY_TRANSFORMS_HOME/lib"
LIBS=Split("stars "+ myenv.subst('$BASE_IRDB_LIBS')+ " irdb-cfg irdb-util irdb-transform irdb-deep StructDiv EXEIO ") LIBS=Split("irdb-core irdb-cfg irdb-util irdb-transform irdb-deep StructDiv EXEIO ")
myenv=myenv.Clone(CPPPATH=Split(cpppath)) myenv.Append(CPPPATH=Split(cpppath))
pgm=myenv.SharedLibrary(pgm, files, LIBPATH=LIBPATH, LIBS=LIBS) pgm=myenv.SharedLibrary(pgm, files, LIBPATH=LIBPATH, LIBS=LIBS)
install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm)
Default(install) Default(install)
......
...@@ -26,12 +26,13 @@ ...@@ -26,12 +26,13 @@
using namespace std; using namespace std;
using namespace IRDB_SDK; using namespace IRDB_SDK;
using namespace MEDS_Annotation;
//using namespace MEDS_Annotation; //using namespace MEDS_Annotation;
vector<Range> AnnotationBoundaryGenerator::GetBoundaries(IRDB_SDK::Function_t *func) vector<Range> AnnotationBoundaryGenerator::GetBoundaries(IRDB_SDK::Function_t *func)
{ {
assert(0);
#if 0
vector<Range> ranges; vector<Range> ranges;
// std::multimap<VirtualOffset, MEDS_AnnotationBase> // std::multimap<VirtualOffset, MEDS_AnnotationBase>
...@@ -95,4 +96,5 @@ vector<Range> AnnotationBoundaryGenerator::GetBoundaries(IRDB_SDK::Function_t *f ...@@ -95,4 +96,5 @@ vector<Range> AnnotationBoundaryGenerator::GetBoundaries(IRDB_SDK::Function_t *f
} }
return ranges; return ranges;
#endif
} }
...@@ -21,19 +21,19 @@ ...@@ -21,19 +21,19 @@
#ifndef __ANNOTBOUNDGEN #ifndef __ANNOTBOUNDGEN
#define __ANNOTBOUNDGEN #define __ANNOTBOUNDGEN
#include "PrecedenceBoundaryGenerator.hpp" #include "PrecedenceBoundaryGenerator.hpp"
#include "MEDS_AnnotationParser.hpp" //#include "MEDS_AnnotationParser.hpp"
#include "MEDS_AnnotationBase.hpp" //#include "MEDS_AnnotationBase.hpp"
#include "MEDS_InstructionCheckAnnotation.hpp" //#include "MEDS_InstructionCheckAnnotation.hpp"
#include "VirtualOffset.hpp" // #include "VirtualOffset.hpp"
#include <fstream> #include <fstream>
class AnnotationBoundaryGenerator : public PrecedenceBoundaryGenerator class AnnotationBoundaryGenerator : public PrecedenceBoundaryGenerator
{ {
protected: protected:
MEDS_Annotation::MEDS_AnnotationParser *annotParser; // MEDS_Annotation::MEDS_AnnotationParser *annotParser;
public: 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); virtual std::vector<Range> GetBoundaries(IRDB_SDK::Function_t *func);
}; };
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#include "PrecedenceBoundaryInference.hpp" #include "PrecedenceBoundaryInference.hpp"
#include "AnnotationBoundaryGenerator.hpp" #include "AnnotationBoundaryGenerator.hpp"
#include "MEDS_AnnotationParser.hpp" // #include "MEDS_AnnotationParser.hpp"
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
using namespace std; using namespace std;
using namespace IRDB_SDK; using namespace IRDB_SDK;
using namespace MEDS_Annotation; // using namespace MEDS_Annotation;
#define ALLOF(a) begin(a),end(a) #define ALLOF(a) begin(a),end(a)
...@@ -535,24 +535,24 @@ int executeStep(IRDBObjects_t *const irdb_objects) ...@@ -535,24 +535,24 @@ int executeStep(IRDBObjects_t *const irdb_objects)
ifstream annotationFile("a.ncexe.infoannot", ifstream::in); ifstream annotationFile("a.ncexe.infoannot", ifstream::in);
assert(annotationFile.is_open()); 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); DirectOffsetInference *direct_offset_inference = new DirectOffsetInference(offset_inference);
ScaledOffsetInference *scaled_offset_inference = new ScaledOffsetInference(offset_inference); ScaledOffsetInference *scaled_offset_inference = new ScaledOffsetInference(offset_inference);
P1Inference *p1 = new P1Inference(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 //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. //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(offset_inference,1);
transform_driver.AddInference(direct_offset_inference,1); transform_driver.AddInference(direct_offset_inference,1);
transform_driver.AddInference(scaled_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.AddInference(p1,2);
transform_driver.AddBlacklist(blackListOfFunctions); transform_driver.AddBlacklist(blackListOfFunctions);
......
import os import os
Import('irdb_env') Import('env')
myenv=irdb_env.Clone() myenv=env.Clone()
myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME'])
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') cpppath='''
LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" $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) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", p1)
Default(install) Default(install)
......
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/ " cpppath=" $IRDB_SDK/include $SECURITY_TRANSFORMS_HOME/third_party/elfio-code/ "
LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" libpath="$SECURITY_TRANSFORMS_HOME/lib"
LIBS=Split( myenv.subst('$BASE_IRDB_LIBS') + " irdb-core irdb-cfg irdb-util irdb-transform MEDSannotation") 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) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm)
Default(install) Default(install)
Return('install') Return('install')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment