This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH: Add -mandroid support on Linux/i386
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Uros Bizjak <ubizjak at gmail dot com>
- Date: Wed, 14 Dec 2011 09:13:32 -0800
- Subject: PATCH: Add -mandroid support on Linux/i386
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
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.lu@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.lu@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.lu@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