summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2018-01-25 00:49:12 +0200
committerAlexander Barkov <bar@mariadb.org>2018-01-26 14:49:36 +0400
commit51a1c2fc241956e008f792604f8492c15a01a8b7 (patch)
treefc2e4582e6408f50770dd81beea1e11bd224b074
parente6560c9058e261dc28c0f2de5be2f9191bfc0c29 (diff)
downloadmariadb-git-51a1c2fc241956e008f792604f8492c15a01a8b7.tar.gz
Temporary compile release builds with -O
This is done to get out more while debugging cores. Will not be pushed into main branch. Also TRASH freed memory to make it easier to find out access to it.
-rwxr-xr-xBUILD/SETUP.sh2
-rw-r--r--cmake/build_configurations/mysql_release.cmake8
-rw-r--r--include/my_valgrind.h2
-rw-r--r--mysys/my_malloc.c7
4 files changed, 13 insertions, 6 deletions
diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh
index 3a1a861f2f8..c6f20de4ec8 100755
--- a/BUILD/SETUP.sh
+++ b/BUILD/SETUP.sh
@@ -173,7 +173,7 @@ base_cxxflags="-felide-constructors -fexceptions -fno-rtti"
#
# Flags for optimizing builds.
# Be as fast as we can be without losing our ability to backtrace.
-fast_cflags="-O3 -fno-omit-frame-pointer"
+fast_cflags="-O3 -fno-omit-frame-pointer -DTRASH_FREE_MEMORY"
debug_configs="--with-debug"
if [ -z "$full_debug" ]
diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake
index fcac8dde6e9..fcfb5223bc7 100644
--- a/cmake/build_configurations/mysql_release.cmake
+++ b/cmake/build_configurations/mysql_release.cmake
@@ -156,14 +156,14 @@ IF(UNIX)
# Default GCC flags
IF(CMAKE_COMPILER_IS_GNUCC)
- SET(COMMON_C_FLAGS "-g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized")
+ SET(COMMON_C_FLAGS "-g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized -DTRASH_FREE_MEMORY")
SET(CMAKE_C_FLAGS_DEBUG "-O ${COMMON_C_FLAGS}")
- SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}")
+ SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O ${COMMON_C_FLAGS}")
ENDIF()
IF(CMAKE_COMPILER_IS_GNUCXX)
- SET(COMMON_CXX_FLAGS "-g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized")
+ SET(COMMON_CXX_FLAGS "-g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized -DTRASH_FREE_MEMORY")
SET(CMAKE_CXX_FLAGS_DEBUG "-O ${COMMON_CXX_FLAGS}")
- SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}")
+ SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O ${COMMON_CXX_FLAGS}")
ENDIF()
# IBM Z flags
diff --git a/include/my_valgrind.h b/include/my_valgrind.h
index dbbc4fad5ab..65195147bf3 100644
--- a/include/my_valgrind.h
+++ b/include/my_valgrind.h
@@ -32,7 +32,7 @@
# define MEM_CHECK_DEFINED(a,len) ((void) 0)
#endif /* HAVE_VALGRIND_MEMCHECK_H */
-#ifndef DBUG_OFF
+#if !defined(DBUG_OFF) || defined(TRASH_FREE_MEMORY)
#define TRASH_FILL(A,B,C) do { const size_t trash_tmp= (B); memset(A, C, trash_tmp); MEM_UNDEFINED(A, trash_tmp); } while (0)
#else
#define TRASH_FILL(A,B,C) do{ const size_t trash_tmp __attribute__((unused)) = (B) ; MEM_CHECK_ADDRESSABLE(A,trash_tmp);MEM_UNDEFINED(A,trash_tmp);} while (0)
diff --git a/mysys/my_malloc.c b/mysys/my_malloc.c
index 719c13a040e..2b34c89f5e4 100644
--- a/mysys/my_malloc.c
+++ b/mysys/my_malloc.c
@@ -214,6 +214,13 @@ void my_free(void *ptr)
my_bool old_flags;
old_size= MALLOC_SIZE_AND_FLAG(ptr, &old_flags);
update_malloc_size(- (longlong) old_size - MALLOC_PREFIX_SIZE, old_flags);
+#ifndef SAFEMALLOC
+ /*
+ Trash memory if not safemalloc. We don't have to do this if safemalloc
+ is used as safemalloc will also do trashing
+ */
+ TRASH_FREE(ptr, old_size);
+#endif
sf_free(MALLOC_FIX_POINTER_FOR_FREE(ptr));
}
DBUG_VOID_RETURN;