|
|
1.1.1.2 root 1: /* Target independent definitions for LynxOS. 1.1.1.3 ! root 2: Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. 1.1 root 3: 1.1.1.2 root 4: This file is part of GNU CC. 5: 6: GNU CC is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU CC is distributed in the hope that it will be useful, 12: but WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14: GNU General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU CC; see the file COPYING. If not, write to 1.1.1.3 ! root 18: the Free Software Foundation, 59 Temple Place - Suite 330, ! 19: Boston, MA 02111-1307, USA. */ 1.1.1.2 root 20: 21: /* LynxOS is a multi-platform Unix, similar to SVR3, but not identical. 22: We can get quite a bit from generic svr3, but have to do some overrides. */ 23: 24: #include "svr3.h" 25: 26: /* Define various macros, depending on the combination of flags. */ 1.1 root 27: 28: #undef CPP_SPEC 1.1.1.2 root 29: #define CPP_SPEC "%{mthreads:-D_MULTITHREADED} \ 30: %{mposix:-D_POSIX_SOURCE} \ 31: %{msystem-v:-I/usr/include_v}" 32: 33: /* No asm spec needed, since using GNU assembler always. */ 1.1 root 34: 1.1.1.2 root 35: /* No linker spec needed, since using GNU linker always. */ 1.1 root 36: 37: #undef LIB_SPEC 1.1.1.2 root 38: #define LIB_SPEC "%{mthreads:-L/lib/thread/} \ 39: %{msystem-v:-lc_v} \ 1.1.1.3 ! root 40: %{!msystem-v:%{mposix:-lc_p} -lc -lm}" 1.1.1.2 root 41: 42: /* Set the appropriate names for the Lynx startfiles. */ 1.1 root 43: 44: #undef STARTFILE_SPEC 1.1.1.3 ! root 45: #define STARTFILE_SPEC "%{p:%{mthreads:thread/pinit1.o%s}%{!mthreads:pinit1.o%s}}%{!p:%{msystem-v:vinit1.o%s -e_start}%{!msystem-v:%{mthreads:thread/init1.o%s}%{!mthreads:init1.o%s}}}" 1.1 root 46: 47: #undef ENDFILE_SPEC 1.1.1.2 root 48: #define ENDFILE_SPEC "%{p:_etext.o%s}%{!p:initn.o%s}" 1.1 root 49: 1.1.1.2 root 50: /* Override the svr3 versions. */ 1.1 root 51: 52: #undef WCHAR_TYPE 53: #define WCHAR_TYPE "int" 54: 55: #undef PTRDIFF_TYPE 56: #define PTRDIFF_TYPE "long int" 57: 1.1.1.2 root 58: /* We want to output DBX (stabs) debugging information normally. */ 1.1 root 59: 60: #define DBX_DEBUGGING_INFO 1.1.1.2 root 61: #undef PREFERRED_DEBUGGING_TYPE 1.1 root 62: #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG 63: 1.1.1.2 root 64: /* It is convenient to be able to generate standard coff debugging 65: if requested via -gcoff. */ 1.1 root 66: 67: #define SDB_DEBUGGING_INFO 68: 1.1.1.2 root 69: /* Be function-relative for block and source line stab directives. */ 70: 71: #define DBX_BLOCKS_FUNCTION_RELATIVE 1 72: 73: /* but, to make this work, functions must appear prior to line info */ 74: 75: #define DBX_FUNCTION_FIRST 1.1 root 76: 1.1.1.2 root 77: /* Generate a blank trailing N_SO to mark the end of the .o file, since 78: we can't depend upon the linker to mark .o file boundaries with 79: embedded stabs. */ 80: 81: #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \ 82: fprintf (FILE, \ 83: "\t.text\n\t.stabs \"\",%d,0,0,Letext\nLetext:\n", N_SO) 84: 85: #undef ASM_OUTPUT_SOURCE_LINE 86: #define ASM_OUTPUT_SOURCE_LINE(file, line) \ 87: { static int sym_lineno = 1; \ 88: fprintf (file, ".stabn 68,0,%d,.LM%d-", \ 89: line, sym_lineno); \ 90: assemble_name (file, \ 91: XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \ 92: fprintf (file, "\n.LM%d:\n", sym_lineno); \ 93: sym_lineno += 1; } 1.1 root 94: 95: /* Handle #pragma pack and sometimes #pragma weak. */ 96: 97: #define HANDLE_SYSV_PRAGMA 98: 1.1.1.2 root 99: /* Some additional command-line options. */ 100: 1.1 root 101: #define TARGET_THREADS (target_flags & MASK_THREADS) 102: #define MASK_THREADS 0x40000000 103: 104: #define TARGET_POSIX (target_flags & MASK_POSIX) 105: #define MASK_POSIX 0x20000000 106: 107: #define TARGET_SYSTEM_V (target_flags & MASK_SYSTEM_V) 108: #define MASK_SYSTEM_V 0x10000000 109: 110: #undef SUBTARGET_SWITCHES 111: #define SUBTARGET_SWITCHES \ 112: {"threads", MASK_THREADS}, \ 113: {"posix", MASK_POSIX}, \ 1.1.1.2 root 114: {"system-v", MASK_SYSTEM_V}, 1.1 root 115: 116: #undef SUBTARGET_OVERRIDE_OPTIONS 117: #define SUBTARGET_OVERRIDE_OPTIONS \ 1.1.1.3 ! root 118: do { \ ! 119: if (TARGET_SYSTEM_V && profile_flag) \ 1.1 root 120: warning ("-msystem-v and -p are incompatible"); \ 121: if (TARGET_SYSTEM_V && TARGET_THREADS) \ 1.1.1.3 ! root 122: warning ("-msystem-v and -mthreads are incompatible"); \ ! 123: } while (0) 1.1 root 124: 1.1.1.2 root 125: /* Define this so that C++ destructors will use atexit, since LynxOS 126: calls exit after main returns. */ 1.1 root 127: 128: #define HAVE_ATEXIT 129: 1.1.1.2 root 130: /* Since init.o et al put all sorts of stuff into the init section, 131: we can't use the standard init section support in crtbegin.o. */ 1.1 root 132: 1.1.1.2 root 133: #undef INIT_SECTION_ASM_OP 1.1 root 134: 1.1.1.2 root 135: #undef EXTRA_SECTIONS 136: #define EXTRA_SECTIONS in_const, in_bss, in_ctors, in_dtors, in_fini, 1.1 root 137: 1.1.1.2 root 138: #undef EXTRA_SECTION_FUNCTIONS 139: #define EXTRA_SECTION_FUNCTIONS \ 140: CONST_SECTION_FUNCTION \ 141: BSS_SECTION_FUNCTION \ 142: CTORS_SECTION_FUNCTION \ 143: DTORS_SECTION_FUNCTION \ 144: FINI_SECTION_FUNCTION 145: 146: #undef CTORS_SECTION_ASM_OP 147: #define CTORS_SECTION_ASM_OP ".section\t.ctors" 148: #undef DTORS_SECTION_ASM_OP 149: #define DTORS_SECTION_ASM_OP ".section\t.dtors" 150: 151: #define INT_ASM_OP ".long" 152: 153: /* A C statement (sans semicolon) to output an element in the table of 154: global constructors. */ 155: #undef ASM_OUTPUT_CONSTRUCTOR 156: #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \ 157: do { \ 158: ctors_section (); \ 159: fprintf (FILE, "\t%s\t ", INT_ASM_OP); \ 160: assemble_name (FILE, NAME); \ 161: fprintf (FILE, "\n"); \ 162: } while (0) 163: 164: /* A C statement (sans semicolon) to output an element in the table of 165: global destructors. */ 166: #undef ASM_OUTPUT_DESTRUCTOR 167: #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME) \ 168: do { \ 169: dtors_section (); \ 170: fprintf (FILE, "\t%s\t ", INT_ASM_OP); \ 171: assemble_name (FILE, NAME); \ 172: fprintf (FILE, "\n"); \ 173: } while (0) 1.1 root 174: 1.1.1.2 root 175: #undef DO_GLOBAL_CTORS_BODY 176: #undef DO_GLOBAL_DTORS_BODY 1.1.1.3 ! root 177: ! 178: /* LynxOS doesn't have mcount. */ ! 179: #undef FUNCTION_PROFILER ! 180: #define FUNCTION_PROFILER(file, profile_label_no)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.