OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [config/] [sparc/] [linux.h] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 12 jlechner
/* Definitions for SPARC running Linux-based GNU systems with ELF.
2
   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005
3
   Free Software Foundation, Inc.
4
   Contributed by Eddie C. Dost (ecd@skynet.be)
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 2, 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 COPYING.  If not, write to
20
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
21
Boston, MA 02110-1301, USA.  */
22
 
23
#define TARGET_OS_CPP_BUILTINS()                \
24
  do                                            \
25
    {                                           \
26
        builtin_define_std ("unix");            \
27
        builtin_define_std ("linux");           \
28
        builtin_define ("__gnu_linux__");       \
29
        builtin_assert ("system=linux");        \
30
        builtin_assert ("system=unix");         \
31
        builtin_assert ("system=posix");        \
32
        if (flag_pic)                           \
33
          {                                     \
34
                builtin_define ("__PIC__");     \
35
                builtin_define ("__pic__");     \
36
          }                                     \
37
    }                                           \
38
  while (0)
39
 
40
/* Don't assume anything about the header files.  */
41
#define NO_IMPLICIT_EXTERN_C
42
 
43
#undef MD_EXEC_PREFIX
44
#undef MD_STARTFILE_PREFIX
45
 
46
/* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
47
   the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
48
   provides part of the support for getting C++ file-scope static
49
   object constructed before entering `main'.  */
50
 
51
#undef  STARTFILE_SPEC
52
#if defined HAVE_LD_PIE
53
#define STARTFILE_SPEC \
54
  "%{!shared: %{pg|p:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}\
55
   crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
56
#else
57
#define STARTFILE_SPEC \
58
  "%{!shared: %{pg|p:gcrt1.o%s;:crt1.o%s}}\
59
   crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
60
#endif
61
 
62
/* Provide a ENDFILE_SPEC appropriate for GNU/Linux.  Here we tack on
63
   the GNU/Linux magical crtend.o file (see crtstuff.c) which
64
   provides part of the support for getting C++ file-scope static
65
   object constructed before entering `main', followed by a normal
66
   GNU/Linux "finalizer" file, `crtn.o'.  */
67
 
68
#undef  ENDFILE_SPEC
69
#define ENDFILE_SPEC \
70
  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
71
   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
72
 
73
/* This is for -profile to use -lc_p instead of -lc.  */
74
#undef  CC1_SPEC
75
#define CC1_SPEC "%{profile:-p} \
76
%{sun4:} %{target:} \
77
%{mcypress:-mcpu=cypress} \
78
%{msparclite:-mcpu=sparclite} %{mf930:-mcpu=f930} %{mf934:-mcpu=f934} \
79
%{mv8:-mcpu=v8} %{msupersparc:-mcpu=supersparc} \
80
"
81
 
82
/* The GNU C++ standard library requires that these macros be defined.  */
83
#undef CPLUSPLUS_CPP_SPEC
84
#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
85
 
86
#undef TARGET_VERSION
87
#define TARGET_VERSION fprintf (stderr, " (sparc GNU/Linux with ELF)");
88
 
89
#undef SIZE_TYPE
90
#define SIZE_TYPE "unsigned int"
91
 
92
#undef PTRDIFF_TYPE
93
#define PTRDIFF_TYPE "int"
94
 
95
#undef WCHAR_TYPE
96
#define WCHAR_TYPE "int"
97
 
98
#undef WCHAR_TYPE_SIZE
99
#define WCHAR_TYPE_SIZE 32
100
 
101
#undef CPP_SUBTARGET_SPEC
102
#define CPP_SUBTARGET_SPEC \
103
"%{posix:-D_POSIX_SOURCE} \
104
%{pthread:-D_REENTRANT} %{mlong-double-128:-D__LONG_DOUBLE_128__}"
105
 
106
#undef LIB_SPEC
107
#define LIB_SPEC \
108
  "%{pthread:-lpthread} \
109
   %{shared:-lc} \
110
   %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}"
111
 
112
/* Provide a LINK_SPEC appropriate for GNU/Linux.  Here we provide support
113
   for the special GCC options -static and -shared, which allow us to
114
   link things in one of these three modes by applying the appropriate
115
   combinations of options at link-time. We like to support here for
116
   as many of the other GNU linker options as possible. But I don't
117
   have the time to search for those flags. I am sure how to add
118
   support for -soname shared_object_name. H.J.
119
 
120
   I took out %{v:%{!V:-V}}. It is too much :-(. They can use
121
   -Wl,-V.
122
 
123
   When the -shared link option is used a final link is not being
124
   done.  */
125
 
126
/* If ELF is the default format, we should not use /lib/elf.  */
127
 
