On 13 Feb 2014, at 01:04, Alexander Kabaev <kab...@gmail.com> wrote:

> The refusal to use tools that are there precisely to help to help with
> the binary compatibility in favor of mindless library bumps is just sad.

Perhaps you could share with the class.  What is the correct way of solving 
this problem?  

For those just joining the discussion, the issue is that std::pair was 
originally declared with an explicit constructor and should have an implicit 
constructor, which has a different calling convention.  This means that we 
can't share the two std::pair implementations across libraries, because they 
will try to call the constructor with the wrong arguments.  Because of 
templates and C++ name mangling, this ends up being propagated into most 
libraries that link against libc++, and calling from one with the old 
definition to one with the new definition end up causing segfaults (if we're 
lucky - I think the symptom that we're seeing is actually dereferencing a junk 
value in a register, so it may cause random memory writes, but I'd have to 
check the ABI).  

Given that neither redeclaring the new std::pair in a new namespace, nor 
exporting both constructor symbols using symbol versioning (the two approaches 
that we've already discussed) will work, what are the tools that apparently 
we're refusing to use that will work?

David

_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to