summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN <yann.morin.1998@free.fr>2014-08-31 15:30:34 (GMT)
committerYann E. MORIN <yann.morin.1998@free.fr>2014-08-31 16:54:13 (GMT)
commita56df802eb3bc57d6ae883ad30c1825de0b24c44 (patch)
treefee88eb94a2bf7d34e0022d1e29bfd647df0afdc
parent15f60baf95fb6f9512e7cddf468cdbd01734355d (diff)
cc/gcc: add option to enable/disable libsanitizer
libsaniotizer requires a few headers that are not in uClibc, for example. Also, it is only available for native threads (NPTL under glibc.) Finally, it is only available starting with gcc-4.8. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-rw-r--r--config/cc/gcc.in6
-rw-r--r--config/cc/gcc.in.214
-rw-r--r--scripts/build/cc/gcc.sh10
3 files changed, 27 insertions, 3 deletions
diff --git a/config/cc/gcc.in b/config/cc/gcc.in
index 7e2250f..5051804 100644
--- a/config/cc/gcc.in
+++ b/config/cc/gcc.in
@@ -368,6 +368,7 @@ config CC_GCC_4_8
select CC_GCC_HAS_BUILD_ID
select CC_GCC_HAS_LNK_HASH_STYLE
select CC_GCC_HAS_LIBQUADMATH
+ select CC_GCC_HAS_LIBSANITIZER
select CC_SUPPORT_GOLANG
config CC_GCC_4_8_or_later
@@ -385,6 +386,7 @@ config CC_GCC_4_9
select CC_GCC_HAS_BUILD_ID
select CC_GCC_HAS_LNK_HASH_STYLE
select CC_GCC_HAS_LIBQUADMATH
+ select CC_GCC_HAS_LIBSANITIZER
select CC_SUPPORT_GOLANG
config CC_GCC_4_9_or_later
@@ -402,6 +404,7 @@ config CC_GCC_latest
select CC_GCC_HAS_BUILD_ID
select CC_GCC_HAS_LNK_HASH_STYLE
select CC_GCC_HAS_LIBQUADMATH
+ select CC_GCC_HAS_LIBSANITIZER
config CC_GCC_HAS_GRAPHITE
bool
@@ -482,6 +485,9 @@ config CC_GCC_USE_LIBELF
config CC_GCC_HAS_LIBQUADMATH
bool
+config CC_GCC_HAS_LIBSANITIZER
+ bool
+
config CC_VERSION
string
# Don't remove next line
diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2
index ef97698..1b9515c 100644
--- a/config/cc/gcc.in.2
+++ b/config/cc/gcc.in.2
@@ -143,6 +143,20 @@ config CC_GCC_LIBQUADMATH
The default is 'N'. Say 'Y' if you need it, and report success/failure.
+config CC_GCC_LIBSANITIZER
+ bool
+ prompt "Compile libsanitizer"
+ depends on CC_GCC_HAS_LIBSANITIZER
+ depends on THREADS_NATIVE
+ depends on ! LIBC_uClibc # Currently lacks required headers (like netrom.h)
+ help
+ libsanitizer is a library which provides run-time sanitising of either
+ or both of:
+ - memory access patterns (out-of-bonds, use-after-free)
+ - racy data accesses (in multi-threaded programs)
+
+ The default is 'N'. Say 'Y' if you need it, and report success/failure.
+
#-----------------------------------------------------------------------------
comment "Misc. obscure options."
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index 173ddbf..9dbc41e 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -657,9 +657,6 @@ do_cc_backend() {
if [ "${CT_THREADS}" = "none" ]; then
extra_config+=(--disable-libatomic)
fi
- if [ "${CT_THREADS}" != "nptl" ]; then
- extra_config+=(--disable-libsanitizer)
- fi
fi
if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then
extra_config+=(--enable-libmudflap)
@@ -685,6 +682,13 @@ do_cc_backend() {
extra_config+=(--disable-libquadmath-support)
fi
fi
+ if [ "${CT_CC_GCC_HAS_LIBSANITIZER}" = "y" ]; then
+ if [ "${CT_CC_GCC_LIBSANITIZER}" = "y" ]; then
+ extra_config+=(--enable-libsanitizer)
+ else
+ extra_config+=(--disable-libsanitizer)
+ fi
+ fi
final_LDFLAGS+=("${ldflags}")