This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: PR sanitizer/59136: llvm-symbolizer shouldn't be started always


Hi,

This patch adds --enable-llvm-symbolizer and disables llvm-symbolizer by
default.  Without it, GCC sanitizer is unusable on systems with
unsupported /bin/llvm-symbolizer.  OK to install?

Thanks.

H.J.
2013-11-24  H.J. Lu  <hongjiu.lu@intel.com>

	PR sanitizer/59136
	* configure.ac: Add --enable-llvm-symbolizer.  Disable
	llvm-symbolizer by default.  AC_SUBST disable_llvm_symbolizer.
	* sanitizer_common/Makefile.am (DEFS): Add @disable_llvm_symbolizer@.
	* configure: Regenerated.
	* sanitizer_common/Makefile.in: Likewise.

	* sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
	(Symbolizer::InitializeExternal): Return false if
	DISABLE_LLVM_SYMBOLIZER is defined.

diff --git a/libsanitizer/configure b/libsanitizer/configure
index 22f7fee..e360915 100755
--- a/libsanitizer/configure
+++ b/libsanitizer/configure
@@ -703,6 +703,7 @@ build_os
 build_vendor
 build_cpu
 build
+disable_llvm_symbolizer
 target_alias
 host_alias
 build_alias
@@ -745,6 +746,7 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 enable_version_specific_runtime_libs
+enable_llvm_symbolizer
 enable_multilib
 enable_maintainer_mode
 enable_dependency_tracking
@@ -1391,6 +1393,7 @@ Optional Features:
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory
+  --enable-llvm-symbolizer  Enable llvm-symbolizer
   --enable-multilib       build many library versions (default)
   --enable-maintainer-mode  enable make rules and dependencies not useful
 			  (and sometimes confusing) to the casual installer
@@ -2435,6 +2438,28 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $version_specific_libs" >&5
 $as_echo "$version_specific_libs" >&6; }
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-llvm-symbolizer" >&5
+$as_echo_n "checking for --enable-llvm-symbolizer... " >&6; }
+# Check whether --enable-llvm-symbolizer was given.
+if test "${enable_llvm_symbolizer+set}" = set; then :
+  enableval=$enable_llvm_symbolizer; case "$enableval" in
+ yes) enable_llvm_symbolizer=yes ;;
+ no)  enable_llvm_symbolizer=no ;;
+ *)   enable_llvm_symbolizer=no;;
+ esac
+else
+  enable_llvm_symbolizer=no
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_llvm_symbolizer" >&5
+$as_echo "$enable_llvm_symbolizer" >&6; }
+if test "$enable_llvm_symbolizer" = "no"; then
+  disable_llvm_symbolizer="-DDISABLE_LLVM_SYMBOLIZER"
+else
+  disable_llvm_symbolizer=
+fi
+
+
 # Do not delete or change the following two lines.  For why, see
 # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
 ac_aux_dir=
@@ -11119,7 +11144,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11122 "configure"
+#line 11147 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11225,7 +11250,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11228 "configure"
+#line 11253 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac
index f769fdb..492a5e2 100644
--- a/libsanitizer/configure.ac
+++ b/libsanitizer/configure.ac
@@ -16,6 +16,23 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
 [version_specific_libs=no])
 AC_MSG_RESULT($version_specific_libs)
 
+AC_MSG_CHECKING([for --enable-llvm-symbolizer])
+AC_ARG_ENABLE(llvm-symbolizer,
+[  --enable-llvm-symbolizer  Enable llvm-symbolizer],
+[case "$enableval" in
+ yes) enable_llvm_symbolizer=yes ;;
+ no)  enable_llvm_symbolizer=no ;;
+ *)   enable_llvm_symbolizer=no;;
+ esac],
+[enable_llvm_symbolizer=no])
+AC_MSG_RESULT($enable_llvm_symbolizer)
+if test "$enable_llvm_symbolizer" = "no"; then
+  disable_llvm_symbolizer="-DDISABLE_LLVM_SYMBOLIZER"
+else
+  disable_llvm_symbolizer=
+fi
+AC_SUBST(disable_llvm_symbolizer)
+
 # Do not delete or change the following two lines.  For why, see
 # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
 AC_CANONICAL_SYSTEM
diff --git a/libsanitizer/sanitizer_common/Makefile.am b/libsanitizer/sanitizer_common/Makefile.am
index c4c3c5e..713b129 100644
--- a/libsanitizer/sanitizer_common/Makefile.am
+++ b/libsanitizer/sanitizer_common/Makefile.am
@@ -3,7 +3,7 @@ AM_CPPFLAGS = -I $(top_srcdir)/include
 # May be used by toolexeclibdir.
 gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
 
-DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS 
+DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS @disable_llvm_symbolizer@
 AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long  -fPIC -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros
 AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
 ACLOCAL_AMFLAGS = -I m4
diff --git a/libsanitizer/sanitizer_common/Makefile.in b/libsanitizer/sanitizer_common/Makefile.in
index b54a28f..ff7570f 100644
--- a/libsanitizer/sanitizer_common/Makefile.in
+++ b/libsanitizer/sanitizer_common/Makefile.in
@@ -106,7 +106,7 @@ CXXCPP = @CXXCPP@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
-DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS 
+DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS @disable_llvm_symbolizer@
 DEPDIR = @DEPDIR@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
@@ -176,6 +176,7 @@ build_vendor = @build_vendor@
 builddir = @builddir@
 datadir = @datadir@
 datarootdir = @datarootdir@
+disable_llvm_symbolizer = @disable_llvm_symbolizer@
 docdir = @docdir@
 dvidir = @dvidir@
 enable_shared = @enable_shared@
diff --git a/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
index 3406308..6bc047c 100644
--- a/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
@@ -450,6 +450,9 @@ class Symbolizer : public SymbolizerInterface {
   }
 
   bool InitializeExternal(const char *path_to_symbolizer) {
+#ifdef DISABLE_LLVM_SYMBOLIZER
+    return false;
+#else
     if (!path_to_symbolizer || path_to_symbolizer[0] == '\0') {
       path_to_symbolizer = FindPathToBinary("llvm-symbolizer");
       if (!path_to_symbolizer)
@@ -462,6 +465,7 @@ class Symbolizer : public SymbolizerInterface {
     external_symbolizer_ = new(mem) ExternalSymbolizer(path_to_symbolizer,
                                                        input_fd, output_fd);
     return true;
+#endif
   }
 
   bool IsAvailable() {
-- 
1.8.3.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]