diff options
author | Raghu Gandham <raghu@mips.com> | 2012-03-10 18:45:41 -0800 |
---|---|---|
committer | Raghu Gandham <raghu@mips.com> | 2012-03-10 19:48:17 -0800 |
commit | d3223f9a8f6ca87765bb3d4a4db331247a87651a (patch) | |
tree | 44ec8bce59bf0f6410dbce0ecadf34c57a49e646 /build/tools/toolchain-patches/gcc | |
parent | da9f426bc09bb60333b4f00d94f19e824a02ca94 (diff) | |
download | ndk-d3223f9a8f6ca87765bb3d4a4db331247a87651a.tar.gz |
[MIPS] Patches to be applied to gcc, gdb and build
Change-Id: I2ae77a93c872ae17eecf7d40ad145eae1da540cd
Signed-off-by: Chao-Ying Fu <fu@mips.com>
Diffstat (limited to 'build/tools/toolchain-patches/gcc')
-rw-r--r-- | build/tools/toolchain-patches/gcc/0007-gcc-mips.patch | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/build/tools/toolchain-patches/gcc/0007-gcc-mips.patch b/build/tools/toolchain-patches/gcc/0007-gcc-mips.patch new file mode 100644 index 000000000..5a18381a5 --- /dev/null +++ b/build/tools/toolchain-patches/gcc/0007-gcc-mips.patch @@ -0,0 +1,125 @@ +commit df3ee55c3aaeb307a58c39a6dfc9531433700c18 +Author: Chao-Ying Fu <fu@mips.com> +Date: Sat Mar 10 16:59:10 2012 -0800 + + Add MIPS Android support and default to Little Endian + +diff --git a/gcc-4.4.3/gcc/config.gcc b/gcc-4.4.3/gcc/config.gcc +index e758dc4..4cd0ece 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 0512ef7..9e3ec05 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: \ +@@ -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 0000000..298cad9 +--- /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 11f53dd..bad6082 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> + |