[PATCH] makefile: fix Clang link error when RSA_PUBLIC_KEY_PARSER is selected
Raymond Mao
raymond.mao at linaro.org
Tue May 27 23:05:05 CEST 2025
MbedTLS bignum module needs '__udivti3' which is a 128-bit division
function provided by the compiler runtime, typically libgcc for GCC or
clang_rt.builtins for Clang.
Thus 'clang_rt.builtins' library is required when building using Clang.
Fixes: 13de8483388c ("mbedtls: add mbedtls into the build system")
Signed-off-by: Raymond Mao <raymond.mao at linaro.org>
---
Makefile | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index f88684947ee..16506dcaec6 100644
--- a/Makefile
+++ b/Makefile
@@ -37,7 +37,6 @@ else ifeq ("riscv32", $(MK_ARCH))
else ifeq ("riscv64", $(MK_ARCH))
export HOST_ARCH=$(HOST_ARCH_RISCV64)
endif
-undefine MK_ARCH
# Avoid funny character set dependencies
unexport LC_ALL
@@ -915,8 +914,13 @@ PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a
else
ifndef CONFIG_CC_IS_CLANG
PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc
+else ifeq ($(CONFIG_RSA_PUBLIC_KEY_PARSER_MBEDTLS),y)
+# mbedtls bignum needs '__udivti3' - a 128-bit division function that's provided by clang-rt.
+CLANG_RT_DIR := $(shell $(CC) --print-resource-dir)/lib/linux
+PLATFORM_LIBGCC := -L$(CLANG_RT_DIR) -lclang_rt.builtins-$(MK_ARCH)
endif
endif
+undefine MK_ARCH
PLATFORM_LIBS += $(PLATFORM_LIBGCC)
ifdef CONFIG_CC_COVERAGE
--
2.25.1
More information about the U-Boot
mailing list