public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "H.J. Lu" <hjl.tools@gmail.com>
To: Jakub Jelinek <jakub@redhat.com>
Cc: Paolo Carlini <paolo.carlini@oracle.com>,
	Tobias Burnus <burnus@net-b.de>,
	gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] Add --with-build-config=bootstrap-asan support
Date: Thu, 29 Nov 2012 20:12:00 -0000	[thread overview]
Message-ID: <CAMe9rOr6QDKMT_gK6oT5xp5UFBNNLkfBJFqBuAihxdR0tMd6dA@mail.gmail.com> (raw)
In-Reply-To: <20121129190602.GB2315@tucnak.redhat.com>

On Thu, Nov 29, 2012 at 11:06 AM, Jakub Jelinek <jakub@redhat.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[4]: *** [interception_linux.lo] Error 1
>> >make[4]: 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

Done.

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

From Makefile.tpl:

@if target-libstdc++-v3
# 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)"';
fi)
@endif target-libstdc++-v3

bootstrap library in C++ has raw_cxx=true and

CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/gcc/g++
-B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ `if test -f
$$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags; then
$(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags
--build-includes; else echo -funconfigured-libstdc++-v3 ; fi`
-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src
-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs
RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/gcc/xgcc
-shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++
-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src
-L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs

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
in C++.

-- 
H.J.

  reply	other threads:[~2012-11-29 19:26 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-22 20:37 H.J. Lu
2012-11-29 16:12 ` Jakub Jelinek
2012-11-29 17:36 ` Tobias Burnus
2012-11-29 17:44   ` H.J. Lu
2012-11-29 18:03   ` Tobias Burnus
2012-11-29 18:24   ` Paolo Carlini
2012-11-29 18:33     ` H.J. Lu
2012-11-29 19:04       ` H.J. Lu
2012-11-29 19:26         ` Andrew Pinski
2012-11-29 19:06     ` Jakub Jelinek
2012-11-29 20:12       ` H.J. Lu [this message]
2012-12-06 12:06         ` Markus Trippelsdorf
2012-11-29 20:46       ` H.J. Lu
2012-12-03 11:52         ` Jakub Jelinek
2012-12-03 18:02           ` H.J. Lu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAMe9rOr6QDKMT_gK6oT5xp5UFBNNLkfBJFqBuAihxdR0tMd6dA@mail.gmail.com \
    --to=hjl.tools@gmail.com \
    --cc=burnus@net-b.de \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=paolo.carlini@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).