Annotation of gcc/config/lynx.h, revision 1.1.1.3

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)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.