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