aboutsummaryrefslogtreecommitdiff
path: root/gdb/sanitize.m4
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-08-18 15:32:46 -0600
committerTom Tromey <tom@tromey.com>2018-10-03 15:19:06 -0600
commitf35d5adea1cee8ce9141ad85a7e59d008c2e4d42 (patch)
tree88cb5d24575333e1977ac5aab23466d476992288 /gdb/sanitize.m4
parent1dffa580e7e083a43216fd7cbcadd72c760cf29d (diff)
downloadgdb-f35d5adea1cee8ce9141ad85a7e59d008c2e4d42.zip
gdb-f35d5adea1cee8ce9141ad85a7e59d008c2e4d42.tar.gz
gdb-f35d5adea1cee8ce9141ad85a7e59d008c2e4d42.tar.bz2
Add --enable-ubsan
This adds --enable-ubsan to gdb's configure. By default it is enabled in development mode, and disabled otherwise. This passes both -fsanitize=undefined and -fno-sanitize-recover=undefined to compilations, so that undefined behavior violations will be sure to cause test failures. gdb/ChangeLog 2018-10-03 Tom Tromey <tom@tromey.com> * README: Mention --enable-ubsan. * NEWS: Mention --enable-ubsan. * acinclude.m4: Include sanitize.m4. * configure: Rebuild. * configure.ac: Call AM_GDB_UBSAN. * sanitize.m4: New file. gdb/doc/ChangeLog 2018-10-03 Tom Tromey <tom@tromey.com> * gdb.texinfo (Configure Options): Document --enable-ubsan.
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++])
+])