Make valgrind usage more consistent and less error prone.

I was still having issues with the build system somehow getting confused
as to which set of valgrind headers to use when compiling rt.

This commit moves all the valgrind headers into their own directory
under rt and makes the usage more consistent. The compiler is now passed
the -DNVALGRIND flag when valgrind is not installed, as opposed to
passing -DHAVE_VALGRIND.

We also pass -I src/rt to the compiler when building rt so you can more
easily import what you want. I also cleaned up some erroneous #includes
along the way.

It should be safe to always just import the local valgrind headers and use
them without question. NVALGRIND turns the operations to no-ops when it
is active, and the build and tests run cleanly with or without.
This commit is contained in:
Austin Seipp 2011-12-06 01:11:11 -06:00
parent 8d8148f1f7
commit b513a5a500
8 changed files with 8 additions and 14 deletions

View File

@ -17,8 +17,8 @@ CFG_GCCISH_LINK_FLAGS :=
# embedded into the executable, so use a no-op command.
CFG_DSYMUTIL := true
ifneq ($(CFG_VALGRIND),)
CFG_GCCISH_CFLAGS += -DHAVE_VALGRIND
ifeq ($(CFG_VALGRIND),)
CFG_GCCISH_CFLAGS += -DNVALGRIND
endif
ifneq ($(findstring freebsd,$(CFG_OSTYPE)),)

View File

@ -125,7 +125,7 @@ else
endif
RUNTIME_DEF_$(1) := rt/rustrt$$(CFG_DEF_SUFFIX)
RUNTIME_INCS_$(1) := -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \
RUNTIME_INCS_$(1) := -I $$(S)src/rt -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \
-I $$(S)src/rt/arch/$$(HOST_$(1)) \
-I $$(S)src/libuv/include
RUNTIME_OBJS_$(1) := $$(RUNTIME_CS_$(1):rt/%.cpp=rt/$(1)/%.o) \

View File

@ -7,7 +7,7 @@
#include <inttypes.h>
#include <stdint.h>
#include "../../memcheck.h"
#include "vg/memcheck.h"
template<typename T>
T align_down(T sp)
@ -51,9 +51,7 @@ public:
uint32_t bot = regs.esp;
uint32_t top = align_down(bot - nbytes);
#ifdef HAVE_VALGRIND
(void)VALGRIND_MAKE_MEM_UNDEFINED(top - 4, bot - top + 4);
#endif
return reinterpret_cast<void *>(top);
}

View File

@ -8,9 +8,7 @@
#include <stdint.h>
#include <xmmintrin.h>
#ifdef HAVE_VALGRIND
#include <valgrind/memcheck.h>
#endif
#include "vg/memcheck.h"
template<typename T>
T align_down(T sp)
@ -51,9 +49,7 @@ public:
uint64_t bot = regs.data[RUSTRT_RSP];
uint64_t top = align_down(bot - nbytes);
#ifdef HAVE_VALGRIND
(void)VALGRIND_MAKE_MEM_UNDEFINED(top - 4, bot - top + 4);
#endif
return reinterpret_cast<void *>(top);
}

View File

@ -2,8 +2,8 @@
#include "rust_internal.h"
#include "rust_cc.h"
#include "valgrind.h"
#include "memcheck.h"
#include "vg/valgrind.h"
#include "vg/memcheck.h"
#ifndef __WIN32__
#include <execinfo.h>

View File

@ -1,5 +1,5 @@
#include "rust_internal.h"
#include "valgrind.h"
#include "vg/valgrind.h"
// The mechanism in this file is very crude; every domain (thread) spawns its
// own secondary timer thread, and that timer thread *never idles*. It