[Bug libstdc++/21523] [4.0 Regression] 3.4.4 RC1 fails libstdc++ install on powerpc64-linux

mark at codesourcery dot com gcc-bugzilla@gcc.gnu.org
Fri May 13 01:01:00 GMT 2005


------- Additional Comments From mark at codesourcery dot com  2005-05-13 01:01 -------
Subject: Re:  [4.0 Regression] 3.4.4 RC1 fails libstdc++
 install on powerpc64-linux

mmitchel at gcc dot gnu dot org wrote:
> ------- Additional Comments From mmitchel at gcc dot gnu dot org  2005-05-13 00:57 -------
> Fixed in 3.4.4.

Janis, if you would be so kind as to test again, here is a proposed 
patch for 4.0.

Thanks,

Index: testsuite/Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/Makefile.am,v
retrieving revision 1.42.6.1
diff -c -5 -p -r1.42.6.1 Makefile.am
*** testsuite/Makefile.am	9 May 2005 18:16:56 -0000	1.42.6.1
--- testsuite/Makefile.am	13 May 2005 00:46:29 -0000
*************** libv3test_a_SOURCES = \
*** 48,66 ****
  	testsuite_abi.cc \
  	testsuite_allocator.cc \
  	testsuite_character.cc \
  	testsuite_hooks.cc 
  
- ## Build support utilities.
- if GLIBCXX_TEST_ABI
- noinst_PROGRAMS = abi_check
- else
- noinst_PROGRAMS =
- endif
- abi_check_SOURCES = testsuite_abi_check.cc
- abi_check_DEPENDENCIES = libv3test.a
- 
  all-local: stamp_wchar stamp_thread testsuite_files
  
  # Enable wchar_t tests if capable.
  if GLIBCXX_TEST_WCHAR_T
  stamp_wchar:
--- 48,57 ----
*************** site.exp: Makefile
*** 106,132 ****
  	@echo 'set host_triplet $(host_triplet)' >>site.tmp
  	@echo 'set target_alias "$(target_alias)"' >>site.tmp
  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
  	@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
  	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
  	@test ! -f site.exp || \
  	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
  	@-rm -f site.bak
  	@test ! -f site.exp || mv site.exp site.bak
  	@mv site.tmp site.exp
  
- # This is automatically run after the generated check-DEJAGNU rule.
- check-local: check-abi
- 
- 
  baseline_file = ${baseline_dir}/baseline_symbols.txt
  extract_symvers = $(glibcxx_srcdir)/scripts/extract_symvers
  
- current_symbols.txt: ${extract_symvers} ../src/.libs/libstdc++.so
- 	  -@(${extract_symvers} ../src/.libs/libstdc++.so current_symbols.txt)
- 
  baseline_symbols:
  	-@(output=${baseline_file}; \
  	  if test ! -f $${output}; then \
  	    echo "Baseline file doesn't exist."; \
  	    echo "Try 'make new-abi-baseline' to create it."; \
--- 97,117 ----
  	@echo 'set host_triplet $(host_triplet)' >>site.tmp
  	@echo 'set target_alias "$(target_alias)"' >>site.tmp
  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
  	@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
+ 	@echo 'set baseline_file "$(baseline_file)"' >> site.tmp
  	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
  	@test ! -f site.exp || \
  	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
  	@-rm -f site.bak
  	@test ! -f site.exp || mv site.exp site.bak
  	@mv site.tmp site.exp
  
  baseline_file = ${baseline_dir}/baseline_symbols.txt
  extract_symvers = $(glibcxx_srcdir)/scripts/extract_symvers
  
  baseline_symbols:
  	-@(output=${baseline_file}; \
  	  if test ! -f $${output}; then \
  	    echo "Baseline file doesn't exist."; \
  	    echo "Try 'make new-abi-baseline' to create it."; \
*************** new-abi-baseline:
*** 144,166 ****
  	  ${extract_symvers} ../src/.libs/libstdc++.so $${output})
  
  if GLIBCXX_TEST_ABI
  # Use 'new-abi-baseline' to create an initial symbol file.  Then run
  # 'check-abi' to test for changes against that file.
! check-abi: abi_check baseline_symbols current_symbols.txt
! 	-@./abi_check --check ./current_symbols.txt ${baseline_file} \
! 	  2>&1 | tee libstdc++-abi.sum
! 	-@cp libstdc++-abi.sum libstdc++-abi.log
! 
! check-abi-verbose: abi_check baseline_symbols current_symbols.txt
! 	-@./abi_check --check-verbose ./current_symbols.txt ${baseline_file} \
! 	  2>&1 | tee libstdc++-abi.sum
! 	-@cp libstdc++-abi.sum libstdc++-abi.log
! 
  else
  check-abi:
- check-abi-verbose:
  endif
  
  # Runs the testsuite, but in compile only mode.
  # Can be used to test sources with non-GNU FE's at various warning
  # levels and for checking compile time across releases.
--- 129,142 ----
  	  ${extract_symvers} ../src/.libs/libstdc++.so $${output})
  
  if GLIBCXX_TEST_ABI
  # Use 'new-abi-baseline' to create an initial symbol file.  Then run
  # 'check-abi' to test for changes against that file.
