mips: genmongoosev/start/start.S

Ralf Corsepius corsepiu at faw.uni-ulm.de
Tue Sep 9 14:56:20 UTC 2003


On Tue, 2003-09-09 at 16:37, gregory.menke at gsfc.nasa.gov wrote:
> Ralf Corsepius writes:
>  > Hi,
>  > 
>  > May-be there's a mips-expert on this list, who can help:
>  > 
>  > Compiling genmongoosev/start/start.S with gcc-3.3.2pre and binutils-2.14
>  > fails with this error:
>  > 
>  > # mips-rtems4.7-gcc --pipe -B../../../../../../../lib/
>  > -B../../../../../../../genmongoosev/lib/ -specs bsp_specs -qrtems -mips1
>  > -G0 -isystem ../../../../../../../genmongoosev/lib/include   -DASM -o
>  > o-optimize/start.o -c
>  > .../../../../../../../../../../rtems.master/c/src/lib/libbsp/mips/genmongoosev/start/start.S
>  > .../../../../../../../../../../rtems.master/c/src/lib/libbsp/mips/genmongoosev/start/start.S: Assembler messages:
>  > .../../../../../../../../../../rtems.master/c/src/lib/libbsp/mips/genmongoosev/start/start.S:585: Error: load/store address overflow (max 32 bits)
>  > .../../../../../../../../../../rtems.master/c/src/lib/libbsp/mips/genmongoosev/start/start.S:620: Error: load/store address overflow (max 32 bits)
>  > .../../../../../../../../../../rtems.master/c/src/lib/libbsp/mips/genmongoosev/start/start.S:628: Error: load/store address overflow (max 32 bits)
>  > ....
>  > 
>  > AFAIS, all lines gas is complaining about are of this type:
>  > 
>  >    sw  t0,M_BIU
>  > 
>  > gcc-3.2.x/binutils-2.13.x compiled this file without any complaint.
>  > So, what is it that cause gcc-3.3.x/binutils-2.14 to fail?
>  > Invalid ASM, previous versions of the toolchain has let pass through? A
>  > bug in gcc-3.3.x, binutils-2.14? Invalid compiler options not matching
>  > the expectations of this *.S-file?
>  > 
> 
> I haven't upgraded to gcc 3.3 yet, so I can't test directly.

Don't! It seems to be horribly broken. At least I just have encountered
a breath-taking bug in gcc-3.3.2pre, which I verified to break at least
mips-rtems and i386-rtems, and suspect to probably break all rtems-gccs,
if not many more targets.

These "M_BIU" type of arguments are defines, aren't they?
If so, the bug I just tripped over, could be an explanation.

>   The
> instructions are all load/store between a register & memory.  I
> suspect its because of the size of the address, in these cases they
> are all up at the top of memory; 0xffff0000 and above.  The Mongoose
> manual indicates loads/stores are supposed to only have a 16 bit
> offset from a base register.  I think we've been getting a freebie
> from gcc up to this point; it must be rewriting the instruction to
> DWIM via some internal register ($at perhaps?), and now isn't.  It
> might be as simple as the new gas not enabling $at by default...
> 
> I think the fix will be fairly easy, just recoding the instructions so
> they use the appropriate addressing model, it should be pretty easy.
> Hopefully the MIPS cpukit is not also affected...
> 
> I checked the rtems.com source tree and couldn't find the gcc3.3
> sources under snapshots/c_tools.  Are the standard OAR versions
> available someplace?

Not yet, Joel wants to release rtems-4.6 with
gcc-3.2.3/binutils-2.13.2.1 first. I am currently using a local version
of gcc-3.3.2pre with RTEMS's patches applied. I already submitted them
to Joel, but given the problems I encounter, I *strongly* discourage
anybody not wanting to get involved into gcc development to use it.


>   If I can get them, I'll download the new gcc and
> start working up a patch.
I'll send you my local nosrc.rpm, but ... it is the version exposing the
problems.

Ralf





More information about the users mailing list