francii updated this revision to Diff 504518. francii added a comment. Move `-r` check in `CommonArgs.cpp`
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D145899/new/ https://reviews.llvm.org/D145899 Files: clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Driver/ToolChains/CommonArgs.cpp Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1693,6 +1693,8 @@ } case ToolChain::UNW_CompilerRT: if (TC.getTriple().isOSAIX()) { + if (Args.hasArg(options::OPT_r)) + break; // AIX only has libunwind as a shared library. So do not pass // anything in if -static is specified. if (LGT != LibGccType::StaticLibGcc) Index: clang/lib/Driver/ToolChains/AIX.cpp =================================================================== --- clang/lib/Driver/ToolChains/AIX.cpp +++ clang/lib/Driver/ToolChains/AIX.cpp @@ -175,7 +175,7 @@ }; if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles, - options::OPT_shared)) { + options::OPT_shared, options::OPT_r)) { CmdArgs.push_back( Args.MakeArgString(ToolChain.GetFilePath(getCrt0Basename()))); @@ -232,6 +232,13 @@ CmdArgs.push_back(Args.MakeArgString(llvm::Twine("-bE:") + ExportList)); } + if (Args.hasArg(options::OPT_r)) { + const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath()); + C.addCommand(std::make_unique<Command>( + JA, *this, ResponseFileSupport::None(), Exec, CmdArgs, Inputs, Output)); + return; + } + // Add directory to library search path. Args.AddAllArgs(CmdArgs, options::OPT_L); ToolChain.AddFilePathLibArgs(Args, CmdArgs);
Index: clang/lib/Driver/ToolChains/CommonArgs.cpp =================================================================== --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1693,6 +1693,8 @@ } case ToolChain::UNW_CompilerRT: if (TC.getTriple().isOSAIX()) { + if (Args.hasArg(options::OPT_r)) + break; // AIX only has libunwind as a shared library. So do not pass // anything in if -static is specified. if (LGT != LibGccType::StaticLibGcc) Index: clang/lib/Driver/ToolChains/AIX.cpp =================================================================== --- clang/lib/Driver/ToolChains/AIX.cpp +++ clang/lib/Driver/ToolChains/AIX.cpp @@ -175,7 +175,7 @@ }; if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles, - options::OPT_shared)) { + options::OPT_shared, options::OPT_r)) { CmdArgs.push_back( Args.MakeArgString(ToolChain.GetFilePath(getCrt0Basename()))); @@ -232,6 +232,13 @@ CmdArgs.push_back(Args.MakeArgString(llvm::Twine("-bE:") + ExportList)); } + if (Args.hasArg(options::OPT_r)) { + const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath()); + C.addCommand(std::make_unique<Command>( + JA, *this, ResponseFileSupport::None(), Exec, CmdArgs, Inputs, Output)); + return; + } + // Add directory to library search path. Args.AddAllArgs(CmdArgs, options::OPT_L); ToolChain.AddFilePathLibArgs(Args, CmdArgs);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits