1b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <stdlib.h> 2b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <stdio.h> 3b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <string.h> 4b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 5b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void breakme(int line) 6b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 7b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "breakme function called from line %d\n", line); 8b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fflush(stderr); 9b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic char undefined[10] = "undefined"; 11b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint main (int argc, char *argv[]) 12b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 13b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 14b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* we will test 15b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov read watchpoint at 0, 16b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov read/write watchpoints at 4 17b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov write watchpoints at 8 */ 18b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 19b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov breakme(__LINE__); //break1 20b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 21b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* We verify read watchpoints are triggered at 0 and 4, not at 8 */ 22b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "before reading 0/4/8\n"); 23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (undefined[0] == 'u') 24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "u: Expected value at 0\n"); 25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else 26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "u: Unexpected value at 0\n"); 27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (undefined[4] == 'f') 29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "f: Expected value at 4\n"); 30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else 31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "f: Unexpected value at 4\n"); 32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (undefined[8] == 'd') 34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "d: Expected value at 8\n"); 35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov else 36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "d: Unexpected value at 8\n"); 37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* We verify write watchpoints are triggered at 4 and 8, not at 0 */ 40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "before writing 0\n"); 41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov undefined[0] = 'U'; 42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "before writing 4\n"); 44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov undefined[4] = 'F'; 45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "before writing 8\n"); 47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov undefined[8] = 'D'; 48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "after writing 8\n"); 50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov /* after having remove the watchpoints, check we can read and write 52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov without break. */ 53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "value %s\n", undefined); 54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "before rewriting 0\n"); 56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov undefined[0] = '0'; 57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "before rewriting 4\n"); 59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov undefined[4] = '4'; 60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "before rewriting 8\n"); 62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov undefined[8] = '8'; 63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov fprintf(stderr, "value %s\n", undefined); 65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 66436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov { 67436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov char *k50 = malloc(50000); 68436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov memset (k50, 'p', 50000); 69436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov fprintf(stderr, "value of k50[1000] %c\n", k50[1000]); 70436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov free(k50); //break2 71436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov } 72436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov exit(0); 74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 75