1 /* Definitions for ia64-linux target. */
3 /* This is for -profile to use -lc_p instead of -lc. */
5 #define CC1_SPEC "%{profile:-p} %{G*}"
7 /* ??? Maybe this should be in sysv4.h? */
8 #define CPP_PREDEFINES "\
9 -D__ia64 -D__ia64__ -D__linux -D__linux__ -D_LONGLONG -Dlinux -Dunix \
10 -D__LP64__ -D__ELF__ -Asystem=linux -Acpu=ia64 -Amachine=ia64"
12 /* ??? ia64 gas doesn't accept standard svr4 assembler options? */
14 #define ASM_SPEC "-x %{mconstant-gp} %{mauto-pic}"
16 /* Similar to standard Linux, but adding -ffast-math support. */
18 #define ENDFILE_SPEC \
19 "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
20 %{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
22 /* Define this for shared library support because it isn't in the main
30 %{rdynamic:-export-dynamic} \
31 %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
35 #define DONT_USE_BUILTIN_SETJMP
36 #define JMP_BUF_SIZE 76
38 /* Output any profiling code before the prologue. */
40 #undef PROFILE_BEFORE_PROLOGUE
41 #define PROFILE_BEFORE_PROLOGUE 1
43 /* A C statement or compound statement to output to FILE some assembler code to
44 call the profiling subroutine `mcount'. */
46 #undef FUNCTION_PROFILER
47 #define FUNCTION_PROFILER(FILE, LABELNO) \
50 ASM_GENERATE_INTERNAL_LABEL (buf, "LP", LABELNO); \
51 fputs ("\talloc out0 = ar.pfs, 8, 0, 4, 0\n", FILE); \
52 if (TARGET_AUTO_PIC) \
53 fputs ("\tmovl out3 = @gprel(", FILE); \
55 fputs ("\taddl out3 = @ltoff(", FILE); \
56 assemble_name (FILE, buf); \
57 if (TARGET_AUTO_PIC) \
58 fputs (");;\n", FILE); \
60 fputs ("), r1;;\n", FILE); \
61 fputs ("\tmov out1 = r1\n", FILE); \
62 fputs ("\tmov out2 = b0\n", FILE); \
63 fputs ("\tbr.call.sptk.many b0 = _mcount;;\n", FILE); \