Hi, This patch adds -mandroid support on Linux/i386, similar to Linux/ARM. OK for trunk in stage 1?
Thanks. H.J. -- 2011-12-13 H.J. Lu <hongjiu...@intel.com> * config/i386/linux.h (LINUX_TARGET_CC1_SPEC): New. (CC1_SPEC): Use LINUX_OR_ANDROID_CC. (CC1PLUS_SPEC): Likewise. (LINUX_TARGET_LINK_SPEC): New. (LINK_SPEC): Support LINUX_OR_ANDROID_LD. (LIB_SPEC): New. (STARTFILE_SPEC): New. (LINUX_TARGET_ENDFILE_SPEC): New. (ENDFILE_SPEC): Support LINUX_OR_ANDROID_LD. --- gcc/ChangeLog.android | 12 ++++++++++++ gcc/config/i386/linux.h | 41 ++++++++++++++++++++++++++++++++++------- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog.android b/gcc/ChangeLog.android index fc54522..b5ae492 100644 --- a/gcc/ChangeLog.android +++ b/gcc/ChangeLog.android @@ -1,5 +1,17 @@ 2011-12-13 H.J. Lu <hongjiu...@intel.com> + * config/i386/linux.h (LINUX_TARGET_CC1_SPEC): New. + (CC1_SPEC): Use LINUX_OR_ANDROID_CC. + (CC1PLUS_SPEC): Likewise. + (LINUX_TARGET_LINK_SPEC): New. + (LINK_SPEC): Support LINUX_OR_ANDROID_LD. + (LIB_SPEC): New. + (STARTFILE_SPEC): New. + (LINUX_TARGET_ENDFILE_SPEC): New. + (ENDFILE_SPEC): Support LINUX_OR_ANDROID_LD. + +2011-12-13 H.J. Lu <hongjiu...@intel.com> + * config/linux-android.h (ANDROID_STARTFILE_SPEC): Use crtbegin_so%O%s for -shared. (ANDROID_ENDFILE_SPEC): Use crtend_so%O%s for -shared. diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 3a23598..9918036 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -79,8 +79,15 @@ along with GCC; see the file COPYING3. If not see #undef CPP_SPEC #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" +#define LINUX_TARGET_CC1_SPEC "%(cc1_cpu) %{profile:-p}" + #undef CC1_SPEC -#define CC1_SPEC "%(cc1_cpu) %{profile:-p}" +#define CC1_SPEC \ + LINUX_OR_ANDROID_CC (LINUX_TARGET_CC1_SPEC, \ + LINUX_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC) + +#define CC1PLUS_SPEC \ + LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC) /* Provide a LINK_SPEC appropriate for Linux. Here we provide support for the special GCC options -static and -shared, which allow us to @@ -112,22 +119,42 @@ along with GCC; see the file COPYING3. If not see { "link_emulation", LINK_EMULATION },\ { "dynamic_linker", LINUX_DYNAMIC_LINKER } -#undef LINK_SPEC -#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ +#define LINUX_TARGET_LINK_SPEC \ + "-m %(link_emulation) %{shared:-shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ -dynamic-linker %(dynamic_linker)} \ %{static:-static}}" +#undef LINK_SPEC +#define LINK_SPEC \ + LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \ + LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_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) + /* Similar to standard Linux, but adding -ffast-math support. */ -#undef ENDFILE_SPEC -#define ENDFILE_SPEC \ +#define LINUX_TARGET_ENDFILE_SPEC \ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ %{mpc32:crtprec32.o%s} \ %{mpc64:crtprec64.o%s} \ - %{mpc80:crtprec80.o%s} \ - %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" + %{mpc80:crtprec80.o%s}" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + LINUX_OR_ANDROID_LD (LINUX_TARGET_ENDFILE_SPEC " " \ + GNU_USER_TARGET_ENDFILE_SPEC, \ + LINUX_TARGET_ENDFILE_SPEC " "\ + ANDROID_ENDFILE_SPEC) /* A C statement (sans semicolon) to output to the stdio stream FILE the assembler definition of uninitialized global DECL named -- 1.7.6.4