]>
Commit | Line | Data |
---|---|---|
8f3d7f00 RS |
1 | /* Definitions of target machine for GNU compiler, for SPARC running Solaris 2 |
2 | Copyright 1992 Free Software Foundation, Inc. | |
ed1817c6 RK |
3 | |
4 | Written by Ron Guilmette (rfg@netcom.com). | |
5 | Additional changes by David V. Henkel-Wallace (gumby@cygnus.com). | |
4ab76dcd RK |
6 | |
7 | This file is part of GNU CC. | |
8 | ||
9 | GNU CC is free software; you can redistribute it and/or modify | |
10 | it under the terms of the GNU General Public License as published by | |
11 | the Free Software Foundation; either version 2, or (at your option) | |
12 | any later version. | |
13 | ||
14 | GNU CC is distributed in the hope that it will be useful, | |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | GNU General Public License for more details. | |
18 | ||
19 | You should have received a copy of the GNU General Public License | |
20 | along with GNU CC; see the file COPYING. If not, write to | |
c15c9075 RK |
21 | the Free Software Foundation, 59 Temple Place - Suite 330, |
22 | Boston, MA 02111-1307, USA. */ | |
4ab76dcd | 23 | |
8f3d7f00 | 24 | /* Supposedly the same as vanilla sparc svr4, except for the stuff below: */ |
b491172a | 25 | #include "sparc/sysv4.h" |
4ab76dcd | 26 | |
8f3d7f00 RS |
27 | #undef CPP_PREDEFINES |
28 | #define CPP_PREDEFINES \ | |
b88277f9 | 29 | "-Dsun -Dsparc -Dunix -D__svr4__ -D__SVR4 \ |
65c42379 | 30 | -Asystem(unix) -Asystem(svr4) -Acpu(sparc) -Amachine(sparc)\ |
f19c1a78 | 31 | -D__GCC_NEW_VARARGS__" |
8f3d7f00 | 32 | |
8b377b71 RS |
33 | #undef CPP_SPEC |
34 | #define CPP_SPEC "\ | |
d7473723 | 35 | %{compat-bsd:-iwithprefixbefore ucbinclude -I/usr/ucbinclude}\ |
47c95f50 JW |
36 | %{msparclite:-D__sparclite__} %{mv8:-D__sparc_v8__}\ |
37 | %{msupersparc:-D__supersparc__ -D__sparc_v8__}" | |
8b377b71 | 38 | |
8f3d7f00 RS |
39 | /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). |
40 | It's safe to pass -s always, even if -g is not used. */ | |
41 | #undef ASM_SPEC | |
42 | #define ASM_SPEC \ | |
4bdf6e3d JW |
43 | "%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s \ |
44 | %{fpic:-K PIC} %{fPIC:-K PIC}" | |
8f3d7f00 RS |
45 | |
46 | /* However it appears that Solaris 2.0 uses the same reg numbering as | |
47 | the old BSD-style system did. */ | |
48 | ||
49 | #undef DBX_REGISTER_NUMBER | |
50 | /* Same as sparc.h */ | |
51 | #define DBX_REGISTER_NUMBER(REGNO) (REGNO) | |
52 | ||
aad3ab2f JW |
53 | /* We use stabs-in-elf for debugging, because that is what the native |
54 | toolchain uses. */ | |
136bfcb3 | 55 | #undef PREFERRED_DEBUGGING_TYPE |
8f3d7f00 RS |
56 | #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG |
57 | ||
8f3d7f00 RS |
58 | /* The Solaris 2 assembler uses .skip, not .zero, so put this back. */ |
59 | #undef ASM_OUTPUT_SKIP | |
60 | #define ASM_OUTPUT_SKIP(FILE,SIZE) \ | |
61 | fprintf (FILE, "\t.skip %u\n", (SIZE)) | |
62 | ||
63 | #undef ASM_OUTPUT_ALIGNED_LOCAL | |
64 | #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ | |
65 | do { \ | |
66 | fputs ("\t.local\t", (FILE)); \ | |
67 | assemble_name ((FILE), (NAME)); \ | |
68 | putc ('\n', (FILE)); \ | |
69 | ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN); \ | |
70 | } while (0) | |
71 | ||
72 | #undef COMMON_ASM_OP | |
73 | #define COMMON_ASM_OP "\t.common" | |
74 | ||
75 | /* This is how to output a definition of an internal numbered label where | |
76 | PREFIX is the class of label and NUM is the number within the class. */ | |
77 | ||
78 | #undef ASM_OUTPUT_INTERNAL_LABEL | |
79 | #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \ | |
80 | fprintf (FILE, ".L%s%d:\n", PREFIX, NUM) | |
81 | ||
82 | /* This is how to output a reference to an internal numbered label where | |
83 | PREFIX is the class of label and NUM is the number within the class. */ | |
84 | ||
85 | #undef ASM_OUTPUT_INTERNAL_LABELREF | |
86 | #define ASM_OUTPUT_INTERNAL_LABELREF(FILE,PREFIX,NUM) \ | |
87 | fprintf (FILE, ".L%s%d", PREFIX, NUM) | |
88 | ||
89 | /* This is how to store into the string LABEL | |
90 | the symbol_ref name of an internal numbered label where | |
91 | PREFIX is the class of label and NUM is the number within the class. | |
92 | This is suitable for output with `assemble_name'. */ | |
93 | ||
94 | #undef ASM_GENERATE_INTERNAL_LABEL | |
95 | #define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \ | |
96 | sprintf (LABEL, "*.L%s%d", PREFIX, NUM) | |
97 | ||
8f3d7f00 RS |
98 | \f |
99 | /* We don't use the standard svr4 STARTFILE_SPEC because it's wrong for us. | |
100 | We don't use the standard LIB_SPEC only because we don't yet support c++ */ | |
4ab76dcd | 101 | |
8b377b71 | 102 | #undef STARTFILE_SPEC |
8f3d7f00 RS |
103 | #define STARTFILE_SPEC "%{!shared: \ |
104 | %{!symbolic: \ | |
105 | %{pg:crt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}} \ | |
68d69835 JM |
106 | %{pg:gmon.o%s}}} \ |
107 | %{pg:crti.o%s}%{!pg:crti.o%s} \ | |
70ef1c9e | 108 | %{ansi:values-Xc.o%s} \ |
68d69835 | 109 | %{!ansi: \ |
70ef1c9e JW |
110 | %{traditional:values-Xt.o%s} \ |
111 | %{!traditional:values-Xa.o%s}} \ | |
68d69835 | 112 | crtbegin.o%s" |
8f3d7f00 | 113 | |
8b377b71 RS |
114 | /* ??? Note: in order for -compat-bsd to work fully, |
115 | we must somehow arrange to fixincludes /usr/ucbinclude | |
116 | and put the result in $(libsubdir)/ucbinclude. */ | |
117 | ||
118 | #undef LIB_SPEC | |
8f3d7f00 | 119 | #define LIB_SPEC \ |
68d69835 JM |
120 | "%{compat-bsd:-lucb -lsocket -lnsl -lelf -laio} %{!shared:%{!symbolic:-lc}}" |
121 | ||
122 | #undef ENDFILE_SPEC | |
123 | #define ENDFILE_SPEC "crtend.o%s %{pg:crtn.o%s}%{!pg:crtn.o%s}" | |
6f13015b RS |
124 | |
125 | /* This should be the same as in svr4.h, except with -R added. */ | |
126 | #undef LINK_SPEC | |
8b377b71 RS |
127 | #define LINK_SPEC \ |
128 | "%{h*} %{V} %{v:%{!V:-V}} \ | |
129 | %{b} %{Wl,*:%*} \ | |
130 | %{static:-dn -Bstatic} \ | |
f6b54ae8 JM |
131 | %{shared:-G -dy -z text %{!h*:%{o*:-h %*}}} \ |
132 | %{symbolic:-Bsymbolic -G -dy -z text %{!h*:%{o*:-h %*}}} \ | |
8b377b71 RS |
133 | %{G:-G} \ |
134 | %{YP,*} \ | |
f6b54ae8 | 135 | %{R*} %{!static:%{!R*:%{L*:-R %*}}} \ |
8b377b71 RS |
136 | %{compat-bsd: \ |
137 | %{!YP,*:%{p:-Y P,/usr/ucblib:/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \ | |
138 | %{!p:-Y P,/usr/ucblib:/usr/ccs/lib:/usr/lib}} \ | |
139 | -R /usr/ucblib} \ | |
140 | %{!compat-bsd: \ | |
141 | %{!YP,*:%{p:-Y P,/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \ | |
142 | %{!p:-Y P,/usr/ccs/lib:/usr/lib}}} \ | |
143 | %{Qy:} %{!Qn:-Qy}" | |
6f13015b RS |
144 | |
145 | /* This defines which switch letters take arguments. | |
146 | It is as in svr4.h but with -R added. */ | |
147 | ||
148 | #undef SWITCH_TAKES_ARG | |
149 | #define SWITCH_TAKES_ARG(CHAR) \ | |
150 | ( (CHAR) == 'D' \ | |
151 | || (CHAR) == 'U' \ | |
152 | || (CHAR) == 'o' \ | |
153 | || (CHAR) == 'e' \ | |
154 | || (CHAR) == 'u' \ | |
155 | || (CHAR) == 'I' \ | |
156 | || (CHAR) == 'm' \ | |
157 | || (CHAR) == 'L' \ | |
158 | || (CHAR) == 'R' \ | |
159 | || (CHAR) == 'A' \ | |
160 | || (CHAR) == 'h' \ | |
161 | || (CHAR) == 'z') | |
05710c13 JW |
162 | \f |
163 | /* ??? This does not work in SunOS 4.x, so it is not enabled in sparc.h. | |
164 | Instead, it is enabled here, because it does work under Solaris. */ | |
165 | /* Define for support of TFmode long double and REAL_ARITHMETIC. | |
166 | Sparc ABI says that long double is 4 words. */ | |
167 | #define LONG_DOUBLE_TYPE_SIZE 128 |