Tarantool development patches archive
 help / color / mirror / Atom feed
From: Alexander Turenko <alexander.turenko@tarantool.org>
To: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Alexander Turenko <alexander.turenko@tarantool.org>,
	tarantool-patches@freelists.org
Subject: [PATCH] Forbid -DENABLE_ASAN=ON with GCC explicitly
Date: Sun, 23 Dec 2018 05:00:50 +0300	[thread overview]
Message-ID: <438b199fa05278d9be0572c47e3c773ba23ab147.1545529816.git.alexander.turenko@tarantool.org> (raw)

The build time error is confusing for users. The patch makes the error
explicit and moves it to the cmake stage.

Follow up of #3070.
---

It is simple fixup to bring a user's attention to the configuration
error and push (s)he to do full cleanup and use clang.

To be honest, I don't know why luajit cannot be compiled with
-fsanitize=address with GCC. It is smth with always inline attribute,
there is the example in [1].

https://github.com/tarantool/tarantool/tree/Totktonada/gh-3070-forbid-asan-on-gcc
https://github.com/tarantool/tarantool/issues/3070#issuecomment-449327136

Please, push to 2.1 and 1.10 branches.

[1]: https://github.com/tarantool/tarantool/issues/3070#issuecomment-449297693

 cmake/profile.cmake | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/cmake/profile.cmake b/cmake/profile.cmake
index 3e8f1499b..0ba31fa2c 100644
--- a/cmake/profile.cmake
+++ b/cmake/profile.cmake
@@ -44,7 +44,14 @@ endif()
 
 option(ENABLE_ASAN "Enable AddressSanitizer, a fast memory error detector based on compiler instrumentation" OFF)
 if (ENABLE_ASAN)
-    add_compile_flags("C;CXX" -fsanitize=address)
+    if (CMAKE_COMPILER_IS_GNUCC)
+        message(FATAL_ERROR
+            "\n"
+            " Tarantool does not support GCC's AddressSanitizer. Use clang:\n"
+            " $ git clean -xfd; git submodule foreach --recursive git clean -xfd\n"
+            " $ CC=clang CXX=clang++ cmake . <...> -DENABLE_ASAN=ON && make -j\n"
+            "\n")
+    endif()
 
     set(CMAKE_REQUIRED_FLAGS "-fsanitize=address")
     check_c_source_compiles("int main(void) {
@@ -68,4 +75,6 @@ if (ENABLE_ASAN)
     else()
         message(FATAL_ERROR "Cannot enable AddressSanitizer")
     endif()
+
+    add_compile_flags("C;CXX" -fsanitize=address)
 endif()
-- 
2.20.0

             reply	other threads:[~2018-12-23  2:00 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-23  2:00 Alexander Turenko [this message]
2018-12-24 11:26 ` Vladimir Davydov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=438b199fa05278d9be0572c47e3c773ba23ab147.1545529816.git.alexander.turenko@tarantool.org \
    --to=alexander.turenko@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --cc=vdavydov.dev@gmail.com \
    --subject='Re: [PATCH] Forbid -DENABLE_ASAN=ON with GCC explicitly' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox