Comments
Patch
@@ -590,6 +590,7 @@ dnl GLIBCXX_TEST_WCHAR_T
dnl GLIBCXX_TEST_THREAD
dnl Substs:
dnl baseline_dir
+dnl baseline_subdir_switch
dnl
AC_DEFUN([GLIBCXX_CONFIGURE_TESTSUITE], [
if $GLIBCXX_IS_NATIVE ; then
@@ -617,6 +618,8 @@ AC_DEFUN([GLIBCXX_CONFIGURE_TESTSUITE],
# Export file names for ABI checking.
baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}"
AC_SUBST(baseline_dir)
+ baseline_subdir_switch="$abi_baseline_subdir_switch"
+ AC_SUBST(baseline_subdir_switch)
])
@@ -30,6 +30,11 @@
# abi_baseline_pair directory name for ABI compat testing,
# defaults to host_cpu-host_os (as per config.guess)
#
+# abi_baseline_subdir_switch
+# g++ switch to determine ABI baseline subdir for
+# multilibbed targets,
+# defaults to --print-multi-directory
+#
# abi_tweaks_dir location of cxxabi_tweaks.h,
# defaults to cpu_include_dir
#
@@ -78,6 +83,7 @@ atomic_flags=""
atomicity_dir="cpu/generic"
cpu_defines_dir="cpu/generic"
try_cpu=generic
+abi_baseline_subdir_switch=--print-multi-directory
abi_tweaks_dir="cpu/generic"
error_constants_dir="os/generic"
@@ -336,8 +342,10 @@ case "${host}" in
;;
*-*-solaris2.[89])
abi_baseline_pair=solaris2.8
+ abi_baseline_subdir_switch=--print-multi-os-directory
;;
*-*-solaris2.1[0-9])
abi_baseline_pair=solaris2.10
+ abi_baseline_subdir_switch=--print-multi-os-directory
;;
esac
@@ -59,6 +59,7 @@ site.exp: Makefile
@echo 'set target_triplet $(target_triplet)' >>site.tmp
@echo 'set libiconv "$(LIBICONV)"' >>site.tmp
@echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp
+ @echo 'set baseline_subdir_switch "$(baseline_subdir_switch)"' >> 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
@@ -69,7 +70,7 @@ site.exp: Makefile
extract_symvers = $(glibcxx_builddir)/scripts/extract_symvers
-baseline_subdir := $(shell $(CXX) --print-multi-dir)
+baseline_subdir := $(shell $(CXX) $(baseline_subdir_switch))
baseline_symbols:
-@(output=${baseline_dir}/${baseline_subdir}/baseline_symbols.txt; \
@@ -1,4 +1,4 @@
-# Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2009, 2010, 2011 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
@@ -24,7 +24,7 @@ if { [string match "*-*-darwin*" $target
set lib $blddir/src/.libs/libstdc++.so
}
-set baseline_subdir "[eval exec $cxx --print-multi-dir]"
+set baseline_subdir "[eval exec $cxx $baseline_subdir_switch]"
# Build the support objects.
v3-build_support
As alluded to in Provide 64-bit default Solaris/x86 configuration (PR target/39150) http://gcc.gnu.org/ml/gcc-patches/2011-07/msg00327.html (which was meant to be Cc'ed to libstdc++, but bounced due to a stupid typo), there are now to variant bi-arch gcc configurations for Solaris: i386-pc-solaris2.* sparc-sun-solaris2.* which default to 32-bit code generation, and x86_64-pc-solaris2.* sparc64-sun-solaris2.* which default to 64-bit code generation. Unfortunately, libstdc++-abi/abi_check fails for the latter two for the 64-bit (default) multilib. The problem is that testsuite/Makefile.am and testsuite/libstdc++-abi/abi.exp use g++ --print-multi-directory to determine the subdirectory of config/abi/post/<baseline_dir> to use for the multilib at hand. For the 32-bit configurations, all is fine, while there's a mismatch for the 64-bit ones: 32-bit default 64-bit default --print-multi-directory . amd64 . 32 --print-multi-os-directory . amd64 amd64 . For the 32-bit case, everything works (sort of by chance): if abi.exp cannot fine the baseline in the subdir, it defaults to the baseline dir, which is exactly right. In the 64-bit case, the 32-bit baseline is used instead, which breaks completely. Unfortunately, one cannot simply use --print-multi-os-directory instead everywhere: while this is fine on Solaris, it would break Linux/x86_64: . 32 ../lib64 ../lib So it seems the whole thing needs to be made configurable, which is what this patch does. It allows setting a non-default switch in configure.host, but defaults to --print-multi-directory otherwise. Tested on sparc-sun-solaris2.11 and sparcv9-sun-solaris2.11 by rebuilding libstdc++-v3 and running make RUNTESTFLAGS=abi.exp check. As expected, libstdc++-abi/abi_check now succeeds for both multilibs. I'll also test on x86_64-unknown-linux-gnu to make sure nothing breaks there. Ok for mainline if that passes? Thanks. Rainer 2011-07-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * configure.host (abi_baseline_subdir_switch): Describe. Provide default. (*-*-solaris2.[89], *-*-solaris2.1[0-9]): Override. * acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Substitute baseline_subdir_switch. * testsuite/Makefile.am (site.exp): Emit it. (baseline_subdir): Use it. * testsuite/libstdc++-abi/abi.exp: Use it. * configure: Regenerate. * Makefile.in: Regenerate. * doc/Makefile.in: Regenerate. * include/Makefile.in: Regenerate. * libsupc++/Makefile.in: Regenerate. * po/Makefile.in: Regenerate. * python/Makefile.in: Regenerate. * src/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate.