Hi, On Sat, Nov 17, 2012 at 03:54:41PM -0800, H.J. Lu wrote: > Hi, > > This patch adds --with-build-config=bootstrap-asan support. OK to > install?
I suppose this should be also described in gcc/doc/install.texi? Thanks, Martin > > Thanks. > > > H.J. > --- > 2012-11-17 H.J. Lu <hongjiu...@intel.com> > > * Makefile.def (target_modules): Add bootstrap=true for > libsanitizer. > * Makefile.tpl (LIBASAN_LIBS): New for gcc-bootstrap. Defined > if $(BUILD_CONFIG) contains bootstrap-asan. > (POSTSTAGE1_CXX_EXPORT): Add $(LIBASAN_LIBS) to CXX. > (POSTSTAGE1_HOST_EXPORTS): Add $(LIBASAN_LIBS) to CC. > * configure.ac (bootstrap_target_libs): Add libsanitizer. > * Makefile.in: Regenerated. > * configure: Likewise. > > config/ > > 2012-11-17 H.J. Lu <hongjiu...@intel.com> > > * bootstrap-asan.mk: New file. > > diff --git a/Makefile.def b/Makefile.def > index 1ea63ac..8d54ad2 100644 > --- a/Makefile.def > +++ b/Makefile.def > @@ -119,7 +119,7 @@ target_modules = { module= libstdc++-v3; > lib_path=src/.libs; > raw_cxx=true; }; > target_modules = { module= libmudflap; lib_path=.libs; }; > -target_modules = { module= libsanitizer; lib_path=.libs; }; > +target_modules = { module= libsanitizer; bootstrap=true; lib_path=.libs; }; > target_modules = { module= libssp; lib_path=.libs; }; > target_modules = { module= newlib; }; > target_modules = { module= libgcc; bootstrap=true; no_check=true; }; > diff --git a/Makefile.tpl b/Makefile.tpl > index 146666a..e40e92b 100644 > --- a/Makefile.tpl > +++ b/Makefile.tpl > @@ -131,6 +131,12 @@ POSTSTAGE1_LDFLAGS = @poststage1_ldflags@ > # Libraries to use for stage2 and later. > POSTSTAGE1_LIBS = @poststage1_libs@ > > +@if gcc-bootstrap > +ifneq ($(filter bootstrap-asan,$(BUILD_CONFIG)),) > +LIBASAN_LIBS=-B$$r/prev-$(TARGET_SUBDIR)/libsanitizer/asan/.libs > +endif > +@endif gcc-bootstrap > + > # This is the list of variables to export in the environment when > # configuring any subdirectory. It must also be exported whenever > # recursing into a build directory in case that directory's Makefile > @@ -242,6 +248,7 @@ POSTSTAGE1_CXX_EXPORT = \ > -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \ > -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ > -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \ > + $(LIBASAN_LIBS) \ > -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ > -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ > -I$$s/libstdc++-v3/libsupc++ \ > @@ -256,6 +263,7 @@ POSTSTAGE1_HOST_EXPORTS = \ > $(HOST_EXPORTS) \ > CC="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xgcc$(exeext) \ > -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ > + $(LIBASAN_LIBS) \ > $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ > CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ > $(POSTSTAGE1_CXX_EXPORT) \ > diff --git a/config/bootstrap-asan.mk b/config/bootstrap-asan.mk > new file mode 100644 > index 0000000..cae203b > --- /dev/null > +++ b/config/bootstrap-asan.mk > @@ -0,0 +1,5 @@ > +# This option enables -faddress-sanitizer for stage2 and stage3. > + > +STAGE2_CFLAGS += -faddress-sanitizer > +STAGE3_CFLAGS += -faddress-sanitizer > +POSTSTAGE1_LDFLAGS += -faddress-sanitizer -static-libasan > diff --git a/configure.ac b/configure.ac > index 24ea7e5..64e0387 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -2433,6 +2433,11 @@ if echo " ${target_configdirs} " | grep " libgomp " > > /dev/null 2>&1 ; then > bootstrap_target_libs=${bootstrap_target_libs}target-libgomp, > fi > > +# If we are building libsanitizer, bootstrap it. > +if echo " ${target_configdirs} " | grep " libsanitizer " > /dev/null 2>&1 ; > then > + bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer, > +fi > + > # Determine whether gdb needs tk/tcl or not. > # Use 'maybe' since enable_gdbtk might be true even if tk isn't available > # and in that case we want gdb to be built without tk. Ugh!