|
|
1.1 ! root 1: /* Definitions of target machine for GNU compiler, ! 2: for Sun SPARC-V9 on a hypothetical elf format machine. ! 3: Copyright (C) 1994 Free Software Foundation, Inc. ! 4: Contributed by Doug Evans, [email protected]. ! 5: ! 6: This file is part of GNU CC. ! 7: ! 8: GNU CC is free software; you can redistribute it and/or modify ! 9: it under the terms of the GNU General Public License as published by ! 10: the Free Software Foundation; either version 2, or (at your option) ! 11: any later version. ! 12: ! 13: GNU CC is distributed in the hope that it will be useful, ! 14: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 16: GNU General Public License for more details. ! 17: ! 18: You should have received a copy of the GNU General Public License ! 19: along with GNU CC; see the file COPYING. If not, write to ! 20: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ! 21: ! 22: /* This is a v9 only compiler. -mv8 is not expected to work. If you want ! 23: a v8/v9 compiler, this isn't the place to do it. */ ! 24: /* ??? Until real v9 machines exist, all of this is subject to change. */ ! 25: /* ??? This file should really be called sp64-sol2.h or some such but that ! 26: would be a bit misleading since no such machines exist yet. The current ! 27: name is also misleading since the term "elf" is more properly applied to ! 28: embedded configurations. */ ! 29: ! 30: #define SPARCV9 /* See sparc.h. */ ! 31: ! 32: /* ??? We're taking the scheme of including another file and then overriding ! 33: the values we don't like a bit too far here. The alternative is to more or ! 34: less duplicate all of svr4.h, sparc/sysv4.h, and sparc/sol2.h here ! 35: (suitably cleaned up). Until real sparc64 machines exist, it's not clear ! 36: which is better. */ ! 37: ! 38: #include "sparc/sol2.h" ! 39: ! 40: /* A v9 compiler with stack-bias, 32 bit integers and 64 bit pointers, ! 41: in a Medium/Anywhere code model environment. */ ! 42: ! 43: #undef TARGET_DEFAULT ! 44: #define TARGET_DEFAULT \ ! 45: (MASK_V9 + MASK_STACK_BIAS + MASK_MEDANY + MASK_PTR64 + MASK_HARD_QUAD + MASK_EPILOGUE + MASK_FPU) ! 46: ! 47: #undef CPP_PREDEFINES ! 48: #define CPP_PREDEFINES \ ! 49: "-Dsun -Dsparc -Dunix -D__svr4__ -D__sparc_v9__ \ ! 50: -Asystem(unix) -Asystem(svr4) -Acpu(sparc64) -Amachine(sparc64)" ! 51: ! 52: #undef CPP_SPEC ! 53: #define CPP_SPEC "\ ! 54: %{mint64:-D__INT_MAX__=9223372036854775807LL -D__LONG_MAX__=9223372036854775807LL} \ ! 55: %{mlong64:-D__LONG_MAX__=9223372036854775807LL} \ ! 56: " ! 57: ! 58: #undef MD_EXEC_PREFIX ! 59: #undef MD_STARTFILE_PREFIX ! 60: ! 61: /* Use the default (for now). */ ! 62: #undef STARTFILE_SPEC ! 63: ! 64: /* Use the default (for now). */ ! 65: #undef LIB_SPEC ! 66: ! 67: /* This is taken from sol2.h. */ ! 68: #undef LINK_SPEC ! 69: #define LINK_SPEC "\ ! 70: %{!nostdlib:%{!r*:%{!e*:-e _start}}} \ ! 71: %{h*} %{V} %{v:%{!V:-V}} \ ! 72: %{b} %{Wl,*:%*} \ ! 73: %{static:-dn -Bstatic} \ ! 74: %{shared:-G -dy} \ ! 75: %{symbolic:-Bsymbolic -G -dy} \ ! 76: %{G:-G} \ ! 77: %{YP,*} \ ! 78: %{R*} \ ! 79: %{Qy:} %{!Qn:-Qy} \ ! 80: " ! 81: ! 82: /* Unfortunately, svr4.h redefines these so we have to restore them to ! 83: their original values in sparc.h. */ ! 84: /* ??? It might be possible to eventually get svr4.h to do the right thing. */ ! 85: ! 86: #undef PTRDIFF_TYPE ! 87: #define PTRDIFF_TYPE "long long int" ! 88: ! 89: #undef SIZE_TYPE ! 90: #define SIZE_TYPE "long long unsigned int" ! 91: ! 92: /* ??? This should be 32 bits for v9 but what can we do? */ ! 93: #undef WCHAR_TYPE ! 94: #define WCHAR_TYPE "short unsigned int" ! 95: ! 96: #undef WCHAR_TYPE_SIZE ! 97: #define WCHAR_TYPE_SIZE 16 ! 98: ! 99: /* ??? Disabled for v9 as the current implementation of the Medium/Anywhere ! 100: code model needs this in the data segment (still true?). Let's hope the ! 101: assembler is fixed. */ ! 102: #undef JUMP_TABLES_IN_TEXT_SECTION ! 103: ! 104: /* System V Release 4 uses DWARF debugging info. ! 105: GDB doesn't support 64 bit stabs yet and the desired debug format is DWARF ! 106: anyway so it is the default. */ ! 107: ! 108: #define DWARF_DEBUGGING_INFO ! 109: #define DBX_DEBUGGING_INFO ! 110: ! 111: #undef PREFERRED_DEBUGGING_TYPE ! 112: #define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG ! 113: ! 114: /* Define the names of various pseudo-ops used by the Sparc/svr4 assembler. ! 115: ??? If ints are 64 bits then UNALIGNED_INT_ASM_OP (defined elsewhere) is ! 116: misnamed. These should all refer to explicit sizes (half/word/xword?), ! 117: anything other than short/int/long/etc. */ ! 118: ! 119: #define UNALIGNED_LONGLONG_ASM_OP ".uaxword" ! 120: ! 121: /* DWARF stuff. */ ! 122: ! 123: #define ASM_OUTPUT_DWARF_ADDR(FILE,LABEL) \ ! 124: do { fprintf ((FILE), "\t%s\t", UNALIGNED_LONGLONG_ASM_OP); \ ! 125: assemble_name (FILE, LABEL); \ ! 126: fprintf (FILE, "\n"); \ ! 127: } while (0) ! 128: ! 129: #define ASM_OUTPUT_DWARF_ADDR_CONST(FILE,RTX) \ ! 130: do { \ ! 131: fprintf ((FILE), "\t%s\t", UNALIGNED_LONGLONG_ASM_OP); \ ! 132: output_addr_const ((FILE), (RTX)); \ ! 133: fputc ('\n', (FILE)); \ ! 134: } while (0) ! 135: ! 136: /* ??? Not sure if this should be 4 or 8 bytes. 4 works for now. */ ! 137: #define ASM_OUTPUT_DWARF_REF(FILE,LABEL) \ ! 138: do { fprintf ((FILE), "\t%s\t", UNALIGNED_INT_ASM_OP); \ ! 139: assemble_name (FILE, LABEL); \ ! 140: fprintf (FILE, "\n"); \ ! 141: } while (0)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.