Skip to content

Commit 621f912

Browse files
authored
Merge pull request #1 from Suresoft-GLaDOS/validation
Validation to MP
2 parents 9d63d05 + 330af68 commit 621f912

30 files changed

Lines changed: 1501 additions & 368 deletions

AFLplusplus

benchmarks/libtiff-deps/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ jpeg-9a-build:
442442
./configure --prefix=$(abs_builddir)/jpeg-9a-build &&\
443443
make -j 4 &&\
444444
make install
445+
ln -s $(abs_builddir)/jpeg-9a-build/lib/libjpeg.so.9.1.0 $(abs_builddir)/jpeg-9a-build/lib/libjpeg.so
445446

446447
clean-local:
447448
rm *.gz

benchmarks/libtiff-deps/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ jpeg-9a-build:
99
./configure --prefix=$(abs_builddir)/jpeg-9a-build &&\
1010
make -j 4 &&\
1111
make install
12+
ln -s $(abs_builddir)/jpeg-9a-build/lib/libjpeg.so.9.1.0 $(abs_builddir)/jpeg-9a-build/lib/libjpeg.so
1213

1314
clean-local:
1415
rm *.gz

benchmarks/libtiff-deps/Makefile.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ jpeg-9a-build:
442442
./configure --prefix=$(abs_builddir)/jpeg-9a-build &&\
443443
make -j 4 &&\
444444
make install
445+
ln -s $(abs_builddir)/jpeg-9a-build/lib/libjpeg.so.9.1.0 $(abs_builddir)/jpeg-9a-build/lib/libjpeg.so
445446

446447
clean-local:
447448
rm *.gz

src/BenchProgram.cpp

Lines changed: 215 additions & 126 deletions
Large diffs are not rendered by default.

