diff mbox

version typeinfo for 128bit types

Message ID alpine.DEB.2.02.1404140912130.27139@stedding.saclay.inria.fr
State New
Headers show

Commit Message

Marc Glisse April 14, 2014, 9:39 a.m. UTC
Hello,

this is a follow-up for this patch:
http://gcc.gnu.org/ml/gcc-patches/2014-04/msg00618.html

once committed, g++ will generate typeinfo for __float128, and it needs 
versioning. While there, I noticed that __int128 has "typeinfo" but not 
"typeinfo name", so I am adding it. I manually checked that the new 
symbols were exactly the 12 I expected, with the new version number.

I did not test the gnu-versioned-namespace version.

I manually updated baseline for x86_64. It is awfully inconvenient to do. 
I was expecting "make new-abi-baseline" to generate it for me, but it 
gives me plenty of extra symbols compared to the current one. Some random 
examples:

FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_@@GLIBCXX_3.4
FUNC:_ZSt8distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_@@GLIBCXX_3.4
FUNC:_ZSt19__iterator_categoryIPKmENSt15iterator_traitsIT_E17iterator_categoryERKS3_@@GLIBCXX_3.4
FUNC:_ZSt13__check_facetISt7codecvtIwc11__mbstate_tEERKT_PS4_@@GLIBCXX_3.4
FUNC:_ZSt13__check_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_PS7_@@GLIBCXX_3.4
FUNC:_ZNSt9exceptionC1Ev@@GLIBCXX_3.4
FUNC:_ZNSt8iteratorISt18input_iterator_tagclPcRcEC1Ev@@GLIBCXX_3.4
FUNC:_ZNSt8ios_base4setfESt13_Ios_FmtflagsS0_@@GLIBCXX_3.4
FUNC:_ZNSt7complexIfEC1Eff@@GLIBCXX_3.4
FUNC:_ZNSt6chrono13duration_castINS_8durationIlSt5ratioILl1ELl1000000000EEEElS2_ILl1ELl1EEEENSt9enable_ifIXsrNS_13__is_durationIT_EE5valueES8_E4typeERKNS1_IT0_T1_EE@@GLIBCXX_3.4
FUNC:_ZNSt20bad_array_new_lengthC2Ev@@CXXABI_1.3.8
FUNC:_ZNSt14numeric_limitsIdE8infinityEv@@GLIBCXX_3.4
FUNC:_ZN10__cxxabiv117__class_type_info16__dyncast_resultC1Ei@@CXXABI_1.3

etc.


Bootstrap+testsuite on x86_64-linux-gnu.

2014-04-14  Marc Glisse  <marc.glisse@inria.fr>

 	PR libstdc++/43622
 	* config/abi/pre/gnu.ver (CXXABI_1.3.9): New version, new symbols.
 	* config/abi/pre/gnu-versioned-namespace.ver: New symbols.
 	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.

Comments

Jonathan Wakely April 14, 2014, 10:28 a.m. UTC | #1
On 14 April 2014 10:39, Marc Glisse wrote:
>
>         PR libstdc++/43622
>         * config/abi/pre/gnu.ver (CXXABI_1.3.9): New version, new symbols.
>         * config/abi/pre/gnu-versioned-namespace.ver: New symbols.
>         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.

I'd like to wait until 4.9.0 has been released before adding new
versions to the library, to avoid unnecessary differences between
trunk and the 4.9.0 release candidate(s).
Jonathan Wakely April 22, 2014, 1:50 p.m. UTC | #2
On 14 April 2014 11:28, Jonathan Wakely wrote:
> On 14 April 2014 10:39, Marc Glisse wrote:
>>
>>         PR libstdc++/43622
>>         * config/abi/pre/gnu.ver (CXXABI_1.3.9): New version, new symbols.
>>         * config/abi/pre/gnu-versioned-namespace.ver: New symbols.
>>         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
>
> I'd like to wait until 4.9.0 has been released before adding new
> versions to the library, to avoid unnecessary differences between
> trunk and the 4.9.0 release candidate(s).

