[U-Boot] [PATCH v3 15/18] efi_loader: output load options in helloworld

Alexander Graf agraf at suse.de
Mon Dec 11 08:15:46 UTC 2017



On 10.12.17 23:20, Florian Fainelli wrote:
> 
> 
> On 12/09/2017 10:40 PM, Heinrich Schuchardt wrote:
>> On 12/10/2017 12:09 AM, Florian Fainelli wrote:
>>>
>>>
>>> On 11/26/2017 05:05 AM, Heinrich Schuchardt wrote:
>>>> We need to test if we pass a valid image handle when loading
>>>> and EFI application. This cannot be done in efi_selftest as
>>>> it is not loaded as an image.
>>>>
>>>> So let's enhance helloworld a bit.
>>>>
>>>> Reviewed-by: Simon Glass <sjg at chromium.org>
>>>> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>>>
>>> This particular patch/commit bbf75dd9345d0b1a7ec7a50016547eb7c759b7af
>>> ("efi_loader: output load options in helloworld") was bisected and
>>> causes the Lamobo_R1_defconfig build using the toolchain at [1] to fail
>>> with:
>>>
>>> /home/fainelli/work/toolchains/stbgcc-6.3-1.1/bin/arm-linux-ld.bfd:
>>> error: required section '.got' not found in the linker script
>>> /home/fainelli/work/toolchains/stbgcc-6.3-1.1/bin/arm-linux-ld.bfd:
>>> final link failed: Invalid operation
>>> scripts/Makefile.lib:409: recipe for target
>>> 'lib/efi_loader/helloworld_efi.so' failed
>>> make[2]: *** [lib/efi_loader/helloworld_efi.so] Error 1
>>> rm lib/efi_loader/helloworld.o
>>> scripts/Makefile.build:425: recipe for target 'lib/efi_loader' failed
>>> make[1]: *** [lib/efi_loader] Error 2
>>>
>>> [1]: https://github.com/Broadcom/stbgcc-6.3/releases/tag/stbgcc-6.3-1.1
>>>
>>
>> Isn't this fixed by
>> http://git.denx.de/?p=u-boot.git;a=commit;h=3bb74f9800cdc4cf10a87f2725242c2565256654
>>
>> "efi_loader helloworld.efi: Fix building with -Os" ?
> 
> Nope, my tree is at v2018.01-rc1-115-g335f7b1290ce which contains that
> commit already.

Yeah, but the issue is the same :(

$ nm lib/efi_loader/helloworld.o
00000000 T efi_main
         U memcpy

Gcc simply optimizes the loaded_image_guid assignment into a memcpy()
and I can't find any way to prohibit it from doing that.

I guess the easiest way out of that mess is to just not do a dynamic
struct assignment but instead put loaded_image_guid explicitly into the
.rodata section.

I'll send a patch.


Alex


More information about the U-Boot mailing list