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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Linux -> PPC cross-compile of the Motor Record |
From: | "Ronald L. Sluiter" <[email protected]> |
To: | "Ernest L. Williams Jr." <[email protected]>, Andy Foster <[email protected]> |
Cc: | Epics Questions <[email protected]> |
Date: | Wed, 26 Nov 2003 09:13:01 -0600 |
I submitted a TSR to Wind River's Tech Support and they (Eric Lo) have come up with the following solution/workaround.
- file <motor>/motorApp/OmsSrc/drvOms.cc ------- drvOms.cc ------- 878c878 < (void (*)()) motorIsr, (void *) card); --- > (devLibVOIDFUNCPTR) motorIsr, (void *) card); 938c938 < (void (*)()) motorIsr); --- > (devLibVOIDFUNCPTR) motorIsr);
- file <motor>/motorApp/OmsSrc/drvOms58.cc ------- drvOms58.cc ------- 924c924 < (void (*)()) motorIsr, (void *) card); --- > (devLibVOIDFUNCPTR) motorIsr, (void *) card);
Andy, I am getting this error from both the cc68k and the ccppc compilers distributed with Tornado 2.2.1 for a Solaris host.
Could someone (Marty?) make this modification to devLib.h in future releases?
Adios, Ron Sluiter
Hi,
I have also confirmed this. We will get updated GNU Tool Chain source code patches from WRS to get in synch with the current T2.2 compiler. The T2.2 compiler is indeed based on gcc-2.96 as you have discovered.
Thanks, Ernest L. Williams Jr. SNS Control Systems Group
On Fri, 2003-11-21 at 13:30, Ronald L. Sluiter wrote:
Dear Andy,
Oh! the joy of collaboration. I was just struggling with this problem when I saw your post.
Strangely, this same problem does occur with the 68K version of the Tornado 2.2 (and 2.2.1) compiler.
/home/oxygen/SLUITER/wind68K2.2/host/sun4-solaris2/bin/cc68k -c -D_POSIX_SOURCE -DCPU=MC68040 -DvxWorks -include /home/oxygen/SLUITER/wind68K2.2/target/h/vxWorks.h -ansi -O0 -g -Wall -m68040 -fno-implicit-templates -fno-builtin -I. -I.. -I../../../include/os/vxWorks -I../../../include -I/home/oxygen/SLUITER/local/epics/Vx_5-5_R3-14-4/support/mpf2-4/include/os/vxWorks -I/home/oxygen/SLUITER/local/epics/Vx_5-5_R3-14-4/support/mpf2-4/include -I/home/oxygen/SLUITER/local/epics/Vx_5-5_R3-14-4/base/include/os/vxWorks -I/home/oxygen/SLUITER/local/epics/Vx_5-5_R3-14-4/base/include -I/home/oxygen/SLUITER/local/epics/Vx_5-5_R3-14-4/support/ipac2-5/include/os/vxWorks -I/home/oxygen/SLUITER/local/epics/Vx_5-5_R3-14-4/support/ipac2-5/include -I/home/oxygen/SLUITER/wind68K2.2/target/h ../drvOms.cc
.../drvOms.cc:878: sorry, not implemented: `tree_list' not supported by dump_type
.../drvOms.cc: In function `int motorIsrEnable(int)':
.../drvOms.cc:878: ANSI C++ prohibits conversion from `()' to `(...)'
.../drvOms.cc:938: sorry, not implemented: `tree_list' not supported by dump_type
.../drvOms.cc: In function `void motorIsrDisable(int)':
.../drvOms.cc:938: ANSI C++ prohibits conversion from `()' to `(...)'
.../drvOms.cc: In function `int motor_init()':
.../drvOms.cc:1071: warning: unsigned int format, pointer arg (arg 5)
.../../../include/motordrvComCode.h: At top level:
.../drvOms.cc:922: warning: `void motorIsrDisable(int)' defined but not used
dumond% cc68k -v
Reading specs from /home/oxygen/SLUITER/wind68K2.2/host/sun4-solaris2/bin/../lib/gcc-lib/m68k-wrs-vxworks/gcc-2.96/specs
gcc version gcc-2.96 (2.96+) 19990621 VxWorks 5.5
85973
Please send those patches.
Thanks, Ron Sluiter
Andy Foster wrote:
Dear All,
I recently tried compiling the latest version of the Motor record (V5-2 for 3.14.4) using the Linux -> PPC cross-compiler that I built from the GNU/Wind River sources available from the SNS site.
The compilation failed due to a compiler problem:
/export/home/ajf/tornado2.2/ppc/host/x86-linux/bin/ccppc -c -D_POSIX_SOURCE -DCPU=PPC604 -DvxWorks -include /export/home/ajf/tornado2.2/ppc/target/h/vxWorks.h -ansi -O3 -Wall -mcpu=604 -mstrict-align -mlongcall -fno-implicit-templates -fno-builtin -I. -I.. -I../../../include/os/vxWorks -I../../../include -I/export/home/ajf/epics3.14.4/base/include/os/vxWorks -I/export/home/ajf/epics3.14.4/base/include -I/export/home/ajf/tornado2.2/ppc/target/h ../drvOms.cc .../drvOms.cc: In function `int set_status(int, int)': .../drvOms.cc:228: warning: `bool ls_active' might be used uninitialized in this function .../drvOms.cc:878: sorry, not implemented: `tree_list' not supported by dump_type .... ....
I eventually tracked down the problem as being due to a change that was made to the GNU compiler between gcc-2.95 and gcc-2.95.1. I have patched my copy of the SNS compiler sources and this enabled me to compile successfully.
Interestingly, when cross-compiling from Solaris, using the cross-compiler supplied with Tornado 2.2, this problem does not occur. I can only assume then that the compiler which Wind River supplies is being built from a slightly different set of source files than the one on the SNS site.
I was also surprised that for the built compiler:
ccppc -v gives:
Reading specs from ./../lib/gcc-lib/powerpc-wrs-vxworks/gcc-2.96/specs gcc version gcc-2.96 (2.96+) 19990621 AltiVec
which seems to indicate that the sources are from gcc-2.96, i.e. a release which should have already included the patches that I had to apply.
If anyone else is having problems compiling the motor record and is interested in the patched compiler code, I would be happy to supply it.
Cheers,
Andy
-------------------------------------------------------------------- Observatory Sciences Limited Email: [email protected] William James House Tel: 44 - (0)1223 - 508259 Cowley Road Fax: 44 - (0)1223 - 508258 Cambridge, CB4 0WX, UK http://www.observatorysciences.co.uk