! check-abi: baseline_symbols current_symbols.txt site.exp
! 	-@runtest --tool libstdc++ abi.exp
  else
  check-abi:
  endif
  
  # Runs the testsuite, but in compile only mode.
  # Can be used to test sources with non-GNU FE's at various warning
  # levels and for checking compile time across releases.
Index: testsuite/Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/Makefile.in,v
retrieving revision 1.88.6.1
diff -c -5 -p -r1.88.6.1 Makefile.in
*** testsuite/Makefile.in	9 May 2005 18:16:58 -0000	1.88.6.1
--- testsuite/Makefile.in	13 May 2005 00:46:29 -0000
***************
*** 1,6 ****
! # Makefile.in generated by automake 1.9.3 from Makefile.am.
  # @configure_input@
  
  # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
  # 2003, 2004  Free Software Foundation, Inc.
  # This Makefile.in is free software; the Free Software Foundation
--- 1,6 ----
! # Makefile.in generated by automake 1.9.2 from Makefile.am.
  # @configure_input@
  
  # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
  # 2003, 2004  Free Software Foundation, Inc.
  # This Makefile.in is free software; the Free Software Foundation
***************
*** 12,23 ****
  # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  # PARTICULAR PURPOSE.
  
  @SET_MAKE@
  
! 
! SOURCES = $(libv3test_a_SOURCES) $(abi_check_SOURCES)
  
  srcdir = @srcdir@
  top_srcdir = @top_srcdir@
  VPATH = @srcdir@
  pkgdatadir = $(datadir)/@PACKAGE@
--- 12,22 ----
  # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  # PARTICULAR PURPOSE.
  
  @SET_MAKE@
  
! SOURCES = $(libv3test_a_SOURCES)
  
  srcdir = @srcdir@
  top_srcdir = @top_srcdir@
  VPATH = @srcdir@
  pkgdatadir = $(datadir)/@PACKAGE@
*************** POST_UNINSTALL = :
*** 40,50 ****
  build_triplet = @build@
  host_triplet = @host@
  target_triplet = @target@
  DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
  	$(top_srcdir)/fragment.am
- @GLIBCXX_TEST_ABI_TRUE@noinst_PROGRAMS = abi_check$(EXEEXT)
  subdir = testsuite
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
  am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
  	$(top_srcdir)/linkage.m4 \
  	$(top_srcdir)/../config/no-executables.m4 \
--- 39,48 ----
*************** libv3test_a_AR = $(AR) $(ARFLAGS)
*** 60,84 ****
  libv3test_a_LIBADD =
  am_libv3test_a_OBJECTS = testsuite_abi.$(OBJEXT) \
  	testsuite_allocator.$(OBJEXT) testsuite_character.$(OBJEXT) \
  	testsuite_hooks.$(OBJEXT)
  libv3test_a_OBJECTS = $(am_libv3test_a_OBJECTS)
- PROGRAMS = $(noinst_PROGRAMS)
- am_abi_check_OBJECTS = testsuite_abi_check.$(OBJEXT)
- abi_check_OBJECTS = $(am_abi_check_OBJECTS)
- abi_check_LDADD = $(LDADD)
  DEFAULT_INCLUDES = 
  depcomp =
  am__depfiles_maybe =
  CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
  	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
  LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
  	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
  	$(AM_CXXFLAGS) $(CXXFLAGS)
  CXXLD = $(CXX)
