Il 16/11/2012 01:53, Andrew Pinski ha scritto: > Hi, > If the PATH contains the current working directory (yes a bad idea > but it could happen with our users), the build fails because it finds > the newly created g++ which might not find the correct cc1plus. See > the thread starting at > http://gcc.gnu.org/ml/gcc-patches/2012-08/msg01032.html . > > This fixes the problem by changing the name of the built g++ to xg++ > just like how gcc is handled with xgcc. I had to change the few > places where g++ is used. > > OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions > and made sure the installed binary was called g++.
Ok, thanks! > Thanks, > Andrew Pinski > > ChangeLog: > * configure.ac (CXX_FOR_TARGET): Change over to use xg++. > * configure: Regenerate. > * Makefile.tpl (POSTSTAGE1_CXX_EXPORT): Change over to use xg++. > * Makefile.in: Regenerate. > > gcc/testsuite/ChangeLog: > * lib/g++.exp (g++_init): Search for xg++ instead of g++ in the build > directories. > * lib/obj-c++.exp (obj-c++_init): Likewise. > > gcc/cp/ChangeLog: > * Make-lang.in (g++$(exeext)): Rename to > (xg++$(exeext)): This. > (g++-cross$(exeext)): Use xg++$(exeext) instead of g++$(exeext). > (c++.start.encap): Likewise. > (c++.install-common): Likewise. > > gcc/ChangeLog: > * Makefile.in (${QMTEST_DIR}/context): Use xg++ instead of g++. > > libstdc++-v3/ChangeLog: > * scripts/testsuite_flags.in (--build-cxx): Use xg++ instead of g++. > * testsuite/lib/libstdc++.exp (libstdc++_init): Likewise. > > > fix54279.diff.txt > > > Index: Makefile.in > =================================================================== > --- Makefile.in (revision 193542) > +++ Makefile.in (working copy) > @@ -235,7 +235,7 @@ POSTSTAGE1_CXX_EXPORT = \ > @if target-libstdc++-v3-bootstrap > # Override the above if we're bootstrapping C++. > POSTSTAGE1_CXX_EXPORT = \ > - CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ > + CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xg++$(exeext) \ > -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 \ > Index: libstdc++-v3/scripts/testsuite_flags.in > =================================================================== > --- libstdc++-v3/scripts/testsuite_flags.in (revision 193542) > +++ libstdc++-v3/scripts/testsuite_flags.in (working copy) > @@ -45,7 +45,7 @@ case ${query} in > ;; > --build-cxx) > CXX_build="@CXX@" > - CXX=`echo "$CXX_build" | sed 's,gcc/xgcc ,gcc/g++ ,'` > + CXX=`echo "$CXX_build" | sed 's,gcc/xgcc ,gcc/xg++ ,'` > echo ${CXX} > ;; > --build-cc) > Index: libstdc++-v3/testsuite/lib/libstdc++.exp > =================================================================== > --- libstdc++-v3/testsuite/lib/libstdc++.exp (revision 193542) > +++ libstdc++-v3/testsuite/lib/libstdc++.exp (working copy) > @@ -181,7 +181,7 @@ proc libstdc++_init { testfile } { > > # Compute what needs to be added to the existing LD_LIBRARY_PATH. > if {$gccdir != ""} { > - set compiler ${gccdir}/g++ > + set compiler ${gccdir}/xg++ > set ld_library_path ${ld_library_path_tmp} > append ld_library_path ":${blddir}/src/.libs" > > Index: configure.ac > =================================================================== > --- configure.ac (revision 193542) > +++ configure.ac (working copy) > @@ -3129,7 +3129,7 @@ GCC_TARGET_TOOL(as, AS_FOR_TARGET, AS, [ > GCC_TARGET_TOOL(cc, CC_FOR_TARGET, CC, [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/]) > dnl see comments for CXX_FOR_TARGET_FLAG_TO_PASS > GCC_TARGET_TOOL(c++, CXX_FOR_TARGET, CXX, > - [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], > + [gcc/xg++ -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], > c++) > GCC_TARGET_TOOL(c++ for libstdc++, RAW_CXX_FOR_TARGET, CXX, > [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], > Index: configure > =================================================================== > --- configure (revision 193542) > +++ configure (working copy) > @@ -13628,7 +13628,7 @@ else > esac > if test $ok = yes; then > # An in-tree tool is available and we can use it > - CXX_FOR_TARGET='$$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' > + CXX_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/xg++ -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' > { $as_echo "$as_me:${as_lineno-$LINENO}: result: just compiled" >&5 > $as_echo "just compiled" >&6; } > elif expr "x$CXX_FOR_TARGET" : "x/" > /dev/null; then > Index: gcc/testsuite/lib/g++.exp > =================================================================== > --- gcc/testsuite/lib/g++.exp (revision 193542) > +++ gcc/testsuite/lib/g++.exp (working copy) > @@ -210,7 +210,7 @@ proc g++_init { args } { > if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } { > set GXX_UNDER_TEST [transform c++] > } else { > - set GXX_UNDER_TEST [findfile $base_dir/../../g++ > "$base_dir/../../g++ -B$base_dir/../../" [findfile $base_dir/g++ > "$base_dir/g++ -B$base_dir/" [transform c++]]] > + set GXX_UNDER_TEST [findfile $base_dir/../../xg++ > "$base_dir/../../xg++ -B$base_dir/../../" [findfile $base_dir/xg++ > "$base_dir/xg++ -B$base_dir/" [transform c++]]] > } > } > } > Index: gcc/testsuite/lib/obj-c++.exp > =================================================================== > --- gcc/testsuite/lib/obj-c++.exp (revision 193542) > +++ gcc/testsuite/lib/obj-c++.exp (working copy) > @@ -221,7 +221,7 @@ proc obj-c++_init { args } { > if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } { > set OBJCXX_UNDER_TEST [transform c++] > } else { > - set OBJCXX_UNDER_TEST [findfile $base_dir/../../g++ > "$base_dir/../../g++ -B$base_dir/../../" [findfile $base_dir/g++ > "$base_dir/g++ -B$base_dir/" [transform c++]]] > + set OBJCXX_UNDER_TEST [findfile $base_dir/../../xg++ > "$base_dir/../../xg++ -B$base_dir/../../" [findfile $base_dir/xg++ > "$base_dir/xg++ -B$base_dir/" [transform c++]]] > } > } > } > Index: gcc/cp/Make-lang.in > =================================================================== > --- gcc/cp/Make-lang.in (revision 193542) > +++ gcc/cp/Make-lang.in (working copy) > @@ -61,15 +61,15 @@ g++spec.o: $(srcdir)/cp/g++spec.c $(SYST > > # Create the compiler driver for g++. > GXX_OBJS = $(GCC_OBJS) g++spec.o > -g++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) > +xg++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) > +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ > $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ > $(EXTRA_GCC_LIBS) $(LIBS) > > # Create a version of the g++ driver which calls the cross-compiler. > -g++-cross$(exeext): g++$(exeext) > +g++-cross$(exeext): xg++$(exeext) > -rm -f g++-cross$(exeext) > - cp g++$(exeext) g++-cross$(exeext) > + cp xg++$(exeext) g++-cross$(exeext) > > # The compiler itself. > # Shared with C front end: > @@ -124,7 +124,7 @@ endif > # Build hooks: > > c++.all.cross: g++-cross$(exeext) > -c++.start.encap: g++$(exeext) > +c++.start.encap: xg++$(exeext) > c++.rest.encap: > c++.info: > c++.install-info: > @@ -172,7 +172,7 @@ check_g++_parallelize = old-deja.exp dg. > # and also as either g++ (if native) or $(tooldir)/bin/g++. > c++.install-common: installdirs > -rm -f $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) > - -$(INSTALL_PROGRAM) g++$(exeext) > $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) > + -$(INSTALL_PROGRAM) xg++$(exeext) > $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) > -chmod a+x $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) > -rm -f $(DESTDIR)$(bindir)/$(CXX_INSTALL_NAME)$(exeext) > -( cd $(DESTDIR)$(bindir) && \ > Index: gcc/Makefile.in > =================================================================== > --- gcc/Makefile.in (revision 193542) > +++ gcc/Makefile.in (working copy) > @@ -5175,7 +5175,7 @@ ${QMTEST_DIR}/context: stamp-qmtest > echo "CompilerTable.c_path=${objdir}/xgcc" >> $@ > echo "CompilerTable.c_options=-B${objdir}/" >> $@ > echo "CompilerTable.cplusplus_kind=GCC" >> $@ > - echo "CompilerTable.cplusplus_path=${objdir}/g++" >> $@ > + echo "CompilerTable.cplusplus_path=${objdir}/xg++" >> $@ > echo "CompilerTable.cplusplus_options=-B${objdir}/" >> $@ > echo "DejaGNUTest.target=${target_noncanonical}" >> $@ > > Index: Makefile.tpl > =================================================================== > --- Makefile.tpl (revision 193542) > +++ Makefile.tpl (working copy) > @@ -238,7 +238,7 @@ POSTSTAGE1_CXX_EXPORT = \ > @if target-libstdc++-v3-bootstrap > # Override the above if we're bootstrapping C++. > POSTSTAGE1_CXX_EXPORT = \ > - CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ > + CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xg++$(exeext) \ > -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 \ >