From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1851) id 050A83858423; Tue, 21 Dec 2021 16:44:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 050A83858423 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Martin Liska To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/marxin/heads/support-ld.mold)] Support ld.mold linker. X-Act-Checkin: gcc X-Git-Author: Martin Liska X-Git-Refname: refs/users/marxin/heads/support-ld.mold X-Git-Oldrev: d22907975b2abb79ba07eb2f54b64a9c952100ed X-Git-Newrev: 759cdbb29dbe8fc80ba5c1f113a015cafe9eb69c Message-Id: <20211221164414.050A83858423@sourceware.org> Date: Tue, 21 Dec 2021 16:44:14 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Dec 2021 16:44:14 -0000 https://gcc.gnu.org/g:759cdbb29dbe8fc80ba5c1f113a015cafe9eb69c commit 759cdbb29dbe8fc80ba5c1f113a015cafe9eb69c Author: Martin Liska Date: Tue Dec 21 17:43:55 2021 +0100 Support ld.mold linker. Diff: --- gcc/collect2.c | 10 +++++++--- gcc/common.opt | 4 ++++ gcc/gcc.c | 4 ++++ gcc/opts.c | 1 + 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/gcc/collect2.c b/gcc/collect2.c index d47fe3f9195..b322527847c 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -776,6 +776,7 @@ main (int argc, char **argv) USE_GOLD_LD, USE_BFD_LD, USE_LLD_LD, + USE_MOLD_LD, USE_LD_MAX } selected_linker = USE_DEFAULT_LD; static const char *const ld_suffixes[USE_LD_MAX] = @@ -784,7 +785,8 @@ main (int argc, char **argv) PLUGIN_LD_SUFFIX, "ld.gold", "ld.bfd", - "ld.lld" + "ld.lld", + "ld.mold" }; static const char *const real_ld_suffix = "real-ld"; static const char *const collect_ld_suffix = "collect-ld"; @@ -957,6 +959,8 @@ main (int argc, char **argv) selected_linker = USE_GOLD_LD; else if (strcmp (argv[i], "-fuse-ld=lld") == 0) selected_linker = USE_LLD_LD; + else if (strcmp (argv[i], "-fuse-ld=mold") == 0) + selected_linker = USE_MOLD_LD; else if (startswith (argv[i], "-o")) { /* Parse the output filename if it's given so that we can make @@ -1048,7 +1052,7 @@ main (int argc, char **argv) ld_file_name = 0; #ifdef DEFAULT_LINKER if (selected_linker == USE_BFD_LD || selected_linker == USE_GOLD_LD || - selected_linker == USE_LLD_LD) + selected_linker == USE_LLD_LD || selected_linker == USE_MOLD_LD) { char *linker_name; # ifdef HOST_EXECUTABLE_SUFFIX @@ -1283,7 +1287,7 @@ main (int argc, char **argv) else if (!use_collect_ld && startswith (arg, "-fuse-ld=")) { - /* Do not pass -fuse-ld={bfd|gold|lld} to the linker. */ + /* Do not pass -fuse-ld={bfd|gold|lld|mold} to the linker. */ ld1--; ld2--; } diff --git a/gcc/common.opt b/gcc/common.opt index 2ed818d6057..dba3fa886f9 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -3046,6 +3046,10 @@ fuse-ld=lld Common Driver Negative(fuse-ld=lld) Use the lld LLVM linker instead of the default linker. +fuse-ld=mold +Common Driver Negative(fuse-ld=mold) +Use the Modern linker (MOLD) linker instead of the default linker. + fuse-linker-plugin Common Undocumented Var(flag_use_linker_plugin) diff --git a/gcc/gcc.c b/gcc/gcc.c index b75b50b87b2..06e18a75b52 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -4282,6 +4282,10 @@ driver_handle_option (struct gcc_options *opts, use_ld = ".gold"; break; + case OPT_fuse_ld_mold: + use_ld = ".mold"; + break; + case OPT_fcompare_debug_second: compare_debug_second = 1; break; diff --git a/gcc/opts.c b/gcc/opts.c index cdd6463e49b..60f1cf045c9 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -3094,6 +3094,7 @@ common_handle_option (struct gcc_options *opts, case OPT_fuse_ld_bfd: case OPT_fuse_ld_gold: case OPT_fuse_ld_lld: + case OPT_fuse_ld_mold: case OPT_fuse_linker_plugin: /* No-op. Used by the driver and passed to us because it starts with f.*/ break;