! SOURCES = $(libv3test_a_SOURCES) $(abi_check_SOURCES)
! DIST_SOURCES = $(libv3test_a_SOURCES) $(abi_check_SOURCES)
  ETAGS = etags
  CTAGS = ctags
  DEJATOOL = $(PACKAGE)
  RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
  EXPECT = expect
--- 58,78 ----
  libv3test_a_LIBADD =
  am_libv3test_a_OBJECTS = testsuite_abi.$(OBJEXT) \
  	testsuite_allocator.$(OBJEXT) testsuite_character.$(OBJEXT) \
  	testsuite_hooks.$(OBJEXT)
  libv3test_a_OBJECTS = $(am_libv3test_a_OBJECTS)
  DEFAULT_INCLUDES = 
  depcomp =
  am__depfiles_maybe =
  CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
  	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
  LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
  	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
  	$(AM_CXXFLAGS) $(CXXFLAGS)
  CXXLD = $(CXX)
! SOURCES = $(libv3test_a_SOURCES)
! DIST_SOURCES = $(libv3test_a_SOURCES)
  ETAGS = etags
  CTAGS = ctags
  DEJATOOL = $(PACKAGE)
  RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
  EXPECT = expect
*************** libv3test_a_SOURCES = \
*** 284,295 ****
  	testsuite_abi.cc \
  	testsuite_allocator.cc \
  	testsuite_character.cc \
  	testsuite_hooks.cc 
  
- abi_check_SOURCES = testsuite_abi_check.cc
- abi_check_DEPENDENCIES = libv3test.a
  
  # Generated lists of files to run.  All of these names are valid make
  # targets, if you wish to generate a list manually.
  lists_of_files = \
     testsuite_files \
--- 278,287 ----
*************** clean-noinstLIBRARIES:
*** 354,373 ****
  libv3test.a: $(libv3test_a_OBJECTS) $(libv3test_a_DEPENDENCIES) 
  	-rm -f libv3test.a
  	$(libv3test_a_AR) libv3test.a $(libv3test_a_OBJECTS) $(libv3test_a_LIBADD)
  	$(RANLIB) libv3test.a
  
- clean-noinstPROGRAMS:
- 	@list='$(noinst_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  echo " rm -f $$p $$f"; \
- 	  rm -f $$p $$f ; \
- 	done
- abi_check$(EXEEXT): $(abi_check_OBJECTS) $(abi_check_DEPENDENCIES) 
- 	@rm -f abi_check$(EXEEXT)
- 	$(CXXLINK) $(abi_check_LDFLAGS) $(abi_check_OBJECTS) $(abi_check_LDADD) $(LIBS)
- 
  mostlyclean-compile:
  	-rm -f *.$(OBJEXT)
  
  distclean-compile:
  	-rm -f *.tab.c
--- 346,355 ----
*************** distdir: $(DISTFILES)
*** 483,495 ****
  	    || cp -p $$d/$$file $(distdir)/$$file \
  	    || exit 1; \
  	  fi; \
  	done
  check-am: all-am
! 	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU check-local
  check: check-am
! all-am: Makefile $(LIBRARIES) $(PROGRAMS) all-local
  installdirs:
  install: install-am
  install-exec: install-exec-am
  install-data: install-data-am
  uninstall: uninstall-am
--- 465,477 ----
  	    || cp -p $$d/$$file $(distdir)/$$file \
  	    || exit 1; \
  	  fi; \
  	done
  check-am: all-am
! 	$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
  check: check-am
! all-am: Makefile $(LIBRARIES) all-local
  installdirs:
  install: install-am
  install-exec: install-exec-am
  install-data: install-data-am
  uninstall: uninstall-am
*************** maintainer-clean-generic:
*** 515,525 ****
  	@echo "This command is intended for maintainers to use"
  	@echo "it deletes files that may require special tools to rebuild."
  clean: clean-am
  
  clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
