#define DEFAULT_ABI ABI_AIX
#undef TARGET_AIX
#define TARGET_AIX 1
#define TARGET_NO_TOC 0
#define TARGET_TOC 1
#define FIXED_R2 1
#define FIXED_R13 0
#undef TARGET_ALTIVEC
#define TARGET_ALTIVEC 0
#undef TARGET_ALTIVEC_ABI
#define TARGET_ALTIVEC_ABI 0
#undef TARGET_ALTIVEC_VRSAVE
#define TARGET_ALTIVEC_VRSAVE 0
#define COLLECT_EXPORT_LIST
#define HANDLE_SYSV_PRAGMA 1
#define REAL_NM_FILE_NAME "/usr/ucb/nm"
#define USER_LABEL_PREFIX ""
#define RELATIVE_PREFIX_NOT_LINKDIR
#define LINK_LIBGCC_SPECIAL_1
#define MFWRAP_SPEC " %{static: %{fmudflap|fmudflapth: \
-brename:malloc,__wrap_malloc -brename:__real_malloc,malloc \
-brename:free,__wrap_free -brename:__real_free,free \
-brename:calloc,__wrap_calloc -brename:__real_calloc,calloc \
-brename:realloc,__wrap_realloc -brename:__real_realloc,realloc \
-brename:mmap,__wrap_mmap -brename:__real_mmap,mmap \
-brename:munmap,__wrap_munmap -brename:__real_munmap,munmap \
-brename:alloca,__wrap_alloca -brename:__real_alloca,alloca \
} %{fmudflapth: \
-brename:pthread_create,__wrap_pthread_create \
-brename:__real_pthread_create,pthread_create \
-brename:pthread_join,__wrap_pthread_join \
-brename:__real_pthread_join,pthread_join \
-brename:pthread_exit,__wrap_pthread_exit \
-brename:__real_pthread_exit,pthread_exit \
}} %{fmudflap|fmudflapth: \
-brename:main,__wrap_main -brename:__real_main,main \
}"
#define MFLIB_SPEC " %{fmudflap: -lmudflap \
%{static:%(link_gcc_c_sequence) -lmudflap}} \
%{fmudflapth: -lmudflapth -lpthread \
%{static:%(link_gcc_c_sequence) -lmudflapth}} "
#define TARGET_OS_AIX_CPP_BUILTINS() \
do \
{ \
builtin_define ("_IBMR2"); \
builtin_define ("_POWER"); \
builtin_define ("_AIX"); \
builtin_define ("_AIX32"); \
builtin_define ("_AIX41"); \
builtin_define ("_LONG_LONG"); \
if (TARGET_LONG_DOUBLE_128) \
builtin_define ("__LONGDOUBLE128"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=aix"); \
} \
while (0)
#define CPP_SPEC "%{posix: -D_POSIX_SOURCE}\
%{ansi: -D_ANSI_C_SOURCE}"
#undef ASM_DEFAULT_SPEC
#define ASM_DEFAULT_SPEC ""
#ifndef CROSS_COMPILE
#define LINK_SYSCALLS_SPEC "-bI:/lib/syscalls.exp"
#else
#define LINK_SYSCALLS_SPEC ""
#endif
#ifndef CROSS_COMPILE
#define LINK_LIBG_SPEC "-bexport:/usr/lib/libg.exp"
#else
#define LINK_LIBG_SPEC ""
#endif
#define LINK_SPEC "-T512 -H512 %{!r:-btextro} -bhalt:4 -bnodelcsect\
%{static:-bnso %(link_syscalls) } \
%{!shared:%{g*: %(link_libg) }} %{shared:-bM:SRE}"
#define LIB_SPEC "%{pg:-L/lib/profiled -L/usr/lib/profiled}\
%{p:-L/lib/profiled -L/usr/lib/profiled} %{!shared:%{g*:-lg}} -lc"
#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
(TARGET_ALIGN_NATURAL ? (COMPUTED) : \
(TYPE_MODE (TREE_CODE (TREE_TYPE (FIELD)) == ARRAY_TYPE \
? get_inner_array_type (FIELD) \
: TREE_TYPE (FIELD)) == DFmode \
? MIN ((COMPUTED), 32) : (COMPUTED)))
#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
((TREE_CODE (STRUCT) == RECORD_TYPE \
|| TREE_CODE (STRUCT) == UNION_TYPE \
|| TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
&& TARGET_ALIGN_NATURAL == 0 \
? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED) \
: MAX ((COMPUTED), (SPECIFIED)))
#define AGGREGATE_PADDING_FIXED 1
#define AGGREGATES_PAD_UPWARD_ALWAYS 1
#define MUST_PASS_IN_STACK(MODE, TYPE) \
((TYPE) != 0 \
&& (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST \
|| TREE_ADDRESSABLE (TYPE)))
#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
(!(FIRST) ? upward : FUNCTION_ARG_PADDING (MODE, TYPE))
#define JUMP_TABLES_IN_TEXT_SECTION 1
#undef TARGET_XL_CALL
#define MASK_XL_CALL 0x40000000
#define TARGET_XL_CALL (target_flags & MASK_XL_CALL)
#undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \
{"xl-call", MASK_XL_CALL, \
N_("Always pass floating-point arguments in memory") }, \
{"no-xl-call", - MASK_XL_CALL, \
N_("Don't always pass floating-point arguments in memory") }, \
SUBSUBTARGET_SWITCHES
#define SUBSUBTARGET_SWITCHES
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
{ "link_syscalls", LINK_SYSCALLS_SPEC }, \
{ "link_libg", LINK_LIBG_SPEC }
#define FP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) == 62 || (FIRST_REG) == 63)
#define SETUP_FRAME_ADDRESSES() rs6000_aix_emit_builtin_unwind_init ()
#ifdef __powerpc64__
#define MD_FROB_UPDATE_CONTEXT(CTX, FS) \
do { \
if ((FS)->regs.reg[2].how == REG_UNSAVED) \
{ \
unsigned int *insn \
= (unsigned int *) \
_Unwind_GetGR ((CTX), LINK_REGISTER_REGNUM); \
if (*insn == 0xE8410028) \
_Unwind_SetGRPtr ((CTX), 2, (CTX)->cfa + 40); \
} \
} while (0)
#else
#define MD_FROB_UPDATE_CONTEXT(CTX, FS) \
do { \
if ((FS)->regs.reg[2].how == REG_UNSAVED) \
{ \
unsigned int *insn \
= (unsigned int *) \
_Unwind_GetGR ((CTX), LINK_REGISTER_REGNUM); \
if (*insn == 0x80410014) \
_Unwind_SetGRPtr ((CTX), 2, (CTX)->cfa + 20); \
} \
} while (0)
#endif
#define PROFILE_HOOK(LABEL) output_profile_hook (LABEL)
#define TARGET_VERSION ;
#define OS_MISSING_POWERPC64 1
#define OS_MISSING_ALTIVEC 1