Mercurial > projects > dstress
comparison dstress.c @ 968:8b6d2dcf9954
* fixed new line escapes in GDB_SCRIPT
* fixed gdb_script handling
* added Vlagrind crash patterns
* fixed handling of TORTURE_REQUIRE for non-torture tests
author | thomask |
---|---|
date | Wed, 19 Apr 2006 06:43:40 +0000 |
parents | f4fc739bbaaf |
children | 8da09834526d |
comparison
equal
deleted
inserted
replaced
967:c9ceb6cd6ffc | 968:8b6d2dcf9954 |
---|---|
152 #endif /* USE_POSIX else */ | 152 #endif /* USE_POSIX else */ |
153 | 153 |
154 #define TORTURE_PREFIX "torture-" | 154 #define TORTURE_PREFIX "torture-" |
155 | 155 |
156 #ifdef USE_POSIX | 156 #ifdef USE_POSIX |
157 #define CRASH_RUN "./crashRun 30 1024" | 157 #define CRASH_RUN "./crashRun 30 2000" |
158 #define TMP_DIR "./obj" | 158 #define TMP_DIR "./obj" |
159 #else | 159 #else |
160 #ifdef USE_WINDOWS | 160 #ifdef USE_WINDOWS |
161 #define TMP_DIR ".\\obj" | 161 #define TMP_DIR ".\\obj" |
162 #else | 162 #else |
449 end1 = begin + strlen(begin); | 449 end1 = begin + strlen(begin); |
450 } | 450 } |
451 back = malloc(end1-begin+1); | 451 back = malloc(end1-begin+1); |
452 strncpy(back, begin, end1-begin); | 452 strncpy(back, begin, end1-begin); |
453 back[end1-begin]='\x00'; | 453 back[end1-begin]='\x00'; |
454 return strip(cleanPathSeperator(back)); | 454 return strip(back); |
455 } | 455 } |
456 } | 456 } |
457 | 457 |
458 return calloc(1,1); | 458 return calloc(1,1); |
459 } | 459 } |
635 if(strstr(buffer, "Segmentation fault") | 635 if(strstr(buffer, "Segmentation fault") |
636 || strstr(buffer, "Internal error") | 636 || strstr(buffer, "Internal error") |
637 || strstr(buffer, "gcc.gnu.org/bugs") | 637 || strstr(buffer, "gcc.gnu.org/bugs") |
638 || strstr(buffer, "EXIT CODE: signal") | 638 || strstr(buffer, "EXIT CODE: signal") |
639 || strstr(buffer, "Assertion failure") | 639 || strstr(buffer, "Assertion failure") |
640 || strstr(buffer, "Access Violation")) | 640 || strstr(buffer, "Access Violation") |
641 || strstr(buffer, "Invalid read of size") | |
642 || strstr(buffer, "Conditional jump or move depends on uninitialised value") | |
643 || strstr(buffer, "Use of uninitialised value of size")) | |
641 { | 644 { |
642 return 1; | 645 return 1; |
643 } | 646 } |
644 return 0; | 647 return 0; |
645 } | 648 } |
953 }else{ | 956 }else{ |
954 good_error = 1; | 957 good_error = 1; |
955 } | 958 } |
956 | 959 |
957 #ifdef REG_EXTENDED | 960 #ifdef REG_EXTENDED |
958 if(gdb_script != NULL){ | 961 if(((res==EXIT_SUCCESS && (modus & MODE_RUN)) |
962 ||(res==EXIT_SUCCESS && (modus & MODE_RUN))) | |
963 && gdb_script != NULL) | |
964 { | |
959 free(buffer); | 965 free(buffer); |
960 good_gdb = 0; | 966 good_gdb = 0; |
961 /* test 3/3 - gdb */ | 967 /* test 3/3 - gdb */ |
962 gdb_scripter = genTempFileName(); | 968 gdb_scripter = genTempFileName(); |
963 writeFile(gdb_scripter, gdb_script); | 969 writeFile(gdb_scripter, gdb_script); |
1114 gdb = getGDB(); | 1120 gdb = getGDB(); |
1115 torture_block_global = getTortureBlock(); | 1121 torture_block_global = getTortureBlock(); |
1116 buffer = loadFile(case_file, &bufferLen); | 1122 buffer = loadFile(case_file, &bufferLen); |
1117 bufferLen = 0; | 1123 bufferLen = 0; |
1118 | 1124 |
1119 cmd_arg_case = getCaseFlag(buffer, "__DSTRESS_DFLAGS__"); | 1125 cmd_arg_case = cleanPathSeperator(getCaseFlag(buffer, "__DSTRESS_DFLAGS__")); |
1120 error_line = getCaseFlag(buffer, "__DSTRESS_ELINE__"); | 1126 error_line = getCaseFlag(buffer, "__DSTRESS_ELINE__"); |
1121 error_file = getCaseFlag(buffer, "__DSTRESS_EFILE__"); | 1127 error_file = cleanPathSeperator(getCaseFlag(buffer, "__DSTRESS_EFILE__")); |
1122 gdb_script = getCaseFlag(buffer, "__GDB_SCRIPT__"); | 1128 gdb_script = getCaseFlag(buffer, "__GDB_SCRIPT__"); |
1123 gdb_pattern_raw = getCaseFlag(buffer, "__GDB_PATTERN__"); | 1129 gdb_pattern_raw = getCaseFlag(buffer, "__GDB_PATTERN__"); |
1124 torture_block_case = getCaseFlag(buffer, "__DSTRESS_TORTURE_BLOCK__"); | 1130 torture_block_case = getCaseFlag(buffer, "__DSTRESS_TORTURE_BLOCK__"); |
1125 torture_require = getCaseFlag(buffer, "__DSTRESS_TORTURE_REQUIRE__"); | 1131 torture_require = getCaseFlag(buffer, "__DSTRESS_TORTURE_REQUIRE__"); |
1126 | 1132 |
1262 printResult(torture_result[index], modus, case_file, | 1268 printResult(torture_result[index], modus, case_file, |
1263 stdout); | 1269 stdout); |
1264 printf("--------\n"); | 1270 printf("--------\n"); |
1265 } | 1271 } |
1266 }else{ | 1272 }else{ |
1273 if(torture_require){ | |
1274 if(!cmd_arg_case){ | |
1275 torture_require = cmd_arg_case; | |
1276 }else{ | |
1277 size_t new_len = strlen(cmd_arg_case); | |
1278 new_len += strlen(torture_require); | |
1279 new_len++; | |
1280 cmd_arg_case = realloc(cmd_arg_case, new_len); | |
1281 strcat(cmd_arg_case, " "); | |
1282 strcat(cmd_arg_case, torture_require); | |
1283 } | |
1284 } | |
1267 if(modus & (MODE_RUN | MODE_NORUN)){ | 1285 if(modus & (MODE_RUN | MODE_NORUN)){ |
1268 case_result = target_run(modus, compiler, cmd_arg_case, | 1286 case_result = target_run(modus, compiler, cmd_arg_case, |
1269 case_file, error_file, error_line | 1287 case_file, error_file, error_line |
1270 #ifdef REG_EXTENDED | 1288 #ifdef REG_EXTENDED |
1271 , gdb, gdb_script, gdb_pattern | 1289 , gdb, gdb_script, gdb_pattern |