From bb59f396f8ca74c7d663c197e99d15bbe9f6e5b6 Mon Sep 17 00:00:00 2001 From: Marc Glisse Date: Tue, 18 Nov 2014 21:20:53 +0100 Subject: re PR libstdc++/43622 (Incomplete C++ library support for __float128) 2014-11-18 Marc Glisse PR libstdc++/43622 gcc/cp/ * rtti.c (emit_support_tinfos): Handle __float128. libstdc++-v3/ * config/abi/pre/float128.ver: New file. * configure.ac: Use float128.ver when relevant. * configure: Regenerate. * testsuite/util/testsuite_abi.cc (check_version): Accept new CXXABI_FLOAT128 version. From-SVN: r217735 --- libstdc++-v3/ChangeLog | 9 +++++++++ libstdc++-v3/config/abi/pre/float128.ver | 10 ++++++++++ libstdc++-v3/configure | 3 +++ libstdc++-v3/configure.ac | 3 +++ libstdc++-v3/testsuite/util/testsuite_abi.cc | 9 ++++++--- 5 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 libstdc++-v3/config/abi/pre/float128.ver (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 857c05e..c0e1738 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2014-11-18 Marc Glisse + + PR libstdc++/43622 + * config/abi/pre/float128.ver: New file. + * configure.ac: Use float128.ver when relevant. + * configure: Regenerate. + * testsuite/util/testsuite_abi.cc (check_version): Accept new + CXXABI_FLOAT128 version. + 2014-11-17 Jason Merrill * include/backward/binders.h: Suppress -Wdeprecated-declarations. diff --git a/libstdc++-v3/config/abi/pre/float128.ver b/libstdc++-v3/config/abi/pre/float128.ver new file mode 100644 index 0000000..26c62c7 --- /dev/null +++ b/libstdc++-v3/config/abi/pre/float128.ver @@ -0,0 +1,10 @@ +# Appended to version file. + +CXXABI_FLOAT128 { + + # typeinfo and typeinfo name for __float128 + _ZT[IS]g; + _ZT[IS]Pg; + _ZT[IS]PKg; + +}; diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 6a57537..5fcb705 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -15710,6 +15710,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test "$enable_float128" = yes; then + port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/abi/pre/float128.ver" +fi # Checks for compiler support that doesn't require linking. diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index eb826e4..135d536 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -153,6 +153,9 @@ GLIBCXX_ENABLE_THREADS GLIBCXX_ENABLE_ATOMIC_BUILTINS GLIBCXX_ENABLE_DECIMAL_FLOAT GLIBCXX_ENABLE_INT128_FLOAT128 +if test "$enable_float128" = yes; then + port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/abi/pre/float128.ver" +fi # Checks for compiler support that doesn't require linking. GLIBCXX_CHECK_COMPILER_FEATURES diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc index 0699114..15b05dc 100644 --- a/libstdc++-v3/testsuite/util/testsuite_abi.cc +++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc @@ -213,6 +213,7 @@ check_version(symbol& test, bool added) known_versions.push_back("CXXABI_1.3.8"); known_versions.push_back("CXXABI_1.3.9"); known_versions.push_back("CXXABI_TM_1"); + known_versions.push_back("CXXABI_FLOAT128"); } compat_list::iterator begin = known_versions.begin(); compat_list::iterator end = known_versions.end(); @@ -230,16 +231,18 @@ check_version(symbol& test, bool added) // Check that added symbols are added in the latest pre-release version. bool latestp = (test.version_name == "GLIBCXX_3.4.21" || test.version_name == "CXXABI_1.3.9" + || test.version_name == "CXXABI_FLOAT128" || test.version_name == "CXXABI_TM_1"); if (added && !latestp) test.version_status = symbol::incompatible; // Check that long double compatibility symbols demangled as - // __float128 are put into some _LDBL_ version name. + // __float128 and regular __float128 symbols are put into some _LDBL_ + // or _FLOAT128 version name. if (added && test.demangled_name.find("__float128") != std::string::npos) { - // Has to be in _LDBL_ version name. - if (test.version_name.find("_LDBL_") == std::string::npos) + if (test.version_name.find("_LDBL_") == std::string::npos + && test.version_name.find("_FLOAT128") == std::string::npos) test.version_status = symbol::incompatible; } -- cgit v1.1