On Wed, Jan 15, 2014 at 02:03:02PM +0100, Laszlo Ersek wrote:
> On 01/15/14 07:31, Gary Ching-Pang Lin wrote:
> > Hi,
> >
> > I recently started to build OVMF on my openSUSE 13.1 box and found the
> > secure boot config menu went blank. After several tests, the root
> > cause is identified:
> >
> > https://sourceware.org/git/?p=glibc.git;a=commit;h=2d48b41c8fa610067c4d664ac2339ae6ca43e78c
> >
> > This glibc commit is included in glibc 2.18 and introduces a faster
> > memcpy which somehow breaks the sb config menu.
> >
> > The known affected system: openSUSE 13.1 and fedora 20

It turned out the problem is caused by VfrCompile + glibc 2.18.
I built the programs in BaseTools/Source/C static-linked with glibc 2.17
and replaced the binaries in BaseTools/Source/C/bin, and the OVMF image that
is built with static-linked VfrCompile showed the secure boot menu as
expected. So, either the glibc commit is buggy, or some black magic in new 
gcc/glibc causes the problem.

> 
> That glibc commit seems to be full of SSE code.
> 
> For reference, please see the following OVMF commit:
> 
> https://github.com/tianocore/edk2/commit/4a8266f5
> 
> Apparently the glibc code (or maybe a gcc intrinsic?) "leaks" into the
> OVMF build. This should never happen.
> 
> We need to find the offending code in OVMF. I have no better idea than:
> 
> Please locate the EFI file corresponding to the secure boot config form
> (I think it's called SecureBootConfigDxe.efi) in your Build directory.
> Then please run "objdump -S" on it, and try to find any SSE instructions
> (like movdqu) and cross-reference them with the C source.
I didn't find any SSE instruction in the dumped assembly code, so we can
rule out this case.

Thanks,

Gary Lin

> 
> I'm not 100% sure but for the last step you might need to build your
> tree with the following patch in place first:
> 
>     diff --git a/BaseTools/Conf/tools_def.template 
> b/BaseTools/Conf/tools_def.template
>     index ec4eb97..129f043 100644
>     --- a/BaseTools/Conf/tools_def.template
>     +++ b/BaseTools/Conf/tools_def.template
>     @@ -3129,7 +3129,7 @@ NOOPT_DDK3790xASL_IPF_DLINK_FLAGS    = /NOLOGO 
> /NODEFAULTLIB /LTCG /DLL /OPT:REF
>      *_*_*_OBJCOPY_FLAGS             = objcopy not needed for
>      *_*_*_SYMRENAME_PATH            = echo
>      *_*_*_SYMRENAME_FLAGS           = Symbol renaming not needed for
>     -DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG     = 
> --add-gnu-debuglink=$(DEBUG_DIR)\$(MODULE_NAME).debug
>     +DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG     = 
> --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_NAME).debug
>      RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG   =
> 
>      DEFINE GCC_ALL_CC_FLAGS            = -g -Os -fshort-wchar 
> -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -c 
> -include AutoGen.h
> 
> (If this proves indeed necessary, then you need to make sure that this
> change takes effect in "Conf/tools_def.txt" too.)
> 
> Thanks,
> Laszlo
> 

------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to