Chao, Let's take discussion of MIPS changes to gcc-patches@. Please follow up here.
-- Maxim Kuvyrkov CodeSourcery / Mentor Graphics On 5/04/2012, at 10:10 AM, Fu, Chao-Ying wrote: > 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 >