2008/6/19 Kevin O'Connor kevin@koconnor.net:
Looks like a difference between our versions of 'ld'. The build effectively does:
ld -melf_i386 -e 0xf66e0 -Ttext 0xf0000 -b binary bios.bin -o bios.bin.elf
my ld version information: [...]legacybios> ld --version GNU ld version 2.16.91.0.5 20051219 (SUSE Linux)
I'm not sure why it builds a different elf on your machine. Can you try modifying tools/buildrom.py so that it uses "-Tdata" instead of "-Ttext"?
I get the right elf file after I executed: ld -melf_i386 -e 0xf66e0 -Tdata 0xf0000 -b binary bios.bin -o bios.bin.elf
here is the elf information: out/bios.bin.elf: file format elf32-i386 out/bios.bin.elf architecture: i386, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x000f66e0
Program Header: LOAD off 0x00001000 vaddr 0x000f0000 paddr 0x000f0000 align 2**12 filesz 0x00010000 memsz 0x00010000 flags rw-
Sections: Idx Name Size VMA LMA File off Algn 0 .data 00010000 000f0000 000f0000 00001000 2**0 CONTENTS, ALLOC, LOAD, DATA SYMBOL TABLE: 000f0000 l d .data 00000000 .data 00000000 l d *ABS* 00000000 .shstrtab 00000000 l d *ABS* 00000000 .symtab 00000000 l d *ABS* 00000000 .strtab 00010000 g *ABS* 00000000 _binary_out_bios_bin_size 00100000 g *ABS* 00000000 __bss_start 00100000 g .data 00000000 _binary_out_bios_bin_end 00100000 g *ABS* 00000000 _edata 00100000 g *ABS* 00000000 _end 000f0000 g .data 00000000 _binary_out_bios_bin_start
And then I build it as payload of coreboot and then run qemu with coreboot. I get the following messages in the console:
[...] Stage2 code done. LAR: Attempting to open 'normal/payload/segment0'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member normal/payload/segment0 LAR: CHECK normal/payload/segment0 @ 0xfffc43c0 start 0xfffc4410 len 20752 reallen 65536 compression 1 entry 0x000f66e0 loadaddress 0x000f0000 LAR: Compression algorithm #1 (lzma) used LAR: Attempting to open 'normal/payload/segment1'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member normal/payload/segment0 LAR: seen member bootblock LAR: File not found! LAR: load_file: No such file 'normal/payload/segment1' LAR: load_file_segments: All loaded, entry 0x000f66e0 Start bios bios_table_addr: 0x000ff0a5 end=0x000ff841 ram_size=0x08000000 Scan for VGA option rom Benter handle_10: a=00000e42 b=00000000 c=00000000 d=00000000 si=00000000 di=00000000 ds=00000000 es=00000000 ip=0000e818 cs=0000f000 f=00000002 r=0000fca0 Ienter handle_10: a=00000e49 b=00000000 c=00000000 d=00000000 si=00000000 di=00000000 ds=00000000 es=00000000 ip=0000e818 cs=0000f000 f=00000002 r=0000fca0 Oenter handle_10: a=00000e4f b=00000000 c=00000000 d=00000000 si=00000000 di=00000000 ds=00000000 es=00000000 ip=0000e818 cs=0000f000 f=00000002 r=0000fca0 Senter handle_10: a=00000e53 b=00000000 c=00000000 d=00000000 si=00000000 di=00000000 ds=00000000 es=00000000 ip=0000e818 cs=0000f000 f=00000002 r=0000fca0 enter handle_10: a=00000e20 b=00000000 c=00000000 d=00000000 si=00000000 di=00000000
[...]
enter handle_10: a=00000e0d b=00000000 c=00000000 d=00000000 si=00000000 di=00000000 ds=00000000 es=00000000 ip=0000e818 cs=0000f000 f=00000002 r=0000f664 enter handle_10: a=00000e0a b=00000000 c=00000000 d=00000000 si=00000000 di=00000000 ds=00000000 es=00000000 ip=0000e818 cs=0000f000 f=00000002 r=0000f674 enter handle_18: NULL No bootable device.
Is that OK? Thanks for help. ^_^
Zhang Rui