aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3
diff options
context:
space:
mode:
authorAndrew Hsieh <andrewhsieh@google.com>2012-10-23 19:48:55 +0800
committerAndrew Hsieh <andrewhsieh@google.com>2012-10-23 19:49:57 +0800
commit83507cc564adba7e66ee20a36bf9c50e4d280cc1 (patch)
treef8ed3b83e202eff8da913eec8fedd4bd3d954770 /gcc-4.4.3
parent20c5bf758150dcfc13af1fce22e20256d29e150a (diff)
downloadtoolchain_gcc-83507cc564adba7e66ee20a36bf9c50e4d280cc1.tar.gz
toolchain_gcc-83507cc564adba7e66ee20a36bf9c50e4d280cc1.tar.bz2
toolchain_gcc-83507cc564adba7e66ee20a36bf9c50e4d280cc1.zip
Add MIPS Android support and default to little-endian
Used to be local NDK patch at $NDK/build/tools/toolchain-patches/ gcc/0007-Add-MIPS-Android-support-and-default-to-Little-Endia.patch Change-Id: Idd91e833ad64defdf93d95a8d4bf99f898c358a1
Diffstat (limited to 'gcc-4.4.3')
-rw-r--r--gcc-4.4.3/gcc/config.gcc6
-rw-r--r--gcc-4.4.3/gcc/config/mips/linux.h42
-rw-r--r--gcc-4.4.3/gcc/config/mips/t-linux-android3
-rw-r--r--gcc-4.4.3/gcc/unwind-dw2-fde-glibc.c6
4 files changed, 48 insertions, 9 deletions
diff --git a/gcc-4.4.3/gcc/config.gcc b/gcc-4.4.3/gcc/config.gcc
index 321cf5543..a8020aa9f 100644
--- a/gcc-4.4.3/gcc/config.gcc
+++ b/gcc-4.4.3/gcc/config.gcc
@@ -1628,6 +1628,12 @@ mips*-*-linux*) # Linux MIPS, either endian.
mipsisa32*)
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
esac
+ case ${target} in
+ *android*)
+ # Default to little-endian for MIPS Android
+ # tm_defines="${tm_defines} TARGET_ENDIAN_DEFAULT=0"
+ tmake_file="$tmake_file mips/t-linux-android"
+ esac
test x$with_llsc != x || with_llsc=yes
;;
mips*-*-openbsd*)
diff --git a/gcc-4.4.3/gcc/config/mips/linux.h b/gcc-4.4.3/gcc/config/mips/linux.h
index 0512ef7d1..21670e300 100644
--- a/gcc-4.4.3/gcc/config/mips/linux.h
+++ b/gcc-4.4.3/gcc/config/mips/linux.h
@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3. If not see
/* The GNU C++ standard library requires this. */ \
if (c_dialect_cxx ()) \
builtin_define ("_GNU_SOURCE"); \
+ ANDROID_TARGET_OS_CPP_BUILTINS(); \
} while (0)
#undef SUBTARGET_CPP_SPEC
@@ -55,8 +56,8 @@ along with GCC; see the file COPYING3. If not see
/* A standard GNU/Linux mapping. On most targets, it is included in
CC1_SPEC itself by config/linux.h, but mips.h overrides CC1_SPEC
and provides this hook instead. */
-#undef SUBTARGET_CC1_SPEC
-#define SUBTARGET_CC1_SPEC "%{profile:-p}"
+#undef LINUX_SUBTARGET_CC1_SPEC
+#define LINUX_SUBTARGET_CC1_SPEC "%{profile:-p}"
/* From iris5.h */
/* -G is incompatible with -KPIC which is the default, so only allow objects
@@ -67,8 +68,8 @@ along with GCC; see the file COPYING3. If not see
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
/* Borrowed from sparc/linux.h */
-#undef LINK_SPEC
-#define LINK_SPEC \
+#undef LINUX_SUBTARGET_LINK_SPEC
+#define LINUX_SUBTARGET_LINK_SPEC \
"%(endian_spec) \
%{shared:-shared} \
%{!shared: \
@@ -103,8 +104,8 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_OUTPUT_REG_PUSH
#undef ASM_OUTPUT_REG_POP
-#undef LIB_SPEC
-#define LIB_SPEC "\
+#undef LINUX_SUBTARGET_LIB_SPEC
+#define LINUX_SUBTARGET_LIB_SPEC "\
%{pthread:-lpthread} \
%{shared:-lc} \
%{!shared: \
@@ -135,7 +136,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
#endif
#define LINUX_DRIVER_SELF_SPECS \
- NO_SHARED_SPECS \
+ LINUX_OR_ANDROID_CC(NO_SHARED_SPECS, "") \
MARCH_MTUNE_NATIVE_SPECS, \
/* -mplt has no effect without -mno-shared. Simplify later \
specs handling by removing a redundant option. */ \
@@ -147,3 +148,30 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
#define DRIVER_SELF_SPECS \
BASE_DRIVER_SELF_SPECS, \
LINUX_DRIVER_SELF_SPECS
+
+#undef LINK_SPEC
+#define LINK_SPEC \
+ LINUX_OR_ANDROID_LD (LINUX_SUBTARGET_LINK_SPEC, \
+ LINUX_SUBTARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
+
+#undef SUBTARGET_CC1_SPEC
+#define SUBTARGET_CC1_SPEC \
+ LINUX_OR_ANDROID_CC (LINUX_SUBTARGET_CC1_SPEC, \
+ LINUX_SUBTARGET_CC1_SPEC " " ANDROID_CC1_SPEC("-fpic"))
+
+#undef CC1PLUS_SPEC
+#define CC1PLUS_SPEC \
+ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
+
+#undef LIB_SPEC
+#define LIB_SPEC \
+ LINUX_OR_ANDROID_LD (LINUX_SUBTARGET_LIB_SPEC, \
+ LINUX_SUBTARGET_LIB_SPEC " " ANDROID_LIB_SPEC)
+
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC \
+ LINUX_OR_ANDROID_LD (LINUX_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC)
+
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC \
+ LINUX_OR_ANDROID_LD (LINUX_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
diff --git a/gcc-4.4.3/gcc/config/mips/t-linux-android b/gcc-4.4.3/gcc/config/mips/t-linux-android
new file mode 100644
index 000000000..298cad9d5
--- /dev/null
+++ b/gcc-4.4.3/gcc/config/mips/t-linux-android
@@ -0,0 +1,3 @@
+MULTILIB_OPTIONS = mips32r2
+MULTILIB_DIRNAMES = mips-r2
+MULTILIB_EXCLUSIONS :=
diff --git a/gcc-4.4.3/gcc/unwind-dw2-fde-glibc.c b/gcc-4.4.3/gcc/unwind-dw2-fde-glibc.c
index 11f53dd31..bad608280 100644
--- a/gcc-4.4.3/gcc/unwind-dw2-fde-glibc.c
+++ b/gcc-4.4.3/gcc/unwind-dw2-fde-glibc.c
@@ -46,8 +46,10 @@
#include "gthr.h"
#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
+ && ((defined(__BIONIC__) && (defined(mips) || defined(__mips__))) \
+ || (__GLIBC__ > 2 \
+ || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
+ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))))
#include <link.h>