From 7771149a115f4225b32990e97b5dc01766058ca4 Mon Sep 17 00:00:00 2001 From: Huang-Ming Huang Date: Wed, 21 Sep 2016 09:59:59 -0500 Subject: 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++. --- ACE/ace/config-g++-common.h | 5 +++-- 1 file 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 ; +# 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 ; +# 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)") \ -- cgit v1.2.1