[compiler-rt] [Compiler-rt][test] Fix circular link dependency between builtins and libc (PR #199482)
Garvit Gupta via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 8 05:43:22 PDT 2026
https://github.com/quic-garvgupt updated https://github.com/llvm/llvm-project/pull/199482
>From eac48aa49b81708501aedfe8888101c69c53e745 Mon Sep 17 00:00:00 2001
From: Garvit Gupta <garvgupt at qti.qualcomm.com>
Date: Sun, 24 May 2026 22:58:05 -0700
Subject: [PATCH] [Compiler-rt][test] Fix circular link dependency between
builtins and libc The compiler-rt builtins tests link against
libclang_rt.builtins.a, libc, and libm, but face a true circular dependency:
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
builtins → libc: Overflow-checking builtins call
__compilerrt_abort_impl, which lowers to libc’s abort().
libc → builtins: Routines such as vfprintf (tinystdio) use
__aeabi_uldivmod, and AArch64 long double paths in libm rely on builtins
like __multf3, __divtf3, etc.
No linear link order (builtins -lc -lm or -lc -lm builtins) satisfies
both directions:
builtins -lc -lm → missing __aeabi_uldivmod
-lc -lm builtins → missing abort
Fix by grouping libclang_rt.builtins.a and libc with
--start-group/--end-group so the linker rescans until all undefined
symbols are resolved.
---
compiler-rt/test/builtins/Unit/lit.cfg.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/compiler-rt/test/builtins/Unit/lit.cfg.py b/compiler-rt/test/builtins/Unit/lit.cfg.py
index 8d602d1c417fa..9bfa9d7964508 100644
--- a/compiler-rt/test/builtins/Unit/lit.cfg.py
+++ b/compiler-rt/test/builtins/Unit/lit.cfg.py
@@ -107,7 +107,9 @@ def get_libgcc_file_name():
if config.target_os == "Haiku":
config.substitutions.append(("%librt ", base_lib + " -lroot "))
else:
- config.substitutions.append(("%librt ", base_lib + " -lc -lm "))
+ config.substitutions.append(
+ ("%librt ", "-Wl,--start-group " + base_lib + " -lc -Wl,--end-group -lm ")
+ )
builtins_test_crt = get_required_attr(config, "builtins_test_crt")
if builtins_test_crt:
More information about the llvm-commits
mailing list