On Fri, 15 Feb 2019 at 06:49, Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> wrote: > > On Tue, Feb 12, 2019 at 4:26 PM Ard Biesheuvel > <ard.biesheuvel@xxxxxxxxxx> wrote: > > > > On Tue, 12 Feb 2019 at 04:45, Masahiro Yamada > > <yamada.masahiro@xxxxxxxxxxxxx> wrote: > > > > > > It took me a while to understand what is going on in the nested > > > if-blocks. > > > > > > Simplify it by removing unneeded code. > > > > > > - if_changed automatically adds 'set -e', so any failure in the > > > series of commands makes it immediately fail as a whole. > > > So, the outer if block is entirely redundant. > > > > > > - Since commit 9c2af1c7377a ("kbuild: add .DELETE_ON_ERROR special > > > target"), GNU Make automatically deletes the target on any failure > > > in its recipe. The explicit 'rm -f $@' is redundant. > > > > > > - surrounding commands with ( ) will spawn a subshell to execute them > > > in it, but it is rarely useful to do so. > > > > > > Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > > > > Assuming that it still works as expected: > > > > Acked-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> > > > > You can test this by adding a statically initialized global function > > pointer to any of the libstub source files that get built for ARM. > > > > Thanks! > > > I tried that, and it failed as expected. > Great, thanks for double checking. Are you taking this directly, or do you want me to take it via the EFI tree? Either is fine with me > > $ git diff > diff --git a/drivers/firmware/efi/libstub/arm32-stub.c > b/drivers/firmware/efi/libstub/arm32-stub.c > index becbda4..5ad7bbd 100644 > --- a/drivers/firmware/efi/libstub/arm32-stub.c > +++ b/drivers/firmware/efi/libstub/arm32-stub.c > @@ -28,6 +28,8 @@ efi_status_t > check_platform_features(efi_system_table_t *sys_table_arg) > return EFI_SUCCESS; > } > > +void * foo = (void *)check_platform_features; > + > static efi_guid_t screen_info_guid = LINUX_EFI_ARM_SCREEN_INFO_TABLE_GUID; > > struct screen_info *alloc_screen_info(efi_system_table_t *sys_table_arg) > $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- defconfig > drivers/firmware/efi/libstub/ > *** Default configuration is based on 'multi_v7_defconfig' > # > # configuration written to .config > # > scripts/kconfig/conf --syncconfig Kconfig > CALL scripts/checksyscalls.sh > CC drivers/firmware/efi/libstub/arm32-stub.o > STUBCPY drivers/firmware/efi/libstub/arm32-stub.stub.o > 00000000 R_ARM_ABS32 check_platform_features > drivers/firmware/efi/libstub/arm32-stub.stub.o: absolute symbol > references not allowed in the EFI stub > drivers/firmware/efi/libstub/Makefile:80: recipe for target > 'drivers/firmware/efi/libstub/arm32-stub.stub.o' failed > make[3]: *** [drivers/firmware/efi/libstub/arm32-stub.stub.o] Error 1 > make[3]: *** Deleting file 'drivers/firmware/efi/libstub/arm32-stub.stub.o' > Makefile:1705: recipe for target 'drivers/firmware/efi/libstub/' failed > make[2]: *** [drivers/firmware/efi/libstub/] Error 2 > /home/masahiro/workspace/bsp/linux/Makefile:300: recipe for target > '__build_one_by_one' failed > make[1]: *** [__build_one_by_one] Error 2 > Makefile:160: recipe for target 'sub-make' failed > make: *** [sub-make] Error 2 > > > > > > -- > Best Regards > Masahiro Yamada