[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