From 588021c0e8ef99701465aee44d7a18135bc1bbee Mon Sep 17 00:00:00 2001 From: Doug Kwan Date: Wed, 9 Jul 2008 01:59:10 +0000 Subject: [PATCH] arm.opt (mandroid): New option. 2008-07-08 Doug Kwan * 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 | 13 +++++++++++++ gcc/config/arm/arm.opt | 4 ++++ gcc/config/arm/bpabi.h | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 376fb12edd1..cc13ddfcff6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2008-07-08 Doug Kwan + + * 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 * 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 2b005e42fa4..0c3dba86b1b 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 876e23404ab..fcfbb5557e9 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}}" -- 2.30.2