[LinuxBIOS] Qemu compile for LinuxBIOSV2
Marc Karasek
Marc.Karasek at Sun.COM
Thu Dec 6 16:47:24 CET 2007
As promised here is the patch for first the --build-on problem and also
the final linker problem. Although I consider the second one a patch
rather than a fix.. :-)
I have compiled this and tested it with FILO under QEMU. I think this
will take care of all of the other builds as well. At least teh i386
ones.. :-)
Files Modified:
LinuxBIOSv2/src/arch/i386/Config.lb
LinuxBIOSv2/src/arch/i386/lib/id.lds
LinuxBIOSv2/src/config/Config.lb
/*************************Patch***********************************************
diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/arch/i386/Config.lb
LinuxBIOSv2/src/arch/i386/Config.lb
*** LinuxBIOSv2.orig/src/arch/i386/Config.lb 2007-12-06
10:06:31.000000000 -0500
--- LinuxBIOSv2/src/arch/i386/Config.lb 2007-12-04 16:25:13.000000000
-0500
***************
*** 100,106 ****
makerule linuxbios
depends "crt0.o init.o $(LINUXBIOS_APC)
$(LINUXBIOS_RAM_ROM) ldscript.ld"
! action "$(CC) -nostdlib -nostartfiles -static -o $@ -T
ldscript.ld crt0.o init.o"
action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map"
end
--- 100,106 ----
makerule linuxbios
depends "crt0.o init.o $(LINUXBIOS_APC)
$(LINUXBIOS_RAM_ROM) ldscript.ld"
! action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles
-static -o $@ -T ldscript.ld crt0.o init.o"
action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map"
end
diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/arch/i386/lib/id.lds
LinuxBIOSv2/src/arch/i386/lib/id.lds
*** LinuxBIOSv2.orig/src/arch/i386/lib/id.lds 2007-12-06
10:06:31.000000000 -0500
--- LinuxBIOSv2/src/arch/i386/lib/id.lds 2007-12-06
10:36:31.000000000 -0500
***************
*** 1,5 ****
SECTIONS {
! . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start);
.id (.): {
*(.id)
}
--- 1,11 ----
SECTIONS {
!
! /*
! * . = (_ROMBASE + (ROM_IMAGE_SIZE - 0x10)) - (__id_end -
__id_start);
! * This is a temporary fix. Under Fedora 8 ld does not like
it if the .id section is above address 0xFFFF_EF00
! */
! _ROMTEMP = 0xffffef00;
! . = _ROMTEMP;
.id (.): {
*(.id)
}
Only in LinuxBIOSv2/src/arch/i386/lib: id.lds~
diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/config/Config.lb
LinuxBIOSv2/src/config/Config.lb
*** LinuxBIOSv2.orig/src/config/Config.lb 2007-12-06
10:06:30.000000000 -0500
--- LinuxBIOSv2/src/config/Config.lb 2007-12-04 16:27:48.000000000 -0500
***************
*** 40,51 ****
makerule linuxbios_ram.o
depends "$(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)"
! action "$(CC) -nostdlib -r -o $@ c_start.o $(DRIVER)
linuxbios.a $(LIBGCC_FILE_NAME)"
end
makerule linuxbios_ram
depends "linuxbios_ram.o $(TOP)/src/config/linuxbios_ram.ld
ldoptions"
! action "$(CC) -nostdlib -nostartfiles -static -o $@ -T
$(TOP)/src/config/linuxbios_ram.ld linuxbios_ram.o"
action "$(CROSS_COMPILE)nm -n linuxbios_ram | sort >
linuxbios_ram.map"
end
--- 40,51 ----
makerule linuxbios_ram.o
depends "$(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)"
! action "$(CC) -Wl,--build-id=none -nostdlib -r -o $@ c_start.o
$(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)"
end
makerule linuxbios_ram
depends "linuxbios_ram.o $(TOP)/src/config/linuxbios_ram.ld
ldoptions"
! action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles
-static -o $@ -T $(TOP)/src/config/linuxbios_ram.ld linuxbios_ram.o"
action "$(CROSS_COMPILE)nm -n linuxbios_ram | sort >
linuxbios_ram.map"
end
/*************************Patch***********************************************
Signed-off-by: Marc Karasek mailto:marc.karasek at sun.com
/*********************
Marc Karasek
MTS
Sun Microsystems
mailto:marc.karasek at sun.com
ph:770.360.6415
*********************/
Carl-Daniel Hailfinger wrote:
> On 03.12.2007 21:18, Marc Karasek wrote:
>
>> I think I have found the problem. It is related to the patch Ed sent.
>> The new LD looks like it automagically turns on the --build-id
>> option. I have not found out how turn it off.
>> When this option is used it generates the .note.gnu.build-id
>> section. When this section was discarded in the first ld pass
>> (linuxbios_rom.ram creation) it was causing the segmentation fault crash.
>> It looks like this same option is being called again when crt0.o is
>> linked to create linuxbios. I have added the .note.gnu.build-id
>> section to the .id section in the ldscript.ld file.
>> SECTIONS {
>> . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start);
>> .id (.) : {
>> *(.id)
>> *(.note.gnu.build-id)
>> }
>>
>>
>> This has gotten me past the second crash but now linuxbios.strip is
>> crashing.
>>
>
> Well done.
>
>
>> nm -n linuxbios | sort > linuxbios.map
>> objcopy --gap-fill 0xff -O binary linuxbios linuxbios.strip
>> objcopy: linuxbios.strip: Bad value
>> objcopy: linuxbios.strip: Bad value
>> make[1]: *** [linuxbios.strip] Error 1
>>
>> So this does not look like a ld problem, but an added feature to ld is
>> causing us grief. If anyone can figure out how to turn this option
>> off, that may fix all of this without any patches... :-)
>>
>
> Still, it would be a nice gesture to the binutils guys to report it as a
> bug. Maybe there's some bug deeper down which triggers this.
>
>
> Regards,
> Carl-Daniel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20071206/30c30b10/attachment.html>
More information about the coreboot
mailing list