diff mbox

[v3] Tighten some config/abi/pre/gnu.ver patterns

Message ID 53948909.4090205@oracle.com
State New
Headers show

Commit Message

Paolo Carlini June 8, 2014, 4:02 p.m. UTC
Hi,

as discussed, tested x86_64-linux multilib, committed.

Thanks,
Paolo.

///////////////////////
2014-06-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* config/abi/pre/gnu.ver: Tighten some patterns; tidy.

Comments

Paolo Carlini June 28, 2014, 3:54 p.m. UTC | #1
Hi,

On 06/08/2014 06:02 PM, Paolo Carlini wrote:
> Hi,
>
> as discussed, tested x86_64-linux multilib, committed.
for now I reverted this. Things get too complicated when we have to 
conditionally export some symbols depending on the target (see 
libstdc++/61536).

Thanks,
Paolo.
Marc Glisse June 28, 2014, 4:13 p.m. UTC | #2
On Sat, 28 Jun 2014, Paolo Carlini wrote:

> for now I reverted this. Things get too complicated when we have to 
> conditionally export some symbols depending on the target (see 
> libstdc++/61536).

A single extra symbol (for the unusual -O0 compilation) is better than 200 
before the patch though. I think the patch is a good thing (also for 
future-proofing) even if one or two extra symbols remain because they are 
hard to remove. Also, none of this is urgent, it can all wait several 
weeks if you are busy.
diff mbox

Patch