128
#undef  LINK_SPEC
129
#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
130
  %{!mno-relax:%{!r:-relax}} \
131
  %{!shared: \
132
    %{!ibcs: \
133
      %{!static: \
134
        %{rdynamic:-export-dynamic} \
135
        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
136
        %{static:-static}}}"
137
 
138
/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
139
   It's safe to pass -s always, even if -g is not used.  */
140
#undef ASM_SPEC
141
#define ASM_SPEC \
142
  "%{V} %{v:%{!V:-V}} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s \
143
   %{fpic|fPIC|fpie|fPIE:-K PIC} %(asm_cpu) %(asm_relax)"
144
 
145
/* Same as sparc.h */
146
#undef DBX_REGISTER_NUMBER
147
#define DBX_REGISTER_NUMBER(REGNO) (REGNO)
148
 
149
#undef ASM_OUTPUT_ALIGNED_LOCAL
150
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)               \
151
do {                                                                    \
152
  fputs ("\t.local\t", (FILE));         \
153
  assemble_name ((FILE), (NAME));                                       \
154
  putc ('\n', (FILE));                                                  \
155
  ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN);                  \
156
} while (0)
157
 
158
#undef COMMON_ASM_OP
159
#define COMMON_ASM_OP "\t.common\t"
160
 
161
#undef  LOCAL_LABEL_PREFIX
162
#define LOCAL_LABEL_PREFIX  "."
163
 
164
/* This is how to store into the string LABEL
165
   the symbol_ref name of an internal numbered label where
166
   PREFIX is the class of label and NUM is the number within the class.
167
   This is suitable for output with `assemble_name'.  */
168
 
169
#undef  ASM_GENERATE_INTERNAL_LABEL
170
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM)   \
171
  sprintf (LABEL, "*.L%s%ld", PREFIX, (long)(NUM))
172
 
173
 
174
/* Define for support of TFmode long double.
175
   SPARC ABI says that long double is 4 words.  */
176
#define LONG_DOUBLE_TYPE_SIZE (TARGET_LONG_DOUBLE_128 ? 128 : 64)
177
 
178
/* Define this to set long double type size to use in libgcc2.c, which can
179
   not depend on target_flags.  */
180
#ifdef __LONG_DOUBLE_128__
181
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 128
182
#else
183
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64
184
#endif
185
 
186
#undef DITF_CONVERSION_LIBFUNCS
187
#define DITF_CONVERSION_LIBFUNCS 1
188
 
189
#if defined(HAVE_LD_EH_FRAME_HDR)
190
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
191
#endif
192
 
193
#ifdef HAVE_AS_TLS
194
#undef TARGET_SUN_TLS
195
#undef TARGET_GNU_TLS
196
#define TARGET_SUN_TLS 0
197
#define TARGET_GNU_TLS 1
198
#endif
199
 
200
/* Don't be different from other Linux platforms in this regard.  */
201
#define HANDLE_PRAGMA_PACK_PUSH_POP
202
 
203
/* We use GNU ld so undefine this so that attribute((init_priority)) works.  */
204
#undef CTORS_SECTION_ASM_OP
205
#undef DTORS_SECTION_ASM_OP
206
 
207
/* Determine whether the entire c99 runtime is present in the
208
   runtime library.  */
209
#define TARGET_C99_FUNCTIONS 1
210
 
211
#define TARGET_POSIX_IO
212
 
213
#undef LINK_GCC_C_SEQUENCE_SPEC
214
#define LINK_GCC_C_SEQUENCE_SPEC \
215
  "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
216
 
217
/* Use --as-needed -lgcc_s for eh support.  */
218
#ifdef HAVE_LD_AS_NEEDED
219
#define USE_LD_AS_NEEDED 1
220
#endif
221
 
222
#define MD_UNWIND_SUPPORT "config/sparc/linux-unwind.h"
223
 
224
/* Linux currently uses RMO in uniprocessor mode, which is equivalent to
225
   TMO, and TMO in multiprocessor mode.  But they reserve the right to
226
   change their minds.  */
227
#undef SPARC_RELAXED_ORDERING
228
#define SPARC_RELAXED_ORDERING true
229
 
230
#undef NEED_INDICATE_EXEC_STACK
231
#define NEED_INDICATE_EXEC_STACK 1
232
 
233
#ifdef TARGET_LIBC_PROVIDES_SSP
234
/* sparc glibc provides __stack_chk_guard in [%g7 + 0x14].  */
235
#define TARGET_THREAD_SSP_OFFSET        0x14
236
#endif
237
 
238
/* Define if long doubles should be mangled as 'g'.  */
239
#define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.