ClangBuiltLinux / linux

Linux kernel source tree
Other
241 stars 14 forks source link

undefined __efistub_ symbols with CONFIG_EFI_ZBOOT=y #1819

Closed nathanchance closed 1 year ago

nathanchance commented 1 year ago

After commit ef3efc2af044 ("efi: libstub: Use relocated version of kernel's struct screen_info") in the EFI tree, I see the following error when enabling CONFIG_EFI_ZBOOT:

$ make -skj"$(nproc)" ARCH=arm64 LLVM=1 virtconfig menuconfig vmlinuz.efi
ld.lld: error: undefined hidden symbol: __efistub_screen_info
>>> referenced by efi-stub-entry.c:74 (drivers/firmware/efi/libstub/efi-stub-entry.c:74)
>>>               efi-stub-entry.stub.o:(__efistub_efi_pe_entry) in archive drivers/firmware/efi/libstub/lib.a
>>> referenced by efi-stub-entry.c:74 (drivers/firmware/efi/libstub/efi-stub-entry.c:74)
>>>               efi-stub-entry.stub.o:(__efistub_efi_pe_entry) in archive drivers/firmware/efi/libstub/lib.a

ld.lld: error: undefined hidden symbol: __efistub__text
>>> referenced by arm64-stub.c:88 (drivers/firmware/efi/libstub/arm64-stub.c:88)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a
>>> referenced by arm64-stub.c:88 (drivers/firmware/efi/libstub/arm64-stub.c:88)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a
>>> referenced by arm64-stub.c:158 (drivers/firmware/efi/libstub/arm64-stub.c:158)
>>>               arm64-stub.stub.o:(__efistub_primary_entry_offset) in archive drivers/firmware/efi/libstub/lib.a
>>> referenced 1 more times

ld.lld: error: undefined hidden symbol: __efistub__end
>>> referenced by arm64-stub.c:98 (drivers/firmware/efi/libstub/arm64-stub.c:98)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a
>>> referenced by arm64-stub.c:98 (drivers/firmware/efi/libstub/arm64-stub.c:98)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a

ld.lld: error: undefined hidden symbol: __efistub__edata
>>> referenced by arm64-stub.c:140 (drivers/firmware/efi/libstub/arm64-stub.c:140)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a
>>> referenced by arm64-stub.c:140 (drivers/firmware/efi/libstub/arm64-stub.c:140)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a

ld.lld: error: undefined hidden symbol: __efistub___inittext_end
>>> referenced by arm64-stub.c:141 (drivers/firmware/efi/libstub/arm64-stub.c:141)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a
>>> referenced by arm64-stub.c:141 (drivers/firmware/efi/libstub/arm64-stub.c:141)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a

ld.lld: error: undefined hidden symbol: __efistub_caches_clean_inval_pou
>>> referenced by arm64-stub.c:141 (drivers/firmware/efi/libstub/arm64-stub.c:141)
>>>               arm64-stub.stub.o:(__efistub_handle_kernel_image) in archive drivers/firmware/efi/libstub/lib.a

ld.lld: error: undefined hidden symbol: __efistub_primary_entry
>>> referenced by arm64-stub.c:158 (drivers/firmware/efi/libstub/arm64-stub.c:158)
>>>               arm64-stub.stub.o:(__efistub_primary_entry_offset) in archive drivers/firmware/efi/libstub/lib.a
>>> referenced by arm64-stub.c:158 (drivers/firmware/efi/libstub/arm64-stub.c:158)
>>>               arm64-stub.stub.o:(__efistub_primary_entry_offset) in archive drivers/firmware/efi/libstub/lib.a
make[2]: *** [drivers/firmware/efi/libstub/Makefile.zboot:41: arch/arm64/boot/vmlinuz.efi.elf] Error 1

I saw an existing report on the mailing list for RISC-V, I assume it is the same issue, as CONFIG_EFI_ZBOOT=y is present in that configuration as well.

https://lore.kernel.org/202303142336.P1ZcCB9r-lkp@intel.com/

The change directly prior to that one shows no issues.

Cc @ardbiesheuvel

ardbiesheuvel commented 1 year ago

This should be fixed in the next linux-next cycle. Thanks.

nathanchance commented 1 year ago

Confirmed, thanks for the quick fix!

nathanchance commented 1 year ago

Now fixed in next-20230320.