Thread View: gnu.gcc.bug
1 messages
1 total messages
Started by andy
Sat, 25 Jul 1992 22:46
GCC on a MIPS Magnum with RISCos 5.0
Author: andy
Date: Sat, 25 Jul 1992 22:46
Date: Sat, 25 Jul 1992 22:46
130 lines
3339 bytes
3339 bytes
Hello there !
I am trying to get the GCC 1.40 (as distributed by MIPS
on a PD-Tape) running on my Magnum 3000/33 with RiscOs 5.0.
My final intention is to use the GCC as a mc68k-crosscompiler,
but to check if I am able to compile and run GCC at all,
I decided to first compile it as it should be.
I invoked config.gcc with the `mips-sysv' option.
For error-free compiling I had to add the -systype svr3
(mips-)compiler-flag, #include <unistd.h> instead of
<sys/file.h> and finally add `-lc and -lbsd' to the
CLIB-variable.
Compilation in a separate directory was not possible
because the Mips-compiler could not find some files.
(Sorry, I don't remember which ones).
But that's not my real problem.
After some `trial and error' I was able to compile it,
and GCC seems to work. I am now able to generate .s and
.o files, but the Mips-linker says:
ABI incompatible stack frame instruction sequence in object hello.o,
instruction 0x27bdfff0
The mentioned instruction is:
subu $sp,$sp,16
I found out, that the Mips-cc allocates a stack frame of 32 bytes,
in contrast to the gcc, which allocates only 16 bytes. I assume
that this is the problem (hopefully the only one).
I include the .s files at the end of my mail,
first the mips-cc output, then the gcc-output.
Now my questions:
1. Are there any fixes to solve this problem ?
2. If not, what must I change ?
3. Is there a GNU-linker available ?
4. Do you have experience with using GCC as
a crosscompiler ? Are there any `specials'
to take care about ?
I hope you can help me !
Thank you very much,
Yours,
Andreas Busse
andy@wegy.uucp
P.S.: Sorry for my rather bad English !
-----------------------------------------------------------
OUTPUT OF THE MIPS-COMPILER
.verstamp 3 0
.data
.align 2
.align 0
$$5:
.ascii "hello world!\X0A\X00"
.text
.align 2
.file 2 "hello.c"
.globl main
.loc 2 3
# 1
# 2 int main()
# 3 {
.ent main 2
main:
.option O1
subu $sp, 32
sw $31, 28($sp)
.mask 0x80000000, -4
.frame $sp, 32, $31
.loc 2 3
.loc 2 4
# 4 printf("hello world!\n");
la $4, $$5
.livereg 0x0800000E,0x00000000
jal printf
.loc 2 5
# 5 }
move $2, $0
.livereg 0x2000FF0E,0x00000FFF
lw $31, 28($sp)
addu $sp, 32
j $31
.end main
-------------------------------------------------------------
OUTPUT OF GCC 1.40
.file 1 "hello.c"
.data
gcc_compiled.:
.rdata
$LC0:
.ascii "hello world!\n\000"
.text
.align 2
.globl main
.ent main
main:
#PROLOGUE
subu $sp,$sp,16 # temp= 0, regs= 8, args= 0, sfo= -8
.frame $fp,0,$31
sw $fp,0($sp)
sw $31,4($sp)
.mask 0xc0000000,-12
.fmask 0x00000000,-12
addu $fp,$sp,16 # set up frame pointer
#END PROLOGUE
subu $sp,$sp,16
la $4,$LC0
jal printf
$L1:
#EPILOGUE
subu $sp,$fp,16 # sp not trusted here
lw $fp,0($sp)
lw $31,4($sp)
addu $sp,$sp,16
j $31
#END EPILOGUE
.end main
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads