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
This commit is contained in:
Doug Kwan 2008-07-09 01:59:10 +00:00 committed by Doug Kwan
parent 310d932ee5
commit 588021c0e8
3 changed files with 58 additions and 0 deletions

View 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.

View 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

View file

@ -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}}"