================ @@ -382,38 +382,6 @@ void BareMetal::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, } } -void BareMetal::AddCXXStdlibLibArgs(const ArgList &Args, - ArgStringList &CmdArgs) const { - switch (GetCXXStdlibType(Args)) { - case ToolChain::CST_Libcxx: - CmdArgs.push_back("-lc++"); - if (Args.hasArg(options::OPT_fexperimental_library)) - CmdArgs.push_back("-lc++experimental"); - CmdArgs.push_back("-lc++abi"); ---------------- petrhosek wrote:
The problem with the current implementation is that it assumes that libc++abi is used as the C++ ABI library, but libc++ supports [a number of different C++ ABI library implementations](https://github.com/llvm/llvm-project/blob/c7c5e05389292da7e5a87e3d1d3ef08021911a53/libcxx/CMakeLists.txt#L234), including `none` which may be desirable for some of the baremetal use cases and we use it in some of our embedded targets. There are two solutions for pulling in the right C++ ABI library without needing to explicitly pass `-lc++abi` to the linker that are already used by other platforms: 1. Replace `libc++.so` and `libc++.a` with an input linker script that pulls in the right C++ ABI library; libc++ build can [generate one for `libc++.so`](https://github.com/llvm/llvm-project/blob/c7c5e05389292da7e5a87e3d1d3ef08021911a53/libcxx/CMakeLists.txt#L266), this could be extended to support `libc++.a` if needed. 2. You can merge `libc++abi.a` into `libc++.a` so you don't need a separate `-lc++abi`, [this is already supported by libc++ build](https://github.com/llvm/llvm-project/blob/c7c5e05389292da7e5a87e3d1d3ef08021911a53/libcxx/CMakeLists.txt#L244). The advantage of either of these solutions is that Clang driver can remain agnostic to which C++ ABI library the vendor built libc++ against. @smithp35 Would it be feasible to migrate your toolchain to use either of these solutions? https://github.com/llvm/llvm-project/pull/101259 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits