aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDoug Kwan <dougkwan@google.com>2008-07-09 01:59:10 +0000
committerDoug Kwan <dougkwan@gcc.gnu.org>2008-07-09 01:59:10 +0000
commit588021c0e8ef99701465aee44d7a18135bc1bbee (patch)
tree1c69ed79c1e57234353f0fb30b6b29968885bfe7 /gcc
parent310d932ee5aae335f18bd41f51b85e5cd644aa98 (diff)
downloadgcc-588021c0e8ef99701465aee44d7a18135bc1bbee.zip
gcc-588021c0e8ef99701465aee44d7a18135bc1bbee.tar.gz
gcc-588021c0e8ef99701465aee44d7a18135bc1bbee.tar.bz2
arm.opt (mandroid): New option.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/config/arm/arm.opt4
-rw-r--r--gcc/config/arm/bpabi.h41
3 files changed, 58 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 376fb12..cc13ddf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
index 2b005e4..0c3dba8 100644
--- a/gcc/config/arm/arm.opt
+++ b/gcc/config/arm/arm.opt
@@ -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
diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
index 876e234..fcfbb55 100644
--- a/gcc/config/arm/bpabi.h
+++ b/gcc/config/arm/bpabi.h
@@ -59,10 +59,19 @@
#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__)
@@ -129,6 +138,8 @@
do \
{ \
builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0"); \
+ if (TARGET_ANDROID) \
+ builtin_define ("__ANDROID__"); \
} \
while (false)
@@ -142,3 +153,33 @@
#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}}"