aboutsummaryrefslogtreecommitdiff
path: root/gdb/sanitize.m4
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/sanitize.m4')
-rw-r--r--gdb/sanitize.m446
1 files changed, 46 insertions, 0 deletions
diff --git a/gdb/sanitize.m4 b/gdb/sanitize.m4
new file mode 100644
index 0000000..76df44d
--- /dev/null
+++ b/gdb/sanitize.m4
@@ -0,0 +1,46 @@
+dnl Sanitization-related configure macro for GDB
+dnl Copyright (C) 2018 Free Software Foundation, Inc.
+dnl
+dnl This file is part of GDB.
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+AC_DEFUN([AM_GDB_UBSAN],[
+AC_ARG_ENABLE(ubsan,
+ AS_HELP_STRING([--enable-ubsan],
+ [enable undefined behavior sanitizer (auto/yes/no)]),
+ [],enable_ubsan=auto)
+if test "x$enable_ubsan" = xauto; then
+ if $development; then
+ enable_ubsan=yes
+ fi
+fi
+AC_LANG_PUSH([C++])
+if test "x$enable_ubsan" = xyes; then
+ AC_MSG_CHECKING(whether -fsanitize=undefined is accepted)
+ saved_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined"
+ dnl A link check is required because it is possible to install gcc
+ dnl without libubsan, leading to link failures when compiling with
+ dnl -fsanitize=undefined.
+ AC_TRY_LINK([],[],enable_ubsan=yes,enable_ubsan=no)
+ CXXFLAGS="$saved_CXXFLAGS"
+ AC_MSG_RESULT($enable_ubsan)
+ if test "x$enable_ubsan" = xyes; then
+ WARN_CFLAGS="$WARN_CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined"
+ CONFIG_LDFLAGS="$CONFIG_LDFLAGS -fsanitize=undefined"
+ fi
+fi
+AC_LANG_POP([C++])
+])