#undef TARGET_MACHO
#define TARGET_MACHO 1
#undef TARGET_64BIT
#define TARGET_64BIT (target_flags & MASK_64BIT)
#ifdef IN_LIBGCC2
#undef TARGET_64BIT
#ifdef __x86_64__
#define TARGET_64BIT 1
#else
#define TARGET_64BIT 0
#endif
#endif
#define TARGET_VERSION fprintf (stderr, " (i686 Darwin)");
#undef TARGET_64BIT
#define TARGET_64BIT (target_flags & MASK_64BIT)
#ifdef IN_LIBGCC2
#undef TARGET_64BIT
#ifdef __x86_64__
#define TARGET_64BIT 1
#else
#define TARGET_64BIT 0
#endif
#endif
#define OBJC_JBLEN ((TARGET_64BIT) ? ((9 * 2) + 3 + 16) : (18))
#undef TARGET_FPMATH_DEFAULT
#define TARGET_FPMATH_DEFAULT (TARGET_SSE ? FPMATH_SSE : FPMATH_387)
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
#undef MAX_BITS_PER_WORD
#define MAX_BITS_PER_WORD 64
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define ("__LITTLE_ENDIAN__"); \
darwin_cpp_builtins (pfile); \
} \
while (0)
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
#undef MAX_BITS_PER_WORD
#define MAX_BITS_PER_WORD 64
#undef FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN
#define FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN (0)
#undef CC1_SPEC
#define CC1_SPEC "%{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}} \
""\
%<mthumb %<mno-thumb \
""\
%{!mmacosx-version-min=*: %{!miphoneos-version-min=*: %(darwin_cc1_minversion)}} \
""\
%<faltivec %<mno-fused-madd %<mlong-branch %<mlongcall %<mcpu=G4 %<mcpu=G5 \
%{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }}"
#define CPP_ALTIVEC_SPEC "%<faltivec"
#undef ASM_SPEC
#define ASM_SPEC "-arch %(darwin_arch) -force_cpusubtype_ALL \
%{mkernel|static|fapple-kext:%{!m64:-static}}"
#define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}"
#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
\
#define DARWIN_MINVERSION_SPEC \
"%{!m64|fgnu-runtime:10.4; \
,objective-c|,objc-cpp-output:10.5; \
,objective-c-header:10.5; \
,objective-c++|,objective-c++-cpp-output:10.5; \
,objective-c++-header|,objc++-cpp-output:10.5; \
:10.4}"
\
#define DARWIN_CC1_MINVERSION_SPEC "-mmacosx-version-min=%(darwin_minversion)"
#define DARWIN_LD_MINVERSION_SPEC "-macosx_version_min %(darwin_minversion)"
#define DARWIN_DEFAULT_VERSION_TYPE DARWIN_VERSION_MACOSX
#define DARWIN_IPHONEOS_LIBGCC_SPEC "-lgcc_s.10.5 -lgcc"
#undef DARWIN_CRT1_SPEC
#define DARWIN_CRT1_SPEC \
"%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \
%:version-compare(>< 10.5 10.6 mmacosx-version-min= -lcrt1.10.5.o) \
%:version-compare(>= 10.6 mmacosx-version-min= -lcrt1.10.6.o)"
#undef DARWIN_DYLIB1_SPEC
#define DARWIN_DYLIB1_SPEC \
"%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \
%:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)"
#undef DARWIN_BUNDLE1_SPEC
#define DARWIN_BUNDLE1_SPEC \
"%:version-compare(!> 10.6 mmacosx-version-min= -lbundle1.o)"
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
DARWIN_EXTRA_SPECS \
{ "darwin_arch", DARWIN_ARCH_SPEC }, \
{ "darwin_crt2", "" }, \
{ "darwin_subarch", DARWIN_SUBARCH_SPEC },
#undef LINK_GCC_C_SEQUENCE_SPEC
#define LINK_GCC_C_SEQUENCE_SPEC \
"%{miphoneos-version-min=*: %G %L} \
%{!miphoneos-version-min=*: \
%{!static:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)} %G %L}"
#define SUBTARGET_OPTION_TRANSLATE_TABLE \
{ "", "" }
#undef ASSEMBLER_DIALECT
#define ASSEMBLER_DIALECT ASM_ATT
#define SHIFT_DOUBLE_OMITS_COUNT 0
extern void darwin_x86_file_end (void);
#undef TARGET_ASM_FILE_END
#define TARGET_ASM_FILE_END darwin_x86_file_end
#define ASM_COMMENT_START "#"
#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_128BIT_LONG_DOUBLE)
#undef TARGET_SUBTARGET32_DEFAULT
#define TARGET_SUBTARGET32_DEFAULT (MASK_MMX \
| MASK_SSE \
| MASK_SSE2)
#undef TARGET_SUBTARGET64_DEFAULT
#define TARGET_SUBTARGET64_DEFAULT (MASK_MMX \
| MASK_SSE \
| MASK_SSE2 \
| MASK_SSE3)
#undef GOT_SYMBOL_NAME
#define GOT_SYMBOL_NAME (machopic_function_base_name ())
#define LPREFIX "L"
#define HOT_TEXT_SECTION_NAME "__TEXT,__text,regular,pure_instructions"
#define UNLIKELY_EXECUTED_TEXT_SECTION_NAME \
"__TEXT,__unlikely,regular,pure_instructions"
#define ASM_BYTE_OP "\t.byte\t"
#define ASM_SHORT "\t.word\t"
#define ASM_LONG "\t.long\t"
#define ASM_QUAD "\t.quad\t"
#define SUBTARGET_ENCODE_SECTION_INFO darwin_encode_section_info
#undef ASM_OUTPUT_ALIGN
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
do { if ((LOG) != 0) \
{ \
if (in_section == text_section) \
fprintf (FILE, "\t%s %d,0x90\n", ALIGN_ASM_OP, (LOG)); \
else \
fprintf (FILE, "\t%s %d\n", ALIGN_ASM_OP, (LOG)); \
} \
} while (0)
#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \
( fputs (".comm ", (FILE)), \
assemble_name ((FILE), (NAME)), \
\
fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED"\n", (ROUNDED)))
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
( fputs (".lcomm ", (FILE)), \
assemble_name ((FILE), (NAME)), \
fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED"\n", (ROUNDED)))
#if 0
#define MASK_ALIGN_NATURAL 0x40000000
#define TARGET_ALIGN_NATURAL (target_flags & MASK_ALIGN_NATURAL)
#define MASK_ALIGN_MAC68K 0x20000000
#define TARGET_ALIGN_MAC68K (target_flags & MASK_ALIGN_MAC68K)
#endif
#define rs6000_alignment_flags target_flags
#define ROUND_TYPE_ALIGN(TYPE, COMPUTED, SPECIFIED) \
(((TREE_CODE (TYPE) == RECORD_TYPE \
|| TREE_CODE (TYPE) == UNION_TYPE \
|| TREE_CODE (TYPE) == QUAL_UNION_TYPE) \
&& OPTION_ALIGN_MAC68K \
&& MAX (COMPUTED, SPECIFIED) == 8) ? 16 \
: MAX (COMPUTED, SPECIFIED))
#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE, LABELNO) \
do { \
\
if (darwin_stubs && MACHOPIC_INDIRECT && !TARGET_64BIT) \
{ \
const char *name = machopic_mcount_stub_name (); \
fprintf (FILE, "\tcall %s\n", name+1); \
machopic_validate_stub_or_non_lazy_ptr (name); \
} \
else fprintf (FILE, "\tcall mcount\n"); \
} while (0)
extern int flag_iasm_blocks;
#undef SUBTARGET_OVERRIDE_OPTIONS
#define SUBTARGET_OVERRIDE_OPTIONS \
do { \
\
if (!darwin_macosx_version_min \
&& !darwin_iphoneos_version_min) \
darwin_macosx_version_min = "10.1"; \
\
\
if (flag_iasm_blocks) \
flag_ms_asms = 1; \
\
\
if (darwin_constant_cfstrings < 0) \
darwin_constant_cfstrings = 1; \
\
if (TARGET_64BIT) \
{ \
if (MACHO_DYNAMIC_NO_PIC_P) \
target_flags &= ~MASK_MACHO_DYNAMIC_NO_PIC; \
} \
\
\
if (!ix86_arch_string) \
{ \
x86_cmpxchg = ~(0); \
x86_cmpxchg8b = ~(0); \
x86_cmpxchg16b = ~(0); \
x86_xadd = ~(0); \
x86_bswap = ~(0); \
} \
\
} while (0)
#define TARGET_FIX_AND_CONTINUE (darwin_fix_and_continue)
#define C_COMMON_OVERRIDE_OPTIONS \
do { \
SUBTARGET_C_COMMON_OVERRIDE_OPTIONS; \
} while (0)
#undef DBX_REGISTER_NUMBER
#define DBX_REGISTER_NUMBER(n) \
(TARGET_64BIT ? dbx64_register_map[n] \
: write_symbols == DWARF2_DEBUG ? svr4_dbx_register_map[n] \
: dbx_register_map[n])
#define DWARF2_FRAME_REG_OUT(n, for_eh) \
(! (for_eh) || write_symbols != DWARF2_DEBUG || TARGET_64BIT ? (n) \
: (n) == 5 ? 4 \
: (n) == 4 ? 5 \
: (n) >= 11 && (n) <= 18 ? (n) + 1 \
: (n))
extern void ix86_darwin_init_expanders (void);
#define INIT_EXPANDERS (ix86_darwin_init_expanders ())
#define IASM_VALID_PIC(DECL, E) \
do { \
if (! TARGET_64BIT \
&& E->as_immediate && ! MACHO_DYNAMIC_NO_PIC_P && flag_pic) \
warning (0, "non-pic addressing form not suitible for pic code"); \
} while (0)
#define IASM_RIP(X) do { if (TARGET_64BIT) strcat (X, "(%%rip)"); } while (0)
#define TARGET_SUPPORTS_KEXTABI1 (! TARGET_64BIT)
#undef REGISTER_TARGET_PRAGMAS
#define REGISTER_TARGET_PRAGMAS() DARWIN_REGISTER_TARGET_PRAGMAS()
#undef TARGET_SET_DEFAULT_TYPE_ATTRIBUTES
#define TARGET_SET_DEFAULT_TYPE_ATTRIBUTES darwin_set_default_type_attributes
#undef ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX
#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
if (TARGET_64BIT) \
{ \
if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_pcrel) \
{ \
fputs (ASM_LONG, FILE); \
assemble_name (FILE, XSTR (ADDR, 0)); \
fputs ("+4@GOTPCREL", FILE); \
goto DONE; \
} \
} \
else \
{ \
if (ENCODING == ASM_PREFERRED_EH_DATA_FORMAT (2, 1)) \
{ \
darwin_non_lazy_pcrel (FILE, ADDR); \
goto DONE; \
} \
}
#undef TARGET_DWARF_UNINIT_VARS
#define TARGET_DWARF_UNINIT_VARS \
(darwin_iphoneos_version_min || \
strverscmp (darwin_macosx_version_min, "10.4") >= 0)
#undef MACHO_SYMBOL_FLAG_VARIABLE
#define MACHO_SYMBOL_FLAG_VARIABLE ((SYMBOL_FLAG_MACH_DEP) << 3)