|
|
1.1 ! root 1: /* Definitions of target machine for GNU compiler. ! 2: Encore Multimax (OSF/1 with OSF/rose) version. ! 3: Copyright (C) 1991 Free Software Foundation, Inc. ! 4: ! 5: This file is part of GNU CC. ! 6: ! 7: GNU CC is free software; you can redistribute it and/or modify ! 8: it under the terms of the GNU General Public License as published by ! 9: the Free Software Foundation; either version 2, or (at your option) ! 10: any later version. ! 11: ! 12: GNU CC is distributed in the hope that it will be useful, ! 13: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 15: GNU General Public License for more details. ! 16: ! 17: You should have received a copy of the GNU General Public License ! 18: along with GNU CC; see the file COPYING. If not, write to ! 19: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ! 20: ! 21: /* Output a '?' so the encore assembler won't complain about ! 22: * externals on branches it hasn't seen yet. */ ! 23: ! 24: #define EXTERNAL_PREFIX '?' ! 25: ! 26: #include "encore.h" ! 27: ! 28: /* External variables defined in ns32k.c */ ! 29: ! 30: extern int ns32k_num_files; ! 31: ! 32: ! 33: #define OSF_OS ! 34: #define NO_J_SWITCH ! 35: ! 36: /* MACHINE MACROS controlling the compilation driver, 'gcc' */ ! 37: ! 38: #ifdef CPP_SPEC ! 39: #undef CPP_SPEC ! 40: #endif ! 41: #define CPP_SPEC "%{.S: -D__LANGUAGE_ASSEMBLY__ \ ! 42: -D_LANGUAGE_ASSEMBLY \ ! 43: %{!ansi:-DLANGUAGE_ASSEMBLY}} \ ! 44: %{!.S: -D__LANGUAGE_C__ \ ! 45: -D_LANGUAGE_C \ ! 46: %{!ansi:-DLANGUAGE_C}}" ! 47: ! 48: #ifdef CC1_SPEC ! 49: #undef CC1_SPEC ! 50: #endif ! 51: #define CC1_SPEC "" ! 52: ! 53: #ifndef NO_J_SWITCH ! 54: #ifdef ASM_SPEC ! 55: #undef ASM_SPEC ! 56: #endif ! 57: #define ASM_SPEC "%{!j: -j}" ! 58: #endif ! 59: ! 60: #ifdef NO_J_SWITCH ! 61: #ifdef ASM_SPEC ! 62: #undef ASM_SPEC ! 63: #endif ! 64: #define ASM_SPEC "" ! 65: #endif ! 66: ! 67: #ifdef LINK_SPEC ! 68: #undef LINK_SPEC ! 69: #endif ! 70: #define LINK_SPEC "%{nostdlib}" ! 71: ! 72: #ifdef LIB_SPEC ! 73: #undef LIB_SPEC ! 74: #endif ! 75: #define LIB_SPEC "%{p:-lprof1} -lc" ! 76: ! 77: #ifdef LIBG_SPEC ! 78: #undef LIBG_SPEC ! 79: #endif ! 80: #define LIBG_SPEC "" ! 81: ! 82: #ifdef STARTFILE_SPEC ! 83: #undef STARTFILE_SPEC ! 84: #endif ! 85: #define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}" ! 86: ! 87: #ifdef MACHINE_TYPE ! 88: #undef MACHINE_TYPE ! 89: #endif ! 90: #define MACHINE_TYPE "Encore Multimax running OSF/1 with OSF/rose objects" ! 91: ! 92: #ifdef ASM_VERSION ! 93: #undef ASM_VERSION ! 94: #endif ! 95: #define ASM_VERSION "Encore syntax using GAS/stabs" ! 96: ! 97: #ifdef MD_EXEC_PREFIX ! 98: #undef MD_EXEC_PREFIX ! 99: #endif ! 100: #define MD_EXEC_PREFIX "/usr/ccs/gcc/" ! 101: ! 102: #ifdef MD_STARTFILE_PREFIX ! 103: #undef MD_STARTFILE_PREFIX ! 104: #endif ! 105: #define MD_STARTFILE_PREFIX "/usr/ccs/lib/" ! 106: ! 107: /* MACHINE MACROS controlling run-time target specification */ ! 108: ! 109: #ifdef CPP_PREDEFINES ! 110: #undef CPP_PREDEFINES ! 111: #endif ! 112: #define CPP_PREDEFINES "-Dns32000 -Dn16 -Dns16000 -Dns32332 -Dunix -Dmultimax -DMULTIMAX -DOSF -DOSF1" ! 113: ! 114: #ifdef TARGET_DEFAULT ! 115: #undef TARGET_DEFAULT ! 116: #endif ! 117: #define TARGET_DEFAULT 33 /* 32081 and no (sb) register */ ! 118: ! 119: /* MACHINE MACROS controlling the layout of C types */ ! 120: ! 121: #ifdef SIZE_TYPE ! 122: #undef SIZE_TYPE ! 123: #endif ! 124: #define SIZE_TYPE "long unsigned int" ! 125: ! 126: #ifdef PTRDIFF_TYPE ! 127: #undef PTRDIFF_TYPE ! 128: #endif ! 129: #define PTRDIFF_TYPE "int" ! 130: ! 131: #ifdef WCHAR_TYPE ! 132: #undef WCHAR_TYPE ! 133: #endif ! 134: #define WCHAR_TYPE "unsigned int" ! 135: ! 136: #ifdef WCHAR_TYPE_SIZE ! 137: #undef WCHAR_TYPE_SIZE ! 138: #endif ! 139: #define WCHAR_TYPE_SIZE BITS_PER_WORD ! 140: ! 141: #if 0 ! 142: #define WCHAR_TYPE ((TARGET_WC8) \ ! 143: ? "unsigned char" \ ! 144: : ((TARGET_WC16) \ ! 145: ? "short unsigned int" \ ! 146: : "long unsigned int")) ! 147: #define MULTIBYTE_CHARS 1 ! 148: #endif ! 149: ! 150: /* MACHINE MACROS describing stack layout and calling conventions */ ! 151: ! 152: ! 153: #ifdef FUNCTION_PROFILER ! 154: #undef FUNCTION_PROFILER ! 155: #endif ! 156: #define FUNCTION_PROFILER(FILE, LABELNO) fprintf (FILE, "\tjsr mcount\n") ! 157: ! 158: /* MACHINE MACROS describing the overall framework of an ! 159: assembly file */ ! 160: ! 161: #ifdef PRINT_OPERAND ! 162: #undef PRINT_OPERAND ! 163: #endif ! 164: ! 165: #define PRINT_OPERAND(FILE, X, CODE) print_operand(FILE, X, CODE) ! 166: ! 167: #ifdef PRINT_OPERAND_ADDRESS ! 168: #undef PRINT_OPERAND_ADDRESS ! 169: #endif ! 170: ! 171: #define PRINT_OPERAND_ADDRESS(FILE, ADDR) print_operand_address(FILE, ADDR) ! 172: ! 173: #define STABS_DIRECTIVE "\t.stabs" /* align .stabs */ ! 174: #define STABN_DIRECTIVE "\t.stabn" /* align .stabn */ ! 175: #define STABD_DIRECTIVE "\t.stabd" /* align .stabd */ ! 176: ! 177: /* How to tell the debugger about changes of source files. */ ! 178: ! 179: #ifdef ASM_OUTPUT_SOURCE_FILENAME ! 180: #undef ASM_OUTPUT_SOURCE_FILENAME ! 181: #endif ! 182: ! 183: /* Perhaps it is no longer necessary to redefine this, now that dbxout.c ! 184: uses another macro instead. */ ! 185: #define ASM_OUTPUT_SOURCE_FILENAME(FILE, NAME) \ ! 186: { \ ! 187: if (ns32k_num_files++ == 0) \ ! 188: fprintf (FILE, "\t.file \"%s\"\n", NAME); \ ! 189: else if (write_symbols == DBX_DEBUG) \ ! 190: { \ ! 191: char ltext_label_name[100]; \ ! 192: ASM_GENERATE_INTERNAL_LABEL(ltext_label_name, "Ltext", 0); \ ! 193: fprintf (FILE, "%s \"%s\",%d,0,0,%s\n", STABS_DIRECTIVE, \ ! 194: NAME, 0x84 /* N_SOL */, <ext_label_name[1]); \ ! 195: } \ ! 196: else \ ! 197: fprintf (FILE, "\t#.file \"%s\"\n", NAME); \ ! 198: } ! 199: ! 200: /* This is how to output a note the debugger telling it the line number ! 201: to which the following sequence of instructions corresponds. */ ! 202: ! 203: #ifdef ASM_OUTPUT_SOURCE_LINE ! 204: #undef ASM_OUTPUT_SOURCE_LINE ! 205: #endif ! 206: #define ASM_OUTPUT_SOURCE_LINE(FILE, LINE) \ ! 207: { \ ! 208: if (write_symbols != DBX_DEBUG) \ ! 209: fprintf (FILE, "\t.ln %d\n", LINE); \ ! 210: else \ ! 211: fprintf (file, "%s %d,0,%d\n", STABD_DIRECTIVE, 0x44 /* N_SLINE */, \ ! 212: LINE); \ ! 213: } ! 214: ! 215: #ifdef ASM_OUTPUT_INT ! 216: #undef ASM_OUTPUT_INT ! 217: #endif ! 218: #ifndef COLLECT ! 219: #define ASM_OUTPUT_INT(FILE,VALUE) \ ! 220: ( fprintf (FILE, "\t.double "), \ ! 221: output_addr_const (FILE, (VALUE)), \ ! 222: fprintf (FILE, "\n")) ! 223: #else ! 224: #define ASM_OUTPUT_INT(STREAM,VALUE) \ ! 225: fprintf (STREAM, "\t.double\t%d\n", VALUE) ! 226: #endif ! 227: ! 228: /* MACHINE MACROS describing debugging information */ ! 229: ! 230: /* We need to have the capability to generate either ! 231: .stabs or COFF style debug info. The file ns32k.h ! 232: define DBX_DEBUGGING_INFO. We disambiguate between ! 233: the two based on a combination of command line or ! 234: default behavior. */ ! 235: ! 236: #ifndef SDB_DEBUGGING_INFO ! 237: #define SDB_DEBUGGING_INFO /* Generate COFF style debug info */ ! 238: #endif ! 239: ! 240: #ifndef DBX_DEBUGGING_INFO ! 241: #define DBX_DEBUGGING_INFO /* Generate .stabs style debug info */ ! 242: #endif ! 243: ! 244: /* If the user just types -g, we want to use stabs */ ! 245: ! 246: #ifdef PREFERRED_DEBUGGING_TYPE ! 247: #undef PREFERRED_DEBUGGING_TYPE ! 248: #endif ! 249: ! 250: #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG ! 251: ! 252: /* Define the gdb extensions */ ! 253: ! 254: #define DEFAULT_GDB_EXTENSIONS 1 ! 255: ! 256: /* Tell collect that the object format is OSF/rose. */ ! 257: #define OBJECT_FORMAT_ROSE ! 258: ! 259: /* Use atexit for static constructors/destructors, instead of defining ! 260: our own exit function. */ ! 261: #define HAVE_ATEXIT
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.