aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.7
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.7')
-rw-r--r--gcc-4.7/gcc/collect2.c15
-rw-r--r--gcc-4.7/gcc/config/arm/arm.h1
-rw-r--r--gcc-4.7/gcc/config/arm/arm.md2
-rw-r--r--gcc-4.7/gcc/config/i386/pmm_malloc.h6
-rw-r--r--gcc-4.7/gcc/config/mips/gnu-user.h1
-rw-r--r--gcc-4.7/gcc/doc/invoke.texi3
-rw-r--r--gcc-4.7/gcc/gcc.c3
7 files changed, 30 insertions, 1 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/config/arm/arm.h b/gcc-4.7/gcc/config/arm/arm.h
index 443d2ed16..7ce48d13a 100644
--- a/gcc-4.7/gcc/config/arm/arm.h
+++ b/gcc-4.7/gcc/config/arm/arm.h
@@ -1159,6 +1159,7 @@ enum reg_class
(TARGET_32BIT ? (CLASS) : \
((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS \
|| (CLASS) == NO_REGS || (CLASS) == STACK_REG \
+ || (CLASS) == CORE_REGS \
? LO_REGS : (CLASS)))
/* Must leave BASE_REGS reloads alone */
diff --git a/gcc-4.7/gcc/config/arm/arm.md b/gcc-4.7/gcc/config/arm/arm.md
index b21d0d253..fee20175f 100644
--- a/gcc-4.7/gcc/config/arm/arm.md
+++ b/gcc-4.7/gcc/config/arm/arm.md
@@ -6233,7 +6233,7 @@
(define_expand "reload_inhi"
[(parallel [(match_operand:HI 0 "s_register_operand" "=r")
(match_operand:HI 1 "arm_reload_memory_operand" "o")
- (match_operand:DI 2 "s_register_operand" "=&r")])]
+ (match_operand:DI 2 "s_register_operand" "=&l")])]
"TARGET_EITHER"
"
if (TARGET_ARM)
diff --git a/gcc-4.7/gcc/config/i386/pmm_malloc.h b/gcc-4.7/gcc/config/i386/pmm_malloc.h
index 0a9f2e227..fcc0f8099 100644
--- a/gcc-4.7/gcc/config/i386/pmm_malloc.h
+++ b/gcc-4.7/gcc/config/i386/pmm_malloc.h
@@ -26,6 +26,7 @@
#include <stdlib.h>
+#if !defined(__ANDROID__) || defined(HAVE_POSIX_MEMALIGN)
/* We can't depend on <stdlib.h> since the prototype of posix_memalign
may not be visible. */
#ifndef __cplusplus
@@ -33,6 +34,7 @@ extern int posix_memalign (void **, size_t, size_t);
#else
extern "C" int posix_memalign (void **, size_t, size_t) throw ();
#endif
+#endif
static __inline void *
_mm_malloc (size_t size, size_t alignment)
@@ -42,10 +44,14 @@ _mm_malloc (size_t size, size_t alignment)
return malloc (size);
if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4))
alignment = sizeof (void *);
+#if !defined(__ANDROID__) || defined(HAVE_POSIX_MEMALIGN)
if (posix_memalign (&ptr, alignment, size) == 0)
return ptr;
else
return NULL;
+#else
+ return memalign(alignment, size);
+#endif
}
static __inline void
diff --git a/gcc-4.7/gcc/config/mips/gnu-user.h b/gcc-4.7/gcc/config/mips/gnu-user.h
index 33e7b51a9..533a74083 100644
--- a/gcc-4.7/gcc/config/mips/gnu-user.h
+++ b/gcc-4.7/gcc/config/mips/gnu-user.h
@@ -60,6 +60,7 @@ along with GCC; see the file COPYING3. If not see
#define LINUX_SUBTARGET_LINK_SPEC \
"%(endian_spec) \
%{shared:-shared} \
+ %{!EB:%{!meb:-m elf32ltsmip}} %{EB|meb:-m elf32btsmip} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
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}}\