This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


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

MIPS Cross compilation -ffreestanding option


Hi,
                                                                                
I am seeing the difference between using hosted environment and a free
standing environment in the startup code with a mips-cross-compiler using 
a dummy main file.
(Compiler bilt for target MIPS32. --target=mips-elf
--enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib
--host=i686-pc-linux-gnu)
                                                                                
                                                                                
# File : main.c
                                                                                
int main() { }

mips-elf-gcc -ffreestanding main.c -o main
                                                                                
I have built the main file with -ffreestanding option and checked the
disassembly with mips-elf-objdump. So the dump will have mostly startup
code.
                                                                                
I find that get_mem_info jumps to a certain address which is not in the
code space of the 'main' executable. A series of other library calls also
jump to that address PATTERN (0xbfc00000 + <offset>). I am reading out
part of disassembly of the main program:

a002006c <zerobss>:
a002006c:       3c02a002        lui     v0,0xa002
a0020070:       2442612c        addiu   v0,v0,24876
a0020074:       3c03a002        lui     v1,0xa002
a0020078:       246362d0        addiu   v1,v1,25296
a002007c:       ac400000        sw      zero,0(v0)
a0020080:       0043082b        sltu    at,v0,v1
a0020084:       1420fffd        bnez    at,a002007c <zerobss+0x10>
a0020088:       24420004        addiu   v0,v0,4
a002008c:       3c08a002        lui     t0,0xa002
a0020090:       250861d0        addiu   t0,t0,25040
a0020094:       251d0100        addiu   sp,t0,256
a0020098:       3c04a002        lui     a0,0xa002
a002009c:       248461c0        addiu   a0,a0,25024
a00200a0:       0c00940d        jal     a0025034 <get_mem_info>
................

a0024fc4 <read>:
a0024fc4:       3c02bfc0        lui     v0,0xbfc0 ============???
a0024fc8:       34420038        ori     v0,v0,0x38
a0024fcc:       00400008        jr      v0
a0024fd0:       00000000        nop
                                                                                
a0024fd4 <write>:
a0024fd4:       3c02bfc0        lui     v0,0xbfc0 =========== ???
a0024fd8:       34420040        ori     v0,v0,0x40
a0024fdc:       00400008        jr      v0
a0024fe0:       00000000        nop
                                                                                
a0024fe4 <close>:
a0024fe4:       3c02bfc0        lui     v0,0xbfc0 ========== ???
a0024fe8:       34420050        ori     v0,v0,0x50
a0024fec:       00400008        jr      v0
a0024ff0:       00000000        nop
.................

a0025034 <get_mem_info>:
a0025034:       3c02bfc0        lui     v0,0xbfc0========= ???
a0025038:       344201b8        ori     v0,v0,0x1b8
a002503c:       00400008        jr      v0
a0025040:       00000000        nop

As can be seen, few of the library calls are doing a jump. I would like to 
know 2 issues regarding this:

 [1]. What those address are likely to represent ? Some system call 
      table...of OS ?
 [2]. From info gcc:
	`-ffreestanding'
     Assert that compilation takes place in a freestanding environment.
     This implies `-fno-builtin'.  A freestanding environment is one
     in which the standard library may not exist, and program startup
     may not necessarily be at `main'.  The most obvious example is an
     OS kernel.  This is equivalent to `-fno-hosted'.

     But OS specific routines still seem to be called.

(Attached is the full dump output). Any ideas ? (or is this not the 
correct mailing list ?)



-- 
Regards,
Anitha B
@S A N K H Y A

Attachment: mips_dump
Description: Text document


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