• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
usechar(char c)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 
err(void)20 __attribute__((noinline)) void err ( void )
21 {
22    usechar( block[5] );
23 }
24 
main(void)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