Status report

Eric McCorkle eric at shadowsun.net
Tue Jul 10 14:52:37 UTC 2012


I am back from traveling, and I managed to get quite a bit done in spite
of it.  I was able to identify the source of the remaining issues that
were preventing loader.efi from running, and I was able to get the i386
version to run under the TianoCore EFI image on QEMU.

The issues are as follows:

* clang seems to result in bad jump offsets being generated in the final
PE executable.  GCC, on the other hand, does not.  This means the EFI
loader *must* be compiled with GCC for the time being.  This was causing
loader.efi to fail, as my system's make.conf is set to use clang for
building world.

* _reloc can only handle two kinds of relocations.  More specifically,
if it encounters the kinds of relocations that arise from undefined
symbols, it will fail.  Using a linker script and objcopy to generate PE
executables will silently ignore undefined symbols (which is why the
loader.efi Makefile checks explicitly for them).  This was causing
_reloc to fail in my experimental programs.

However, at this point I am finally able to work directly on loader.efi.
 My current plans are to look at the contiguous memory allocation issue,
and to document what I've learned about loader.efi and how it's created
better.

I am also curious as to why clang generates bad offsets.  This certainly
needs to be addressed at some point.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 834 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/soc-status/attachments/20120710/a340d21f/signature.pgp


More information about the soc-status mailing list