EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  <20032004  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  <20032004  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
Andy and Ernest,

I submitted a TSR to Wind River's Tech Support and they
(Eric Lo) have come up with the following solution/workaround.

The following ONLY applies to users building from Tornado 2.2 or 2.2.1.

Modify devLib.h in EPICS base R3.14.4 as follows;

file <base>/src/libCom/osi/devLib.h
------- devLib.h -------
373a374,375
> typedef void (*devLibVOIDFUNCPTR) (); /* ptr to function returning void */
>
377c379
< void (*pFunction)(),
---
> devLibVOIDFUNCPTR pFunction,


Modified Motor record R5.2 as follows;

- 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.

EPICS core developers,

Could someone (Marty?) make this modification to devLib.h
in future releases?

Adios,
Ron Sluiter


Ernest L. Williams Jr. wrote:


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








References:
Linux -> PPC cross-compile of the Motor Record Andy Foster
Re: Linux -> PPC cross-compile of the Motor Record Ronald L. Sluiter
Re: Linux -> PPC cross-compile of the Motor Record Ernest L. Williams Jr.

Navigate by Date:
Prev: A new type of "Peta File" is stalking the children....The US Army! Report Wash
Next: Bug in sequencer v1.9.5 Redman, Russell O.
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  <20032004  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: Linux -> PPC cross-compile of the Motor Record Ernest L. Williams Jr.
Next: Re: Linux -> PPC cross-compile of the Motor Record Andy Foster
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  <20032004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·