From 8548ec238550547f880699e84f2d063a94ade700 Mon Sep 17 00:00:00 2001 From: bdr7fv <bdr7fv@git.zephyr-software.com> Date: Tue, 29 May 2012 02:06:38 +0000 Subject: [PATCH] PNTransformDriver to set canaries on or off is now a function call to set a field of the PNTransformDriver object. Former-commit-id: 72bc8573b275dded0243e0d4ec7a62276b4c9b03 --- tools/transforms/PNMain.cpp | 10 ++++------ tools/transforms/PNTransformDriver.cpp | 9 +++++++-- tools/transforms/PNTransformDriver.hpp | 2 ++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/tools/transforms/PNMain.cpp b/tools/transforms/PNMain.cpp index ed09a6869..0c9c1ee06 100644 --- a/tools/transforms/PNMain.cpp +++ b/tools/transforms/PNMain.cpp @@ -21,9 +21,6 @@ #include <set> #include <cstdlib> - -bool DO_CANARIES = true; - using namespace std; using namespace libIRDB; using namespace MEDS_Annotation; @@ -61,7 +58,6 @@ static double p1threshold; void pn_init() { - DO_CANARIES=true; p1threshold=0.0; } @@ -155,6 +151,7 @@ int main(int argc, char **argv) char *coverage_file=NULL; char *only_validate=NULL; bool validate_p1=true; + bool do_canaries=true; while((c = getopt_long(argc, argv, "", long_options, NULL)) != -1) { switch(c) @@ -193,11 +190,11 @@ int main(int argc, char **argv) { if(strcasecmp("on",optarg)==0) { - DO_CANARIES=true; + do_canaries=true; } else if(strcasecmp("off",optarg)==0) { - DO_CANARIES=false; + do_canaries=false; } else { @@ -272,6 +269,7 @@ int main(int argc, char **argv) transform_driver.AddBlacklist(blackListOfFunctions); transform_driver.AddOnlyValidateList(onlyValidateFunctions); + transform_driver.SetDoCanaries(do_canaries); OffsetInference *offset_inference = new OffsetInference(); diff --git a/tools/transforms/PNTransformDriver.cpp b/tools/transforms/PNTransformDriver.cpp index 476e8bc71..b256d88fa 100644 --- a/tools/transforms/PNTransformDriver.cpp +++ b/tools/transforms/PNTransformDriver.cpp @@ -11,7 +11,6 @@ using namespace std; using namespace libIRDB; //TODO: this var is a hack for TNE -extern bool DO_CANARIES; extern map<string, set<Instruction_t*> > inserted_instr; extern map<string, set<AddressID_t*> > inserted_addr; @@ -43,6 +42,7 @@ PNTransformDriver::PNTransformDriver(VariantID_t *pidp,string BED_script) orig_progid = pidp->GetOriginalVariantID(); orig_virp = new VariantIR_t(*pidp); this->BED_script = BED_script; + do_canaries = true; } PNTransformDriver::~PNTransformDriver() @@ -70,6 +70,11 @@ void PNTransformDriver::AddInference(PNStackLayoutInference *inference, int leve transform_hierarchy[level].push_back(inference); } +void PNTransformDriver::SetDoCanaries(bool do_canaries) +{ + this->do_canaries = do_canaries; +} + void PNTransformDriver::AddBlacklist(set<string> &blacklist) { set<string>::iterator it; @@ -222,7 +227,7 @@ void PNTransformDriver::GenerateTransformsInit() bool PNTransformDriver::CanaryTransformHandler(PNStackLayout *layout, Function_t *func, bool validate) { //TODO: hack for TNE: if not doing canaries, use padding transform handler instead - if(!DO_CANARIES) + if(!do_canaries) { cerr<<"PNTransformDriver: canary transformations turned off, attempting padding transformation."<<endl; return PaddingTransformHandler(layout, func, validate); diff --git a/tools/transforms/PNTransformDriver.hpp b/tools/transforms/PNTransformDriver.hpp index adc737ff9..dbcf3bf09 100644 --- a/tools/transforms/PNTransformDriver.hpp +++ b/tools/transforms/PNTransformDriver.hpp @@ -23,6 +23,7 @@ protected: libIRDB::VariantIR_t *orig_virp; std::string BED_script; int orig_progid; + bool do_canaries; std::vector< std::vector<PNStackLayoutInference*> > transform_hierarchy; PNRegularExpressions pn_regex; @@ -76,6 +77,7 @@ public: virtual void AddBlacklist(std::set<std::string> &blacklist); virtual void AddBlacklistFunction(std::string func_name); virtual void AddOnlyValidateList(std::set<std::string> &only_validate_list); + virtual void SetDoCanaries(bool do_canaries); virtual void GenerateTransforms(); virtual void GenerateTransforms(std::map<std::string,double> coverage_map, double threshold, int threshold_level, int never_validate_level); }; -- GitLab