Commit | Line | Data |
---|---|---|
f35d5ade | 1 | dnl Sanitization-related configure macro for GDB |
b811d2c2 | 2 | dnl Copyright (C) 2018-2020 Free Software Foundation, Inc. |
f35d5ade TT |
3 | dnl |
4 | dnl This file is part of GDB. | |
5 | dnl | |
6 | dnl This program is free software; you can redistribute it and/or modify | |
7 | dnl it under the terms of the GNU General Public License as published by | |
8 | dnl the Free Software Foundation; either version 3 of the License, or | |
9 | dnl (at your option) any later version. | |
10 | dnl | |
11 | dnl This program is distributed in the hope that it will be useful, | |
12 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | dnl GNU General Public License for more details. | |
15 | dnl | |
16 | dnl You should have received a copy of the GNU General Public License | |
17 | dnl along with this program. If not, see <http://www.gnu.org/licenses/>. | |
18 | ||
19 | AC_DEFUN([AM_GDB_UBSAN],[ | |
20 | AC_ARG_ENABLE(ubsan, | |
21 | AS_HELP_STRING([--enable-ubsan], | |
22 | [enable undefined behavior sanitizer (auto/yes/no)]), | |
eff98030 | 23 | [],enable_ubsan=no) |
f35d5ade TT |
24 | if test "x$enable_ubsan" = xauto; then |
25 | if $development; then | |
26 | enable_ubsan=yes | |
27 | fi | |
28 | fi | |
29 | AC_LANG_PUSH([C++]) | |
30 | if test "x$enable_ubsan" = xyes; then | |
31 | AC_MSG_CHECKING(whether -fsanitize=undefined is accepted) | |
32 | saved_CXXFLAGS="$CXXFLAGS" | |
33 | CXXFLAGS="$CXXFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined" | |
34 | dnl A link check is required because it is possible to install gcc | |
35 | dnl without libubsan, leading to link failures when compiling with | |
36 | dnl -fsanitize=undefined. | |
37 | AC_TRY_LINK([],[],enable_ubsan=yes,enable_ubsan=no) | |
38 | CXXFLAGS="$saved_CXXFLAGS" | |
39 | AC_MSG_RESULT($enable_ubsan) | |
40 | if test "x$enable_ubsan" = xyes; then | |
41 | WARN_CFLAGS="$WARN_CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined" | |
42 | CONFIG_LDFLAGS="$CONFIG_LDFLAGS -fsanitize=undefined" | |
43 | fi | |
44 | fi | |
45 | AC_LANG_POP([C++]) | |
46 | ]) |