Hi Amit,
I think the fact that you are building for vxWorks 6.9 is not relevant. It is failing when building for the host, which is win32-x86. But you are using Visual Studio 2010, which many of us are using without any problems.
Please do the following:
At the top level of base type:
make realclean realuninstall
Then type
make
and send the complete output when it fails.
Also please tell us what files you have modified in base/configure/os, and how you have changed them.
Mark
________________________________________
From: Amit Chauhan [[email protected]]
Sent: Tuesday, July 22, 2014 12:46 AM
To: Mark Rivers; 'Dirk Zimoch'; 'Eric Norum'
Cc: [email protected]; 'Bhavna Merh'
Subject: RE: EPICS on VxWorks6.9
Hi,
Thanks to Mark and Dirk for taking their time out to dwell into the problem.
I am using Visual Studio 2010.
As suggested, I have NOT removed volatile keyword, but I have type casted
buffer as :
delete [ ] (T**) buffer;
As a result the make process has progressed beyond the point where it was
flagging error related to ringpointer.
But now the make process is stopping with following errors related to a file
named 'epicsSingleton.h' :
base-3-14-12-4\\include
..\\..\\..\\src\\libCom\\cxxTemplates\\epicsOnce.cpp
epicsOnce.cpp
..\..\..\src\libCom\cxxTemplates\epicsSingleton.h(37) : error C2039:
'size_t' : is not a member of 'std'
..\..\..\src\libCom\cxxTemplates\epicsSingleton.h(82) : error C2955:
'epicsSingleton' : use of class template requires template argument list
..\..\..\src\libCom\cxxTemplates\epicsSingleton.h(78) : see
declaration of 'epicsSingleton'
..\..\..\src\libCom\cxxTemplates\epicsSingleton.h(87) : error C2244:
'epicsSingleton<TYPE>::reference::reference::reference' : unable to resolve
function overload
..\..\..\src\libCom\cxxTemplates\epicsSingleton.h(89) : error C2954:
template definitions cannot nest
..\..\..\src\libCom\cxxTemplates\epicsSingleton.h(57) : error C2027: use of
undefined type 'epicsSingleton<class epicsMutex>'
..\..\..\src\libCom\cxxTemplates\epicsOnce.cpp(40) : see reference
to class template instantiation 'epicsSingleton<class epicsMutex>' being
compiled
..\..\..\src\libCom\cxxTemplates\epicsSingleton.h(57) : error C2027: use of
undefined type 'epicsSingleton<class tsFreeList<class epicsOnceImpl,16,class
epicsMutex> >'
..\..\..\src\libCom\cxxTemplates\epicsOnce.cpp(48) : see reference
to class template instantiation 'epicsSingleton<class tsFreeList<class
epicsOnceImpl,16,class epicsMutex> >' being compiled
make[3]: Leaving directory `C:/EPICS/base-3-14-12-4/src/libCom/O.win32-x86'
make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/libCom'
make[1]: Leaving directory `C:/EPICS/base-3-14-12-4/src'
I am relatively new to EPICS and for the first time trying to build it for
VxWorks.
Suggestions to resolve these issues will be of help.
Regards,
Amit Chauhan
RRCAT, Indore
-----Original Message-----
From: Mark Rivers [mailto:[email protected]]
Sent: Monday, July 21, 2014 5:56 PM
To: Dirk Zimoch; Eric Norum; [email protected]
Cc: [email protected]
Subject: RE: EPICS on VxWorks6.9
> I just see that this is not a problem with vxWorks 6.9 but with the
> Windows host build.
> Eric, have you tested your change with Windows?
That change was done in EPICS base 3.14.10 in 2008. We have certainly built
a lot on Windows since then!
The question is what version of Visual Studio is Amit using? He did not
tell us that in the original post. I have used Visual Studio 2008 and 2010
to compile base since 2008 and have not had this problem. I suspect that
Amit is using a more recent version of Visual Studio?
Mark
________________________________________
From: Dirk Zimoch [[email protected]]
Sent: Monday, July 21, 2014 3:15 AM
To: Mark Rivers; Eric Norum
Cc: [email protected]
Subject: Re: EPICS on VxWorks6.9
On 16.07.2014 20:40, Mark Rivers wrote:
>> The problem is
>> T * volatile * buffer;
>> in epicsRingPointer.h.
>> I am not sure if "volatile" really makes any sense here.I strongly
suggest NOT removing the volatile keyword.
>
>
> In October 2008 we struggled with a very nasty bug in epicsRingPointer.h.
The symptoms were:
>
> - Only failed on multi-processor systems
> - Only failed with recent versions of gcc with optimization enabled
> - Only failed 1 in 100,000 times
>
> Eric Norum fixed the problem. The changes included the following
(comparison of epicsRingPointer.h from base 3.14.8.2 and 3.14.12.4)
>
>
> -private: // Data
> - int nextPush;
> - int nextPop;
> +private: /* Data */
> + volatile int nextPush;
> + volatile int nextPop;
> int size;
> - T **buffer;
> + T * volatile * buffer;
> };
>
> So he added that volatile keyword, and it would need a lot of testing to
prove it is not needed.
>
> Mark
In that case the volatile needs to be removed for the delete, because it
seems that the compiler thinks that there is no delete operator for
arrays of volatiles and implicitly converting volatile away is
considered impossible.
I just see that this is not a problem with vxWorks 6.9 but with the
Windows host build.
Eric, have you tested your change with Windows?
>
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
On Behalf Of Dirk Zimoch
> Sent: Wednesday, July 16, 2014 7:00 AM
> To: [email protected]
> Subject: Re: EPICS on VxWorks6.9
>
> Newer C++ compilers consider more and more things in EPICS errors. And
> maybe they are right.
>
> The problem is
> T * volatile * buffer;
> in epicsRingPointer.h.
>
> I am not sure if "volatile" really makes any sense here.
>
> The other possibility is to cast away the "void" in the destructor.
>
> delete [ ] (T*) buffer;
>
> Or whatever the nicer C++ syntax is (probably using const_cast<T*>()?)
>
> Dirk
>
> On 16.07.2014 08:14, Amit Chauhan wrote:
>> Hi,
>>
>> We are trying to put EPICS on VxWorks.
>>
>> Various information related to our setup are:
>>
>> EPICS base version : 3.14.12.4
>>
>> VxWorks Version : 6.9
>>
>> Workbench version : 3.3
>>
>> Host Architecture : win32 on x86
>>
>> Target Architecture: ppc-32
>>
>> Target Board : MVME-5500 with PowerPC 7447 processor
>>
>> On running the 'make' command, the EPICS build stops after a while with
>> an error.
>>
>> *_Following is the output of the make command:_*
>>
>> make -C ./configure install
>>
>> make[1]: Entering directory `C:/EPICS/base-3-14-12-4/configure'
>>
>> perl ../src/tools/makeMakefile.pl O.win32-x86 ../..
>>
>> perl ../src/tools/makeMakefile.pl O.vxWorks-ppc32 ../..
>>
>> perl -MExtUtils::Command -e mkpath O.Common
>>
>> make -C O.win32-x86 -f ../Makefile TOP=../.. T_A=win32-x86 install
>>
>> make[2]: Entering directory
`C:/EPICS/base-3-14-12-4/configure/O.win32-x86'
>>
>> make[2]: Nothing to be done for `install'.
>>
>> make[2]: Leaving directory
`C:/EPICS/base-3-14-12-4/configure/O.win32-x86'
>>
>> make -C O.vxWorks-ppc32 -f ../Makefile TOP=../.. T_A=vxWorks-ppc32
install
>>
>> make[2]: Entering directory
>> `C:/EPICS/base-3-14-12-4/configure/O.vxWorks-ppc32'
>>
>> make[2]: Nothing to be done for `install'.
>>
>> make[2]: Leaving directory
>> `C:/EPICS/base-3-14-12-4/configure/O.vxWorks-ppc32'
>>
>> make[1]: Leaving directory `C:/EPICS/base-3-14-12-4/configure'
>>
>> make -C ./src install
>>
>> make[1]: Entering directory `C:/EPICS/base-3-14-12-4/src'
>>
>> make -C ./tools install
>>
>> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/src/tools'
>>
>> perl ../../src/tools/makeMakefile.pl O.win32-x86 ../../..
>>
>> perl ../../src/tools/makeMakefile.pl O.vxWorks-ppc32 ../../..
>>
>> perl -MExtUtils::Command -e mkpath O.Common
>>
>> make -C O.win32-x86 -f ../Makefile TOP=../../.. T_A=win32-x86 install
>>
>> make[3]: Entering directory
`C:/EPICS/base-3-14-12-4/src/tools/O.win32-x86'
>>
>> make[3]: Nothing to be done for `install'.
>>
>> make[3]: Leaving directory
`C:/EPICS/base-3-14-12-4/src/tools/O.win32-x86'
>>
>> make -C O.vxWorks-ppc32 -f ../Makefile TOP=../../.. T_A=vxWorks-ppc32
>> install
>>
>> make[3]: Entering directory
>> `C:/EPICS/base-3-14-12-4/src/tools/O.vxWorks-ppc32'
>>
>> make[3]: Nothing to be done for `install'.
>>
>> make[3]: Leaving directory
>> `C:/EPICS/base-3-14-12-4/src/tools/O.vxWorks-ppc32'
>>
>> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/tools'
>>
>> make -C ./makeBaseApp install
>>
>> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/src/makeBaseApp'
>>
>> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl O.win32-x86
>> ../../..
>>
>> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl
>> O.vxWorks-ppc32 ../../..
>>
>> perl -MExtUtils::Command -e mkpath O.Common
>>
>> make -C O.win32-x86 -f ../Makefile TOP=../../.. T_A=win32-x86 install
>>
>> make[3]: Entering directory
>> `C:/EPICS/base-3-14-12-4/src/makeBaseApp/O.win32-x86'
>>
>> make[3]: Nothing to be done for `install'.
>>
>> make[3]: Leaving directory
>> `C:/EPICS/base-3-14-12-4/src/makeBaseApp/O.win32-x86'
>>
>> make -C O.vxWorks-ppc32 -f ../Makefile TOP=../../.. T_A=vxWorks-ppc32
>> install
>>
>> make[3]: Entering directory
>> `C:/EPICS/base-3-14-12-4/src/makeBaseApp/O.vxWorks-ppc32'
>>
>> make[3]: Nothing to be done for `install'.
>>
>> make[3]: Leaving directory
>> `C:/EPICS/base-3-14-12-4/src/makeBaseApp/O.vxWorks-ppc32'
>>
>> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/makeBaseApp'
>>
>> make -C ./makeBaseExt install
>>
>> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/src/makeBaseExt'
>>
>> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl O.win32-x86
>> ../../..
>>
>> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl
>> O.vxWorks-ppc32 ../../..
>>
>> perl -MExtUtils::Command -e mkpath O.Common
>>
>> make -C O.win32-x86 -f ../Makefile TOP=../../.. T_A=win32-x86 install
>>
>> make[3]: Entering directory
>> `C:/EPICS/base-3-14-12-4/src/makeBaseExt/O.win32-x86'
>>
>> make[3]: Nothing to be done for `install'.
>>
>> make[3]: Leaving directory
>> `C:/EPICS/base-3-14-12-4/src/makeBaseExt/O.win32-x86'
>>
>> make -C O.vxWorks-ppc32 -f ../Makefile TOP=../../.. T_A=vxWorks-ppc32
>> install
>>
>> make[3]: Entering directory
>> `C:/EPICS/base-3-14-12-4/src/makeBaseExt/O.vxWorks-ppc32'
>>
>> make[3]: Nothing to be done for `install'.
>>
>> make[3]: Leaving directory
>> `C:/EPICS/base-3-14-12-4/src/makeBaseExt/O.vxWorks-ppc32'
>>
>> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/makeBaseExt'
>>
>> make -C ./libCom install
>>
>> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/src/libCom'
>>
>> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl O.win32-x86
>> ../../..
>>
>> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl
>> O.vxWorks-ppc32 ../../..
>>
>> perl -MExtUtils::Command -e mkpath O.Common
>>
>> make -C O.win32-x86 -f ../Makefile TOP=../../.. T_A=win32-x86 install
>>
>> make[3]: Entering directory
`C:/EPICS/base-3-14-12-4/src/libCom/O.win32-x86'
>>
>> perl ../../../src/libCom/misc/makeEpicsVersion.pl
>> ../../../configure/CONFIG_BASE_VERSION ../O.Common
>>
>> Building epicsVersion.h from ../../../configure/CONFIG_BASE_VERSION
>>
>> Found EPICS Version 3.14.12.4
>>
>> "Installing generated generic include file
>> C:\EPICS\base-3-14-12-4/include/epicsVersion.h"
>>
>> rc -l 0x409 -I. -I../O.Common -I. -I../../../src/libCom/osi/os/WIN32
>> -I../../../src/libCom/osi/os/default -I..
>> -I../../../src/libCom/bucketLib -I../../../src/libCom/ring
>> -I../../../src/libCom/calc -I../../../src/libCom/cvtFast
>> -I../../../src/libCom/cppStd -I../../../src/libCom/cxxTemplates
>> -I../../../src/libCom/dbmf -I../../../src/libCom/ellLib
>> -I../../../src/libCom/env -I../../../src/libCom/error
>> -I../../../src/libCom/fdmgr -I../../../src/libCom/freeList
>> -I../../../src/libCom/gpHash -I../../../src/libCom/iocsh
>> -I../../../src/libCom/logClient -I../../../src/libCom/macLib
>> -I../../../src/libCom/misc -I../../../src/libCom/osi
>> -I../../../src/libCom/taskwd -I../../../src/libCom/timer
>> -I../../../src/libCom/tsDefs -IC:\EPICS\base-3-14-12-4/include/os/WIN32
>> -IC:\EPICS\base-3-14-12-4/include -fo Com.res ../Com.rc
>>
>> cl -c /nologo /D__STDC__=0 /D_CRT_SECURE_NO_DEPRECATE
>> /D_CRT_NONSTDC_NO_DEPRECATE /Ox /GL /W3 /w44355 /MT
>> -DEPICS_DLL_NO -I. -I..\\O.Common -I.
>> -I..\\..\\..\\src\\libCom\\osi\\os\\WIN32
>> -I..\\..\\..\\src\\libCom\\osi\\os\\default -I..
>> -I..\\..\\..\\src\\libCom\\bucketLib -I..\\..\\..\\src\\libCom\\ring
>> -I..\\..\\..\\src\\libCom\\calc -I..\\..\\..\\src\\libCom\\cvtFast
>> -I..\\..\\..\\src\\libCom\\cppStd
>> -I..\\..\\..\\src\\libCom\\cxxTemplates -I..\\..\\..\\src\\libCom\\dbmf
>> -I..\\..\\..\\src\\libCom\\ellLib -I..\\..\\..\\src\\libCom\\env
>> -I..\\..\\..\\src\\libCom\\error -I..\\..\\..\\src\\libCom\\fdmgr
>> -I..\\..\\..\\src\\libCom\\freeList -I..\\..\\..\\src\\libCom\\gpHash
>> -I..\\..\\..\\src\\libCom\\iocsh -I..\\..\\..\\src\\libCom\\logClient
>> -I..\\..\\..\\src\\libCom\\macLib -I..\\..\\..\\src\\libCom\\misc
>> -I..\\..\\..\\src\\libCom\\osi -I..\\..\\..\\src\\libCom\\taskwd
>> -I..\\..\\..\\src\\libCom\\timer -I..\\..\\..\\src\\libCom\\tsDefs
>> -IC:\EPICS\base-3-14-12-4\\include\\os\\WIN32
>> -IC:\EPICS\base-3-14-12-4\\include
>> ..\\..\\..\\src\\libCom\\bucketLib\\bucketLib.c
>>
>> bucketLib.c
>>
>> cl /nologo /EHsc /GR -c /nologo /D__STDC__=0 /D_CRT_SECURE_NO_DEPRECATE
>> /D_CRT_NONSTDC_NO_DEPRECATE /Ox /GL /W3 /w44355 /MT
>> -DEPICS_DLL_NO /TP -I. -I..\\O.Common -I.
>> -I..\\..\\..\\src\\libCom\\osi\\os\\WIN32
>> -I..\\..\\..\\src\\libCom\\osi\\os\\default -I..
>> -I..\\..\\..\\src\\libCom\\bucketLib -I..\\..\\..\\src\\libCom\\ring
>> -I..\\..\\..\\src\\libCom\\calc -I..\\..\\..\\src\\libCom\\cvtFast
>> -I..\\..\\..\\src\\libCom\\cppStd
>> -I..\\..\\..\\src\\libCom\\cxxTemplates -I..\\..\\..\\src\\libCom\\dbmf
>> -I..\\..\\..\\src\\libCom\\ellLib -I..\\..\\..\\src\\libCom\\env
>> -I..\\..\\..\\src\\libCom\\error -I..\\..\\..\\src\\libCom\\fdmgr
>> -I..\\..\\..\\src\\libCom\\freeList -I..\\..\\..\\src\\libCom\\gpHash
>> -I..\\..\\..\\src\\libCom\\iocsh -I..\\..\\..\\src\\libCom\\logClient
>> -I..\\..\\..\\src\\libCom\\macLib -I..\\..\\..\\src\\libCom\\misc
>> -I..\\..\\..\\src\\libCom\\osi -I..\\..\\..\\src\\libCom\\taskwd
>> -I..\\..\\..\\src\\libCom\\timer -I..\\..\\..\\src\\libCom\\tsDefs
>> -IC:\EPICS\base-3-14-12-4\\include\\os\\WIN32
>> -IC:\EPICS\base-3-14-12-4\\include
>> ..\\..\\..\\src\\libCom\\ring\\epicsRingPointer.cpp
>>
>> epicsRingPointer.cpp
>>
>> ..\..\..\src\libCom\ring\epicsRingPointer.h(93) : *error C2664: 'delete'
>> : cannot convert parameter 1 from 'void *volatile * ' to 'void *'*
>>
>> * Conversion loses qualifiers*
>>
>> ..\..\..\src\libCom\ring\epicsRingPointer.cpp(82) : while compiling
>> class-template member function '__thiscall
>> epicsRingPointer<void>::~epicsRingPointer<void>(void)'
>>
>> make[3]: Leaving directory
`C:/EPICS/base-3-14-12-4/src/libCom/O.win32-x86'
>>
>> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/libCom'
>>
>> make[1]: Leaving directory `C:/EPICS/base-3-14-12-4/src'
>>
>> */The following code is written in epicsRingPointer.h (line 93):/*
>>
>> inline epicsRingPointer<T>:: ~epicsRingPointer( )
>>
>> { delete [ ] buffer; }
>>
>> If anyone can suggest us the solution to overcome this error it will be
>> of help to us.
>>
>> Regards,
>>
>> Amit Chauhan,
>>
>> RRCAT, Indore
>>
>
>
>
=
- References:
- EPICS on VxWorks6.9 Amit Chauhan
- Re: EPICS on VxWorks6.9 Dirk Zimoch
- RE: EPICS on VxWorks6.9 Mark Rivers
- Re: EPICS on VxWorks6.9 Dirk Zimoch
- RE: EPICS on VxWorks6.9 Mark Rivers
- RE: EPICS on VxWorks6.9 Amit Chauhan
- Navigate by Date:
- Prev:
RE: EPICS on VxWorks6.9 Amit Chauhan
- Next:
security rules and autosave Touchard Dominique
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
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:
RE: EPICS on VxWorks6.9 Amit Chauhan
- Next:
RE: EPICS on VxWorks6.9 Amit Chauhan
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
<2014>
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|