diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2008-02-19 04:13:05 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2008-02-19 04:13:05 +0000 |
commit | 35dee9803d79197725f25037eb176a164499eb8d (patch) | |
tree | ea3822f937ca2bf97d74dca204d93f8e7bb15773 /gcc/ggc-zone.c | |
parent | 5ff3a2088013a1ba1dd79ca6cd27cc78f5640a3d (diff) | |
download | gcc-35dee9803d79197725f25037eb176a164499eb8d.zip gcc-35dee9803d79197725f25037eb176a164499eb8d.tar.gz gcc-35dee9803d79197725f25037eb176a164499eb8d.tar.bz2 |
Support valgrind 3.3 for --enable-checking=valgrind.
* system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
here.
[!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
[!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
[!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
* ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
respectively.
* ggc-zone.c: Similar.
* ggc-page.c: Similar.
From-SVN: r132407
Diffstat (limited to 'gcc/ggc-zone.c')
-rw-r--r-- | gcc/ggc-zone.c | 66 |
1 files changed, 32 insertions, 34 deletions
diff --git a/gcc/ggc-zone.c b/gcc/ggc-zone.c index 404db76..e8185a0 100644 --- a/gcc/ggc-zone.c +++ b/gcc/ggc-zone.c @@ -37,21 +37,6 @@ along with GCC; see the file COPYING3. If not see #include "params.h" #include "bitmap.h" -#ifdef ENABLE_VALGRIND_CHECKING -# ifdef HAVE_VALGRIND_MEMCHECK_H -# include <valgrind/memcheck.h> -# elif defined HAVE_MEMCHECK_H -# include <memcheck.h> -# else -# include <valgrind.h> -# endif -#else -/* Avoid #ifdef:s when we can help it. */ -#define VALGRIND_DISCARD(x) -#define VALGRIND_MALLOCLIKE_BLOCK(w,x,y,z) -#define VALGRIND_FREELIKE_BLOCK(x,y) -#endif - /* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a file open. Prefer either to valloc. */ #ifdef HAVE_MMAP_ANON @@ -787,7 +772,7 @@ alloc_anon (char *pref ATTRIBUTE_UNUSED, size_t size, struct alloc_zone *zone) /* Pretend we don't have access to the allocated pages. We'll enable access to smaller pieces of the area in ggc_alloc. Discard the handle to avoid handle leak. */ - VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (page, size)); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS (page, size)); return page; } @@ -903,8 +888,8 @@ free_small_page (struct small_page_entry *entry) /* Mark the page as inaccessible. Discard the handle to avoid handle leak. */ - VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (entry->common.page, - SMALL_PAGE_SIZE)); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS (entry->common.page, + SMALL_PAGE_SIZE)); entry->next = entry->common.zone->free_pages; entry->common.zone->free_pages = entry; @@ -978,18 +963,30 @@ free_chunk (char *ptr, size_t size, struct alloc_zone *zone) if (bin > NUM_FREE_BINS) { bin = 0; - VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (chunk, sizeof (struct alloc_chunk))); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (chunk, + sizeof (struct + alloc_chunk))); chunk->size = size; chunk->next_free = zone->free_chunks[bin]; - VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (ptr + sizeof (struct alloc_chunk), - size - sizeof (struct alloc_chunk))); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS (ptr + + sizeof (struct + alloc_chunk), + size + - sizeof (struct + alloc_chunk))); } else { - VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (chunk, sizeof (struct alloc_chunk *))); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (chunk, + sizeof (struct + alloc_chunk *))); chunk->next_free = zone->free_chunks[bin]; - VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (ptr + sizeof (struct alloc_chunk *), - size - sizeof (struct alloc_chunk *))); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS (ptr + + sizeof (struct + alloc_chunk *), + size + - sizeof (struct + alloc_chunk *))); } zone->free_chunks[bin] = chunk; @@ -1213,16 +1210,16 @@ ggc_alloc_zone_stat (size_t orig_size, struct alloc_zone *zone #ifdef ENABLE_GC_CHECKING /* `Poison' the entire allocated object. */ - VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (result, size)); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (result, size)); memset (result, 0xaf, size); - VALGRIND_DISCARD (VALGRIND_MAKE_NOACCESS (result + orig_size, - size - orig_size)); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS (result + orig_size, + size - orig_size)); #endif /* Tell Valgrind that the memory is there, but its content isn't defined. The bytes at the end of the object are still marked unaccessible. */ - VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (result, orig_size)); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (result, orig_size)); /* Keep track of how many bytes are being allocated. This information is used in deciding when to collect. */ @@ -1701,9 +1698,9 @@ sweep_pages (struct alloc_zone *zone) { if (last_free) { - VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (last_free, - object - - last_free)); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (last_free, + object + - last_free)); poison_region (last_free, object - last_free); free_chunk (last_free, object - last_free, zone); last_free = NULL; @@ -1739,7 +1736,8 @@ sweep_pages (struct alloc_zone *zone) { *spp = snext; #ifdef ENABLE_GC_CHECKING - VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (sp->common.page, SMALL_PAGE_SIZE)); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (sp->common.page, + SMALL_PAGE_SIZE)); /* Poison the page. */ memset (sp->common.page, 0xb5, SMALL_PAGE_SIZE); #endif @@ -1748,8 +1746,8 @@ sweep_pages (struct alloc_zone *zone) } else if (last_free) { - VALGRIND_DISCARD (VALGRIND_MAKE_WRITABLE (last_free, - object - last_free)); + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (last_free, + object - last_free)); poison_region (last_free, object - last_free); free_chunk (last_free, object - last_free, zone); } |