arm.opt (mandroid): New option.
authorDoug Kwan <dougkwan@google.com>
Wed, 9 Jul 2008 01:59:10 +0000 (01:59 +0000)
committerDoug Kwan <dougkwan@gcc.gnu.org>
Wed, 9 Jul 2008 01:59:10 +0000 (01:59 +0000)
2008-07-08  Doug Kwan  <dougkwan@google.com>

* config/arm/arm.opt (mandroid): New option.
* config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
(LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
(CC1_SPEC): Same.
(CC1PLUS_SPEC): Same.
(LIB_SPEC): Same.
(STARTFILE_SPEC): Same.
(ENDFILE_SPEC): Same.
(TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
used.

From-SVN: r137651

gcc/ChangeLog
gcc/config/arm/arm.opt
gcc/config/arm/bpabi.h

index 376fb12edd181c5395b120dafd956577799b124d..cc13ddfcff66b732bf8929dd2286880d7cad15e4 100644 (file)
@@ -1,3 +1,16 @@
+2008-07-08  Doug Kwan  <dougkwan@google.com>
+
+       * config/arm/arm.opt (mandroid): New option.
+       * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
+       (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
+       (CC1_SPEC): Same.
+       (CC1PLUS_SPEC): Same.
+       (LIB_SPEC): Same.
+       (STARTFILE_SPEC): Same.
+       (ENDFILE_SPEC): Same.
+       (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
+       used.
+
 2008-07-08  Raksit Ashok  <raksit@google.com>
 
        * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
index 2b005e42fa4d9eeff5604e2d62ca42cd282d4a5f..0c3dba86b1b6a50a49eb81e5a6b4893ae109e967 100644 (file)
@@ -26,6 +26,10 @@ mabort-on-noreturn
 Target Report Mask(ABORT_NORETURN)
 Generate a call to abort if a noreturn function returns
 
+mandroid
+Target RejectNegative Mask(ANDROID)
+Generate code for the Android operating system.
+
 mapcs
 Target RejectNegative Mask(APCS_FRAME) MaskExists Undocumented
 
index 876e23404abffc14f667a61ce0e81d1b18f0d738..fcfbb5557e91c5bbb91e527fce11d026d20622a7 100644 (file)
 #define SUBTARGET_EXTRA_LINK_SPEC ""
 #endif
 
+#define ANDROID_LINK_SPEC \
+"%{mandroid:" \
+   "%{!static:" \
+      "%{shared: -Bsymbolic} " \
+      "%{!shared:" \
+         "%{rdynamic:-export-dynamic} " \
+         "%{!dynamic-linker:-dynamic-linker /system/bin/linker}}}} "
+
 /* The generic link spec in elf.h does not support shared libraries.  */
 #undef  LINK_SPEC
 #define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} "          \
   "%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} "       \
+  ANDROID_LINK_SPEC                                                    \
   "-X" SUBTARGET_EXTRA_LINK_SPEC
 
 #if defined (__thumb__)
   do                                                   \
     {                                                  \
       builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0");     \
+      if (TARGET_ANDROID)                              \
+       builtin_define ("__ANDROID__");                 \
     }                                                  \
   while (false)
 
 #undef FINI_SECTION_ASM_OP
 #define INIT_ARRAY_SECTION_ASM_OP ARM_EABI_CTORS_SECTION_OP
 #define FINI_ARRAY_SECTION_ASM_OP ARM_EABI_DTORS_SECTION_OP
+
+/* Android uses -fno-rtti and -fno-exceptions by default. */
+
+#undef CC1_SPEC
+#define CC1_SPEC "%{mandroid:%{!fexceptions:-fno-exceptions}}"
+
+#undef CC1PLUS_SPEC
+#define CC1PLUS_SPEC "%{mandroid:%{!frtti:-fno-rtti}}"
+
+/* Startfile and endfile specs are the same as unknown-elf.h except
+   for Android. */
+
+#undef LIB_SPEC
+#define LIB_SPEC \
+"%{!mandroid:%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}} " \
+"%{mandroid:-lc %{!static:-ldl}}"
+
+#undef  STARTFILE_SPEC
+#define STARTFILE_SPEC \
+"%{!mandroid:crti%O%s crtbegin%O%s crt0%O%s} " \
+"%{mandroid:" \
+  "%{!shared:" \
+    "%{static:crtbegin_static%O%s} " \
+    "%{!static:crtbegin_dynamic%O%s}}}"
+
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC \
+"%{!mandroid:crtend%O%s crtn%O%s} "\
+"%{mandroid:" \
+  "%{!shared:crtend%O%s}}"