compiling cont.

russ russ at embedit.com.au
Fri Sep 29 06:36:37 UTC 2000


Hi,

I found that I can narrow the problem down to this:

c code: long1 = long2 % long3;  -> crashes
asm:    jsr __umodsi3


c code: short1 = short2 % short3; -> works
asm:    divu.w 14(%sp),%d0


My question is, would __umodsi3 be a function in the pre-built
libraries I downloaded in RPM form and if so, how would I know if the
rpm library was compiled with the m68000 flag or the m68020 flag?

Thanks
russ


Charles-Antoine Gauthier wrote:
> 
> russ wrote:
> >
> > Hi,
> >
> > This is a better example of my problem. This is the output when I compile a single file from the
> > command line:
> >
> > russ > m68k-rtems-gcc -v -I/opt/rtems/bare-m68302/lib/include heapallocate.c
> > Reading specs from /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/specs
> > gcc version 2.95.2 19991024 (release)
> >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/cpp -lang-c -v -I/opt/rtems/bare-m68302/lib/include
> > -D__GNUC__=2 -D__GNUC_MINOR__=95 -Dmc68000 -Drtems -D__rtems__ -D__ELF__ -D__mc68000__ -D__rtems__
> > -D__rtems__ -D__ELF__ -D__mc68000 -D__rtems -Asystem(rtems) -Acpu(mc68000) -Acpu(m68k)
> > -Amachine(m68k) -Dmc68000 -D__mc68000 -D__mc68000__ heapallocate.c /tmp/cciqFySH.i
> > GNU CPP version 2.95.2 19991024 (release) (68k, Motorola syntax)
> > #include "..." search starts here:
> > #include <...> search starts here:
> >  /opt/rtems/bare-m68302/lib/include
> >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/include
> >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/../../../../m68k-rtems/include
> > End of search list.
> > The following default directories have been omitted from the search path:
> >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/../../../../include/g++-3
> >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/../../../../m68k-rtems/sys-include
> > End of omitted list.
> >  /opt/rtems/lib/gcc-lib/m68k-rtems/2.95.2/cc1 /tmp/cciqFySH.i -quiet -dumpbase heapallocate.c
> > -version -o /tmp/ccQjQxOm.s
> > GNU C version 2.95.2 19991024 (release) (m68k-rtems) compiled by GNU C version 2.7.2.3.
> >  /opt/rtems/m68k-rtems/bin/as -mc68000 -o /tmp/ccgd17n4.o /tmp/ccQjQxOm.s
> > /tmp/ccQjQxOm.s: Assembler messages:
> > /tmp/ccQjQxOm.s:22: Error: invalid instruction for this architecture; needs 68020 or 68030 or 68040
> > or 68060 or cpu32 -- statement `divul.l 20(%a0),%d1:%d0' ignored
> >
> > The m68k I use is for the 68000, not the 68020, but the assembler wants 68020. Is this built into
> > the rpm's? Do I have to rebuild everything from source and not use the rpm's. Or is there something
> > I'm missing?
> >
> > Thanks
> > russ
> 
> Seems to me your assembler is bitching about getting 68020 code but was
> told to assemble for the 68000. It is complaining that it was given
> instructions that do not exist on the 68000. Somehow, your compiler is
> not compiling for the 68000, but for the default 68020.
> 
> Also, your bsp_specs file is wrong if your compiler does not understand
> -qrtems. Check against other working targets, such as the mvme167 or
> gen68360.
> --
> Charles-Antoine Gauthier
> Institute for Information Technology   Institut de technologie de
> l'information
> National Research Council of Canada    Conseil national de recherches du
> Canada



More information about the users mailing list