src/BenchProgram.h

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ class BenchProgram {
179179
// std::map<int,std::list<std::list<int>>> caseCluster;
180180
std::vector<std::pair<std::string,size_t>> scoreInfo;
181181
// std::map<std::pair<size_t,size_t>,size_t> conditionCases;
182+
std::map<std::string,std::map<std::string,std::map<size_t,std::string>>> mutationInfo;
182183
std::vector<File> infos;
183184
public:
184185
SwitchInfo(std::string workdir):fileName(workdir+"/switch-info.json") {}
@@ -218,6 +219,33 @@ class BenchProgram {
218219
}
219220
cJSON_AddItemToObject(json,std::string("priority").c_str(),scoreArray);
220221

222+
// Save mutation infos
223+
cJSON *mutationArray=cJSON_CreateArray();
224+
for(std::map<std::string,std::map<std::string,std::map<size_t,std::string>>>::iterator it=mutationInfo.begin();it!=mutationInfo.end();it++){
225+
cJSON *mutationObject=cJSON_CreateObject();
226+
cJSON_AddStringToObject(mutationObject,std::string("file").c_str(),it->first.c_str());
227+
228+
cJSON *funcArray=cJSON_CreateArray();
229+
for (std::map<std::string,std::map<size_t,std::string>>::iterator it2=it->second.begin();it2!=it->second.end();it2++){
230+
cJSON *funcObject=cJSON_CreateObject();
231+
cJSON_AddStringToObject(funcObject,std::string("function").c_str(),it2->first.c_str());
232+
233+
cJSON *varArray=cJSON_CreateArray();
234+
for (std::map<size_t,std::string>::iterator it3=it2->second.begin();it3!=it2->second.end();it3++){
235+
cJSON *varObject=cJSON_CreateObject();
236+
cJSON_AddNumberToObject(varObject,std::string("number").c_str(),it3->first);
237+
cJSON_AddStringToObject(varObject,std::string("variable").c_str(),it3->second.c_str());
238+
239+
cJSON_AddItemToArray(varArray,varObject);
240+
}
241+
cJSON_AddItemToObject(funcObject,std::string("variables").c_str(),varArray);
242+
cJSON_AddItemToArray(funcArray,funcObject);
243+
}
244+
cJSON_AddItemToObject(mutationObject,std::string("functions").c_str(),funcArray);
245+
cJSON_AddItemToArray(mutationArray,mutationObject);
246+
}
247+
cJSON_AddItemToObject(json,std::string("mutation_info").c_str(),mutationArray);
248+
221249
// Save each patch rules
222250
cJSON *ruleArray=cJSON_CreateArray();
223251
for (std::vector<File>::iterator it=infos.begin();it!=infos.end();it++){
@@ -323,23 +351,21 @@ class BenchProgram {
323351

324352
TestCache *cache;
325353

354+
std::map<std::string,std::string> build_dir_save;
355+
std::map<std::string,std::vector<std::string>> build_args_save;
356+
326357
void Init(const std::string &workDirPath, bool no_clean_up);
327358

328-
bool buildFull(const std::string &subDir, time_t timeout_limit = 0, bool force_reconf = false,std::vector<long long> compile_macro=std::vector<long long>(),std::vector<std::string> files=std::vector<std::string>());
359+
bool buildFull(const std::string &subDir, time_t timeout_limit = 0, bool force_reconf = false,std::vector<long long> compile_macro=std::vector<long long>(),std::vector<std::string> files=std::vector<std::string>(),
360+
std::vector<long long> writer_macro=std::vector<long long>());
329361

330362
void getCompileMisc(const std::string &src_file, std::string &build_dir, std::vector<std::string> &build_args);
331363

332364
EnvMapTy ori_env_map;
333365

334-
void pushEnvMap(const EnvMapTy &envMap);
335-
336-
void popEnvMap(const EnvMapTy &envMap);
337366

338367
std::string ori_path_for_wrap_path;
339368

340-
void pushWrapPath(const std::string &wrapPath, const std::string &cc_path);
341-
342-
void popWrapPath();
343369

344370
void deleteLibraryFile(const std::map<std::string, std::string> &fileCodeMap);
345371
public:
@@ -370,8 +396,16 @@ class BenchProgram {
370396

371397
void addExistingSrcClone(const std::string &subDir, bool built);
372398

399+
void pushEnvMap(const EnvMapTy &envMap);
400+
401+
void popEnvMap(const EnvMapTy &envMap);
402+
403+
void pushWrapPath(const std::string &wrapPath, const std::string &cc_path);
404+
405+
void popWrapPath();
406+
373407
std::unique_ptr<clang::ASTUnit> buildClangASTUnit(const std::string &src_file,
374-
const std::string &code);
408+
const std::string &code,std::vector<long long> macros=std::vector<long long>());
375409

376410
// bool runDG(std::vector<ASTLocTy> criteriaLocation);
377411
bool runDG(std::vector<std::string> files,std::map<std::string,std::set<unsigned>> lines);
@@ -381,10 +415,14 @@ class BenchProgram {
381415

382416
void saveFixedFiles(std::map<std::string, std::string> &fileCodeMap,std::string output_name);
383417

384-
bool buildWithRepairedCode(const std::string &wrapScript, const EnvMapTy &envMap,
385-
std::map<std::string, std::string> &fileCodeMap,std::map<long long,std::string> macroWithCode,
386-
std::map<std::string,std::vector<long long>> macroFile,
387-
std::string output_name="");
418+
void applyRepairedCode(std::map<std::string, std::string> &fileCodeMap,EnvMapTy &envMap,std::string wrapScript);
419+
void rollbackOriginalCode(std::map<std::string, std::string> &fileCodeMap,EnvMapTy &envMap);
420+
421+
std::vector<long long> buildWithRepairedCode(const std::string &wrapScript, const EnvMapTy &envMap,
422+
const std::map<std::string, std::string> &fileCodeMap,const std::map<long long,std::string> &macroWithCode,
423+
const std::map<std::string,std::vector<long long>> &macroFile,
424+
std::string output_name="",
425+
std::vector<long long> macros=std::vector<long long>());
388426

389427
TestCaseSetTy testSet(const std::string &subDir, const TestCaseSetTy &case_set,
390428
const EnvMapTy &envMap, size_t totalSwitch=0,size_t chooseSwitch=0,size_t chooseCase=0,size_t pid=0,bool pass_basic_src_dir = false);

0 commit comments

Comments
 (0)