mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-05 23:23:09 +00:00
libctf: suppress spurious failure of malloc-counting tests under valgrind
The libctf-regression/open-error-free.c test works by interposing malloc and counting mallocs and frees across libctf operations. This only works under suitably-interposable mallocs on systems supporting dlsym (RTLD_NEXT, ...), so its operation is restricted to glibc systems for now, but also it interacts badly with valgrind, which interposes malloc itself. Detect a running valgrind and skip the test. Add new facilities allowing libctf lookup tests to declare themselves unsupported, by printing "UNSUPPORTED: " and then some meaningful message instead of their normal output. libctf/ * configure.ac: Check for <valgrind/valgrind.h>. * config.h.in: Regenerate. * configure: Likewise. * testsuite/lib/ctf-lib.exp (run_lookup_test): Add support for UNSUPPORTED tests. * testsuite/libctf-regression/open-error-free.c: When running under valgrind, this test is unsupported.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
/* Make sure that, on error, an opened dict is properly freed. */
|
||||
|
||||
#define _GNU_SOURCE 1
|
||||
#include "config.h"
|
||||
#include <dlfcn.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -8,6 +9,10 @@
|
||||
#include <ctf-api.h>
|
||||
#include <ctf.h>
|
||||
|
||||
#ifdef HAVE_VALGRIND_VALGRIND_H
|
||||
#include <valgrind/valgrind.h>
|
||||
#endif
|
||||
|
||||
static unsigned long long malloc_count;
|
||||
static unsigned long long free_count;
|
||||
|
||||
@@ -111,6 +116,14 @@ int main (void)
|
||||
ctf_next_t *it = NULL;
|
||||
unsigned long long frozen_malloc_count, frozen_free_count;
|
||||
|
||||
#ifdef HAVE_VALGRIND_VALGRIND_H
|
||||
if (RUNNING_ON_VALGRIND)
|
||||
{
|
||||
printf ("UNSUPPORTED: valgrind interferes with malloc counting\n");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((fp = ctf_create (&err)) == NULL)
|
||||
goto open_err;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user