diff options
author | Huang-Ming Huang <huangh@ociweb.com> | 2016-09-21 09:59:59 -0500 |
---|---|---|
committer | Huang-Ming Huang <huangh@ociweb.com> | 2016-09-21 09:59:59 -0500 |
commit | 7771149a115f4225b32990e97b5dc01766058ca4 (patch) | |
tree | 456e4ee8b2696fd22cb079889891d250fff6a728 | |
parent | 91dfcf284a254229c8136bbb85d3b0373d31ba35 (diff) | |
download | ATCD-7771149a115f4225b32990e97b5dc01766058ca4.tar.gz |
Use explicit template class instantiation for ACE_*_SINGLETON_DECLARE with GCC 4 and above
This prevents multiple definition of typeinfo symbols during linking,
only seen on arm-linux-gnueabihf-g++.
-rw-r--r-- | ACE/ace/config-g++-common.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/ACE/ace/config-g++-common.h b/ACE/ace/config-g++-common.h index e024997f42c..4ced0ef10b6 100644 --- a/ACE/ace/config-g++-common.h +++ b/ACE/ace/config-g++-common.h @@ -132,8 +132,9 @@ # endif # if defined (ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS) && ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS == 1 -# define ACE_EXPORT_SINGLETON_DECLARATION(T) template class ACE_Proper_Export_Flag T -# define ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) template class ACE_Proper_Export_Flag SINGLETON_TYPE <CLASS, LOCK>; +# define ACE_EXPORT_SINGLETON_DECLARATION(T) __extension__ extern template class ACE_Proper_Export_Flag T +# define ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) __extension__ extern template class ACE_Proper_Export_Flag SINGLETON_TYPE <CLASS, LOCK>; +# define ACE_HAS_EXPLICIT_TEMPLATE_CLASS_INSTANTIATION # else /* ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS */ # define ACE_EXPORT_SINGLETON_DECLARATION(T) \ _Pragma ("GCC visibility push(default)") \ |