aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.6
diff options
context:
space:
mode:
authorAndrew Hsieh <andrewhsieh@google.com>2013-02-21 15:51:55 +0800
committerAndrew Hsieh <andrewhsieh@google.com>2013-02-21 18:55:45 +0800
commit6502f082fed932c0609b475d5d6917103700e5a8 (patch)
tree87e7ee280f219e6f5ef4aeb04e3a9a45c83bffa0 /gcc-4.6
parent0457b0db02c4b229eab11c01025df948032c31a7 (diff)
downloadtoolchain_gcc-6502f082fed932c0609b475d5d6917103700e5a8.zip
toolchain_gcc-6502f082fed932c0609b475d5d6917103700e5a8.tar.gz
toolchain_gcc-6502f082fed932c0609b475d5d6917103700e5a8.tar.bz2
Add mclinker support: -fuse-ld=mcld
http://code.google.com/p/mclinker/ Change-Id: Ic9d88a86298eddaccf3c7da8405efb2b2f0d3e70
Diffstat (limited to 'gcc-4.6')
-rw-r--r--gcc-4.6/gcc/collect2.c15
-rw-r--r--gcc-4.6/gcc/doc/invoke.texi3
-rw-r--r--gcc-4.6/gcc/gcc.c3
3 files changed, 21 insertions, 0 deletions
diff --git a/gcc-4.6/gcc/collect2.c b/gcc-4.6/gcc/collect2.c
index 25b1f55..dd083ac 100644
--- a/gcc-4.6/gcc/collect2.c
+++ b/gcc-4.6/gcc/collect2.c
@@ -1077,6 +1077,7 @@ main (int argc, char **argv)
{
static const char *const ld_suffix = "ld";
static const char *const gold_suffix = "ld.gold";
+ static const char *const mcld_suffix = "ld.mcld";
static const char *const bfd_ld_suffix = "ld.bfd";
static const char *const plugin_ld_suffix = PLUGIN_LD;
static const char *const real_ld_suffix = "real-ld";
@@ -1099,6 +1100,8 @@ main (int argc, char **argv)
concat(target_machine, "-", ld_suffix, NULL);
const char *const full_gold_suffix =
concat (target_machine, "-", gold_suffix, NULL);
+ const char *const full_mcld_suffix =
+ concat (target_machine, "-", mcld_suffix, NULL);
const char *const full_bfd_ld_suffix =
concat (target_machine, "-", bfd_ld_suffix, NULL);
const char *const full_plugin_ld_suffix =
@@ -1118,6 +1121,7 @@ main (int argc, char **argv)
#else
const char *const full_ld_suffix = ld_suffix;
const char *const full_gold_suffix = gold_suffix;
+ const char *const full_mcld_suffix = mcld_suffix;
const char *const full_bfd_ld_suffix = bfd_ld_suffix;
const char *const full_plugin_ld_suffix = plugin_ld_suffix;
const char *const full_nm_suffix = nm_suffix;
@@ -1145,6 +1149,7 @@ main (int argc, char **argv)
DFLT_LINKER,
PLUGIN_LINKER,
GOLD_LINKER,
+ MCLD_LINKER,
BFD_LINKER
} selected_linker = DFLT_LINKER;
@@ -1235,6 +1240,8 @@ main (int argc, char **argv)
}
else if (! strcmp (argv[i], "-use-gold"))
selected_linker = GOLD_LINKER;
+ else if (! strcmp (argv[i], "-use-mcld"))
+ selected_linker = MCLD_LINKER;
else if (! strcmp (argv[i], "-use-ld"))
selected_linker = BFD_LINKER;
@@ -1349,6 +1356,9 @@ main (int argc, char **argv)
case GOLD_LINKER:
ld_file_name = find_a_file (&cpath, gold_suffix);
break;
+ case MCLD_LINKER:
+ ld_file_name = find_a_file (&cpath, mcld_suffix);
+ break;
case BFD_LINKER:
ld_file_name = find_a_file (&cpath, bfd_ld_suffix);
break;
@@ -1368,6 +1378,9 @@ main (int argc, char **argv)
case GOLD_LINKER:
ld_file_name = find_a_file (&path, full_gold_suffix);
break;
+ case MCLD_LINKER:
+ ld_file_name = find_a_file (&path, full_mcld_suffix);
+ break;
case BFD_LINKER:
ld_file_name = find_a_file (&path, full_bfd_ld_suffix);
break;
@@ -1400,6 +1413,7 @@ main (int argc, char **argv)
case DFLT_LINKER: s = ld_suffix; break;
case PLUGIN_LINKER: s = plugin_ld_suffix; break;
case GOLD_LINKER: s = gold_suffix; break;
+ case MCLD_LINKER: s = mcld_suffix; break;
case BFD_LINKER: s = bfd_ld_suffix; break;
}
notice (" %s\n", s);
@@ -1417,6 +1431,7 @@ main (int argc, char **argv)
case DFLT_LINKER: s = full_ld_suffix; break;
case PLUGIN_LINKER: s = full_plugin_ld_suffix; break;
case GOLD_LINKER: s = full_gold_suffix; break;
+ case MCLD_LINKER: s = full_mcld_suffix; break;
case BFD_LINKER: s = full_bfd_ld_suffix; break;
}
notice (" %s\n", s);
diff --git a/gcc-4.6/gcc/doc/invoke.texi b/gcc-4.6/gcc/doc/invoke.texi
index 780f108..f8d3f1c 100644
--- a/gcc-4.6/gcc/doc/invoke.texi
+++ b/gcc-4.6/gcc/doc/invoke.texi
@@ -8029,6 +8029,9 @@ Use the @command{gold} linker instead of the default linker.
This option is only necessary if GCC has been configured with
@option{--enable-gold} and @option{--enable-ld=default}.
+@item -fuse-ld=mcld
+Use the @command{mclinker} instead of the default linker.
+
@item -fuse-ld=bfd
Use the @command{ld.bfd} linker instead of the default linker.
This option is only necessary if GCC has been configured with
diff --git a/gcc-4.6/gcc/gcc.c b/gcc-4.6/gcc/gcc.c
index b954ecb..efcb080 100644
--- a/gcc-4.6/gcc/gcc.c
+++ b/gcc-4.6/gcc/gcc.c
@@ -658,7 +658,10 @@ proper position among the other output files. */
%{flto|flto=*:%<fcompare-debug*} \
%{flto} %{flto=*} %l " LINK_PIE_SPEC \
"%{fuse-ld=gold:%{fuse-ld=bfd:%e-fuse-ld=gold and -fuse-ld=bfd may not be used together}} \
+ %{fuse-ld=gold:%{fuse-ld=mcld:%e-fuse-ld=gold and -fuse-ld=mcld may not be used together}} \
+ %{fuse-ld=mcld:%{fuse-ld=bfd:%e-fuse-ld=mcld and -fuse-ld=bfd may not be used together}} \
%{fuse-ld=gold:-use-gold} \
+ %{fuse-ld=mcld:-use-mcld} \
%{fuse-ld=bfd:-use-ld}" \
"%X %{o*} %{e*} %{N} %{n} %{r}\
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}}\