diff options
author | Doug Kwan <dougkwan@google.com> | 2008-07-09 01:59:10 +0000 |
---|---|---|
committer | Doug Kwan <dougkwan@gcc.gnu.org> | 2008-07-09 01:59:10 +0000 |
commit | 588021c0e8ef99701465aee44d7a18135bc1bbee (patch) | |
tree | 1c69ed79c1e57234353f0fb30b6b29968885bfe7 | |
parent | 310d932ee5aae335f18bd41f51b85e5cd644aa98 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/config/arm/arm.opt | 4 | ||||
-rw-r--r-- | gcc/config/arm/bpabi.h | 41 |
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}}" |