This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Cross compiler, x86-linux -> powerpc-wrs-vxworks, MPC860, gcc trouble


Adding %{mcpu=860: -DCPU=PPC860}}" to the file 'gcc/config/rs6000/vxppc.h'
worked fine, and things do now compile. Thanks.

Regards,
Leif

> -----Original Message-----
> From: crossgcc-owner@sources.redhat.com
> [mailto:crossgcc-owner@sources.redhat.com]On Behalf Of Kai Ruottu
> Sent: 12. april 2002 16:44
> To: Leif Rune Solas
> Cc: crossgcc@sources.redhat.com
> Subject: Re: Cross compiler, x86-linux -> powerpc-wrs-vxworks, MPC860,
> gcc trouble
>
>
> Leif Rune Solas wrote:
> >
> > Hi,
> > I am trying to set up an powerpc-wrs-vxworks compiler hosted on
> a linux pc.
> > My target is a MBX860 board. The cross compiler seems to have
> been compiled
> > and installed without errors, I have used binutils 2.11.2, and
> gcc-2.95.3.
> > Gcc was configured and installed like this:
> >
> >  ../gcc-2.95.3/configure --target=powerpc-wrs-vxworks --enable-
> > long-long  --with-headers=/usr/tornado/target/h --enable-languages=c,c++
>
>  Did you use the VxWorks headers 'unfiltered' ?  What I have
> seen, they have
> the C and C++ headers mixed into a mess, so one must know which
> ones belong
> to the 'standard C headers' and which ones into the 'C++
> headers'. A 'normal'
> GCC-install puts these into separate directories, the
> VxWorks-install is not
> 'normal' in any sense...

...beginning to realize this.

