This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PING^2: [PATCH] PR sanitizer/55533: Can't bootstrap libsanitizer
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Paolo Bonzini <bonzini at gnu dot org>
- Cc: DJ Delorie <dj at redhat dot com>, neroden at gcc dot gnu dot org, Alexandre Oliva <aoliva at redhat dot com>, Ralf Wildenhues <Ralf dot Wildenhues at gmx dot de>, gcc-patches at gcc dot gnu dot org
- Date: Tue, 11 Dec 2012 11:27:14 -0800
- Subject: Re: PING^2: [PATCH] PR sanitizer/55533: Can't bootstrap libsanitizer
- References: <CAMe9rOpQZMupBHgJgMy2N0RRz3CbtxZ_Lfd1YjKbrf-oS0dK9A@mail.gmail.com> <50C744EC.6080109@gnu.org>
On Tue, Dec 11, 2012 at 6:36 AM, Paolo Bonzini <bonzini@gnu.org> wrote:
>
> As a followup please check if AM_MAKEFLAGS is needed at all.
>
>>>> diff --git a/libsanitizer/Makefile.in b/libsanitizer/Makefile.in
>>>> index 21c2711..53e0be9 100644
>>>> --- a/libsanitizer/Makefile.in
>>>> +++ b/libsanitizer/Makefile.in
>
> Please do not include regenerated files in the patch.
>
>>>> diff --git a/libsanitizer/asan/Makefile.am b/libsanitizer/asan/Makefile.am
>>>> index 3da1db3..45fb3b3 100644
>>>> --- a/libsanitizer/asan/Makefile.am
>>>> +++ b/libsanitizer/asan/Makefile.am
>>>> @@ -5,6 +5,10 @@ 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 -DASAN_HAS_EXCEPTIONS=1 -DASAN_FLEXIBLE_MAPPING_AND_OFFSET=0 -DASAN_NEEDS_SEGV=1
>>>> AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -Wno-c99-extensions
>>>> +## We require libstdc++-v3 to be in the same build tree.
>>>> +AM_CXXFLAGS += -I../../libstdc++-v3/include \
>>>> + -I../../libstdc++-v3/include/$(target_noncanonical) \
>>>> + -I$(srcdir)/../../libstdc++-v3/libsupc++
>
> As a followup, please bring back the possibility to build libsanitizer
> standalone, also wrapping the chooice of flags to link to libstdc++-v3
> in a new config/libstdc++-raw-cxx.m4 file.
Done.
> Bonus points for using this macro elsewhere in the tree.
That will be a separate patch.
>>>> ACLOCAL_AMFLAGS = -I $(top_srcdir) -I $(top_srcdir)/config
>>>>
>>>> toolexeclib_LTLIBRARIES = libasan.la
>>>> @@ -64,8 +68,6 @@ AM_MAKEFLAGS = \
>>>> "includedir=$(includedir)" \
>>>> "AR=$(AR)" \
>>>> "AS=$(AS)" \
>>>> - "CC=$(CC)" \
>>>> - "CXX=$(CXX)" \
>>>> "LD=$(LD)" \
>>>> "LIBCFLAGS=$(LIBCFLAGS)" \
>>>> "NM=$(NM)" \
>
> Same as above, and same for other .am files.
>
>
>>>> diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac
>>>> index 2d62ec4..9c73904 100644
>>>> --- a/libsanitizer/configure.ac
>>>> +++ b/libsanitizer/configure.ac
>>>> @@ -19,6 +19,7 @@ AC_MSG_RESULT($version_specific_libs)
>>>> # 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
>>>> +ACX_NONCANONICAL_TARGET
>
> Note that if you create a new macro, ACX_NONCANONICAL_TARGET should be
> AC_REQUIREd there.
>
Here is the updated patch. OK to install?
Thanks.
--
H.J.
---
config/
2012-12-11 H.J. Lu <hongjiu.lu@intel.com>
PR sanitizer/55533
* libstdc++-raw-cxx.m4: New file.
libsanitizer/
2012-12-11 H.J. Lu <hongjiu.lu@intel.com>
PR sanitizer/55533
* Makefile.am (AM_MAKEFLAGS): Remove CC and CXX.
* configure.ac (GCC_LIBSTDCXX_RAW_CXX_CXXFLAGS): New.
* asan/Makefile.am (AM_CXXFLAGS): Add $(LIBSTDCXX_RAW_CXX_CXXFLAGS).
(AM_MAKEFLAGS): Remove CC and CXX.
* interception/Makefile.am: Likewise.
* sanitizer_common/Makefile.am: Likewise.
* tsan/Makefile.am: Likewise.
* Makefile.in: Regenerated.
* aclocal.m4: Likewise.
* configure: Likewise.
* asan/Makefile.in: Likewise.
* interception/Makefile.in: Likewise.
* sanitizer_common/Makefile.in: Likewise.
* tsan/Makefile.in: Likewise.
diff --git a/config/libstdc++-raw-cxx.m4 b/config/libstdc++-raw-cxx.m4
new file mode 100644
index 0000000..453153c
--- /dev/null
+++ b/config/libstdc++-raw-cxx.m4
@@ -0,0 +1,26 @@
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# Define compiler flags, LIBSTDCXX_RAW_CXX_CXXFLAGS, for libstdc++-v3
+# header files to compile libraries in C++ with raw_cxx=true.
+AC_DEFUN([GCC_LIBSTDCXX_RAW_CXX_CXXFLAGS], [
+ AC_REQUIRE([ACX_NONCANONICAL_TARGET])
+ LIBSTDCXX_RAW_CXX_CXXFLAGS="\
+ -I\$(top_builddir)/../libstdc++-v3/include \
+ -I\$(top_builddir)/../libstdc++-v3/include/\$(target_noncanonical) \
+ -I\$(top_srcdir)/../libstdc++-v3/libsupc++"
+ AC_SUBST(LIBSTDCXX_RAW_CXX_CXXFLAGS)
+])
diff --git a/libsanitizer/Makefile.am b/libsanitizer/Makefile.am
index 9a06839..308d438 100644
--- a/libsanitizer/Makefile.am
+++ b/libsanitizer/Makefile.am
@@ -41,8 +41,6 @@ AM_MAKEFLAGS = \
"includedir=$(includedir)" \
"AR=$(AR)" \
"AS=$(AS)" \
- "CC=$(CC)" \
- "CXX=$(CXX)" \
"LD=$(LD)" \
"LIBCFLAGS=$(LIBCFLAGS)" \
"NM=$(NM)" \
diff --git a/libsanitizer/asan/Makefile.am b/libsanitizer/asan/Makefile.am
index 7656f9f..59327a0 100644
--- a/libsanitizer/asan/Makefile.am
+++ b/libsanitizer/asan/Makefile.am
@@ -8,6 +8,7 @@ if USING_MAC_INTERPOSE
DEFS += -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT
endif
AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings
-pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions
-fomit-frame-pointer -funwind-tables -fvisibility=hidden
-Wno-variadic-macros -Wno-c99-extensions
+AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
ACLOCAL_AMFLAGS = -I $(top_srcdir) -I $(top_srcdir)/config
toolexeclib_LTLIBRARIES = libasan.la
@@ -73,8 +74,6 @@ AM_MAKEFLAGS = \
"includedir=$(includedir)" \
"AR=$(AR)" \
"AS=$(AS)" \
- "CC=$(CC)" \
- "CXX=$(CXX)" \
"LD=$(LD)" \
"LIBCFLAGS=$(LIBCFLAGS)" \
"NM=$(NM)" \
diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac
index 30614e5..4090e6c 100644
--- a/libsanitizer/configure.ac
+++ b/libsanitizer/configure.ac
@@ -21,6 +21,7 @@ AC_MSG_RESULT($version_specific_libs)
AC_CANONICAL_SYSTEM
target_alias=${target_alias-$host_alias}
AC_SUBST(target_alias)
+GCC_LIBSTDCXX_RAW_CXX_CXXFLAGS
AM_INIT_AUTOMAKE(foreign)
AM_ENABLE_MULTILIB(, ..)
diff --git a/libsanitizer/interception/Makefile.am
b/libsanitizer/interception/Makefile.am
index a815dcf..6ae59b5 100644
--- a/libsanitizer/interception/Makefile.am
+++ b/libsanitizer/interception/Makefile.am
@@ -5,6 +5,7 @@ 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
AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings
-pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions
-fomit-frame-pointer -funwind-tables -fvisibility=hidden
-Wno-variadic-macros -Wno-c99-extensions
+AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
ACLOCAL_AMFLAGS = -I m4
noinst_LTLIBRARIES = libinterception.la
@@ -47,8 +48,6 @@ AM_MAKEFLAGS = \
"includedir=$(includedir)" \
"AR=$(AR)" \
"AS=$(AS)" \
- "CC=$(CC)" \
- "CXX=$(CXX)" \
"LD=$(LD)" \
"LIBCFLAGS=$(LIBCFLAGS)" \
"NM=$(NM)" \
diff --git a/libsanitizer/sanitizer_common/Makefile.am
b/libsanitizer/sanitizer_common/Makefile.am
index 2968c05..708b2a4 100644
--- a/libsanitizer/sanitizer_common/Makefile.am
+++ b/libsanitizer/sanitizer_common/Makefile.am
@@ -5,6 +5,7 @@ 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
AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings
-pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions
-fomit-frame-pointer -funwind-tables -fvisibility=hidden
-Wno-variadic-macros -Wno-c99-extensions
+AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
ACLOCAL_AMFLAGS = -I m4
noinst_LTLIBRARIES = libsanitizer_common.la
@@ -59,8 +60,6 @@ AM_MAKEFLAGS = \
"includedir=$(includedir)" \
"AR=$(AR)" \
"AS=$(AS)" \
- "CC=$(CC)" \
- "CXX=$(CXX)" \
"LD=$(LD)" \
"LIBCFLAGS=$(LIBCFLAGS)" \
"NM=$(NM)" \
diff --git a/libsanitizer/tsan/Makefile.am b/libsanitizer/tsan/Makefile.am
index a391986..867c152 100644
--- a/libsanitizer/tsan/Makefile.am
+++ b/libsanitizer/tsan/Makefile.am
@@ -5,6 +5,7 @@ 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
AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings
-pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions
-fomit-frame-pointer -funwind-tables -fvisibility=hidden
-Wno-variadic-macros
+AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
ACLOCAL_AMFLAGS = -I m4
toolexeclib_LTLIBRARIES = libtsan.la
@@ -67,8 +68,6 @@ AM_MAKEFLAGS = \
"includedir=$(includedir)" \
"AR=$(AR)" \
"AS=$(AS)" \
- "CC=$(CC)" \
- "CXX=$(CXX)" \
"LD=$(LD)" \
"LIBCFLAGS=$(LIBCFLAGS)" \
"NM=$(NM)" \