[v3] patch, configuring GCC --disable-libgomp causes libstdc++ abi check to fail.

Benjamin De Kosnik bkoz@redhat.com
Fri Sep 28 20:03:00 GMT 2012


Hey Iain.

I looked at this, and easily reproduced your results.

The following symbols are actually required by all
namespace associated-modes, not just parallel, and do not require
parallel capability:

> Symbols reported as missing by the abi.exp code:
> 
> _ZNSt9__cxx199815_List_node_base8transferEPS0_S1_
> std::__cxx1998::_List_node_base::transfer(std::__cxx1998::_List_node_base*,
> std::__cxx1998::_List_node_base*)
> 
> _ZNSt9__cxx199815_List_node_base4swapERS0_S1_
> std::__cxx1998::_List_node_base::swap(std::__cxx1998::_List_node_base&,
> std::__cxx1998::_List_node_base&)
> 
> _ZNSt9__cxx199815_List_node_base9_M_unhookEv
> std::__cxx1998::_List_node_base::_M_unhook()
> 
> _ZNSt9__cxx199815_List_node_base10_M_reverseEv
> std::__cxx1998::_List_node_base::_M_reverse()
>
> _ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_
> std::__cxx1998::_List_node_base::_M_transfer(std::__cxx1998::_List_node_base*,
> std::__cxx1998::_List_node_base*)
> 
> _ZNSt9__cxx199815_List_node_base7reverseEv
> std::__cxx1998::_List_node_base::reverse()
> 
> _ZNSt9__cxx199815_List_node_base4hookEPS0_
> std::__cxx1998::_List_node_base::hook(std::__cxx1998::_List_node_base*)
> 
> _ZNSt9__cxx199815_List_node_base6unhookEv
> std::__cxx1998::_List_node_base::unhook()
> 
> _ZNSt9__cxx199815_List_node_base7_M_hookEPS0_
> std::__cxx1998::_List_node_base::_M_hook(std::__cxx1998::_List_node_base*)
> 

I've adjusted the Makefiles accordingly, and renamed some of these
files to accurately reflect what is necessary for compatibility and
what is not.

And the remaining:

> _ZN14__gnu_parallel9_Settings3setERS0_
> __gnu_parallel::_Settings::set(__gnu_parallel::_Settings&)
> 
> _ZN14__gnu_parallel9_Settings3getEv
> __gnu_parallel::_Settings::get()
> 

are sufficiently generic such that they can safely be defined even
without libgomp being built. So let's do so! 

(The only problem may be
targets that had shared libraries with symbol versioning and disabled
libgomp, as now new symbols (ie, get/set from _Settings, above) will be
in the shared library but with an older version number.  In practice
this may not be an issue.)

There's no reason for this unintentional  ABI breakage with this
configure flag.

tested x86/linux
tested x86/linux --disable-libgomp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 20120928-1.patch
Type: text/x-patch
Size: 28835 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20120928/90b309fc/attachment.bin>


More information about the Libstdc++ mailing list