This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, Android] MIPS support
- From: Maxim Kuvyrkov <maxim at codesourcery dot com>
- To: "Fu, Chao-Ying" <fu at mips dot com>
- Cc: gcc-patches Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 5 Apr 2012 10:16:05 +1200
- Subject: [PATCH, Android] MIPS support
- References: <BCDE03C0-61B1-4C07-9E09-35A3E5C4BA38@codesourcery.com> <16285357-1E07-4D60-BD8D-2B2FE796609B@codesourcery.com> <87sjgmm0rt.fsf@talisman.home> <7C6479EB2BF52547AC332FD6034646DA01448C282D@exchdb03.mips.com> <CA+=Sn1mYyCOusJWY9vswVA9k6Rm-goXPDxBvQYpXsh8zgJ30ng@mail.gmail.com> <7C6479EB2BF52547AC332FD6034646DA01448C3ABE@exchdb03.mips.com> <CA+=Sn1nDX8Yf+QE5VO+bQTiRpG25ZO-3PFp4QhkFN=8GEjMaJg@mail.gmail.com> <7C6479EB2BF52547AC332FD6034646DA01448C3AEF@exchdb03.mips.com> <B5CB78C8-D6D9-4E58-8A58-D95DE94A0AA7@codesourcery.com> <7C6479EB2BF52547AC332FD6034646DA01448C524E@exchdb03.mips.com>
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
>