diff options
| author | cvs2svn <cvs2svn@FreeBSD.org> | 2000-11-20 04:41:45 +0000 | 
|---|---|---|
| committer | cvs2svn <cvs2svn@FreeBSD.org> | 2000-11-20 04:41:45 +0000 | 
| commit | 0d497cf6e989f7498cf5036a29fe7003a89abf83 (patch) | |
| tree | 48a3225dfba4179815fb512c8ba7492fa4c83fbc /contrib/gcc/config/mips/iris5.h | |
| parent | 94bb9d581468116c659950d31288ce30f661f3d4 (diff) | |
Diffstat (limited to 'contrib/gcc/config/mips/iris5.h')
| -rw-r--r-- | contrib/gcc/config/mips/iris5.h | 164 | 
1 files changed, 164 insertions, 0 deletions
| diff --git a/contrib/gcc/config/mips/iris5.h b/contrib/gcc/config/mips/iris5.h new file mode 100644 index 0000000000000..7910eef88d6dd --- /dev/null +++ b/contrib/gcc/config/mips/iris5.h @@ -0,0 +1,164 @@ +/* Definitions of target machine for GNU compiler.  Iris version 5. +   Copyright (C) 1993, 1995, 1996, 1998 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING.  If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA.  */ + +#ifndef TARGET_DEFAULT +#define	TARGET_DEFAULT	MASK_ABICALLS +#endif +#define ABICALLS_ASM_OP ".option pic2" + +#include "mips/iris3.h" +#include "mips/mips.h" +#include "mips/iris4.h" + +/* Irix 5 doesn't use COFF, so disable special COFF handling in collect2.c.  */ +#undef OBJECT_FORMAT_COFF + +/* ??? This is correct, but not very useful, because there is no file that +   uses this macro.  */ +/* ??? The best way to handle global constructors under ELF is to use .init +   and .fini sections.  Unfortunately, there is apparently no way to get +   the Irix 5.x (x <= 2) assembler to create these sections.  So we instead +   use collect.  The linker can create these sections via -init and -fini +   options, but using this would require modifying how crtstuff works, and +   I will leave that for another time (or someone else).  */ +#define OBJECT_FORMAT_ELF +#define HAS_INIT_SECTION +#define LD_INIT_SWITCH "-init" +#define LD_FINI_SWITCH "-fini" + +/* Specify wchar_t types.  */ +#undef	WCHAR_TYPE +#undef	WCHAR_TYPE_SIZE +#undef	MAX_WCHAR_TYPE_SIZE + +#define WCHAR_TYPE	"long int" +#define WCHAR_TYPE_SIZE	LONG_TYPE_SIZE +#define MAX_WCHAR_TYPE_SIZE	MAX_LONG_TYPE_SIZE + +#define WORD_SWITCH_TAKES_ARG(STR)			\ + (DEFAULT_WORD_SWITCH_TAKES_ARG (STR)			\ +  || !strcmp (STR, "rpath")) + +#undef SUBTARGET_CC1_SPEC +#define SUBTARGET_CC1_SPEC "%{static: -mno-abicalls}" + +/* ??? _MIPS_SIM and _MIPS_SZPTR should eventually depend on options when +   options for them exist.  */ + +#undef CPP_PREDEFINES +#define CPP_PREDEFINES \ + "-Dunix -Dmips -Dsgi -Dhost_mips -DMIPSEB -D_MIPSEB -DSYSTYPE_SVR4 \ +  -D_SVR4_SOURCE -D_MODERN_C -D__DSO__ \ +  -D_MIPS_SIM=_MIPS_SIM_ABI32 -D_MIPS_SZPTR=32 \ +  -Asystem(unix) -Asystem(svr4) -Acpu(mips) -Amachine(sgi)" + +#undef SUBTARGET_CPP_SPEC +#define SUBTARGET_CPP_SPEC "\ +%{!ansi:-D__EXTENSIONS__ -D_SGI_SOURCE -D_LONGLONG} \ +%{!mfp64: -D_MIPS_FPSET=16}%{mfp64: -D_MIPS_FPSET=32} \ +%{mips1: -D_MIPS_ISA=_MIPS_ISA_MIPS1} \ +%{mips2: -D_MIPS_ISA=_MIPS_ISA_MIPS2} \ +%{mips3: -D_MIPS_ISA=_MIPS_ISA_MIPS3} \ +%{!mips1: %{!mips2: %{!mips3: -D_MIPS_ISA=_MIPS_ISA_MIPS1}}} \ +%{!mint64: -D_MIPS_SZINT=32}%{mint64: -D_MIPS_SZINT=64} \ +%{!mlong64: -D_MIPS_SZLONG=32}%{mlong64: -D_MIPS_SZLONG=64}" + +#undef LINK_SPEC +#define LINK_SPEC "\ +%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \ +%{bestGnum} %{shared} %{non_shared} \ +%{call_shared} %{no_archive} %{exact_version} \ +%{static: -non_shared} \ +%{!static: \ +  %{!shared:%{!non_shared:%{!call_shared: -call_shared -no_unresolved}}}} \ +%{rpath} \ +-_SYSTYPE_SVR4" + +/* We now support shared libraries.  */ +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "\ +%{!static: \ +  %{!shared:%{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s libprof1.a%s}%{!p:crt1.o%s}}}} \ +%{static: \ +  %{pg:gcrt1.o%s} \ +  %{!pg:%{p:/usr/lib/nonshared/mcrt1.o%s libprof1.a%s} \ +  %{!p:/usr/lib/nonshared/crt1.o%s}}}" + +#undef LIB_SPEC +#define LIB_SPEC "%{!shared:%{p:-lprof1} %{pg:-lprof1} -lc}" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "%{!shared:crtn.o%s}" + +/* We do not want to run mips-tfile!  */ +#undef ASM_FINAL_SPEC + +/* The system header files are C++ aware. */ +/* ??? Unfortunately, most but not all of the headers are C++ aware. +   Specifically, curses.h is not, and as a consequence, defining this +   used to prevent libg++ building.  This is no longer the case so +   define it again to prevent other problems, e.g. with getopt in +   unistd.h.  We still need some way to fix just those files that need +   fixing.  */ +#define NO_IMPLICIT_EXTERN_C 1 + +/* We don't support debugging info for now. */ +#undef DBX_DEBUGGING_INFO +#undef SDB_DEBUGGING_INFO +#undef MIPS_DEBUGGING_INFO +#undef PREFERRED_DEBUGGING_TYPE + +/* Likewise, the assembler doesn't handle DWARF2 directives.  */ +#define DWARF2_UNWIND_INFO 0 + +#undef MACHINE_TYPE +#define MACHINE_TYPE "SGI running IRIX 5.x" + + /* Dollar signs are OK in Irix5 but not in Irix3.  */ +#undef DOLLARS_IN_IDENTIFIERS +#undef NO_DOLLAR_IN_LABEL + +/* -G is incompatible with -KPIC which is the default, so only allow objects +   in the small data section if the user explicitly asks for it.  */ +#undef MIPS_DEFAULT_GVALUE +#define MIPS_DEFAULT_GVALUE 0 + +/* In Irix 5, we must output a `.global name .text' directive for every used +   but undefined function.  If we don't, the linker may perform an optimization +   (skipping over the insns that set $gp) when it is unsafe.  This is used +   indirectly by ASM_OUTPUT_EXTERNAL.  */ +#define ASM_OUTPUT_UNDEF_FUNCTION(FILE, NAME)	\ +do {						\ +  fputs ("\t.globl ", FILE);			\ +  assemble_name (FILE, NAME);			\ +  fputs (" .text\n", FILE);			\ +} while (0) + +/* Also do this for libcalls.  */ +#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN)	\ +  mips_output_external_libcall (FILE, XSTR (FUN, 0)) + +/* This does for functions what ASM_DECLARE_OBJECT_NAME does for variables. +   This is used indirectly by ASM_OUTPUT_EXTERNAL.  */ +#define ASM_DECLARE_FUNCTION_SIZE(STREAM, NAME, DECL)	\ +do {							\ +  tree name_tree = get_identifier (NAME);		\ +  TREE_ASM_WRITTEN (name_tree) = 1;			\ +} while (0) | 
