some MemorySanitizer preparations:

- put memory initialization in src/emu/emualloc.c behind NO_MEMORY_INITIALIZATION define
- disable memory initialization when msan is used
- use origin tracking for msan when clang is used
This commit is contained in:
Oliver Stöneberg 2013-06-11 13:01:11 +00:00
parent 28aff9d786
commit d9c98de098
2 changed files with 13 additions and 2 deletions

View File

@ -440,6 +440,12 @@ ifneq ($(BUILD_JPEGLIB),1)
DEFS += -DUSE_SYSTEM_JPEGLIB
endif
# disable initialization of memory in malloc overload
ifdef SANITIZE
ifneq (,$(findstring memory,$(SANITIZE)))
DEFS += -DNO_MEMORY_INITIALIZATION
endif
endif
#-------------------------------------------------
@ -536,6 +542,11 @@ CCOMFLAGS += -fsanitize=$(SANITIZE)
ifneq (,$(findstring thread,$(SANITIZE)))
CCOMFLAGS += -fPIE
endif
ifneq (,$(findstring memory,$(SANITIZE)))
ifneq (,$(findstring clang,$(CC)))
CCOMFLAGS += -fsanitize-memory-track-origins
endif
endif
endif
#-------------------------------------------------

View File

@ -150,7 +150,7 @@ void *malloc_file_line(size_t size, const char *file, int line)
// add a new entry
memory_entry::allocate(size, result, file, line);
#ifdef MAME_DEBUG
#if !defined(NO_MEMORY_INITIALIZATION) && defined(MAME_DEBUG)
memset(result, 0xdd, size);
#endif
@ -174,7 +174,7 @@ void *malloc_array_file_line(size_t size, const char *file, int line)
// add a new entry
memory_entry::allocate(size, result, file, line);
#ifdef MAME_DEBUG
#if !defined(NO_MEMORY_INITIALIZATION) && defined(MAME_DEBUG)
memset(result, 0xdd, size);
#endif