PING^2: [PATCH] PR sanitizer/55533: Can't bootstrap libsanitizer

H.J. Lu hjl.tools@gmail.com
Tue Dec 11 15:04:00 GMT 2012


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.

I think it is just copied from elsewhere.  I will take a look after this.

>>>> 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.

Sure.

>>>> 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.

I don't believe it is possible with libsanitizer in GCC since it
uses GCC toplevel files.  Where do you get those toplevel files
when you compile it standalone?

> Bonus points for using this macro elsewhere in the tree.
>
>>>>  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.

I prefer to leave them where they are so that

# cd asan
# make

can compile.  If they are passed from the parent directory,
this won't work.

>
>>>> 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.
>
> Paolo
>

How do I AC_REQUIRE it? I just copied it from other places:

[hjl@gnu-6 gcc]$ grep ACX_NONCANONICAL_TARGET */configure.*
boehm-gc/configure.ac:ACX_NONCANONICAL_TARGET
fixincludes/configure.ac:ACX_NONCANONICAL_TARGET
gcc/configure.ac:ACX_NONCANONICAL_TARGET
gnattools/configure.ac:ACX_NONCANONICAL_TARGET
libada/configure.ac:ACX_NONCANONICAL_TARGET
libgcc/configure.ac:ACX_NONCANONICAL_TARGET
libgfortran/configure.ac:ACX_NONCANONICAL_TARGET
libmudflap/configure.ac:ACX_NONCANONICAL_TARGET
libobjc/configure.ac:ACX_NONCANONICAL_TARGET
libquadmath/configure.ac:ACX_NONCANONICAL_TARGET
libssp/configure.ac:ACX_NONCANONICAL_TARGET

Thanks.

-- 
H.J.



More information about the Gcc-patches mailing list