Home | History | Annotate | Download | only in tests
      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