Index: config/abi/pre/gnu.ver
===================================================================
--- config/abi/pre/gnu.ver	(revision 211353)
+++ config/abi/pre/gnu.ver	(working copy)
@@ -24,11 +24,9 @@ 
     # Names inside the 'extern' block are demangled names.
     extern "C++"
     {
-      std::[A-Z]*;
-      std::a[a-c]*;
-      std::ad[a-n]*;
-      std::ad[p-z]*;
-      std::a[e-z]*;
+#     std::[A-Z]*;
+#     std::a[e-z]*;
+      std::ad[a-np-z]*;
 #     std::ba[a-r]*;
       std::basic_[a-e]*;
       std::basic_f[a-h]*;
@@ -45,12 +43,10 @@ 
       std::basic_istr[f-z]*;
       std::basic_i[t-z]*;
       std::basic_[j-n]*;
-      std::basic_o[a-e]*;
 #     std::basic_ofstream;
 #     std::basic_o[g-z]*;
-      std::basic_o[g-r]*;
-      std::basic_ostr[a-d]*;
-      std::basic_ostr[f-z]*;
+      std::basic_o[a-eg-r]*;
+      std::basic_ostr[a-df-z]*;
       std::basic_[p-r]*;
 #     std::basic_streambuf
 #     std::basic_string
@@ -64,20 +60,20 @@ 
 #     std::c[i-z]*;
       std::c[i-n]*;
 #     std::condition_variable;
-      std::co[^n]*;
-      std::c[p-s]*;
+#     std::co[^n]*;
+      std::cout;
+#     std::codecvt*;
+      std::collate*;
+      std::c[p-sv-z]*;
       std::cu[^r]*;
 #     std::current_exception
-      std::c[v-z]*;
 #     std::[d-g]*;
-      std::d[a-d]*;
-      std::d[f-n]*;
+      std::d[a-df-np-z]*;
       std::domain_error::d*;
 #     std::domain_error::~d*;
-      std::d[p-z]*;
-      std::e[a-q]*;
+      std::e[a-m]*;
       std::error[^_]*;
-      std::e[s-z]*;
+#     std::e[s-z];
       std::gslice*;
       std::h[^a]*;
       std::i[a-m]*;
@@ -84,9 +80,24 @@ 
       std::invalid_argument::i*;
 #     std::invalid_argument::~i*;
 #     std::ios_base::[A-Ha-z]*;
-      std::ios_base::[A-Ha-f]*;
+      std::ios_base::[A-Ha-e]*;
+      std::ios_base::failbit;
+      std::ios_base::failure*;
+      std::ios_base::fixed;
+      std::ios_base::float;
+      std::ios_base::floatfield;
       std::ios_base::goodbit;
-      std::ios_base::[h-z]*;
+#     std::ios_base::[h-z]*;
+      std::ios_base::[h-otu]*;
+      std::ios_base::register_callback*;
+      std::ios_base::right;
+      std::ios_base::scientific;
+      std::ios_base::showbase;
+      std::ios_base::showpoint;
+      std::ios_base::showpos;
+      std::ios_base::skipws;
+      std::ios_base::sync_with_stdio*;
+      std::ios_base::xalloc*;
       std::ios_base::_M_grow_words*;
       std::ios_base::_M_init*;
       std::ios_base::Init::[A-Za-z]*;
@@ -96,19 +107,19 @@ 
 #     std::istreambuf_iterator
       std::istringstream*;
       std::istrstream*;
-      std::i[t-z]*;
+#     std::i[t-z]*;
       std::[A-Zj-k]*;
       std::length_error::l*;
 #     std::length_error::~l*;
       std::logic_error*;
       std::locale::[A-Za-e]*;
-      std::locale::facet::[A-Za-z]*;
+      std::locale::facet::[A-Zg-z]*;
       std::locale::facet::_S_get_c_locale*;
       std::locale::facet::_S_clone_c_locale*;
       std::locale::facet::_S_create_c_locale*;
       std::locale::facet::_S_destroy_c_locale*;
       std::locale::[A-Zg-h]*;
-      std::locale::id::[A-Za-z]*;
+#     std::locale::id::[A-Za-z]*;
       std::locale::id::_M_id*;
       std::locale::[A-Zj-z]*;
       std::locale::_[A-Ha-z]*;
@@ -117,15 +128,13 @@ 
       std::locale::_[J-Ra-z]*;
       std::locale::_S_normalize_category*;
       std::locale::_[T-Za-z]*;
-#     std::[A-Zm-r]*;
-#     std::[A-Zm]*;
-      std::[A-Z]*;
-      std::messages*;
-      std::money*;
-#     std::n[^u]*;
-      std::n[^aue]*;
-      std::nu[^m]*;
-      std::num[^e]*;
+#     std::messages*;
+#     std::money*;
+#     std::n[^aue]*;
+      std::nothrow;
+#     std::nu[^m]*;
+#     std::num[^e]*;
+      std::numpunct*;
       std::ostrstream*;
       std::out_of_range::o*;
 #     std::out_of_range::~o*;
@@ -145,18 +154,16 @@ 
       std::strstreambuf*;
 #     std::t[a-q]*;
       std::t[a-g]*;
-      std::th[a-h]*;
-      std::th[j-q]*;
-      std::th[s-z]*;
+      std::th[a-hj-qs-z]*;
 #     std::t[i-n]*;
       std::tr1::h[^a]*;
-      std::t[s-z]*;
+#     std::t[s-z]*;
 #     std::[A-Zu-z]*;
       std::underflow_error::u*;
 #     std::underflow_error::~u*;
       std::uncaught_exception*;
       std::unexpected*;
-      std::[A-Zv-z]*;
+      std::[A-Zw-z]*;
       std::_List_node_base::hook*;
       std::_List_node_base::swap*;
       std::_List_node_base::unhook*;
@@ -179,6 +186,11 @@ 
     # among the standard integer types and sizes on different platforms and
     # under different modes of 64-bit architecture (ILP64, LLP64, etc.)
 
+    # std::allocator
+    _ZNSaI[cw]EC[12]Ev;
+    _ZNSaI[cw]ED*;
+    _ZNSaI[cw]EC[12]ERKS_;
+
     # std::string
     # 'y' here and below represents 'unsigned long long'
     # where it is used for size_type on LLP64 platforms.
@@ -196,7 +208,7 @@ 
     _ZNSs[67][j-z]*E[PRcjmvy]*;
     _ZNSs7[a-z]*EES2_[NPRjmy]*;
     _ZNSs7[a-z]*EES2_S[12]*;
-    _ZNSs12_Alloc_hiderC*;
+    _ZNSs12_Alloc_hiderC[12]EP*;
     _ZNSs12_M_leak_hardEv;
     _ZNSs12_S_constructE[jmy]cRKSaIcE;
     _ZNSs12_S_empty_repEv;
@@ -236,7 +248,10 @@ 
     _ZNKSs8_M_check*;
     _ZNKSs8_M_limit*;
     _ZNKSs9_M_ibeginEv;
-    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_E*;
+#   _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_E*;
+    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES*;
+    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS*;
+    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_;
     _ZNKSs7compare*;
     _ZNKSs5c_strEv;
     _ZNKSs8capacityEv;
@@ -257,7 +272,8 @@ 
     _ZNSbIwSt11char_traitsIwESaIwEE[67][j-z]*E[PRwjmvy]*;
     _ZNSbIwSt11char_traitsIwESaIwEE7[a-z]*EES6_[NPRjmy]*;
     _ZNSbIwSt11char_traitsIwESaIwEE7[a-z]*EES6_S[56]*;
-    _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC*;
+#   _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC*;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC[12]EP*;
     _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv;
     _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructE[jmy]wRKS1_;
     _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv;
@@ -452,31 +468,51 @@ 
     # std::use_facet
     _ZSt9use_facetIS*;
 
+    # std::codecvt
+    _ZNSt14codecvt_byname*;
+    _ZNKSt7codecvtI[cw]c11*;
+    _ZNSt7codecvtI[cw]c11*;
+
+    # std::ctype_base
+    _ZNSt10ctype_base[56]*;
+
     # std::ctype
-    _ZNKSt5ctypeIcE8*;
+    _ZNKSt5ctypeIcE8do_widen*;
     _ZNKSt5ctypeIcE9*;
     _ZNKSt5ctypeIcE10*;
     _ZNKSt5ctypeIw*;
     _ZNSt5ctypeI[cw]*;
 
-    # std::ctype_base
-    _ZNSt10ctype_base*;
-
     # std::ctype_byname
     _ZNSt12ctype_bynameI[cw]*;
 
     # std::num_get
-    _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
+    _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE1[46]*;
+    _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE[236CD]*;
+    _ZNSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
 
     # std::num_put
     _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
+    _ZNSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
 
+    # std::money_base
+    _ZNSt10money_base8*;
+    _ZNSt10money_base18*;
+    _ZNSt10money_base20*;
+
     # std::money_get
+    _ZNSt9money_get*;
     _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
 
     # std::money_put
+    _ZNSt9money_put*;
     _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
 
+    # std::moneypunct
+    _ZNKSt10moneypunct*;
+    _ZNSt10moneypunct*;
+    _ZNSt17moneypunct*;
+
     # std::time_get
     _ZNSt8time_get*;
     _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE1*;
@@ -493,6 +529,11 @@ 
     # std::time_put_byname
     _ZNSt15time_put_byname*;
 
+    # std::messages
+    _ZNKSt8messages*;
+    _ZNSt8messages*;
+    _ZNSt15messages_byname*;
+
     # std::numeric_limits
     _ZNSt21__numeric_limits_base[5-9]*;
     _ZNSt21__numeric_limits_base1[0-7][hirt]*;
@@ -499,7 +540,8 @@ 
     _ZNSt21__numeric_limits_base1[0-7]mi*;
     _ZNSt21__numeric_limits_base1[0-7]max_e*;
 
-    _ZNSt14numeric_limitsI[a-m]E[5-9]*;
+    _ZNSt14numeric_limitsI[a-m]E[5-9][a-hj-z]*;
+    _ZNSt14numeric_limitsI[a-m]E[5-9]is_*;
     _ZNSt14numeric_limitsI[p-z]E[5-9]*;
     _ZNSt14numeric_limitsI[a-m]E1[0-7][hirt]*;
     _ZNSt14numeric_limitsI[p-z]E1[0-7][hirt]*;
@@ -508,6 +550,12 @@ 
     _ZNSt14numeric_limitsI[a-m]E1[0-7]max_e*;
     _ZNSt14numeric_limitsI[p-z]E1[0-7]max_e*;
 
+    # std::valarray
+    _ZNSt8valarrayI[jmy]ED*;
+    _ZNSt8valarrayI[jmy]EC*;
+    _ZNSt8valarrayI[jmy]EixE[jmy];
+    _ZNKSt8valarrayI[jmy]E4sizeEv;
+
     # std::_Rb_tree
     _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base;
     _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base;
@@ -563,7 +611,7 @@ 
     _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
 
     # __gnu_debug::_Error_formatter
-    _ZNK11__gnu_debug16_Error_formatter10_M_message*;
+    _ZNK11__gnu_debug16_Error_formatter10_M_messageENS*;
     _ZNK11__gnu_debug16_Error_formatter10_Parameter*;
     _ZNK11__gnu_debug16_Error_formatter13_M_print_word*;
     _ZNK11__gnu_debug16_Error_formatter15_M_print_string*;
@@ -667,9 +715,9 @@ 
     _ZTISt10__num_base;
     _ZTISt21__ctype_abstract_baseI[cw]E;
     _ZTISt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
-#    _ZTISt16__numpunct_cacheI[cw]E;
-#    _ZTISt17__timepunct_cacheI[cw]E;
-#    _ZTISt18__moneypunct_cacheI[cw]Lb?EE;
+#   _ZTISt16__numpunct_cacheI[cw]E;
+#   _ZTISt17__timepunct_cacheI[cw]E;
+#   _ZTISt18__moneypunct_cacheI[cw]Lb?EE;
     _ZTINSt8ios_base7failureE;
     _ZTINSt6locale5facetE;
     _ZTIN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
@@ -708,6 +756,14 @@ 
     _ZTSN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
     _ZTSN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
 
+    # std::type_info
+    _ZNKSt9type_info1*;
+    _ZNSt9type_infoD*;
+
+    # std::exception
+    _ZNKSt9exception4whatEv;
+    _ZNSt9exceptionD*;
+
     # std::bad_alloc::~bad_alloc, std::bad_cast::~bad_cast,
     # std::bad_typeid::~bad_typeid, std::bad_exception::~bad_exception
     _ZNSt9bad_allocD*;
@@ -715,7 +771,7 @@ 
     _ZNSt10bad_typeidD*;
     _ZNSt13bad_exceptionD*;
 
-    # function-scope static objects requires a guard variable.
+    # function-scope static objects require a guard variable.
     _ZGVNSt[^1]*;
     _ZGVNSt1[^7]*;
 
@@ -989,7 +1045,9 @@ 
     _ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE6stosscEv;
 
     _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE4syncEv;
-    _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE[5-9C]*;
+    _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE[5679]*;
+    _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE8overflow*;
+    _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEC[12]*;
     _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EED[^2]*;
 
 } GLIBCXX_3.4.9;
