/* This exercises the code that was causing this bug:
valgrind: vg_cachesim.c:389 (get_BBCC): Assertion `((Bool)0) == remove'
failed.
in Cachegrind 1.0.0 and 1.0.1, that was caused by unloading symbols before
invalidating translations.
*/
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int main(int argc, char **argv) {
void *handle;
void (*myprint)(void);
char *error;
handle = dlopen ("./myprint.so", RTLD_LAZY);
if (!handle) {
fputs (dlerror(), stderr);
exit(1);
}
myprint = dlsym(handle, "myprint");
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s\n", error);
exit(1);
}
(*myprint)();
/* Assertion failure was happening here */
dlclose(handle);
return 0;
}