0
|
1 /* Definitions of target machine for GNU compiler. IRIX version 6.
|
|
2 Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004,
|
|
3 2005, 2006, 2007, 2008
|
|
4 Free Software Foundation, Inc.
|
|
5
|
|
6 This file is part of GCC.
|
|
7
|
|
8 GCC is free software; you can redistribute it and/or modify
|
|
9 it under the terms of the GNU General Public License as published by
|
|
10 the Free Software Foundation; either version 3, or (at your option)
|
|
11 any later version.
|
|
12
|
|
13 GCC is distributed in the hope that it will be useful,
|
|
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16 GNU General Public License for more details.
|
|
17
|
|
18 You should have received a copy of the GNU General Public License
|
|
19 along with GCC; see the file COPYING3. If not see
|
|
20 <http://www.gnu.org/licenses/>. */
|
|
21
|
|
22 /* Allow some special handling for IRIX 6. */
|
|
23 #undef TARGET_IRIX6
|
|
24 #define TARGET_IRIX6 1
|
|
25
|
|
26 /* Default to -mabi=n32 and -mips3. */
|
|
27 #undef MULTILIB_DEFAULTS
|
|
28 #define MULTILIB_DEFAULTS { "mabi=n32" }
|
|
29
|
|
30 /* Force the default ABI onto the command line in order to make the specs
|
|
31 easier to write. Default to the mips2 ISA for the O32 ABI. */
|
|
32 #undef DRIVER_SELF_SPECS
|
|
33 #define DRIVER_SELF_SPECS \
|
|
34 "%{!mabi=*: -mabi=n32}", \
|
|
35 "%{mabi=32: %{!mips*: %{!march*: -mips2}}}", \
|
|
36 /* Configuration-independent MIPS rules. */ \
|
|
37 BASE_DRIVER_SELF_SPECS
|
|
38
|
|
39 /* Force the generation of dwarf .debug_frame sections even if not
|
|
40 compiling -g. This guarantees that we can unwind the stack. */
|
|
41 #define DWARF2_FRAME_INFO 1
|
|
42
|
|
43 /* The system unwinder in libexc requires a specific dwarf return address
|
|
44 column to work. */
|
|
45 #undef DWARF_FRAME_RETURN_COLUMN
|
|
46 #define DWARF_FRAME_RETURN_COLUMN (FP_REG_LAST + 1)
|
|
47
|
|
48 #undef MACHINE_TYPE
|
|
49 #define MACHINE_TYPE "SGI running IRIX 6.x"
|
|
50
|
|
51 #ifdef IRIX_USING_GNU_LD
|
|
52 #define IRIX_SUBTARGET_LINK_SPEC \
|
|
53 "%{mabi=32: -melf32bsmip}%{mabi=n32: -melf32bmipn32}%{mabi=64: -melf64bmip}"
|
|
54 #else
|
|
55 /* Explicitly hide crt symbols that would normally be marked with
|
|
56 a "hidden" visibility attribute.
|
|
57
|
|
58 We have traditionally disabled this attribute when using the
|
|
59 native linker because the native linker's visibility support is
|
|
60 not fully-compatible with the GNU linker's. In particular, the
|
|
61 native linker does not pull in archive objects purely to resolve
|
|
62 references to the object's hidden symbols, whereas the GNU
|
|
63 linker does.
|
|
64
|
|
65 The gcc build system currently hides symbols in some static
|
|
66 libraries (typically libgcov.a or libgcc.a) whenever visibility
|
|
67 attributes are supported. On targets with GNU semantics, this
|
|
68 makes sure that uses of libx.so symbols in one dynamic object are
|
|
69 not resolved to libx.a symbols in another dynamic object. But
|
|
70 on targets with IRIX semantics, hiding the symbols prevents the
|
|
71 static archive from working at all.
|
|
72
|
|
73 It would probably be better to enable visiblity attributes for
|
|
74 IRIX ld and disable the static archives versioning. It shouldn't
|
|
75 make anything worse, since libx.a symbols are global by default
|
|
76 anyway. However, no-one has volunteered to do this yet. */
|
|
77
|
|
78 #define IRIX_SUBTARGET_LINK_SPEC \
|
|
79 "%{w} -_SYSTYPE_SVR4 -woff 131 \
|
|
80 %{shared:-hidden_symbol __dso_handle} \
|
|
81 %{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64}%{!mabi*: -n32}"
|
|
82 #endif
|
|
83
|
|
84 /* Profiling is supported via libprof1.a not -lc_p as in IRIX 3. */
|
|
85 #undef STARTFILE_SPEC
|
|
86 #define STARTFILE_SPEC \
|
|
87 "%{!shared: \
|
|
88 %{mabi=32:%{pg:gcrt1.o%s} \
|
|
89 %{!pg:%{p:mcrt1.o%s libprof1.a%s}%{!p:crt1.o%s}}} \
|
|
90 %{mabi=n32: \
|
|
91 %{mips4:%{pg:/usr/lib32/mips4/gcrt1.o%s} \
|
|
92 %{!pg:%{p:/usr/lib32/mips4/mcrt1.o%s /usr/lib32/mips4/libprof1.a%s} \
|
|
93 %{!p:/usr/lib32/mips4/crt1.o%s}}} \
|
|
94 %{!mips4:%{pg:/usr/lib32/mips3/gcrt1.o%s} \
|
|
95 %{!pg:%{p:/usr/lib32/mips3/mcrt1.o%s /usr/lib32/mips3/libprof1.a%s} \
|
|
96 %{!p:/usr/lib32/mips3/crt1.o%s}}}} \
|
|
97 %{mabi=64: \
|
|
98 %{mips4:%{pg:/usr/lib64/mips4/gcrt1.o} \
|
|
99 %{!pg:%{p:/usr/lib64/mips4/mcrt1.o /usr/lib64/mips4/libprof1.a} \
|
|
100 %{!p:/usr/lib64/mips4/crt1.o}}} \
|
|
101 %{!mips4:%{pg:/usr/lib64/mips3/gcrt1.o} \
|
|
102 %{!pg:%{p:/usr/lib64/mips3/mcrt1.o /usr/lib64/mips3/libprof1.a} \
|
|
103 %{!p:/usr/lib64/mips3/crt1.o}}}}} \
|
|
104 irix-crti.o%s crtbegin.o%s"
|
|
105
|
|
106 #ifdef IRIX_USING_GNU_LD
|
|
107 #define SUBTARGET_DONT_WARN_UNUSED_SPEC ""
|
|
108 #define SUBTARGET_WARN_UNUSED_SPEC ""
|
|
109 #else
|
|
110 #define SUBTARGET_DONT_WARN_UNUSED_SPEC "-dont_warn_unused"
|
|
111 #define SUBTARGET_WARN_UNUSED_SPEC "-warn_unused"
|
|
112 #endif
|
|
113
|
|
114 #undef LIB_SPEC
|
|
115 #define LIB_SPEC \
|
|
116 "%{mabi=n32: %{mips4:-L/usr/lib32/mips4} %{!mips4:-L/usr/lib32/mips3} \
|
|
117 -L/usr/lib32} \
|
|
118 %{mabi=64: %{mips4:-L/usr/lib64/mips4} %{!mips4:-L/usr/lib64/mips3} \
|
|
119 -L/usr/lib64} \
|
|
120 %{!shared:" \
|
|
121 SUBTARGET_DONT_WARN_UNUSED_SPEC \
|
|
122 " %{pthread:-lpthread} %{p:libprof1.a%s}%{pg:libprof1.a%s} -lc " \
|
|
123 SUBTARGET_WARN_UNUSED_SPEC "}"
|
|
124
|
|
125 /* Avoid getting two warnings for libgcc.a everytime we link. libgcc.a
|
|
126 contains references to copysignl, so link with libm to resolve them. */
|
|
127 #undef LIBGCC_SPEC
|
|
128 #define LIBGCC_SPEC \
|
|
129 SUBTARGET_DONT_WARN_UNUSED_SPEC " -lgcc -lm " SUBTARGET_WARN_UNUSED_SPEC
|
|
130
|
|
131 #undef ENDFILE_SPEC
|
|
132 #define ENDFILE_SPEC \
|
|
133 "crtend.o%s irix-crtn.o%s \
|
|
134 %{!shared: \
|
|
135 %{mabi=32:crtn.o%s}\
|
|
136 %{mabi=n32:%{mips4:/usr/lib32/mips4/crtn.o%s}\
|
|
137 %{!mips4:/usr/lib32/mips3/crtn.o%s}}\
|
|
138 %{mabi=64:%{mips4:/usr/lib64/mips4/crtn.o%s}\
|
|
139 %{!mips4:/usr/lib64/mips3/crtn.o%s}}}"
|
|
140
|
|
141 #define MIPS_TFMODE_FORMAT mips_extended_format
|
|
142
|
|
143 #undef SUBTARGET_CPP_SPEC
|
|
144 #define SUBTARGET_CPP_SPEC "%{pthread:-D_REENTRANT}"
|
|
145
|