(STARTFILE_SPEC): Handle -p and -pg outermost.
[platform/upstream/gcc.git] / gcc / config / i386 / linux.h
1 /* Definitions for Intel 386 running Linux
2  * Copyright (C) 1992 Free Software Foundation, Inc.
3  *
4  * Written by H.J. Lu (hlu@eecs.wsu.edu)
5  *
6  * Linux is a POSIX.1 compatible UNIX clone for i386, which uses GNU
7  * stuffs as the native stuffs.
8  */
9
10 #if 0   /* The FSF has fixed the known bugs. But ....... */
11
12 /* Linux has a hacked gas 1.38.1, which can handle repz, repnz
13  * and fildll.
14  */
15
16 #define GOOD_GAS
17
18 #endif
19
20 /* This is tested by i386/gas.h.  */
21 #define YES_UNDERSCORES
22
23 #ifndef LINUX_ELF
24 #include "i386/gstabs.h"
25 #endif
26
27 /* Specify predefined symbols in preprocessor.  */
28
29 #undef CPP_PREDEFINES
30 #define CPP_PREDEFINES "-Dunix -Di386 -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(i386) -Amachine(i386)"
31
32 #undef CPP_SPEC
33 #if TARGET_CPU_DEFAULT == 2
34 #define CPP_SPEC "%{!m386:-D__i486__} %{posix:-D_POSIX_SOURCE}"
35 #else
36 #define CPP_SPEC "%{m486:-D__i486__} %{posix:-D_POSIX_SOURCE}"
37 #endif
38
39 #undef SIZE_TYPE
40 #define SIZE_TYPE "unsigned int"
41
42 #undef PTRDIFF_TYPE
43 #define PTRDIFF_TYPE "int"
44
45 #undef WCHAR_TYPE
46 #define WCHAR_TYPE "long int"
47
48 #undef WCHAR_TYPE_SIZE
49 #define WCHAR_TYPE_SIZE BITS_PER_WORD
50
51 #undef HAVE_ATEXIT
52 #define HAVE_ATEXIT
53
54 /* Linux uses ctype from glibc.a. I am not sure how complete it is.
55  * For now, we play safe. It may change later.
56  */
57 #if 0
58 #undef MULTIBYTE_CHARS
59 #define MULTIBYTE_CHARS 1
60 #endif
61
62 #undef LIB_SPEC
63 #define LIB_SPEC "%{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} %{!p:%{!pg:%{!g*:-lc} %{g*:-lg}}}"
64
65
66 #undef STARTFILE_SPEC
67 #undef GPLUSPLUS_INCLUDE_DIR
68
69 #ifdef CROSS_COMPILE
70
71 /*
72  * For cross-compile, we just need to search `$(tooldir)/lib'
73  */
74
75 #define STARTFILE_SPEC  \
76   "%{pg:gcrt0.o%s -static} %{!pg:%{p:gcrt0.o%s -static} %{!p:crt0.o%s %{g*:-static} %{!static:%{nojump:-nojump}} %{static:-static}}} -L"TOOLDIR"/lib"
77
78 /*
79  *The cross-compile uses this.
80  */
81 #define GPLUSPLUS_INCLUDE_DIR TOOLDIR"/g++-include"
82
83 #else
84
85 #define STARTFILE_SPEC  \
86   "%{pg:gcrt0.o%s -static} %{!pg:%{p:gcrt0.o%s -static} %{!p:crt0.o%s %{g*:-static}%{!static:%{nojump:-nojump}} %{static:-static}}}"
87
88 /*
89  *The native Linux system uses this.
90  */
91 #define GPLUSPLUS_INCLUDE_DIR "/usr/g++-include"
92
93 #endif
94 \f
95 /* There are conflicting reports about whether this system uses
96    a different assembler syntax.  wilson@cygnus.com says # is right.  */
97 #undef COMMENT_BEGIN
98 #define COMMENT_BEGIN "#"
99
100 #undef ASM_APP_ON
101 #define ASM_APP_ON "#APP\n"
102
103 #undef ASM_APP_OFF
104 #define ASM_APP_OFF "#NO_APP\n"
105 \f
106 /* Don't default to pcc-struct-return, because gcc is the only compiler, and
107    we want to retain compatibility with older gcc versions.  */
108 #define DEFAULT_PCC_STRUCT_RETURN 0
109
110 /* We need that too. */
111 #define HANDLE_SYSV_PRAGMA
112
113 #undef LINK_SPEC
114
115 /* We want to pass -v to linker */
116 #if TARGET_CPU_DEFAULT == 2
117 #define LINK_SPEC       "%{v:-dll-verbose} %{!m386:-m486}"
118 #else
119 #define LINK_SPEC       "%{v:-dll-verbose} %{m486:-m486}"
120 #endif