about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAustin Seipp <as@hacks.yi.org>2011-12-06 01:11:11 -0600
committerAustin Seipp <as@hacks.yi.org>2011-12-06 01:15:29 -0600
commitb513a5a5001b850a153db12d9621d00a70ff929a (patch)
tree83f22cf7a06a30d827ddea7e9b537aeabfc8d7de
parent8d8148f1f740ce80a07a19830cfae8a1851a7c4f (diff)
downloadrust-b513a5a5001b850a153db12d9621d00a70ff929a.tar.gz
rust-b513a5a5001b850a153db12d9621d00a70ff929a.zip
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.
-rw-r--r--mk/platform.mk4
-rw-r--r--mk/rt.mk2
-rw-r--r--src/rt/arch/i386/context.h4
-rw-r--r--src/rt/arch/x86_64/context.h6
-rw-r--r--src/rt/rust_task.cpp4
-rw-r--r--src/rt/rust_timer.cpp2
-rw-r--r--src/rt/vg/memcheck.h (renamed from src/rt/memcheck.h)0
-rw-r--r--src/rt/vg/valgrind.h (renamed from src/rt/valgrind.h)0
8 files changed, 8 insertions, 14 deletions
diff --git a/mk/platform.mk b/mk/platform.mk
index 28ecb0a10e9..430a835ba86 100644
--- a/mk/platform.mk
+++ b/mk/platform.mk
@@ -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)),)
diff --git a/mk/rt.mk b/mk/rt.mk
index e45430f7690..0d9bb5c3408 100644
--- a/mk/rt.mk
+++ b/mk/rt.mk
@@ -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) \
diff --git a/src/rt/arch/i386/context.h b/src/rt/arch/i386/context.h
index fc5eb900a5c..03b97fa7b51 100644
--- a/src/rt/arch/i386/context.h
+++ b/src/rt/arch/i386/context.h
@@ -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);
   }
diff --git a/src/rt/arch/x86_64/context.h b/src/rt/arch/x86_64/context.h
index 11c85092747..59d7bfa51f3 100644
--- a/src/rt/arch/x86_64/context.h
+++ b/src/rt/arch/x86_64/context.h
@@ -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);
     }
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp
index a34ec4d8661..b540225243f 100644
--- a/src/rt/rust_task.cpp
+++ b/src/rt/rust_task.cpp
@@ -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>
diff --git a/src/rt/rust_timer.cpp b/src/rt/rust_timer.cpp
index eb1f30b93ee..ffa98766763 100644
--- a/src/rt/rust_timer.cpp
+++ b/src/rt/rust_timer.cpp
@@ -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
diff --git a/src/rt/memcheck.h b/src/rt/vg/memcheck.h
index 58480256e19..58480256e19 100644
--- a/src/rt/memcheck.h
+++ b/src/rt/vg/memcheck.h
diff --git a/src/rt/valgrind.h b/src/rt/vg/valgrind.h
index 737cc2a8b42..737cc2a8b42 100644
--- a/src/rt/valgrind.h
+++ b/src/rt/vg/valgrind.h