This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: version typeinfo for 128bit types
- From: Marc Glisse <marc dot glisse at inria dot fr>
- To: Jonathan Wakely <jwakely dot gcc at gmail dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, libstdc++ <libstdc++ at gcc dot gnu dot org>, jakub at redhat dot com
- Date: Tue, 22 Apr 2014 22:06:19 +0200 (CEST)
- Subject: Re: version typeinfo for 128bit types
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 2 dot 02 dot 1404140912130 dot 27139 at stedding dot saclay dot inria dot fr> <CAH6eHdSHs=sGMTaM_s265OAr2TaZGMFObmWfgG1Qzukx4aA__A at mail dot gmail dot com> <CAH6eHdSGqdrewAkCZAhUmtNEeRaBzUn4S0sw_Htv09e8TiCm-Q at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1404221553550 dot 3704 at laptop-mg dot saclay dot inria dot fr> <CAH6eHdTrEVxVtWWqevq-wahQgB7ymX0ygfTiOJgmjOZ26fBVmg at mail dot gmail dot com>
Hello,
as written in the PR, my patch seems wrong for platforms like powerpc that
already had the __float128 typeinfo for long double with a different
version. The following patch regtested fine on x86_64, and a hackish
cross-build shows that float128.ver is ignored on powerpc (good).
2014-04-23 Marc Glisse <marc.glisse@inria.fr>
PR libstdc++/43622
* config/abi/pre/float128.ver: New file.
* config/abi/pre/gnu.ver (CXXABI_1.3.9): Move __float128 typeinfo to
the new file.
* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
* configure.ac: Use float128.ver when relevant.
* configure: Regenerate.
--
Marc Glisse
Index: libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
===================================================================
--- libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (revision 209658)
+++ libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (working copy)
@@ -2514,20 +2514,21 @@ FUNC:atomic_flag_test_and_set_explicit@@
OBJECT:0:CXXABI_1.3
OBJECT:0:CXXABI_1.3.1
OBJECT:0:CXXABI_1.3.2
OBJECT:0:CXXABI_1.3.3
OBJECT:0:CXXABI_1.3.4
OBJECT:0:CXXABI_1.3.5
OBJECT:0:CXXABI_1.3.6
OBJECT:0:CXXABI_1.3.7
OBJECT:0:CXXABI_1.3.8
OBJECT:0:CXXABI_1.3.9
+OBJECT:0:CXXABI_FLOAT128_1.3.9
OBJECT:0:CXXABI_TM_1
OBJECT:0:GLIBCXX_3.4
OBJECT:0:GLIBCXX_3.4.1
OBJECT:0:GLIBCXX_3.4.10
OBJECT:0:GLIBCXX_3.4.11
OBJECT:0:GLIBCXX_3.4.12
OBJECT:0:GLIBCXX_3.4.13
OBJECT:0:GLIBCXX_3.4.14
OBJECT:0:GLIBCXX_3.4.15
OBJECT:0:GLIBCXX_3.4.16
@@ -2618,21 +2619,21 @@ OBJECT:16:_ZTISt16nested_exception@@CXXA
OBJECT:16:_ZTISt8ios_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt9exception@@GLIBCXX_3.4
OBJECT:16:_ZTISt9time_base@@GLIBCXX_3.4
OBJECT:16:_ZTISt9type_info@@GLIBCXX_3.4
OBJECT:16:_ZTIa@@CXXABI_1.3
OBJECT:16:_ZTIb@@CXXABI_1.3
OBJECT:16:_ZTIc@@CXXABI_1.3
OBJECT:16:_ZTId@@CXXABI_1.3
OBJECT:16:_ZTIe@@CXXABI_1.3
OBJECT:16:_ZTIf@@CXXABI_1.3
-OBJECT:16:_ZTIg@@CXXABI_1.3.9
+OBJECT:16:_ZTIg@@CXXABI_FLOAT128_1.3.9
OBJECT:16:_ZTIh@@CXXABI_1.3
OBJECT:16:_ZTIi@@CXXABI_1.3
OBJECT:16:_ZTIj@@CXXABI_1.3
OBJECT:16:_ZTIl@@CXXABI_1.3
OBJECT:16:_ZTIm@@CXXABI_1.3
OBJECT:16:_ZTIn@@CXXABI_1.3.5
OBJECT:16:_ZTIo@@CXXABI_1.3.5
OBJECT:16:_ZTIs@@CXXABI_1.3
OBJECT:16:_ZTIt@@CXXABI_1.3
OBJECT:16:_ZTIv@@CXXABI_1.3
@@ -3119,21 +3120,21 @@ OBJECT:2:_ZNSt10ctype_base5printE@@GLIBC
OBJECT:2:_ZNSt10ctype_base5punctE@@GLIBCXX_3.4
OBJECT:2:_ZNSt10ctype_base5spaceE@@GLIBCXX_3.4
OBJECT:2:_ZNSt10ctype_base5upperE@@GLIBCXX_3.4
OBJECT:2:_ZNSt10ctype_base6xdigitE@@GLIBCXX_3.4
OBJECT:2:_ZTSa@@CXXABI_1.3
OBJECT:2:_ZTSb@@CXXABI_1.3
OBJECT:2:_ZTSc@@CXXABI_1.3
OBJECT:2:_ZTSd@@CXXABI_1.3
OBJECT:2:_ZTSe@@CXXABI_1.3
OBJECT:2:_ZTSf@@CXXABI_1.3
-OBJECT:2:_ZTSg@@CXXABI_1.3.9
+OBJECT:2:_ZTSg@@CXXABI_FLOAT128_1.3.9
OBJECT:2:_ZTSh@@CXXABI_1.3
OBJECT:2:_ZTSi@@CXXABI_1.3
OBJECT:2:_ZTSj@@CXXABI_1.3
OBJECT:2:_ZTSl@@CXXABI_1.3
OBJECT:2:_ZTSm@@CXXABI_1.3
OBJECT:2:_ZTSn@@CXXABI_1.3.9
OBJECT:2:_ZTSo@@CXXABI_1.3.9
OBJECT:2:_ZTSs@@CXXABI_1.3
OBJECT:2:_ZTSt@@CXXABI_1.3
OBJECT:2:_ZTSv@@CXXABI_1.3
@@ -3153,41 +3154,41 @@ OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
OBJECT:32:_ZTIPKa@@CXXABI_1.3
OBJECT:32:_ZTIPKb@@CXXABI_1.3
OBJECT:32:_ZTIPKc@@CXXABI_1.3
OBJECT:32:_ZTIPKd@@CXXABI_1.3
OBJECT:32:_ZTIPKe@@CXXABI_1.3
OBJECT:32:_ZTIPKf@@CXXABI_1.3
-OBJECT:32:_ZTIPKg@@CXXABI_1.3.9
+OBJECT:32:_ZTIPKg@@CXXABI_FLOAT128_1.3.9
OBJECT:32:_ZTIPKh@@CXXABI_1.3
OBJECT:32:_ZTIPKi@@CXXABI_1.3
OBJECT:32:_ZTIPKj@@CXXABI_1.3
OBJECT:32:_ZTIPKl@@CXXABI_1.3
OBJECT:32:_ZTIPKm@@CXXABI_1.3
OBJECT:32:_ZTIPKn@@CXXABI_1.3.5
OBJECT:32:_ZTIPKo@@CXXABI_1.3.5
OBJECT:32:_ZTIPKs@@CXXABI_1.3
OBJECT:32:_ZTIPKt@@CXXABI_1.3
OBJECT:32:_ZTIPKv@@CXXABI_1.3
OBJECT:32:_ZTIPKw@@CXXABI_1.3
OBJECT:32:_ZTIPKx@@CXXABI_1.3
OBJECT:32:_ZTIPKy@@CXXABI_1.3
OBJECT:32:_ZTIPa@@CXXABI_1.3
OBJECT:32:_ZTIPb@@CXXABI_1.3
OBJECT:32:_ZTIPc@@CXXABI_1.3
OBJECT:32:_ZTIPd@@CXXABI_1.3
OBJECT:32:_ZTIPe@@CXXABI_1.3
OBJECT:32:_ZTIPf@@CXXABI_1.3
-OBJECT:32:_ZTIPg@@CXXABI_1.3.9
+OBJECT:32:_ZTIPg@@CXXABI_FLOAT128_1.3.9
OBJECT:32:_ZTIPh@@CXXABI_1.3
OBJECT:32:_ZTIPi@@CXXABI_1.3
OBJECT:32:_ZTIPj@@CXXABI_1.3
OBJECT:32:_ZTIPl@@CXXABI_1.3
OBJECT:32:_ZTIPm@@CXXABI_1.3
OBJECT:32:_ZTIPn@@CXXABI_1.3.5
OBJECT:32:_ZTIPo@@CXXABI_1.3.5
OBJECT:32:_ZTIPs@@CXXABI_1.3
OBJECT:32:_ZTIPt@@CXXABI_1.3
OBJECT:32:_ZTIPv@@CXXABI_1.3
@@ -3228,21 +3229,21 @@ OBJECT:39:_ZTSSt13basic_filebufIwSt11cha
OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
OBJECT:39:_ZTSSt13basic_fstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:39:_ZTSSt13basic_istreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:39:_ZTSSt13basic_ostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
OBJECT:3:_ZTSPa@@CXXABI_1.3
OBJECT:3:_ZTSPb@@CXXABI_1.3
OBJECT:3:_ZTSPc@@CXXABI_1.3
OBJECT:3:_ZTSPd@@CXXABI_1.3
OBJECT:3:_ZTSPe@@CXXABI_1.3
OBJECT:3:_ZTSPf@@CXXABI_1.3
-OBJECT:3:_ZTSPg@@CXXABI_1.3.9
+OBJECT:3:_ZTSPg@@CXXABI_FLOAT128_1.3.9
OBJECT:3:_ZTSPh@@CXXABI_1.3
OBJECT:3:_ZTSPi@@CXXABI_1.3
OBJECT:3:_ZTSPj@@CXXABI_1.3
OBJECT:3:_ZTSPl@@CXXABI_1.3
OBJECT:3:_ZTSPm@@CXXABI_1.3
OBJECT:3:_ZTSPn@@CXXABI_1.3.9
OBJECT:3:_ZTSPo@@CXXABI_1.3.9
OBJECT:3:_ZTSPs@@CXXABI_1.3
OBJECT:3:_ZTSPt@@CXXABI_1.3
OBJECT:3:_ZTSPv@@CXXABI_1.3
@@ -3558,21 +3559,21 @@ OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBC
OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCXX_3.4
OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCXX_3.4
OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCXX_3.4
OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCXX_3.4
OBJECT:4:_ZTSPKa@@CXXABI_1.3
OBJECT:4:_ZTSPKb@@CXXABI_1.3
OBJECT:4:_ZTSPKc@@CXXABI_1.3
OBJECT:4:_ZTSPKd@@CXXABI_1.3
OBJECT:4:_ZTSPKe@@CXXABI_1.3
OBJECT:4:_ZTSPKf@@CXXABI_1.3
-OBJECT:4:_ZTSPKg@@CXXABI_1.3.9
+OBJECT:4:_ZTSPKg@@CXXABI_FLOAT128_1.3.9
OBJECT:4:_ZTSPKh@@CXXABI_1.3
OBJECT:4:_ZTSPKi@@CXXABI_1.3
OBJECT:4:_ZTSPKj@@CXXABI_1.3
OBJECT:4:_ZTSPKl@@CXXABI_1.3
OBJECT:4:_ZTSPKm@@CXXABI_1.3
OBJECT:4:_ZTSPKn@@CXXABI_1.3.9
OBJECT:4:_ZTSPKo@@CXXABI_1.3.9
OBJECT:4:_ZTSPKs@@CXXABI_1.3
OBJECT:4:_ZTSPKt@@CXXABI_1.3
OBJECT:4:_ZTSPKv@@CXXABI_1.3
Index: libstdc++-v3/config/abi/pre/float128.ver
===================================================================
--- libstdc++-v3/config/abi/pre/float128.ver (revision 0)
+++ libstdc++-v3/config/abi/pre/float128.ver (working copy)
@@ -0,0 +1,10 @@
+# Appended to version file.
+
+CXXABI_FLOAT128_1.3.9 {
+
+ # typeinfo and typeinfo name for __float128
+ _ZT[IS]g;
+ _ZT[IS]Pg;
+ _ZT[IS]PKg;
+
+};
Index: libstdc++-v3/config/abi/pre/gnu.ver
===================================================================
--- libstdc++-v3/config/abi/pre/gnu.ver (revision 209658)
+++ libstdc++-v3/config/abi/pre/gnu.ver (working copy)
@@ -1579,29 +1579,24 @@ CXXABI_1.3.8 {
_Z16__VLTRegisterSet*;
_Z21__VLTRegisterSetDebug*;
_Z24__VLTVerifyVtablePointer*;
_Z29__VLTVerifyVtablePointerDebug*;
__VLTChangePermission;
} CXXABI_1.3.7;
CXXABI_1.3.9 {
- # typeinfo name for __int128, unsigned __int128 and __float128
- _ZTS[gno];
- _ZTSP[gno];
- _ZTSPK[gno];
-
- # typeinfo for __float128
- _ZTIg;
- _ZTIPg;
- _ZTIPKg;
+ # typeinfo name for __int128 and unsigned __int128
+ _ZTS[no];
+ _ZTSP[no];
+ _ZTSPK[no];
} CXXABI_1.3.8;
# Symbols in the support library (libsupc++) supporting transactional memory.
CXXABI_TM_1 {
global:
__cxa_tm_cleanup;
};
Index: libstdc++-v3/configure
===================================================================
--- libstdc++-v3/configure (revision 209658)
+++ libstdc++-v3/configure (working copy)
@@ -15698,20 +15698,23 @@ $as_echo "#define _GLIBCXX_USE_FLOAT128
$as_echo "$enable_float128" >&6; }
rm -f conftest*
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
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.
# All these tests are for C++; save the language and the compiler flags.
# The CXXFLAGS thing is suspicious, but based on similar bits previously
# found in GLIBCXX_CONFIGURE.
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
Index: libstdc++-v3/configure.ac
===================================================================
--- libstdc++-v3/configure.ac (revision 209658)
+++ libstdc++-v3/configure.ac (working copy)
@@ -146,20 +146,23 @@ GLIBCXX_ENABLE_HOSTED
# Enable descriptive messages to standard output on termination.
GLIBCXX_ENABLE_VERBOSE
# Enable compiler support that doesn't require linking.
GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
GLIBCXX_ENABLE_PCH($is_hosted)
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
# Enable all the variable C++ runtime options that don't require linking.
GLIBCXX_ENABLE_CSTDIO
GLIBCXX_ENABLE_CLOCALE
GLIBCXX_ENABLE_ALLOCATOR
GLIBCXX_ENABLE_CHEADERS($c_model) dnl c_model from configure.host
GLIBCXX_ENABLE_LONG_LONG([yes])