> The lines in question are
>
> ##_ZTISt16nested_exception (glob)
> _ZTISt16nested_exception;
> ##_ZTSSt16nested_exception (glob)
> _ZTSSt16nested_exception;
> ##_ZTVSt16nested_exception (glob)
> _ZTVSt16nested_exception;
>
> in CXXABI_1.3.5, but the same symbols are also matched by
>
> ##_ZTISt[0-9][0-9][m-q]* (glob)
> ##_ZTSSt[0-9][0-9][m-q]* (glob)
> ##_ZTVSt[0-9][0-9][m-q]* (glob)
>
> in GLIBCXX_3.4. I fear that I need to update contrib/make_sunver.pl
> to handle this, but would need to know the exact semantics of such a
> version script first.
Here's a patch that makes this exports crystal clear.
FWIW, the linux exports for these nested_exception symbols were in
GLIBCXX_3.15 which was correct. This is still the case, even with the
explicit carve-outs in the patch below.
I've also changed the bad_function_call exports to not be in libsupc++,
or the freestanding version. (ie to GLIBCXX from CXXABI). I think this
was probably a simple thinko, right Paolo? If it's not, I'm not sure of
the rationale and would appreciate any commentary.
best,
benjamin
2011-03-15 Benjamin Kosnik <b...@redhat.com>
* config/abi/pre/gnu.ver: Make nested_exception exports super clear.
Move bad_function_call exports from CXXABI_1.3.5 to GLIBCXX_3.4.15.
Index: config/abi/pre/gnu.ver
===================================================================
--- config/abi/pre/gnu.ver (revision 171002)
+++ config/abi/pre/gnu.ver (working copy)
@@ -618,7 +618,10 @@
_ZTVSt[0-9][0-9][g-k]*;
_ZTVSt11logic_error;
_ZTVSt12length_error;
- _ZTVSt[0-9][0-9][m-q]*;
+# _ZTVSt[0-9][0-9][m-q]*;
+ _ZTVSt[0-9][0-9][m]*;
+ _ZTVSt[0-9][0-9]n[^e]*;
+ _ZTVSt[0-9][0-9][o-q]*;
_ZTVSt11range_error;
_ZTVSt13runtime_error;
_ZTVSt[0-9][0-9][t-z]*;
@@ -648,7 +651,10 @@
_ZTISt[0-9][0-9][g-k]*;
_ZTISt11logic_error;
_ZTISt12length_error;
- _ZTISt[0-9][0-9][m-q]*;
+# _ZTISt[0-9][0-9][m-q]*;
+ _ZTISt[0-9][0-9][m]*;
+ _ZTISt[0-9][0-9]n[^e]*;
+ _ZTISt[0-9][0-9][o-q]*;
_ZTISt11range_error;
_ZTISt13runtime_error;
_ZTISt[0-9][0-9][t-z]*;
@@ -682,7 +688,10 @@
_ZTSSt[0-9][0-9][g-k]*;
_ZTSSt11logic_error;
_ZTSSt12length_error;
- _ZTSSt[0-9][0-9][m-q]*;
+# _ZTSSt[0-9][0-9][m-q]*;
+ _ZTSSt[0-9][0-9][m]*;
+ _ZTSSt[0-9][0-9]n[^e]*;
+ _ZTSSt[0-9][0-9][o-q]*;
_ZTSSt11range_error;
_ZTSSt13runtime_error;
_ZTSSt[0-9][0-9][t-z]*;
@@ -1219,12 +1228,19 @@
_ZTISt11regex_error;
_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE;
+ # std::bad_weak_ptr
_ZNSt12bad_weak_ptrD*;
_ZNKSt12bad_weak_ptr4whatEv;
_ZTSSt12bad_weak_ptr;
_ZTVSt12bad_weak_ptr;
_ZTISt12bad_weak_ptr;
+ # std::bad_function_call
+ _ZNSt17bad_function_callD*;
+ _ZTISt17bad_function_call;
+ _ZTSSt17bad_function_call;
+ _ZTVSt17bad_function_call;
+
_ZNSt14error_categoryC*;
_ZNSt14error_categoryD*;
@@ -1422,12 +1438,6 @@
# FNV hash.
_ZSt15_Fnv_hash_bytesPKv*;
- # std::bad_function_call.
- _ZNSt17bad_function_callD*;
- _ZTISt17bad_function_call;
- _ZTSSt17bad_function_call;
- _ZTVSt17bad_function_call;
-
# std::nested_exception
_ZNSt16nested_exceptionD*;
_ZTISt16nested_exception;