[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