1 2 /* Test that we get a complaint if a thread exits with error reporting 3 disabled. */ 4 5 #include <stdlib.h> 6 #include <stdio.h> 7 8 #include "../include/valgrind.h" 9 10 char* block = NULL; 11 12 __attribute__((noinline)) void usechar ( char c ) 13 { 14 // Spook gcc into believing mysterious bad things are 15 // happening behind its back, and that 'c' is definitely 16 // used in some (unknown) way. 17 __asm__ __volatile__("" : : "r"(c) : "memory","cc"); 18 } 19 20 __attribute__((noinline)) void err ( void ) 21 { 22 usechar( block[5] ); 23 } 24 25 int main ( void ) 26 { 27 block = malloc(10); 28 free(block); 29 30 fprintf(stderr, "\n--------- enabled (expect 1) ---------\n\n"); 31 32 err(); 33 34 fprintf(stderr, "\n--------- disabled (expect 0) ---------\n\n"); 35 VALGRIND_DISABLE_ERROR_REPORTING; 36 37 err(); 38 39 fprintf(stderr, "\n--------- exiting (expect complaint) ---------\n\n"); 40 41 return 0; 42 } 43