summaryrefslogtreecommitdiffstats
path: root/BUILD/compile-pentium64-ubsan
diff options
context:
space:
mode:
Diffstat (limited to 'BUILD/compile-pentium64-ubsan')
-rwxr-xr-xBUILD/compile-pentium64-ubsan37
1 files changed, 37 insertions, 0 deletions
diff --git a/BUILD/compile-pentium64-ubsan b/BUILD/compile-pentium64-ubsan
new file mode 100755
index 00000000..538b5e88
--- /dev/null
+++ b/BUILD/compile-pentium64-ubsan
@@ -0,0 +1,37 @@
+#! /bin/sh
+# Copyright (c) 2018, MariaDB Corporation.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
+
+# Compilation with UBSAN, The Undefined Behavior Sanitizer
+# We have to use -Wno-uninitialized and -Wno-unitialized we get a lot of false
+# positive warnings for this when compiling with -fsanitize=undefined.
+# We also have to compile without Spider as linking with Spider library does
+# not work. (errno: 11, undefined symbol: _ZTI12ha_partition)
+
+path=`dirname $0`
+. "$path/SETUP.sh"
+
+#
+# Enable UBSAN, UndefinedBehaviorSanitizer. Detects undefined behavior like:
+# - Using misaligned or null pointer
+# - Signed integer overflow
+# - Conversion to, from, or between floating-point types which would overflow
+# the destination
+#
+
+extra_flags="$pentium64_cflags $debug_cflags -fsanitize=undefined -DWITH_UBSAN -Wno-conversion -Wno-uninitialized"
+extra_configs="$pentium_configs $debug_configs -DWITH_UBSAN=ON -DMYSQL_MAINTAINER_MODE=NO --without-spider"
+
+. "$path/FINISH.sh"