I was about to say the patch is OK for trunk now, but noticed that the
new CXXABI_1.3.9 block is added after the CXXABI_TM one, not after
CXXABI_1.3.8 ... was that intentional?
Marc Glisse April 22, 2014, 1:55 p.m. UTC | #3
On Tue, 22 Apr 2014, Jonathan Wakely wrote:

> On 14 April 2014 11:28, Jonathan Wakely wrote:
>> On 14 April 2014 10:39, Marc Glisse wrote:
>>>
>>>         PR libstdc++/43622
>>>         * config/abi/pre/gnu.ver (CXXABI_1.3.9): New version, new symbols.
>>>         * config/abi/pre/gnu-versioned-namespace.ver: New symbols.
>>>         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.
>>
>> I'd like to wait until 4.9.0 has been released before adding new
>> versions to the library, to avoid unnecessary differences between
>> trunk and the 4.9.0 release candidate(s).
>
> I was about to say the patch is OK for trunk now, but noticed that the
> new CXXABI_1.3.9 block is added after the CXXABI_TM one, not after
> CXXABI_1.3.8 ... was that intentional?

I don't have any opinion, I'll move it just after 1.3.8 if that seems more 
logical to you.
Jonathan Wakely April 22, 2014, 2:11 p.m. UTC | #4
On 22 April 2014 14:55, Marc Glisse wrote:
> On Tue, 22 Apr 2014, Jonathan Wakely wrote:
>
>> On 14 April 2014 11:28, Jonathan Wakely wrote:
>>>
>>> On 14 April 2014 10:39, Marc Glisse wrote:
>>>>
>>>>
>>>>         PR libstdc++/43622
>>>>         * config/abi/pre/gnu.ver (CXXABI_1.3.9): New version, new
>>>> symbols.
>>>>         * config/abi/pre/gnu-versioned-namespace.ver: New symbols.
>>>>         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt:
>>>> Likewise.
>>>
>>>
>>> I'd like to wait until 4.9.0 has been released before adding new
>>> versions to the library, to avoid unnecessary differences between
>>> trunk and the 4.9.0 release candidate(s).
>>
>>
>> I was about to say the patch is OK for trunk now, but noticed that the
>> new CXXABI_1.3.9 block is added after the CXXABI_TM one, not after
>> CXXABI_1.3.8 ... was that intentional?
>
>
> I don't have any opinion, I'll move it just after 1.3.8 if that seems more
> logical to you.

Yes, I think so. The library changes are OK with that tweak - thanks!
Rainer Orth April 24, 2014, 5:10 p.m. UTC | #5
Marc Glisse <marc.glisse@inria.fr> writes:

> this is a follow-up for this patch:
> http://gcc.gnu.org/ml/gcc-patches/2014-04/msg00618.html
>
> once committed, g++ will generate typeinfo for __float128, and it needs
> versioning. While there, I noticed that __int128 has "typeinfo" but not
> "typeinfo name", so I am adding it. I manually checked that the new symbols
> were exactly the 12 I expected, with the new version number.
>
> I did not test the gnu-versioned-namespace version.
>
> I manually updated baseline for x86_64. It is awfully inconvenient to do. I
> was expecting "make new-abi-baseline" to generate it for me, but it gives
> me plenty of extra symbols compared to the current one. Some random
> examples:

It shouldn't be necessary to update all baselines whenever you add a new
version to libstdc++.so.6.  It seems to me that when you added
CXXABI_1.3.9, you forgot to update
libstdc++-v3/testsuite/util/testsuite_abi.cc for that.

	Rainer
diff mbox

Patch