! 	clean-noinstPROGRAMS mostlyclean-am
  
  distclean: distclean-am
  	-rm -f Makefile
  distclean-am: clean-am distclean-DEJAGNU distclean-compile \
  	distclean-generic distclean-libtool distclean-tags
--- 497,507 ----
  	@echo "This command is intended for maintainers to use"
  	@echo "it deletes files that may require special tools to rebuild."
  clean: clean-am
  
  clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
! 	mostlyclean-am
  
  distclean: distclean-am
  	-rm -f Makefile
  distclean-am: clean-am distclean-DEJAGNU distclean-compile \
  	distclean-generic distclean-libtool distclean-tags
*************** ps: ps-am
*** 562,579 ****
  ps-am:
  
  uninstall-am: uninstall-info-am
  
  .PHONY: CTAGS GTAGS all all-am all-local check check-DEJAGNU check-am \
! 	check-local clean clean-generic clean-libtool \
! 	clean-noinstLIBRARIES clean-noinstPROGRAMS ctags distclean \
! 	distclean-DEJAGNU distclean-compile distclean-generic \
! 	distclean-libtool distclean-tags distdir dvi dvi-am html \
! 	html-am info info-am install install-am install-data \
! 	install-data-am install-exec install-exec-am install-info \
! 	install-info-am install-man install-strip installcheck \
! 	installcheck-am installdirs maintainer-clean \
  	maintainer-clean-generic mostlyclean mostlyclean-compile \
  	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
  	tags uninstall uninstall-am uninstall-info-am
  
  
--- 544,560 ----
  ps-am:
  
  uninstall-am: uninstall-info-am
  
  .PHONY: CTAGS GTAGS all all-am all-local check check-DEJAGNU check-am \
! 	clean clean-generic clean-libtool clean-noinstLIBRARIES ctags \
! 	distclean distclean-DEJAGNU distclean-compile \
! 	distclean-generic distclean-libtool distclean-tags distdir dvi \
! 	dvi-am html html-am info info-am install install-am \
! 	install-data install-data-am install-exec install-exec-am \
! 	install-info install-info-am install-man install-strip \
! 	installcheck installcheck-am installdirs maintainer-clean \
  	maintainer-clean-generic mostlyclean mostlyclean-compile \
  	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
  	tags uninstall uninstall-am uninstall-info-am
  
  
*************** site.exp: Makefile
*** 611,633 ****
  	@echo 'set host_triplet $(host_triplet)' >>site.tmp
  	@echo 'set target_alias "$(target_alias)"' >>site.tmp
  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
  	@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
  	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
  	@test ! -f site.exp || \
  	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
  	@-rm -f site.bak
  	@test ! -f site.exp || mv site.exp site.bak
  	@mv site.tmp site.exp
  
