[coreboot] Problem with tianocore compilation in coreboot-sdk:1.50

Piotr Król piotr.krol at 3mdeb.com
Wed Apr 4 13:55:16 CEST 2018


Hi all,
I can't compile tianocore payload using coreboot-sdk:1.50 and coreboot 4.7.

VfrUtilityLib.cpp: In member function 'CHAR8*
CVfrStringDB::GetVarStoreNameFormStringId(EFI_STRING_ID)':

VfrUtilityLib.cpp:3375:26: error: ISO C++ forbids comparison between
pointer and integer [-fpermissive]
   if (mStringFileName == '\0' ) {

I think this is not a single issue. Key problem is that tianocore do not
support modern toolchains - it requires GCC5. I have no problem when
compiling with 3mdeb/edk2-docker container which use GCC5.

I can workaround that problem by including payload as elf file, but if
we have integration we should make sure it works.

I'm not sure how coexistence of 3 toolchain should be solved to serve
stable build environment. In coreboot-sdk we have 2 toolchains native
Debian GCC7.2 and coreboot toolchain GCC6.3.

If we want stable build environment for tianocore payload we should have
3rd - GCC5.

Options to solve that problem:
1. Add another toolchain, which would be selected somehow through
Makefile logic when tianocore payload selected
2. Add patches in coreboot to support GCC7 or GCC6 - this may cause
unexpected behavior and maintaining this support out of edk2 can be
problematic
3. Add patches in edk2 to support GCC7 or GCC6 - I think this is long
and hard road
4. Any other that I'm missing ?

In light of coreboot-sdk I have one question that bugs me for long time.
Why we use Debian sid? Each build using moving target can be different
what means it is hard to build 2 the same coreboot-sdk containers.

Best Regards,
-- 
Piotr Król
Embedded Systems Consultant
http://3mdeb.com | @3mdeb_com



More information about the coreboot mailing list