lynx.h revision 132718
1132718Skan/* Target independent definitions for LynxOS using gas and gnu ld.
2132718Skan   Copyright (C) 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2003
3117395Skan   Free Software Foundation, Inc.
418334Speter
5132718SkanThis file is part of GCC.
618334Speter
7132718SkanGCC is free software; you can redistribute it and/or modify
818334Speterit under the terms of the GNU General Public License as published by
918334Speterthe Free Software Foundation; either version 2, or (at your option)
1018334Speterany later version.
1118334Speter
12132718SkanGCC is distributed in the hope that it will be useful,
1318334Speterbut WITHOUT ANY WARRANTY; without even the implied warranty of
1418334SpeterMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1518334SpeterGNU General Public License for more details.
1618334Speter
1718334SpeterYou should have received a copy of the GNU General Public License
18132718Skanalong with GCC; see the file COPYING.  If not, write to
1918334Speterthe Free Software Foundation, 59 Temple Place - Suite 330,
2018334SpeterBoston, MA 02111-1307, USA.  */
2118334Speter
22132718Skan/* LynxOS is a multi-platform Unix, similar to SVR3, but not identical.  */
2318334Speter
24117395Skan/* Define various macros, depending on the combination of flags.  */
2518334Speter
2618334Speter#undef CPP_SPEC
2718334Speter#define CPP_SPEC "%{mthreads:-D_MULTITHREADED}  \
2818334Speter  %{mposix:-D_POSIX_SOURCE}  \
2918334Speter  %{msystem-v:-I/usr/include_v}"
3018334Speter
31117395Skan/* No asm spec needed, since using GNU assembler always.  */
3218334Speter
33117395Skan/* No linker spec needed, since using GNU linker always.  */
3418334Speter
3518334Speter#undef LIB_SPEC
3618334Speter#define LIB_SPEC "%{mthreads:-L/lib/thread/}  \
3718334Speter  %{msystem-v:-lc_v}  \
3818334Speter  %{!msystem-v:%{mposix:-lc_p} -lc -lm}"
3918334Speter
40117395Skan/* Set the appropriate names for the Lynx startfiles.  */
4118334Speter
4218334Speter#undef STARTFILE_SPEC
4318334Speter#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}}}"
4418334Speter
4518334Speter#undef ENDFILE_SPEC
4618334Speter#define ENDFILE_SPEC "%{p:_etext.o%s}%{!p:initn.o%s}"
4718334Speter
48117395Skan/* Override the svr3 versions.  */
4918334Speter
5018334Speter#undef WCHAR_TYPE
5118334Speter#define WCHAR_TYPE "int"
5218334Speter
5318334Speter#undef PTRDIFF_TYPE
5418334Speter#define PTRDIFF_TYPE "long int"
5518334Speter
5618334Speter/* We want to output DBX (stabs) debugging information normally.  */
5718334Speter
58117395Skan#define DBX_DEBUGGING_INFO 1
5918334Speter#undef PREFERRED_DEBUGGING_TYPE
6018334Speter#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
6118334Speter
6218334Speter/* It is convenient to be able to generate standard coff debugging
63117395Skan   if requested via -gcoff.  */
6418334Speter
65117395Skan#define SDB_DEBUGGING_INFO 1
6618334Speter
67117395Skan/* Be function-relative for block and source line stab directives.  */
6818334Speter
6918334Speter#define DBX_BLOCKS_FUNCTION_RELATIVE 1
7018334Speter
7118334Speter/* but, to make this work, functions must appear prior to line info */
7218334Speter
7318334Speter#define DBX_FUNCTION_FIRST
7418334Speter
7518334Speter/* Generate a blank trailing N_SO to mark the end of the .o file, since
7618334Speter   we can't depend upon the linker to mark .o file boundaries with
7718334Speter   embedded stabs.  */
7818334Speter
7918334Speter#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME)			\
8018334Speter  fprintf (FILE,							\
8118334Speter	   "\t.text\n\t.stabs \"\",%d,0,0,Letext\nLetext:\n", N_SO)
8218334Speter
8318334Speter#undef  ASM_OUTPUT_SOURCE_LINE
84132718Skan#define ASM_OUTPUT_SOURCE_LINE(file, line, counter)	\
85132718Skan  { fprintf (file, ".stabn 68,0,%d,.LM%d-",		\
86132718Skan	     line, counter);				\
8718334Speter    assemble_name (file,				\
8818334Speter		   XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
89132718Skan    fprintf (file, "\n.LM%d:\n", counter); }
9018334Speter
9118334Speter/* Handle #pragma pack and sometimes #pragma weak.  */
9218334Speter
93117395Skan#define HANDLE_SYSV_PRAGMA 1
9418334Speter
95117395Skan/* Some additional command-line options.  */
9618334Speter
9718334Speter#define TARGET_THREADS	(target_flags & MASK_THREADS)
9818334Speter#define MASK_THREADS	0x40000000
9918334Speter
10018334Speter#define TARGET_POSIX	(target_flags & MASK_POSIX)
10118334Speter#define MASK_POSIX	0x20000000
10218334Speter
10318334Speter#define TARGET_SYSTEM_V	(target_flags & MASK_SYSTEM_V)
10418334Speter#define MASK_SYSTEM_V	0x10000000
10518334Speter
10618334Speter#undef SUBTARGET_SWITCHES
10718334Speter#define SUBTARGET_SWITCHES \
10818334Speter    {"threads",		MASK_THREADS},		\
10918334Speter    {"posix",		MASK_POSIX},		\
11018334Speter    {"system-v",	MASK_SYSTEM_V},
11118334Speter
11218334Speter#undef SUBTARGET_OVERRIDE_OPTIONS
11318334Speter#define SUBTARGET_OVERRIDE_OPTIONS \
11418334Speterdo {								\
11518334Speter  if (TARGET_SYSTEM_V && profile_flag)				\
11618334Speter    warning ("-msystem-v and -p are incompatible");		\
11718334Speter  if (TARGET_SYSTEM_V && TARGET_THREADS)			\
11818334Speter    warning ("-msystem-v and -mthreads are incompatible");	\
11918334Speter} while (0)
12018334Speter
12118334Speter/* Since init.o et al put all sorts of stuff into the init section,
122117395Skan   we can't use the standard init section support in crtbegin.o.  */
12318334Speter
12418334Speter#undef INIT_SECTION_ASM_OP
12518334Speter
12618334Speter#undef EXTRA_SECTIONS
127117395Skan#define EXTRA_SECTIONS in_fini
12818334Speter
12918334Speter#undef EXTRA_SECTION_FUNCTIONS
13018334Speter#define EXTRA_SECTION_FUNCTIONS					\
13118334Speter  FINI_SECTION_FUNCTION
13218334Speter
13318334Speter#undef CTORS_SECTION_ASM_OP
13490075Sobrien#define CTORS_SECTION_ASM_OP	"\t.section\t.ctors"
13518334Speter#undef DTORS_SECTION_ASM_OP
13690075Sobrien#define DTORS_SECTION_ASM_OP	"\t.section\t.dtors"
13718334Speter
13818334Speter#undef DO_GLOBAL_CTORS_BODY
13918334Speter#undef DO_GLOBAL_DTORS_BODY
14018334Speter
141117395Skan/* LynxOS doesn't have mcount.  */
14218334Speter#undef FUNCTION_PROFILER
14318334Speter#define FUNCTION_PROFILER(file, profile_label_no)
144