aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.7
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.7
parent0457b0db02c4b229eab11c01025df948032c31a7 (diff)
downloadtoolchain_gcc-6502f082fed932c0609b475d5d6917103700e5a8.tar.gz
toolchain_gcc-6502f082fed932c0609b475d5d6917103700e5a8.tar.bz2
toolchain_gcc-6502f082fed932c0609b475d5d6917103700e5a8.zip
Add mclinker support: -fuse-ld=mcld
http://code.google.com/p/mclinker/ Change-Id: Ic9d88a86298eddaccf3c7da8405efb2b2f0d3e70
Diffstat (limited to 'gcc-4.7')
-rw-r--r--gcc-4.7/gcc/collect2.c15
-rw-r--r--gcc-4.7/gcc/doc/invoke.texi3
-rw-r--r--gcc-4.7/gcc/gcc.c3
3 files changed, 21 insertions, 0 deletions
diff --git a/gcc-4.7/gcc/collect2.c b/gcc-4.7/gcc/collect2.c
index 7429309ac..ce3ad0b79 100644
--- a/gcc-4.7/gcc/collect2.c
+++ b/gcc-4.7/gcc/collect2.c
@@ -1022,6 +1022,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";
@@ -1044,6 +1045,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 =
@@ -1063,6 +1066,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;
@@ -1090,6 +1094,7 @@ main (int argc, char **argv)
DFLT_LINKER,
PLUGIN_LINKER,
GOLD_LINKER,
+ MCLD_LINKER,
BFD_LINKER
} selected_linker = DFLT_LINKER;
@@ -1194,6 +1199,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;
@@ -1308,6 +1315,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;
@@ -1327,6 +1337,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;
@@ -1359,6 +1372,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);
@@ -1376,6 +1390,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.7/gcc/doc/invoke.texi b/gcc-4.7/gcc/doc/invoke.texi
index 135cc2944..429e62bd4 100644
--- a/gcc-4.7/gcc/doc/invoke.texi
+++ b/gcc-4.7/gcc/doc/invoke.texi
@@ -8044,6 +8044,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.7/gcc/gcc.c b/gcc-4.7/gcc/gcc.c
index c07041d55..6bcf12e1f 100644
--- a/gcc-4.7/gcc/gcc.c
+++ b/gcc-4.7/gcc/gcc.c
@@ -672,7 +672,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}}\