- # This is automatically run after the generated check-DEJAGNU rule.
- check-local: check-abi
- 
- current_symbols.txt: ${extract_symvers} ../src/.libs/libstdc++.so
- 	  -@(${extract_symvers} ../src/.libs/libstdc++.so current_symbols.txt)
- 
  baseline_symbols:
  	-@(output=${baseline_file}; \
  	  if test ! -f $${output}; then \
  	    echo "Baseline file doesn't exist."; \
  	    echo "Try 'make new-abi-baseline' to create it."; \
--- 592,609 ----
  	@echo 'set host_triplet $(host_triplet)' >>site.tmp
  	@echo 'set target_alias "$(target_alias)"' >>site.tmp
  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
  	@echo 'set target_triplet $(target_triplet)' >>site.tmp
  	@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
+ 	@echo 'set baseline_file "$(baseline_file)"' >> site.tmp
  	@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
  	@test ! -f site.exp || \
  	  sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
  	@-rm -f site.bak
  	@test ! -f site.exp || mv site.exp site.bak
  	@mv site.tmp site.exp
  
  baseline_symbols:
  	-@(output=${baseline_file}; \
  	  if test ! -f $${output}; then \
  	    echo "Baseline file doesn't exist."; \
  	    echo "Try 'make new-abi-baseline' to create it."; \
*************** new-abi-baseline:
*** 644,665 ****
  	  fi; \
  	  ${extract_symvers} ../src/.libs/libstdc++.so $${output})
  
  # Use 'new-abi-baseline' to create an initial symbol file.  Then run
  # 'check-abi' to test for changes against that file.
! @GLIBCXX_TEST_ABI_TRUE@check-abi: abi_check baseline_symbols current_symbols.txt
! @GLIBCXX_TEST_ABI_TRUE@	-@./abi_check --check ./current_symbols.txt ${baseline_file} \
! @GLIBCXX_TEST_ABI_TRUE@	  2>&1 | tee libstdc++-abi.sum
! @GLIBCXX_TEST_ABI_TRUE@	-@cp libstdc++-abi.sum libstdc++-abi.log
! 
! @GLIBCXX_TEST_ABI_TRUE@check-abi-verbose: abi_check baseline_symbols current_symbols.txt
! @GLIBCXX_TEST_ABI_TRUE@	-@./abi_check --check-verbose ./current_symbols.txt ${baseline_file} \
! @GLIBCXX_TEST_ABI_TRUE@	  2>&1 | tee libstdc++-abi.sum
! @GLIBCXX_TEST_ABI_TRUE@	-@cp libstdc++-abi.sum libstdc++-abi.log
! 
  @GLIBCXX_TEST_ABI_FALSE@check-abi:
- @GLIBCXX_TEST_ABI_FALSE@check-abi-verbose:
  check-compile: testsuite_files ${compile_script}
  	-@(chmod + ${compile_script}; \
  	  ${compile_script} ${glibcxx_srcdir} ${glibcxx_builddir})
  check-performance: testsuite_files_performance ${performance_script}
  	-@(chmod + ${performance_script}; \
--- 620,632 ----
  	  fi; \
  	  ${extract_symvers} ../src/.libs/libstdc++.so $${output})
  
  # Use 'new-abi-baseline' to create an initial symbol file.  Then run
  # 'check-abi' to test for changes against that file.
! @GLIBCXX_TEST_ABI_TRUE@check-abi: baseline_symbols current_symbols.txt site.exp
! @GLIBCXX_TEST_ABI_TRUE@	-@runtest --tool libstdc++ abi.exp
  @GLIBCXX_TEST_ABI_FALSE@check-abi:
  check-compile: testsuite_files ${compile_script}
  	-@(chmod + ${compile_script}; \
  	  ${compile_script} ${glibcxx_srcdir} ${glibcxx_builddir})
  check-performance: testsuite_files_performance ${performance_script}
  	-@(chmod + ${performance_script}; \
Index: testsuite/libstdc++-abi/abi.exp
===================================================================
RCS file: testsuite/libstdc++-abi/abi.exp
diff -N testsuite/libstdc++-abi/abi.exp
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- testsuite/libstdc++-abi/abi.exp	13 May 2005 00:46:30 -0000
***************
*** 0 ****
--- 1,43 ----
+ # Copyright (C) 2005 Free Software Foundation, Inc.
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 2 of the License, or
+ # (at your option) any later version.
+ # 
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ # 
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+ 
+ # If there is no baseline file, or we can't find the library, skip
+ # this test.
+ if { ![info exists baseline_file] \
+ 	 || ![file exists $baseline_file] \
+ 	 || ![file exists "../src/.libs/libstdc++.so"] } {
+     return
+ }
+ 
+ # Figure out what symbols are defined by the active build of the library.
+ remote_exec "build" "$srcdir/../scripts/extract_symvers" \
+     [list "../src/.libs/libstdc++.so" "current_symbols.txt"]
+ 
+ # Build the support objects.
+ v3-build_support
+ 
+ # Build the abi_check program.
+ if { [v3_target_compile "$srcdir/testsuite_abi_check.cc" "abi_check" \
+       "executable" [list "additional_flags=-w"]] != "" } {
+     error "could not compile testsuite_abi_check.cc"
+ }
+ 
+ remote_download "target" $baseline_file "baseline_symbols.txt"
+ remote_download "target" "current_symbols.txt" "current_symbols.txt"
+ set result [${tool}_load "./abi_check" \
+ 		[list "--check-verbose" "current_symbols.txt" \
+ 		     "baseline_symbols.txt"]]
+ [lindex $result 0] "abi_check"


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21523



More information about the Gcc-bugs mailing list