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/
*.os
*.so
*.exe
.*.swp
......@@ -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
......
......@@ -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'])
......
......@@ -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)
......
......@@ -12,7 +12,6 @@ AddLib_t::AddLib_t(FileIR_t* firp, const StringSet_t &p_prepended, const StringS
{
}
int AddLib_t::execute()
{
......
......@@ -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)
......
......@@ -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
}
......@@ -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);
};
......
......@@ -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);
......
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)
......
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')
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