summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHuang-Ming Huang <huangh@ociweb.com>2016-09-21 09:59:59 -0500
committerHuang-Ming Huang <huangh@ociweb.com>2016-09-21 09:59:59 -0500
commit7771149a115f4225b32990e97b5dc01766058ca4 (patch)
tree456e4ee8b2696fd22cb079889891d250fff6a728
parent91dfcf284a254229c8136bbb85d3b0373d31ba35 (diff)
downloadATCD-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.h5
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)") \