This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: Weird issue with .clone symbol
Hi,
> Jan Hubicka wrote:
>
>> Well, all clones should be static so they probably should not appear in
>> libstdc++ compatibility suite. I will try to figure out what is going
>> on here.
>>
>>
> Humm, I think you misunderstood, the clone itself is in the object code
> of the user, it wants a symbol which currently is not exported, not
> viceversa. In other terms, in order to solve this issue the trivial way
> I would export additionally from the .so:
>
> _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag
>
thus, I'm committing the below.
In my understanding all the _S_construct<> instantiations must be
exported from the .so, even if they are used only by the string
constructors: in general, if the user wants debug-mode, no implicit
instantiations are suppressed for string (because no extern templates
are used) and when the user also passes -fno-implicit-templates, the
constructors end up lacking the required _S_constructor<> helpers,
because neither implicitly instantiated in the .o neither exported by
the .so.
Tested x86_64-linux.
Paolo.
//////////////////
2009-10-14 Paolo Carlini <paolo.carlini@oracle.com>
* config/abi/pre/gnu.ver: Export the _S_construct<> helpers.
Index: config/abi/pre/gnu.ver
===================================================================
--- config/abi/pre/gnu.ver (revision 152771)
+++ config/abi/pre/gnu.ver (working copy)
@@ -1039,6 +1039,10 @@
_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv;
_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv;
+ # string|wstring ::_S_construct<> helpers
+ _ZNSs12_S_constructI*;
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructI*;
+
} GLIBCXX_3.4.13;
# Symbols in the support library (libsupc++) have their own tag.