Experimental Physics and Industrial Control System
>
> Unfortunately you broke the build on Tornado 2.0.2, but not on Tornado
> 2.2.1 which does compile successfully. This is the error:
>
All of this started with the original problem we had with gcc 4.0 on certain
mac osx systems. My current idea is to ifdef the gcc 4.0 compiler as
follows. I have committed this patch after seeing that it compiles with ms
vc++, gnu gcc 3.2.3, and on T202.
What I can't do here is arrive at the correct gcc minor version as I don't
have any system with gcc 4.0 installed. I have this set to zero now, but
this is probably too low. I usually set this sort of ifdef to the latest
version that is known to have the bug. It's usually a good bet to assume
that compiler bugs will be fixed in the next release. It is even possible
that the 2nd (default) clause in the ifdef will unexpectedly compile with
gcc 4.0 in which case we can just get rid of the ifdef.
cvs diff -r R3-14-2_branch:yesterday -r R3-14-2_branch -u -wb -i --
osdWireFormat.h (in directory osi/os/default)
Index: osdWireFormat.h
===================================================================
RCS file:
/net/phoebus/epicsmgr/cvsroot/epics/base/src/libCom/osi/os/default/osdWireFo
rmat.h,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -c -u -w -b -i -r1.1.2.5 -r1.1.2.6
cvs diff: conflicting specifications of output style
--- osdWireFormat.h 22 Dec 2006 19:43:04 -0000 1.1.2.5
+++ osdWireFormat.h 8 Jan 2007 23:59:56 -0000 1.1.2.6
@@ -118,12 +118,20 @@
dst = tmp._f;
}
+#if defined ( __GNUC__ ) && ( __GNUC__ == 4 && __GNUC_MINOR__ <= 0 )
template <>
inline void WireGet < epicsOldString > (
const epicsUInt8 * pWireSrc, epicsOldString & dst )
{
memcpy ( dst, pWireSrc, sizeof ( dst ) );
}
+#else
+inline void WireGet (
+ const epicsUInt8 * pWireSrc, epicsOldString & dst )
+{
+ memcpy ( dst, pWireSrc, sizeof ( dst ) );
+}
+#endif
template <>
inline void WireSet < epicsFloat64 > (
@@ -148,20 +156,20 @@
# endif
}
-// workaround for problems in visual C++ 8.0
+#if defined ( __GNUC__ ) && ( __GNUC__ == 4 && __GNUC_MINOR__ <= 0 )
template <>
-inline void WireSet < const epicsOldString > (
+inline void WireSet < epicsOldString > (
const epicsOldString & src, epicsUInt8 * pWireDst )
{
memcpy ( pWireDst, src, sizeof ( src ) );
}
-
-template <>
-inline void WireSet < epicsOldString > (
+#else
+inline void WireSet (
const epicsOldString & src, epicsUInt8 * pWireDst )
{
memcpy ( pWireDst, src, sizeof ( src ) );
}
+#endif
template <>
inline void AlignedWireGet < epicsUInt16 > (
- Navigate by Date:
- Prev:
[no subject] Sahin, Hakan
- Next:
RE: Status Report Jeff Hill
- Index:
2002
2003
2004
2005
2006
<2007>
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
[no subject] Sahin, Hakan
- Next:
RE: Status Report Jeff Hill
- Index:
2002
2003
2004
2005
2006
<2007>
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024