public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [v3] Tighten some config/abi/pre/gnu.ver patterns
@ 2014-06-08 16:05 Paolo Carlini
  2014-06-28 15:58 ` Paolo Carlini
  0 siblings, 1 reply; 3+ messages in thread
From: Paolo Carlini @ 2014-06-08 16:05 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++

[-- Attachment #1: Type: text/plain, Size: 101 bytes --]

Hi,

as discussed, tested x86_64-linux multilib, committed.

Thanks,
Paolo.

///////////////////////

[-- Attachment #2: CL --]
[-- Type: text/plain, Size: 111 bytes --]

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

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

[-- Attachment #3: p --]
[-- Type: text/plain, Size: 13666 bytes --]

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*;

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [v3] Tighten some config/abi/pre/gnu.ver patterns
  2014-06-08 16:05 [v3] Tighten some config/abi/pre/gnu.ver patterns Paolo Carlini
@ 2014-06-28 15:58 ` Paolo Carlini
  2014-06-28 16:13   ` Marc Glisse
  0 siblings, 1 reply; 3+ messages in thread
From: Paolo Carlini @ 2014-06-28 15:58 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++

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.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [v3] Tighten some config/abi/pre/gnu.ver patterns
  2014-06-28 15:58 ` Paolo Carlini
@ 2014-06-28 16:13   ` Marc Glisse
  0 siblings, 0 replies; 3+ messages in thread
From: Marc Glisse @ 2014-06-28 16:13 UTC (permalink / raw)
  To: Paolo Carlini; +Cc: gcc-patches, libstdc++

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.

-- 
Marc Glisse

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-06-28 16:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-08 16:05 [v3] Tighten some config/abi/pre/gnu.ver patterns Paolo Carlini
2014-06-28 15:58 ` Paolo Carlini
2014-06-28 16:13   ` Marc Glisse

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).