Index: config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
===================================================================
--- config/abi/post/x86_64-linux-gnu/baseline_symbols.txt	(revision 209354)
+++ config/abi/post/x86_64-linux-gnu/baseline_symbols.txt	(working copy)
@@ -2513,20 +2513,21 @@  FUNC:atomic_flag_clear_explicit@@GLIBCXX
 FUNC:atomic_flag_test_and_set_explicit@@GLIBCXX_3.4.11
 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_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
@@ -2617,20 +2618,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:_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
@@ -3117,25 +3119,28 @@  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:_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
 OBJECT:2:_ZTSw@@CXXABI_1.3
 OBJECT:2:_ZTSx@@CXXABI_1.3
 OBJECT:2:_ZTSy@@CXXABI_1.3
 OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
 OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
 OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
 OBJECT:32:_ZTIPDe@@CXXABI_1.3.4
@@ -3148,39 +3153,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:_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:_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
@@ -3221,25 +3228,28 @@  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:_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
 OBJECT:3:_ZTSPw@@CXXABI_1.3
 OBJECT:3:_ZTSPx@@CXXABI_1.3
 OBJECT:3:_ZTSPy@@CXXABI_1.3
 OBJECT:3:_ZTSSd@@GLIBCXX_3.4
 OBJECT:3:_ZTSSi@@GLIBCXX_3.4
 OBJECT:3:_ZTSSo@@GLIBCXX_3.4
 OBJECT:40:_ZTISi@@GLIBCXX_3.4
@@ -3548,25 +3558,28 @@  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:_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
 OBJECT:4:_ZTSPKw@@CXXABI_1.3
 OBJECT:4:_ZTSPKx@@CXXABI_1.3
 OBJECT:4:_ZTSPKy@@CXXABI_1.3
 OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
 OBJECT:50:_ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
 OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4
 OBJECT:50:_ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
Index: config/abi/pre/gnu-versioned-namespace.ver
===================================================================
--- config/abi/pre/gnu-versioned-namespace.ver	(revision 209354)
+++ config/abi/pre/gnu-versioned-namespace.ver	(working copy)
@@ -314,24 +314,24 @@  CXXABI_2.0 {
     # typeinfo for decimal floating point types
     _ZTID[fde];
     _ZTIPD[fde];
     _ZTIPKD[fde];
 
     # typeinfo for decltype(nullptr)
     _ZTIDn;
     _ZTIPDn;
     _ZTIPKDn;
 
-    # typeinfo for __int128 and unsigned __int128
-    _ZTI[no];
-    _ZTIP[no];
-    _ZTIPK[no];
+    # typeinfo for __int128, unsigned __int128 and __float128
+    _ZTI[gno];
+    _ZTIP[gno];
+    _ZTIPK[gno];
 
     # virtual table
     _ZTVN10__cxxabiv117__array_type_infoE;
     _ZTVN10__cxxabiv117__class_type_infoE;
     _ZTVN10__cxxabiv116__enum_type_infoE;
     _ZTVN10__cxxabiv120__function_type_infoE;
     _ZTVN10__cxxabiv123__fundamental_type_infoE;
     _ZTVN10__cxxabiv117__pbase_type_infoE;
     _ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
     _ZTVN10__cxxabiv119__pointer_type_infoE;
Index: config/abi/pre/gnu.ver
===================================================================
--- config/abi/pre/gnu.ver	(revision 209354)
+++ config/abi/pre/gnu.ver	(working copy)
@@ -1584,10 +1584,24 @@  CXXABI_1.3.8 {
 
 } CXXABI_1.3.7;
 
 # Symbols in the support library (libsupc++) supporting transactional memory.
 CXXABI_TM_1 {
 
   global:
     __cxa_tm_cleanup;
 
 };
+
+CXXABI_1.3.9 {
+
+    # typeinfo name for __int128, unsigned __int128 and __float128
+    _ZTS[gno];
+    _ZTSP[gno];
+    _ZTSPK[gno];
+
+    # typeinfo for __float128
+    _ZTIg;
+    _ZTIPg;
+    _ZTIPKg;
+
+} CXXABI_1.3.8;