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]

RE: newbie cygwin and crossgcc to vxworks 5.2


>-----Original Message-----
>From: Plucknett, Jim [mailto:plucknet@SSD.FSI.com]
>Sent: 02 May 2001 23:19

>Thanks for the detailed howto...  It's up and running.

  Yay!!

>The old 'vxWorks 5.2 includes' took a little tweaking but 
>not bad.

  I would highly recommend you take a look at
http://sources.redhat.com/ml/crossgcc/2000-07/msg00112.html
for further info.  Although I would *not* recommend the build procedure
described in that post, which is a kind of fudge using newlib.

  There's also a few nits I'd pick with his solutions to various problems.
Point 8 in that post refers to problems with constructors, destructors
and exceptions.  The solution offered is to modify the gcc source file
gcc/config/m68k/vxm68k.h to make collect2 work, whereas I would advise
not using that technique but simply adding the lines

------snip!--------
/*     More backward compatibility patches: we undef these two in
    order to force the compiler to output our static constructors
    and destructors in the fashion to which it is accustomed....  */
#undef ASM_OUTPUT_CONSTRUCTOR
#undef ASM_OUTPUT_DESTRUCTOR

/*   And this puts $ signs into the static object c/d-tors that
    need to be found by WRS munch. It also makes libgcc symbols
    match WRS symbols      */
#undef NO_DOLLAR_IN_LABEL
------snip!--------

and then continuing to use the 'munch' procedure as in a standard
vxworks makefile.

>libio/iostream.cc errors:
>-------------------------------

  I'd also quibble with point 6, which is necessary to make libstdc++
build: there's nothing wrong with the suggested solution except that it
breaks the gcc source code because the fix makes the test unconditional,
so you'd need to remember not to reuse your source tree for building 
compilers to any other targets.  My suggestion would be to modify the
lines that say
------snip!--------
if ${CC} dummy.c >/dev/null 2>&1 ; then
  echo "#define ${macro_prefix}HAVE_PRINTF_FP 1"
  echo "#define ${macro_prefix}HAVE_LONG_DOUBLE_IO 1"
else
------snip!--------
by adding flags to make the compiler error out when the required functions
aren't found in the include files:
------snip!--------
if ${CC} dummy.c -Wimplicit -Werror >/dev/null 2>&1 ; then
------snip!--------

  I think the above should help the problem you had with printf stuff in
libio.

  I also expect that points 9 (build failure in libiberty/fdmatch.c) and
12 (create a dummy libm.a) are irrelevant.  If I'm wrong, a better solution
to point 12 is adding the lines

------snip!--------
/* WRS runtime does not need a separate math library. */
#define MATH_LIBRARY ""
------snip!--------

again in gcc/config/m68k/vxm68k.h

>Added to fileio.h in libchill for basicio.c
>-------------------------------------------

  If you use --enable-languages=c,c++ when you configure gcc, it won't
attempt to build the chill, java or fortran compilers.  I don't know if
any of the other languages can be expected to work since WRS don't 
support them, and I would seriously hesitate to use something that is
basically untested and not guaranteed to work in any production code!

>Added to regsMc68k.h in sys-include/arch/mc68k
>----------------------------------------------

  I think this is probably the same problem addressed by point 9.  When
I was fixing the varargs problems in the ppc port, I found that one of
the fixincs patches wasn't being applied, so I had to modify the test
in gcc/fixinc/inclhack.def.  Find the lines which say

------snip!--------
fix = {
    hackname = vxworks_needs_vxworks;
    files    = sys/stat.h;
    test     = " -r types/vxTypesOld.h";
    test     = " -n \"`egrep '#include' $file`\"";
    test     = " -n \"`egrep ULONG $file`\"";
    select   = "#[ \t]define[ \t][ \t]*__INCstath";

    sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
          "#include <types/vxTypesOld.h>\n";
};
------snip!--------

and replace them with

------snip!--------
fix = {
    hackname = vxworks_needs_vxworks;
    files    = sys/stat.h;
    select   = "#[ \t]*define[ \t][ \t]*__INCstath";

    sed = "/#[ \t]*define[ \t][ \t]*__INCstath/a\\\n"
          "#include <types/vxTypesOld.h>\n";
};
------snip!--------

although I'm worried that this might break some of the non-vxworks 
targets of the compiler.  And another problem with any fixinc'd headers
is that the standard WRS makefiles, which use the -nostdinc flag, won't
find them!  I'd either drop that flag from the makefiles, or place the
fixed headers back into $WIND_BASE/target/h (backup your Tornado install
directory first!)

>Thanks again for your help.  I owe you a beer/coffee/water

  Oooh, beer please :-)

        DaveK
-- 
 All your base are belong to the Israeli army!  Oh, now they aren't again!


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************

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


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