Status report

Eric McCorkle eric at shadowsun.net
Mon May 28 14:44:25 UTC 2012


The majority of my efforts for the first week were code review and 
familiarization.  At this point, I've managed to build loader.efi for 
i386, when building world.  However, running make in the individual 
sys/boot/i386/efi directory seems to produce errors for various reasons:

1) Several source files #include headers in the x86/ subdirectory.  This 
directory does not exist in the source tree, but rather is created in a 
temporary tree in the obj/ directory during buildworld.  The result is 
that doing "cd sys/boot/i386/efi && make" will fail.

(Incidentally, some other standalone builds also fail for this reason, 
so I'm not sure at this point if I'm missing some crucial step, or if 
this is an outstanding issue)

2) If x86 symlinks are directly created, the build still fails, as 
essential libraries (ficl, libefi, libstand) are build 
position-dependent code.  The EFI app ABI is requires 
position-independent code, and thus liking fails.

I can work without standalone builds for now, but I will probably need 
get it working, or else find a workaround solution, as building world to 
test a change is tedious to say the least.


Specific changes I've made:

Copied elf64_freebsd.c from libi386 into the efi directory, and modified 
the makefile to use the appropriate file for the target architecture.

Copied bootinfo.h from sys/i386/include into sys/amd64/include, so that 
builds on amd64 don't fail due to <machine/bootinfo.h> not existing.  If 
bootinfo is the same for both i386 and amd64, might I suggest moving it 
to sys/x86/include and installing stubs?


Current status:

I've successfully produced loader.efi for i386.  I have not yet tested 
it with QEMU/TianoCore, because I'm currently reinstalling the KDE ports 
in an attempt to get rid of some KDE-related issues.

Based on comments in the subversion logs, I am going to focus primarily 
on getting things working for i386, then get amd64 working.  The commit 
logs seemed to indicate that as the existing plan.


Plans for this week:

Look into the issue of the kernel being able to handle being 
non-contiguous in memory and figure out what needs to be done there. 
Also, make some attempt to figure out what needs to be done to build for 
amd64 (probably this will just involve liking with libi386, or else 
copying files from that directory).


More information about the soc-status mailing list