[U-Boot] [PATCH 1/1] efi_loader: avoid make race condition

Tuomas Tynkkynen tuomas.tynkkynen at iki.fi
Tue May 29 09:57:44 UTC 2018


Hi,

On 05/27/2018 11:28 PM, Heinrich Schuchardt wrote:
> When building .efi targets a race condition was observed:
> 
> If %_efi.so is not yet built before trying to build %.efi and error
> *** No rule to make target '%.efi'
> occurs. By explicitly adding %_efi.so to the targets this is avoided.
> 
> Reported-by: Tuomas Tynkkynen <tuomas.tynkkynen at iki.fi>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
> Hello Tuomas,
> 
> please, test if this resolves your problem.
> 
> Best regards
> 
> Heinrich
> ---
>   lib/efi_loader/Makefile   | 4 +++-
>   lib/efi_selftest/Makefile | 2 ++
>   2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
> index c6046e36d26..d31393c7a28 100644
> --- a/lib/efi_loader/Makefile
> +++ b/lib/efi_loader/Makefile
> @@ -10,7 +10,9 @@ CFLAGS_helloworld.o := $(CFLAGS_EFI) -Os -ffreestanding
>   CFLAGS_REMOVE_helloworld.o := $(CFLAGS_NON_EFI) -Os
>   
>   ifneq ($(CONFIG_CMD_BOOTEFI_HELLO_COMPILE),)
> -always += helloworld.efi
> +always-y += \
> +helloworld_efi.so \
> +helloworld.efi
>   endif
>   

The always-y variable isn't processed by Kbuild. So effectively this hunk
makes helloworld.efi to be never built at all.

If I do s/always-y/always/ on that line, that just changes the eventual
error message to:

make[3]: *** No rule to make target 'lib/efi_loader/helloworld_efi.so', needed by '__build'.  Stop.

Thanks,
Tuomas


More information about the U-Boot mailing list