diff --git a/src/compiler/Makefile.am b/src/compiler/Makefile.am index d52da91dab8..4c83365094b 100644 --- a/src/compiler/Makefile.am +++ b/src/compiler/Makefile.am @@ -36,6 +36,7 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/gallium/include \ -I$(top_srcdir)/src/gallium/auxiliary \ -I$(top_srcdir)/src/gtest/include \ + $(VALGRIND_CFLAGS) \ $(DEFINES) AM_CFLAGS = \ diff --git a/src/compiler/glsl/blob.c b/src/compiler/glsl/blob.c index db362520650..3c4aed8524d 100644 --- a/src/compiler/glsl/blob.c +++ b/src/compiler/glsl/blob.c @@ -26,6 +26,14 @@ #include "main/macros.h" #include "blob.h" +#ifdef HAVE_VALGRIND +#include +#include +#define VG(x) x +#else +#define VG(x) +#endif + #define BLOB_INITIAL_SIZE 4096 /* Ensure that \blob will be able to fit an additional object of size @@ -110,6 +118,8 @@ blob_overwrite_bytes(struct blob *blob, if (blob->size < offset + to_write) return false; + VG(VALGRIND_CHECK_MEM_IS_DEFINED(bytes, to_write)); + memcpy(blob->data + offset, bytes, to_write); return true; @@ -121,6 +131,8 @@ blob_write_bytes(struct blob *blob, const void *bytes, size_t to_write) if (! grow_to_fit(blob, to_write)) return false; + VG(VALGRIND_CHECK_MEM_IS_DEFINED(bytes, to_write)); + memcpy(blob->data + blob->size, bytes, to_write); blob->size += to_write;