|
|
1.1 root 1: /* Definitions of target machine for GNU compiler. ARM RISCiX version. 1.1.1.2 ! root 2: Copyright (C) 1993, 1994 Free Software Foundation, Inc. 1.1 root 3: Contributed by Richard Earnshaw ([email protected]), based on original 4: work by Pieter `Tiggr' Schoenmakers ([email protected]) 5: and Martin Simmons (@harleqn.co.uk). 6: 7: This file is part of GNU CC. 8: 9: GNU CC is free software; you can redistribute it and/or modify 10: it under the terms of the GNU General Public License as published by 11: the Free Software Foundation; either version 2, or (at your option) 12: any later version. 13: 14: GNU CC is distributed in the hope that it will be useful, 15: but WITHOUT ANY WARRANTY; without even the implied warranty of 16: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17: GNU General Public License for more details. 18: 19: You should have received a copy of the GNU General Public License 20: along with GNU CC; see the file COPYING. If not, write to 21: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ 22: 1.1.1.2 ! root 23: /* Translation to find startup files. On RISC iX boxes, ! 24: crt0, mcrt0 and gcrt0.o are in /usr/lib. */ ! 25: #define STARTFILE_SPEC "\ ! 26: %{pg:/usr/lib/gcrt0.o%s}\ ! 27: %{!pg:%{p:/usr/lib/mcrt0.o%s}\ ! 28: %{!p:/usr/lib/crt0.o%s}}" ! 29: ! 30: /* RISC iX has no concept of -lg */ ! 31: /* If -static is specified then link with -lc_n */ ! 32: ! 33: #ifndef LIB_SPEC ! 34: #define LIB_SPEC "\ ! 35: %{g*:-lg}\ ! 36: %{!p:%{!pg:%{!static:-lc}%{static:-lc_n}}}\ ! 37: %{p:-lc_p}\ ! 38: %{pg:-lc_p}" ! 39: #endif ! 40: ! 41: /* The RISC iX assembler never deletes any symbols from the object module; ! 42: and, by default, ld doesn't either. -X causes local symbols starting ! 43: with 'L' to be deleted, which is what we want. */ ! 44: #ifndef LINK_SPEC ! 45: #define LINK_SPEC "-X" ! 46: #endif 1.1 root 47: 48: #ifndef CPP_PREDEFINES 49: #define CPP_PREDEFINES \ 50: "-Darm -Driscix -Dunix -Asystem(unix) -Acpu(arm) -Amachine(arm)" 51: #endif 52: 53: #ifndef CPP_SPEC 54: #define CPP_SPEC "%{m6:-D__arm6__} \ 55: %{mbsd:%{pedantic:%e-mbsd and -pedantic incompatible} -D_BSD_C} \ 56: %{mxopen:%{mbsd:%e-mbsd and -mxopen incompatible} \ 57: %{pedantic:%e-mxopen and -pedantic incompatible} -D_XOPEN_C} \ 58: %{!mbsd:%{!mxopen:%{!ansi: -D_BSD_C}}}" 59: #endif 60: 61: /* RISCiX has some wierd symbol name munging, that is done to the object module 62: after assembly, which enables multiple libraries to be supported within 63: one (possibly shared) library. It basically changes the symbol name of 64: certain symbols (for example _bcopy is converted to _$bcopy if using BSD) 65: Symrename's parameters are determined as follows: 66: -mno-symrename Don't run symrename 67: -mbsd symrename -BSD <file> 68: -mxopen symrename -XOPEN <file> 69: -ansi symrename - <file> 70: <none> symrename -BSD <file> 71: */ 72: 73: #ifndef ASM_FINAL_SPEC 1.1.1.2 ! root 74: #if !defined (CROSS_COMPILE) 1.1 root 75: #define ASM_FINAL_SPEC "\ 76: %{!mno-symrename: \ 77: \n /usr/bin/symrename \ 1.1.1.2 ! root 78: -%{mbsd:%{pedantic:%e-mbsd and -pedantic incompatible}BSD}\ 1.1 root 79: %{mxopen:%{mbsd:%e-mbsd and -mxopen incompatible}\ 1.1.1.2 ! root 80: %{pedantic:%e-mxopen and -pedantic incompatible}XOPEN}\ 1.1 root 81: %{!mbsd:%{!mxopen:%{!ansi:BSD}}} %{c:%{o*:%*}%{!o*:%b.o}}%{!c:%U.o}}" 82: #endif 83: #endif 84: 85: /* None of these is actually used in cc1, so they modify bit 31 */ 86: #define ARM_EXTRA_TARGET_SWITCHES \ 87: {"bsd", 0x80000000}, {"xopen", 0x80000000}, {"no-symrename", 0x80000000}, 88: 89: 90: 91: /* Run-time Target Specification. */ 92: #define TARGET_VERSION \ 93: fputs (" (ARM/RISCiX)", stderr); 94: 95: /* This is used in ASM_FILE_START */ 96: #define ARM_OS_NAME "RISCiX" 97: 1.1.1.2 ! root 98: /* Unsigned chars produces much better code than signed. */ 1.1 root 99: #define DEFAULT_SIGNED_CHAR 0 100: 1.1.1.2 ! root 101: /* Define this if the target system supports the function atexit from the 1.1 root 102: ANSI C standard. If this is not defined, and INIT_SECTION_ASM_OP is not 103: defined, a default exit function will be provided to support C++. 104: The man page only describes on_exit, but atexit is also there. */ 105: #define HAVE_ATEXIT 1 1.1.1.2 ! root 106: 1.1 root 107: /* Some systems use __main in a way incompatible with its use in gcc, in these 108: cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to 109: give the same symbol without quotes for an alternative entry point. You 1.1.1.2 ! root 110: must define both, or neither. */ 1.1 root 111: #ifndef NAME__MAIN 112: #define NAME__MAIN "__gccmain" 113: #define SYMBOL__MAIN __gccmain 114: #endif 115: 1.1.1.2 ! root 116: /* size_t is "unsigned int" in RISCiX */ ! 117: #define SIZE_TYPE "unsigned int" ! 118: ! 119: /* ptrdiff_t is "int" in RISCiX */ ! 120: #define PTRDIFF_TYPE "int" ! 121: ! 122: /* Maths operation domain error number, EDOM */ ! 123: #define TARGET_EDOM 33 1.1 root 124: #include "arm/arm.h" 125: 126: /* The native RISCiX assembler does not support stabs of any kind; because 127: the native assembler is not used by the compiler, Acorn didn't feel it was 128: necessary to put them in! */ 129: 130: #ifdef DBX_DEBUGGING_INFO 131: #undef DBX_DEBUGGING_INFO 132: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.