>
>  The result from this may be that the old C++ headers in the VxWorks-stuff
> may be found before the newer headers in the GCC-sources...
>
> > To make it compile I had to do some small changes to libio:
> > <     ostream& vform(const char *format, _IO_va_list args);
> > ---
> > >     ostream& vform(const char *format, void * args);
> >
> >  in streambuf.h and iostream.h, I substituted _IO_va_list with
> void * four
> > places.
>
>  Were these from the GCC-sources or from the VxWorks headers ?  The latter
> should never be used...
>
> > When compiling one of my applications after doing "make all
> install", this
> > happens and I do not understand clearly why:
> >
> > ---- from my shell -------------
> > # make depend
> > make[1]: Entering directory `/home/leifs/apps/KeyUtil/MrKeyUtil/obj.mbx'
> > powerpc-wrs-vxworks-g++ -c -mcpu=860 -fvolatile -Wall -D_MBX
> -D__USE_MALLOC
> > -fno-builtin -msoft-float -fno-exceptions -fno-rtti
> > -I../../tornado/target/config -I../..  -O6  -DGZ -DGS_STATUS
> -I.. ../App.cxx
> > In file included from
> >
> /usr/local/lib/gcc-lib/powerpc-wrs-vxworks/2.95.3/include/types/vx
> ANSI.h:44,
> >                  from
> > /usr/local/lib/gcc-lib/powerpc-wrs-vxworks/2.95.3/include/stdio.h:59,
> >                  from ../../MD-DES/des.h:75,
> >                  from ../App.h:3,
> >                  from ../App.cxx:5:
> >
> /usr/local/lib/gcc-lib/powerpc-wrs-vxworks/2.95.3/include/types/vx
> Cpu.h:200:
> > #error CPU is not defined correctly
>
>  In your case the "#define CPU  PPC860" should have been existed
> is some earlier
> header, or the '-mcpu=860' should cause a '-DCPU=PPC860' in
> 'specs' (for 'cpp') :
>
> -------------------- a clip from vxCpu.h -----------------------------
> #if	(CPU==PPC403 || CPU==PPC505 || CPU==PPC601 || CPU==PPC603 || \
> 	 CPU==PPC604 || CPU==PPC860)
> #define CPU_FAMILY      PPC
> #endif  /* CPU_FAMILY==PPC */
>
> /*
>  * Check that CPU and CPU_FAMILY are now defined correctly.
>  * If CPU is defined to be one of the above valid values then
>  * the CPU_FAMILY will have been properly selected.
>  * This is required in order to select the right headers
>  * and definitions for that CPU in subsequent headers.
>  * If CPU or CPU_FAMILY is not defined at this point,
>  * we generate an error and abort the compilation.
>  */
>
> #if !defined(CPU) || !defined(CPU_FAMILY)
> #error CPU is not defined correctly
> #endif
> -------------------- a clip from vxCpu.h -----------------------------
>
> > So, it says that the cpu is not defined correctly and it
> complaints about
> > some missing files. I do not understand why the cpu is not
> defined since the
> > configure command should be OK, and why is it asking for files
> in arch/mips/
> > which is not there? Has gcc somehow mixed ppc and mips due to
> error in the
> > configuration?
>
>  The reason is simple: The '-mcpu=860' doesn't trigger the needed
> '-DCPU=PPC860'
> in 'specs'. So there is an error in the gcc-2.95.3 configuration
> stuff, in the
> file 'gcc/config/rs6000/vxppc.h' :
>
> ----------------------------------- clip ------------------------------
> #undef CPP_SPEC
> #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_sysv)
> %(cpp_endian) %(cpp_cpu) \
> %{mads: %(cpp_os_ads) } \
> %{myellowknife: %(cpp_os_yellowknife) } \
> %{mmvme: %(cpp_os_mvme) } \
> %{msim: %(cpp_os_sim) } \
> %{mcall-linux: %(cpp_os_linux) } \
> %{mcall-solaris: %(cpp_os_solaris) } \
> %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux:
> %{!mcall-solaris: %(cpp_os_default) }}}}}} \
> %{!DCPU=*: \
>   %{!mcpu*: -DCPU=PPC603} \
>   %{mcpu=powerpc: -DCPU=PPC603} \
>   %{mcpu=403: -DCPU=PPC403} \
>   %{mcpu=601: -DCPU=PPC601} \
>   %{mcpu=603: -DCPU=PPC603} \
>   %{mcpu=604: -DCPU=PPC604} \
>   %{mcpu=860: -DCPU=PPC860}}"
> ----------------------------------- clip ------------------------------
>
>  Modifying the CPP_SPEC being like previously should fix the bug
> permanently, but
> when you already have installed, editing the:
>
>   /usr/local/lib/gcc-lib/powerpc-wrs-vxworks/2.95.3/specs
>
> is much easier... Just search for '*cpp:' and the spec after it
> and add the
> needed '%{mcpu=860: -DCPU=PPC860}' between the last two '}'s...
>
>  However I suggest you to fix the bug in the sources...
>
>  Oops, after writing all this, I got a thought to check the
> 'gcc-3.0.4' sources
> and there ('gcc/config/rs6000/sysv4.h') I saw:
>
> ----------------------------------- clip ------------------------------
> #define CPP_OS_VXWORKS_SPEC "\
> -DCPU_FAMILY=PPC \
> %{!mcpu*: \
>   %{mpowerpc*: -DCPU=PPC603} \
>   %{!mno-powerpc: -DCPU=PPC603}} \
> %{mcpu=powerpc: -DCPU=PPC603} \
> %{mcpu=401: -DCPU=PPC403} \
> %{mcpu=403: -DCPU=PPC403} \
> %{mcpu=601: -DCPU=PPC601} \
> %{mcpu=602: -DCPU=PPC603} \
> %{mcpu=603: -DCPU=PPC603} \
> %{mcpu=603e: -DCPU=PPC603} \
> %{mcpu=ec603e: -DCPU=PPC603} \
> %{mcpu=604: -DCPU=PPC604} \
> %{mcpu=604e: -DCPU=PPC604} \
> %{mcpu=620: -DCPU=PPC604} \
> %{mcpu=740: -DCPU=PPC603} \
> %{mcpu=750: -DCPU=PPC603} \
> %{mcpu=801: -DCPU=PPC603} \
> %{mcpu=821: -DCPU=PPC603} \
> %{mcpu=823: -DCPU=PPC603} \
> %{mcpu=860: -DCPU=PPC603}"
> ----------------------------------- clip ------------------------------
>
>  Perhaps the '-mcpu=860' implying '-DCPU=PPC603' has some
> important reason...
> So using it instead could be a better choice.  Perhaps the
> 'comp.sys.powerpc.tech'
> newsgroup or something would tell more, now I remember seeing
> something... or then
> not...
>
> Cheers, Kai
>
>
> ------
> Want more information?  See the CrossGCC FAQ,
> http://www.objsw.com/CrossGCC/
> Want to unsubscribe? Send a note to
> crossgcc-unsubscribe@sources.redhat.com
>


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]