[clang] [Driver,BareMetal] Replace -lclang_rt.builtins{,-$arch}.a with an absolute path (PR #82424)
Fangrui Song via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 7 18:59:43 PST 2024
MaskRay wrote:
> Hi, this broke our downstream. What is the motivation for this, and how is this intended to be used with compiler-rt locations being set by multilib.yaml? We have something similar to what ARM does for multilibs.yaml but with different paths, and this prevents the driver from knowing anything about a singular path at which it should find the correct compiler-rt. What makes compiler-rt special in a way that other target libraries aren't? Here's how a part of our deliverable looks like:
>
> ```
> riscv/lib/rv32imafc/ilp32f/
> ├── except
> │ ├── libc.a
> │ └── libm.a
> ├── libclang_rt.builtins-riscv32.a
> └── noexcept
> ├── libc.a
> └── libm.a
> ```
>
> and there are several such `<arch>/<abi>` directories
* The preferred filename has changed from `clang_rt.builtins{,-$arch}.a` to `$triple/clang_rt.builtins.a`. BareMetal hadn't been fixed before this PR.
* All other ToolChains use an absolute path, while BareMetal inappropriately used `-lxxx`.
* This was a necessary change to do #81037
I think you'll need to switch to LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=on hierarchy, which is quite different from the older off hierarchy.
https://github.com/llvm/llvm-project/pull/82424
More information about the cfe-commits
mailing list