summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2007-01-05 10:05:29 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2007-01-05 10:05:29 +0000
commitee8ea1f7e40ec380f884463239afa38467371541 (patch)
tree953813a001d01e281c1ea20f61b9ac6818d7a362
parent851aac95e3b73ec25e4bfec53a65d67d99c31307 (diff)
downloadATCD-ee8ea1f7e40ec380f884463239afa38467371541.tar.gz
Fri Jan 5 10:04:18 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
-rw-r--r--ACE/ChangeLog14
-rw-r--r--ACE/NEWS16
-rw-r--r--ACE/ace/config-g++-common.h16
3 files changed, 37 insertions, 9 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index 04580c6a280..2c45e40ab5b 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,17 @@
+Fri Jan 5 10:04:18 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * ace/config-g++-common.h:
+ A change related to my commit of:
+ Thu Jan 4 08:55:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl>
+ With FC6 a bug in GCC has been fixed. This is then fixed in
+ GCC 4.1.1 but only in the RedHat codebase, not in other
+ GCC 4.x compilers. The HP GCC 4.1.1 compiler hasn't this
+ fix but also the SuSE 10.2 GCC 4.1.2 compiler has not this
+ fix. We assume at this moment that GCC 4.2 will have this
+ fix. If you have FC6 you must add the following define to
+ your config.h file:
+ ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS 1
+
Fri Jan 5 07:05:18 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com>
* bin/MakeProjectCreator/modules/AutomakeWorkspaceHelper.pm:
diff --git a/ACE/NEWS b/ACE/NEWS
index e189c27dedf..79b7156c470 100644
--- a/ACE/NEWS
+++ b/ACE/NEWS
@@ -3,15 +3,16 @@ PLANNED MAJOR CHANGES "SOMETIME IN THE FUTURE" (i.e., exact beta not known)
. (Remedy) OpenVMS 8.3 on IA64 port
-. (Remedy) RTEMS port
-
-PLANNED CHANGES FOR "ACE-5.5.5"
+PLANNED CHANGES FOR "ACE-5.5.6"
===============================
. (OO) Minor 64 bit file offset fixes for ACE AIO classes on HP-UX.
. (OO) Various other fixes that have been piling up.
+PLANNED CHANGES FOR "ACE-5.5.5"
+===============================
+
. (Riverace) Pharlap ETS 13 qualification.
USER VISIBLE CHANGES BETWEEN ACE-5.5.4 and ACE-5.5.5
@@ -109,6 +110,15 @@ USER VISIBLE CHANGES BETWEEN ACE-5.5.4 and ACE-5.5.5
. VxWorks 6.4 support
+. Added support for FC6. Because the GCC 4.1.1 version that gets shipped
+ has a fix for the visibility attribute we use for the singletons
+ you will need to define the following in your config.h file. This can't be
+ done automatically because SuSE 10.2 gets shipped with GCC 4.1.2 but
+ doesn't have the same fix
+ ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS 1
+
+. RTEMS port
+
USER VISIBLE CHANGES BETWEEN ACE-5.5.3 and ACE-5.5.4
====================================================
diff --git a/ACE/ace/config-g++-common.h b/ACE/ace/config-g++-common.h
index 1d864451c26..83b9350b8e1 100644
--- a/ACE/ace/config-g++-common.h
+++ b/ACE/ace/config-g++-common.h
@@ -78,20 +78,24 @@
# define ACE_Proper_Export_Flag __attribute__ ((visibility("default")))
# define ACE_Proper_Import_Flag
-# if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 1)) || ((__GNUC__ == 4) && (__GNUC_MINOR__ == 1) && (__GNUC_PATCHLEVEL__ >= 1))
+# if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2))
// Sadly, G++ 4.x silently ignores visibility attributes on
// template instantiations, which breaks singletons.
// As a workaround, we use the GCC visibility pragmas.
// And to make them fit in a macro, we use C99's _Pragma()
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17470
-// This has been fixed in GCC 4.1.1
-# define GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS 1
+// This has been fixed in GCC 4.1.1 with FC6 but not with SuSE 10.2
+// that gets shipped with GCC 4.1.2 so we assume that with GCC 4.2
+// this will be fixed on the head. With FC6 just set this define yourself
+# ifndef ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS
+# define ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS 1
+# endif
# endif
-# if defined (GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS) && GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS == 1
+# if defined (ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS) && 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>;
-# else /* ! GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS */
+# else /* ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS */
# define ACE_EXPORT_SINGLETON_DECLARATION(T) \
_Pragma ("GCC visibility push(default)") \
template class T \
@@ -100,7 +104,7 @@
_Pragma ("GCC visibility push(default)") \
template class SINGLETON_TYPE<CLASS, LOCK>; \
_Pragma ("GCC visibility pop")
-# endif /* ! GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS */
+# endif /* ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS */
// Note that the "__extension__" is needed to prevent g++ from issuing
// an error when using its "-pedantic" command line flag.