#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (i860 Alliant)");
#define I860_STRICT_ABI_PROLOGUES
#define LINK_LIBGCC_SPECIAL 1
#define DBX_DEBUGGING_INFO
#define DEFAULT_GDB_EXTENSIONS 0
#define DBX_NO_XREFS
#define DBX_NO_EXTRA_TAGS
#define DBX_FUNCTION_FIRST
#define DBX_LBRAC_FIRST
#define DBX_OUTPUT_FUNCTION_END(file,decl) \
fprintf (file, ".stab \"\",.,0x%x,0,0\n", N_EFUN)
#define DBX_OUTPUT_STANDARD_TYPES(syms) \
{ static const char *const dtyps[] = { \
"", "char", "short int", "int", "logical*1", \
"logical*2", "logical*4", "float", "double", "complex", \
"doublecomplex", "character", "void", "nil", "boolean", \
"unsigned char", "short unsigned int", "unsigned int", \
"logical*8", "long long int", "long long unsigned int",""}; \
\
tree decl; \
int i; \
\
for (i=1;*dtyps[i];i++) \
for (decl = syms; decl; decl = TREE_CHAIN(decl)) \
if ((TREE_CODE (decl) == TYPE_DECL) && DECL_NAME(decl) && \
!strcmp(IDENTIFIER_POINTER(DECL_NAME(decl)), dtyps[i])) { \
TYPE_SYMTAB_ADDRESS (TREE_TYPE (decl)) = i; \
typevec[i] = TYPE_DEFINED; \
dbxout_symbol (decl, 0); \
break; \
} \
\
for (decl = syms; decl; decl = TREE_CHAIN(decl)) \
if ((TREE_CODE (decl) == TYPE_DECL) && DECL_NAME(decl) && \
!strcmp(IDENTIFIER_POINTER(DECL_NAME(decl)),"long int")) { \
TYPE_SYMTAB_ADDRESS (TREE_TYPE (decl)) = i; \
typevec[i] = TYPE_DEFINED; \
fprintf(asmfile,".stab \"long int:t%d=3\",0,0x%x,0,0\n", \
i++,N_LSYM); \
TREE_ASM_WRITTEN (decl) = 1; \
break; \
} \
\
for (decl = syms; decl; decl = TREE_CHAIN(decl)) \
if ((TREE_CODE (decl) == TYPE_DECL) && DECL_NAME(decl) && !strcmp( \
IDENTIFIER_POINTER(DECL_NAME(decl)),"long unsigned int")) { \
TYPE_SYMTAB_ADDRESS (TREE_TYPE (decl)) = i; \
typevec[i] = TYPE_DEFINED; \
fprintf(asmfile,".stab \"long unsigned int:t%d=17\",0,0x%x,0,0\n",\
i++,N_LSYM); \
TREE_ASM_WRITTEN (decl) = 1; \
break; \
} \
next_type_number = i; };
#define DBX_CONTIN_LENGTH 0
#define ASM_STABS_OP "\t.stab "
#define ASM_STABN_OP "\t.stab "
#define ASM_STABD_OP "\t.stab "
#define DBX_MEMPARM_STABS_LETTER 'k'
#define DBX_REGPARM_STABS_LETTER 'r'
#undef ASM_OUTPUT_SOURCE_LINE
#define ASM_OUTPUT_SOURCE_LINE(file,num) \
fprintf (file, "\t.stab \"\",.,0x%x,0,%d\n", \
N_SLINE,num)
#if 0
#define DBX_OUTPUT_MAIN_SOURCE_DIRECTORY(file,name) \
fprintf (file, ".stab \"%s/\",.Ltext0,0x%x,0,0\n", \
name, N_SO)
#else
#define DBX_OUTPUT_MAIN_SOURCE_DIRECTORY(file,name)
#endif
#define DBX_OUTPUT_MAIN_SOURCE_FILENAME(file,name) \
fprintf (file, ".stab "); \
output_quoted_string (file, name); \
fprintf (file, ",.Ltext0,0x%x,0,0\n", N_SO); \
text_section (); \
ASM_OUTPUT_INTERNAL_LABEL (file, "Ltext", 0)
#define DBX_OUTPUT_SOURCE_FILENAME(file,name) \
do { fprintf (file, ".stab "); \
output_quoted_string (file, name); \
fprintf (file, ",.Ltext0,0x%x,0,0\n", N_SOL); \
} while (0)
#define DBX_OUTPUT_CONSTANT_SYMBOL(file,name,ival) \
fprintf (file, ".stab \"%s:c=i%d\",0,0x%x,0,0\n", \
name, ival, N_LSYM)
#define DBX_FINISH_SYMBOL(decl) \
int line = 0; \
fprintf (asmfile, "\","); \
if (current_sym_addr) \
output_addr_const (asmfile, current_sym_addr); \
else \
fprintf (asmfile, "%d", current_sym_value); \
if (decl != 0 && TREE_CODE(decl) == FUNCTION_DECL) \
line=DECL_SOURCE_LINE (decl); \
fprintf (asmfile, ",0x%x,%d,%d\n", current_sym_code, \
line!=0?64:0,line)
#define DBX_OUTPUT_CATCH(file,decl,name) \
fprintf (file, ".stab \"%s:C1\",", \
IDENTIFIER_POINTER (DECL_NAME (decl))); \
assemble_name (file, name); \
fprintf (file, ",0x%x,0,0\n", N_CATCH)
#define DBX_OUTPUT_LBRAC(file,name) \
if (depth > 1) { \
fprintf (file, ".stab \"\","); \
assemble_name (file, name); \
fprintf (file, ",0x%x,0,%d\n", N_LBRAC, depth); }
#define DBX_OUTPUT_RBRAC(file,name) \
if (depth > 1) { \
fprintf (file, ".stab \"\","); \
assemble_name (file, name); \
fprintf (file, ",0x%x,0,%d\n", N_RBRAC, depth); }
#define DBX_OUTPUT_ENUM(file,type) \
fprintf (file, "e3"); \
CHARS(2); \
for (tem = TYPE_VALUES (type); tem; tem = TREE_CHAIN (tem)) \
{ \
fprintf (asmfile, "%s:%d,", \
IDENTIFIER_POINTER (TREE_PURPOSE (tem)), \
TREE_INT_CST_LOW (TREE_VALUE (tem))); \
CHARS (11 + IDENTIFIER_LENGTH (TREE_PURPOSE (tem))); \
if (TREE_CHAIN (tem) != 0) \
CONTIN; \
} \
putc (';', asmfile); \
CHARS (1);
#undef DIVSI3_LIBCALL
#undef UDIVSI3_LIBCALL
#undef REMSI3_LIBCALL
#undef UREMSI3_LIBCALL
#define DATA_ALIGNMENT(dummy,align) \
((TREE_PUBLIC (decl) && \
(POINTER_TYPE_P (TREE_TYPE (decl)))) ? 64: align)
#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE, LABELNO) \
fprintf (FILE, "\tcall __mcount_\n\tnop\n")
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Di860 -Dunix -DBSD4_3 -Dalliant -Asystem=unix -Asystem=bsd -Acpu=i860 -Amachine=i860"
#undef I860_REG_PREFIX
#undef ASM_COMMENT_START
#define ASM_COMMENT_START "//"
#undef ASM_FILE_START
#define ASM_FILE_START(FILE)
#undef ASM_OUTPUT_FUNCTION_PREFIX
#define ASM_OUTPUT_FUNCTION_PREFIX(FILE,NAME) \
fputs("\tnop\n", (FILE)); \
current_function_original_name = (NAME)
#undef ASM_OUTPUT_PROLOGUE_SUFFIX
#undef SWITCH_TAKES_ARG
#undef WORD_SWITCH_TAKES_ARG
#undef ASM_SPEC
#undef ASM_FINAL_SPEC
#undef MD_STARTFILE_PREFIX
#undef MD_EXEC_PREFIX
#define CPP_SPEC "%{p:%e-p option not supported: use -pg instead}"
#undef LIB_SPEC
#define LIB_SPEC \
"%{g*:-lg} %{!pg:-lc}%{pg:-lc_p} crtend.o%s"
#undef LINK_SPEC
#define LINK_SPEC "-X"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC \
"%{!pg:crt0.o%s}%{pg:gcrt0.o%s} crtbegin.o%s"
#undef SCCS_DIRECTIVE
#undef NO_DOLLAR_IN_LABEL
#undef TARGET_MEM_FUNCTIONS
#undef DWARF_DEBUGGING_INFO
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX "_"
#undef ASM_OUTPUT_EXTERNAL_LIBCALL
#undef BSS_ASM_OP
#define BSS_ASM_OP "\t.lcomm "
#undef ASM_FILE_END
#define ASM_FILE_END(FILE) \
do { \
if (current_function_original_name != NULL) { \
const char *long_op = integer_asm_op (4, FALSE); \
tdesc_section(); \
fprintf ((FILE), "%s __ETEXT\n", long_op); \
fprintf ((FILE), "%s 0\n", long_op); \
fputs ("\t.long\t__ETEXT\n", (FILE)); \
fputs ("\t.long\t0\n", (FILE)); \
text_section(); \
fputs("__ETEXT:\n", (FILE)); \
} \
if (!flag_no_ident) \
fprintf ((FILE), "\t.ident\t\"GCC: (GNU) %s\"\n", \
version_string); \
} while (0)