/* Definitions for ia64-linux target. */ #include "ia64/ia64.h" #include #include "sysv4.h" /* This is for -profile to use -lc_p instead of -lc. */ #undef CC1_SPEC #define CC1_SPEC "%{profile:-p} %{G*}" /* ??? Maybe this should be in sysv4.h? */ #define CPP_PREDEFINES "\ -D__ia64 -D__ia64__ -D__linux -D__linux__ -D_LONGLONG -Dlinux -Dunix \ -D__LP64__ -D__ELF__ -Asystem=linux -Acpu=ia64 -Amachine=ia64" /* ??? ia64 gas doesn't accept standard svr4 assembler options? */ #undef ASM_SPEC #define ASM_SPEC "-x %{mconstant-gp} %{mauto-pic}" /* Similar to standard Linux, but adding -ffast-math support. */ #undef ENDFILE_SPEC #define ENDFILE_SPEC \ "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ %{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" /* Define this for shared library support because it isn't in the main linux.h file. */ #undef LINK_SPEC #define LINK_SPEC "\ %{shared:-shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ %{static:-static}}" #define DONT_USE_BUILTIN_SETJMP #define JMP_BUF_SIZE 76 /* Output any profiling code before the prologue. */ #undef PROFILE_BEFORE_PROLOGUE #define PROFILE_BEFORE_PROLOGUE 1 /* A C statement or compound statement to output to FILE some assembler code to call the profiling subroutine `mcount'. */ #undef FUNCTION_PROFILER #define FUNCTION_PROFILER(FILE, LABELNO) \ do { \ char buf[20]; \ ASM_GENERATE_INTERNAL_LABEL (buf, "LP", LABELNO); \ fputs ("\talloc out0 = ar.pfs, 8, 0, 4, 0\n", FILE); \ if (TARGET_AUTO_PIC) \ fputs ("\tmovl out3 = @gprel(", FILE); \ else \ fputs ("\taddl out3 = @ltoff(", FILE); \ assemble_name (FILE, buf); \ if (TARGET_AUTO_PIC) \ fputs (");;\n", FILE); \ else \ fputs ("), r1;;\n", FILE); \ fputs ("\tmov out1 = r1\n", FILE); \ fputs ("\tmov out2 = b0\n", FILE); \ fputs ("\tbr.call.sptk.many b0 = _mcount;;\n", FILE); \ } while (0) /* End of linux.h */