Author: Joseph Huber Date: 2024-07-26T09:51:25-05:00 New Revision: e603df083be3d41680c6289bce549b022dcfe7d5
URL: https://github.com/llvm/llvm-project/commit/e603df083be3d41680c6289bce549b022dcfe7d5 DIFF: https://github.com/llvm/llvm-project/commit/e603df083be3d41680c6289bce549b022dcfe7d5.diff LOG: [NvlinkWrapper] Add relocatable link support to LTO pass Summary: We need `-r` to work so we can preserve symbols. Added: Modified: clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp clang/tools/clang-nvlink-wrapper/NVLinkOpts.td Removed: ################################################################################ diff --git a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp index 3885166e76ca7..30c45eda66288 100644 --- a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp +++ b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp @@ -598,10 +598,11 @@ Expected<SmallVector<StringRef>> getInput(const ArgList &Args) { Res.Prevailing = !Sym.isUndefined() && ObjSym.File == *BitcodeFile; // We need LTO to preseve the following global symbols: - // 1) Symbols used in regular objects. - // 2) Prevailing symbols that are needed visible to the gpu runtime. + // 1) All symbols during a relocatable link. + // 2) Symbols used in regular objects. + // 3) Prevailing symbols that are needed visible to the gpu runtime. Res.VisibleToRegularObj = - ObjSym.UsedInRegularObj || + Args.hasArg(OPT_relocatable) || ObjSym.UsedInRegularObj || (Res.Prevailing && (Sym.getVisibility() != GlobalValue::HiddenVisibility && !Sym.canBeOmittedFromSymbolTable())); diff --git a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td index 8c80a51b12a44..01bd0f85b1a33 100644 --- a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td +++ b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td @@ -73,6 +73,10 @@ def plugin_opt : Joined<["--", "-"], "plugin-opt=">, Flags<[WrapperOnlyOption]>, def save_temps : Flag<["--", "-"], "save-temps">, Flags<[WrapperOnlyOption]>, HelpText<"Save intermediate results">; +def relocatable : Flag<["--", "-"], "relocatable">, + Flags<[WrapperOnlyOption]>, HelpText<"Perform a relocatable link (LTO only)">; +def r : Flag<["-"], "r">, Flags<[WrapperOnlyOption]>, Alias<relocatable>; + def whole_archive : Flag<["--", "-"], "whole-archive">, Flags<[WrapperOnlyOption, HelpHidden]>; def no_whole_archive : Flag<["--", "-"], "no-whole-archive">, @@ -83,8 +87,7 @@ def mllvm : Separate<["-"], "mllvm">, Flags<[WrapperOnlyOption]>, HelpText<"Arguments passed to LLVM, including Clang invocations, for which " "the '-mllvm' prefix is preserved. Use '-mllvm --help' for a list " "of options.">; -def mllvm_EQ : Joined<["-"], "mllvm=">, Flags<[HelpHidden]>, - Alias<mllvm>; +def mllvm_EQ : Joined<["-"], "mllvm=">, Flags<[HelpHidden]>, Alias<mllvm>; def dry_run : Flag<["--", "-"], "dry-run">, Flags<[WrapperOnlyOption]>, HelpText<"Print generated commands without running.">; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits