This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Add --with-build-config=bootstrap-asan support
On Thu, Nov 29, 2012 at 11:06 AM, Jakub Jelinek <email@example.com> wrote:
> On Thu, Nov 29, 2012 at 07:24:38PM +0100, Paolo Carlini wrote:
>> On 11/29/2012 06:36 PM, Tobias Burnus wrote:
>> >H.J. Lu wrote:
>> >>This patch adds --with-build-config=bootstrap-asan support. Tested on
>> >>Linux/x86-64. OK to install?
>> >I think that patch has broken bootstrap for me. If I do a normal
>> >bootstrap, Stage1 fails with:
>> >libtool: compile: unrecognized option `-D_GNU_SOURCE'
>> >libtool: compile: Try `libtool --help' for more information.
>> >make: *** [interception_linux.lo] Error 1
>> >make: Leaving directory `/home/burnus/gcc/build/x86_64-unknown-linux-gnu/libsanitizer/interception'
>> Likewise here. Would it be possible to revert the offending commit,
>> in the meanwhile?
> Yes, H.J., please revert the patch, I thought you have tested it alone
> without any further patches. For the -I patch, I really would prefer if
> libsanitizer just had a dependency on libstdc++ at toplevel
> (configure-target-sanitizer depending on all-target-libstdc++-v3),
> then you can (and similarly for host variants if we need host sanitizer at
> all). Then you should be able to use scripts/testsuite_flags
> --build-includes just fine.
# CXX_FOR_TARGET is tricky to get right for target libs that require a
# functional C++ compiler. When we recurse, if we expand
# CXX_FOR_TARGET before configuring libstdc++-v3, we won't get
# libstdc++ include flags from the script. Instead, we get an
# -funconfigured-* word, so that we'll get errors if this invalid C++
# command line is used for anything, but also so that we can use the
# word to decide whether or not to pass on this CXX_FOR_TARGET. If we
# don't pass it on, sub-make will use the default definition, that
# re-expands it at the time of use, so we'll get it right when we need
# it. One potential exception is the expansion of CXX_FOR_TARGET
# passed down as part of CXX within TARGET_FLAGS, but this wouldn't
# really work, for C++ host programs can't depend on the current-stage
# C++ target library.
CXX_FOR_TARGET_FLAG_TO_PASS = \
$(shell if echo "$(CXX_FOR_TARGET)" | grep " -funconfigured-"
> /dev/null; then :; else echo '"CXX_FOR_TARGET=$(CXX_FOR_TARGET)"';
bootstrap library in C++ has raw_cxx=true and
-B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ `if test -f
--build-includes; else echo -funconfigured-libstdc++-v3 ; fi`
-shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++
That is why we need to explicit -I for libstdc++ header files.
If we remove raw_cxx=true from bootstrap C++ library, which
include libstdc++ and libjava, they won't compile for multitib.
scripts/testsuite_flags can not be used to compile bootstrap library