> On Wed, Feb 22, 2012 at 6:54 AM, Ilya Enkovich <enkovich....@gmail.com> wrote: >> Hello, >> >> This patch adds -mandroid support to i386 target. OK for trunk? >> >> Thanks, >> Ilya >> -- >> >> 2012-02-22 Enkovich Ilya <ilya.enkov...@intel.com> >> >> * config/i386/gnu-user.h (LINUX_TARGET_CC1_SPEC): New. > > I don't think you should define LINUX_* in gnu-user.h. > >> (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. > > There is a feedback at > > http://gcc.gnu.org/ml/gcc-patches/2011-12/msg01283.html > > to my earlier patch to define GNU_USER_TARGET_* in gnu-user.h > and use them in linux.h. >
Thanks for the link. I fixed patch according to this feedback. >> * config/linux-android.h (ANDROID_STARTFILE_SPEC): Use >> crtbegin_so%O%s for -shared. >> (ANDROID_ENDFILE_SPEC): Use crtend_so%O%s for -shared. >> >> > > I think you should separate this part similar to > > http://gcc.gnu.org/ml/gcc-patches/2011-12/msg01109.html I removed this part from the patch. > > > -- > H.J. Here is a new patch version. Does it look better? Thanks, Ilya -- 2012-02-24 Enkovich Ilya <ilya.enkov...@intel.com> * gcc/config/i386/gnu-user.h (CC1_SPEC): Rename to ... (GNU_USER_TARGET_CC1_SPEC): ... this. (LINK_SPEC): Rename to ... (GNU_USER_TARGET_LINK_SPEC): ... this. (ENDFILE_SPEC): Delete. (GNU_USER_TARGET_MATHFILE_SPEC): New. * gcc/config/i386/linux.h (CC1_SPEC): New. (LINK_SPEC): New. (LIB_SPEC): New. (STARTFILE_SPEC): New. (ENDFILE_SPEC): New. diff --git a/gcc/config/i386/gnu-user.h b/gcc/config/i386/gnu-user.h index 98d0a25..59d7062 100644 --- a/gcc/config/i386/gnu-user.h +++ b/gcc/config/i386/gnu-user.h @@ -77,8 +77,8 @@ along with GCC; see the file COPYING3. If not see #undef CPP_SPEC #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -#undef CC1_SPEC -#define CC1_SPEC "%(cc1_cpu) %{profile:-p}" +#undef GNU_USER_TARGET_CC1_SPEC +#define GNU_USER_TARGET_CC1_SPEC "%(cc1_cpu) %{profile:-p}" /* Provide a LINK_SPEC appropriate for GNU userspace. Here we provide support for the special GCC options -static and -shared, which allow us to @@ -97,8 +97,8 @@ along with GCC; see the file COPYING3. If not see { "link_emulation", GNU_USER_LINK_EMULATION },\ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } -#undef LINK_SPEC -#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ +#define GNU_USER_TARGET_LINK_SPEC \ + "-m %(link_emulation) %{shared:-shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ @@ -106,13 +106,11 @@ along with GCC; see the file COPYING3. If not see %{static:-static}}" /* Similar to standard GNU userspace, but adding -ffast-math support. */ -#undef ENDFILE_SPEC -#define ENDFILE_SPEC \ +#define GNU_USER_TARGET_MATHFILE_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}" /* A C statement (sans semicolon) to output to the stdio stream FILE the assembler definition of uninitialized global DECL named diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 73681fe..a832ddc 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -22,3 +22,30 @@ along with GCC; see the file COPYING3. If not see #define GNU_USER_LINK_EMULATION "elf_i386" #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + +#undef CC1_SPEC +#define CC1_SPEC \ + LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \ + GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC) + +#undef LINK_SPEC +#define LINK_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC, \ + GNU_USER_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) + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_MATHFILE_SPEC " " \ + GNU_USER_TARGET_ENDFILE_SPEC, \ + GNU_USER_TARGET_MATHFILE_SPEC " " \ + ANDROID_ENDFILE_SPEC)