Home | History | Annotate | Download | only in tests
      1 /* This exercises the code that was causing this bug:
      2 
      3      valgrind: vg_cachesim.c:389 (get_BBCC): Assertion `((Bool)0) == remove'
      4      failed.
      5 
      6    in Cachegrind 1.0.0 and 1.0.1, that was caused by unloading symbols before
      7    invalidating translations.
      8 */
      9 
     10 #include <stdio.h>
     11 #include <stdlib.h>
     12 #include <dlfcn.h>
     13 
     14 int main(int argc, char **argv) {
     15    void *handle;
     16    void (*myprint)(void);
     17    char *error;
     18 
     19    handle = dlopen ("./myprint.so", RTLD_LAZY);
     20    if (!handle) {
     21        fputs (dlerror(), stderr);
     22        exit(1);
     23    }
     24 
     25    myprint = dlsym(handle, "myprint");
     26    if ((error = dlerror()) != NULL)  {
     27        fprintf (stderr, "%s\n", error);
     28        exit(1);
     29    }
     30 
     31    (*myprint)();
     32 
     33    /* Assertion failure was happening here */
     34    dlclose(handle);
     35 
     36    return 0;
     37 }
     38 
     39