[PATCH] D59264: [Driver] Support compiler-rt crtbegin.o/crtend.o for Linux

Manoj Gupta via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 13 16:14:48 PDT 2019

manojgupta added inline comments.

Comment at: clang/lib/Driver/ToolChains/Gnu.cpp:447
       const char *crtbegin;
-      if (Args.hasArg(options::OPT_static))
-        crtbegin = isAndroid ? "crtbegin_static.o" : "crtbeginT.o";
-      else if (Args.hasArg(options::OPT_shared))
-        crtbegin = isAndroid ? "crtbegin_so.o" : "crtbeginS.o";
-      else if (IsPIE || IsStaticPIE)
-        crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbeginS.o";
-      else
-        crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbegin.o";
-      if (HasCRTBeginEndFiles)
+      if (ToolChain.GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT &&
+          !isAndroid) {
phosek wrote:
> manojgupta wrote:
> > This is currently unconditional on using compiler-rt. Given that compiler-rt provides the crt*.o files only under the CMake flag COMPILER_RT_BUILD_CRT, shouldn't there be an equivalent clang CMake flag to conditionally enable this.
> `COMPILER_RT_BUILD_CRT` is `ON` by default now in D28791, but even if we change that, I think this logic should be independent since you should be able to build Clang separately from compiler-rt.
Since it is possible to build compiler-rt without CRT files, I believe that clang should also be able to use compiler-rt without compiler-rt provided CRT files.
Using them unconditionally will also break the case of using newer clang with older compiler-rt.

  rC Clang



More information about the cfe-commits mailing list