Maxim Kuvyrkov wrote:

> I encourage you to submit the MIPS Android patches to 
> gcc-patches@.  And, as long as your changes preserve the 
> status quo of mips-*-* being big-endian by default and 
> mipsel-*-* being little-endian by default, there should be no 
> major obstacles to merge those in.
> 

  For now, two MIPS changes in gnu-user.h and unwind-dw2-fde-dip.c can be 
posted for comment.
(I didn't tested this patch, though.)
After starting to build toolchains for Android with Bionic, we may find new 
files to
patch.  Ex: Comment out getpagesize() for bionic.

  Any comment?  Thanks a lot!

Regards,
Chao-ying

Index: gcc/gcc/config/mips/gnu-user.h
===================================================================
--- gcc.orig/gcc/config/mips/gnu-user.h 2012-04-03 17:39:50.000000000 -0700
+++ gcc/gcc/config/mips/gnu-user.h      2012-04-04 14:31:50.804236000 -0700
@@ -45,8 +45,8 @@ along with GCC; see the file COPYING3.  
 /* 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 GNU_USER_SUBTARGET_CC1_SPEC
+#define GNU_USER_SUBTARGET_CC1_SPEC "%{profile:-p}"
 
 /* -G is incompatible with -KPIC which is the default, so only allow objects
    in the small data section if the user explicitly asks for it.  */
@@ -54,8 +54,8 @@ along with GCC; see the file COPYING3.  
 #define MIPS_DEFAULT_GVALUE 0
 
 /* Borrowed from sparc/linux.h */
-#undef LINK_SPEC
-#define LINK_SPEC \
+#undef GNU_USER_TARGET_LINK_SPEC
+#define GNU_USER_TARGET_LINK_SPEC \
  "%(endian_spec) \
   %{shared:-shared} \
   %{!shared: \
@@ -89,8 +89,8 @@ along with GCC; see the file COPYING3.  
 #undef ASM_OUTPUT_REG_PUSH
 #undef ASM_OUTPUT_REG_POP
 
-#undef LIB_SPEC
-#define LIB_SPEC "\
+#undef GNU_USER_TARGET_LIB_SPEC
+#define GNU_USER_TARGET_LIB_SPEC "\
 %{pthread:-lpthread} \
 %{shared:-lc} \
 %{!shared: \
@@ -133,7 +133,34 @@ extern const char *host_detect_local_cpu
   LINUX_DRIVER_SELF_SPECS
 
 /* Similar to standard Linux, but adding -ffast-math support.  */
-#undef  ENDFILE_SPEC
-#define ENDFILE_SPEC \
+#undef  GNU_USER_TARGET_ENDFILE_SPEC
+#define GNN_USER_TARGET_ENDFILE_SPEC \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
    %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+
+#undef  LINK_SPEC
+#define LINK_SPEC                                                      \
+  LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC,                      \
+                      GNU_USER_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
+
+#undef  SUBTARGET_CC1_SPEC
+#define SUBTARGET_CC1_SPEC                                             \
+  LINUX_OR_ANDROID_CC (GNU_USER_SUBTARGET_CC1_SPEC,                    \
+                      GNU_USER_SUBTARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
+
+#undef  CC1PLUS_SPEC
+#define CC1PLUS_SPEC                                                   \
+  LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
+
+#undef  LIB_SPEC
+#define LIB_SPEC                                                       \
+  LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC,                       \
+                      GNU_USER_TARGET_LIB_SPEC " " ANDROID_LIB_SPEC)
+
+#undef  STARTFILE_SPEC
+#define STARTFILE_SPEC                                                 \
+  LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC)
+
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC                                                   \
+  LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
Index: gcc/libgcc/unwind-dw2-fde-dip.c
===================================================================
--- gcc.orig/libgcc/unwind-dw2-fde-dip.c        2012-04-03 17:07:28.000000000 
-0700
+++ gcc/libgcc/unwind-dw2-fde-dip.c     2012-04-04 14:51:01.338074000 -0700
@@ -48,8 +48,9 @@
 #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))))
 # define USE_PT_GNU_EH_FRAME
 #endif
 

Reply via email to