@@ -1150,8 +1208,14 @@ 
     _ZNKSbIwSt11char_traitsIwESaIwEE5crendEv;
 
     # string|wstring ::_S_construct<> and ::_S_construct_aux_2 helpers
-    _ZNSs12_S_constructI*;
-    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructI*;
+    # _ZNSs12_S_constructI*;
+    _ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag;
+    _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag;
+    _ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt*;
+    # _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructI*;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St*;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St*;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St*;
     _ZNSs18_S_construct_aux_2*;
     _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2*;
 
@@ -1414,20 +1478,21 @@ 
     __gxx_personality_seh0;
     __dynamic_cast;
 
-    # *_type_info classes, ctor and dtor
-    _ZN10__cxxabiv117__array_type_info*;
-    _ZN10__cxxabiv117__class_type_info*;
-    _ZN10__cxxabiv116__enum_type_info*;
-    _ZN10__cxxabiv120__function_type_info*;
-    _ZN10__cxxabiv123__fundamental_type_info*;
-    _ZN10__cxxabiv117__pbase_type_info*;
-    _ZN10__cxxabiv129__pointer_to_member_type_info*;
-    _ZN10__cxxabiv119__pointer_type_info*;
-    _ZN10__cxxabiv120__si_class_type_info*;
-    _ZN10__cxxabiv121__vmi_class_type_info*;
+    # *_type_info classes, destructors
+    _ZN10__cxxabiv117__array_type_infoD*;
+    _ZN10__cxxabiv117__class_type_infoD*;
+    _ZN10__cxxabiv116__enum_type_infoD*;
+    _ZN10__cxxabiv120__function_type_infoD*;
+    _ZN10__cxxabiv123__fundamental_type_infoD*;
+    _ZN10__cxxabiv117__pbase_type_infoD*;
+    _ZN10__cxxabiv129__pointer_to_member_type_infoD*;
+    _ZN10__cxxabiv119__pointer_type_infoD*;
+    _ZN10__cxxabiv120__si_class_type_infoD*;
+    _ZN10__cxxabiv121__vmi_class_type_infoD*;
 
     # *_type_info classes, member functions
-    _ZNK10__cxxabiv117__class_type_info*;
+    _ZNK10__cxxabiv117__class_type_info1[012]*;
+    _ZNK10__cxxabiv117__class_type_info2*;
     _ZNK10__cxxabiv120__function_type_info*;
     _ZNK10__cxxabiv117__pbase_type_info*;
     _ZNK10__cxxabiv129__pointer_to_member_type_info*;
@@ -1576,10 +1641,14 @@ 
 
 CXXABI_1.3.8 {
     __cxa_throw_bad_array_new_length;
-    _Z*St20bad_array_new_length*;
+    _ZT[VSI]St20bad_array_new_length;
+    _ZNSt20bad_array_new_lengthD*;
+    _ZNKSt20bad_array_new_length4whatEv;
 
     __cxa_throw_bad_array_length;
-    _Z*St16bad_array_length*;
+    _ZT[VSI]St16bad_array_length;
+    _ZNSt16bad_array_lengthD*;
+    _ZNKSt16bad_array_length4whatEv;
 
     # Virtual table verification stub functions.
     _Z17__VLTRegisterPair*;