OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [config/] [pa/] [pa64-hpux.h] - Blame information for rev 338

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 282 jeremybenn
/* Definitions of target machine for GNU compiler, for HPs running
2
   HPUX using the 64bit runtime model.
3
   Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 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
/* We can debug dynamically linked executables on hpux11; we also
23
   want dereferencing of a NULL pointer to cause a SEGV.  Do not move
24
   the "+Accept TypeMismatch" switch.  We check for it in collect2
25
   to determine which init/fini is needed.  */
26
#undef LINK_SPEC
27
#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD)
28
#define LINK_SPEC \
29
  "%{!shared:%{p:-L/lib/pa20_64/libp -L/usr/lib/pa20_64/libp %{!static:\
30
     %nWarning: consider linking with `-static' as system libraries with\n\
31
     %n  profiling support are only provided in archive format}}}\
32
   %{!shared:%{pg:-L/lib/pa20_64/libp -L/usr/lib/pa20_64/libp %{!static:\
33
     %nWarning: consider linking with `-static' as system libraries with\n\
34
     %n  profiling support are only provided in archive format}}}\
35
   %{!shared:%{!static:%{rdynamic:-E}}}\
36
   %{mhp-ld:+Accept TypeMismatch -z} %{mlinker-opt:-O}\
37
   %{!shared:-u main %{!nostdlib:%{!nodefaultlibs:-u __cxa_finalize}}}\
38
   %{static:-a archive} %{shared:%{mhp-ld:-b}%{!mhp-ld:-shared}}"
39
#else
40
#define LINK_SPEC \
41
  "%{!shared:%{p:-L/lib/pa20_64/libp -L/usr/lib/pa20_64/libp %{!static:\
42
     %nWarning: consider linking with `-static' as system libraries with\n\
43
     %n  profiling support are only provided in archive format}}}\
44
   %{!shared:%{pg:-L/lib/pa20_64/libp -L/usr/lib/pa20_64/libp %{!static:\
45
     %nWarning: consider linking with `-static' as system libraries with\n\
46
     %n  profiling support are only provided in archive format}}}\
47
   %{!shared:%{!static:%{rdynamic:-E}}}\
48
   %{!mgnu-ld:+Accept TypeMismatch -z} %{mlinker-opt:-O}\
49
   %{!shared:-u main %{!nostdlib:%{!nodefaultlibs:-u __cxa_finalize}}}\
50
   %{static:-a archive} %{shared:%{mgnu-ld:-shared}%{!mgnu-ld:-b}}"
51
#endif
52
 
53
/* Profiling support is only provided in libc.a.  However, libprof and
54
   libgprof are only available in shared form on HP-UX 11.00.  We use
55
   the shared form if we are using the GNU linker or an archive form
56
   isn't available.  We also usually need to link with libdld and it's
57
   only available in shared form.  */
58
#undef LIB_SPEC
59
#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD)
60
#define LIB_SPEC \
61
  "%{!shared:\
62
     %{!p:%{!pg:%{static|mt|pthread:%{fopenmp:%{static:-a shared} -lrt\
63
                  %{static:-a archive}} -lpthread} -lc\
64
            %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
65
     %{p:%{!pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\
66
           -lprof %{static:-a archive}\
67
           %{static|mt|pthread:%{fopenmp:%{static:-a shared} -lrt\
68
             %{static:-a archive}} -lpthread} -lc\
69
           %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
70
     %{pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\
71
       -lgprof %{static:-a archive}\
72
       %{static|mt|pthread:%{fopenmp:%{static:-a shared} -lrt\
73
         %{static:-a archive}} -lpthread} -lc\
74
       %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
75
   %{shared:%{mt|pthread:-lpthread}}"
76
#else
77
#define LIB_SPEC \
78
  "%{!shared:\
79
     %{!p:%{!pg:%{static|mt|pthread:%{fopenmp:%{static:-a shared} -lrt\
80
                  %{static:-a archive}} -lpthread} -lc\
81
            %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
82
     %{p:%{!pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\
83
           -lprof %{static:-a archive}\
84
           %{static|mt|pthread:%{fopenmp:%{static:-a shared} -lrt\
85
             %{static:-a archive}} -lpthread} -lc\
86
           %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
87
     %{pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\
88
       -lgprof %{static:-a archive}\
89
       %{static|mt|pthread:%{fopenmp:%{static:-a shared} -lrt\
90
         %{static:-a archive}} -lpthread} -lc\
91
       %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
92
   %{shared:%{mt|pthread:-lpthread}}"
93
#endif
94
 
95
/* The libgcc_stub.a and milli.a libraries need to come last.  */
96
#undef LINK_GCC_C_SEQUENCE_SPEC
97
#define LINK_GCC_C_SEQUENCE_SPEC "\
98
  %G %L %G %{!nostdlib:%{!nodefaultlibs:%{!shared:-lgcc_stub}\
99
  milli.a%s}}"
100
 
101
/* Under hpux11, the normal location of the `ld' and `as' programs is the
102
   /usr/ccs/bin directory.  */
103
 
104
#ifndef CROSS_DIRECTORY_STRUCTURE
105
#undef MD_EXEC_PREFIX
106
#define MD_EXEC_PREFIX "/usr/ccs/bin"
107
#endif
108
 
109
/* Default prefixes.  */
110
 
111
#undef STANDARD_STARTFILE_PREFIX_1
112
#define STANDARD_STARTFILE_PREFIX_1 "/lib/pa20_64/"
113
 
114
#undef STANDARD_STARTFILE_PREFIX_2
115
#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/pa20_64/"
116
 
117
/* Under hpux11 the normal location of the various pa20_64 *crt*.o files
118
   is the /usr/ccs/lib/pa20_64 directory.  Some files may also be in the
119
   /opt/langtools/lib/pa20_64 directory.  */
120
 
121
#ifndef CROSS_DIRECTORY_STRUCTURE
122
#undef MD_STARTFILE_PREFIX
123
#define MD_STARTFILE_PREFIX "/usr/ccs/lib/pa20_64/"
124
#endif
125
 
126
#ifndef CROSS_DIRECTORY_STRUCTURE
127
#undef MD_STARTFILE_PREFIX_1
128
#define MD_STARTFILE_PREFIX_1 "/opt/langtools/lib/pa20_64/"
129
#endif
130
 
131
/* This macro specifies the biggest alignment supported by the object
132
   file format of this machine.
133
 
134
   The .align directive in the HP assembler allows alignments up to
135
   4096 bytes.  However, the maximum alignment of a global common symbol
136
   is 16 bytes using HP ld.  Unfortunately, this macro doesn't provide
137
   a method to check for common symbols.  */
138
#undef MAX_OFILE_ALIGNMENT
139
#define MAX_OFILE_ALIGNMENT 32768
140
 
141
/* Due to limitations in the target structure, it isn't currently possible
142
   to dynamically switch between the GNU and HP assemblers.  */
143
#undef TARGET_GAS
144
 
145
/* Configure selects the standard ELFOS defines for use with GAS.  */
146
#ifdef USING_ELFOS_H
147
 
148
/* We are using GAS.  */
149
#define TARGET_GAS 1
150
 
151
#undef TARGET_ASM_FILE_START
152
#define TARGET_ASM_FILE_START pa_hpux64_gas_file_start
153
 
154
/* This is how we output a null terminated string.  */
155
#undef STRING_ASM_OP
156
#define STRING_ASM_OP   "\t.stringz\t"
157
 
158
#define TEXT_SECTION_ASM_OP     "\t.text"
159
#define DATA_SECTION_ASM_OP     "\t.data"
160
#define BSS_SECTION_ASM_OP      "\t.section\t.bss"
161
 
162
#define JCR_SECTION_NAME        ".jcr"
163
 
164
#define HP_INIT_ARRAY_SECTION_ASM_OP    "\t.section\t.init"
165
#define GNU_INIT_ARRAY_SECTION_ASM_OP   "\t.section\t.init_array"
166
#define HP_FINI_ARRAY_SECTION_ASM_OP    "\t.section\t.fini"
167
#define GNU_FINI_ARRAY_SECTION_ASM_OP   "\t.section\t.fini_array"
168
 
169
/* We need to override the following two macros defined in elfos.h since
170
   the .comm directive has a different syntax and it can't be used for
171
   local common symbols.  */
172
#undef ASM_OUTPUT_ALIGNED_COMMON
173
#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)              \
174
  pa_asm_output_aligned_common (FILE, NAME, SIZE, ALIGN)
175
 
176
#undef ASM_OUTPUT_ALIGNED_LOCAL
177
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)               \
178
  pa_asm_output_aligned_local (FILE, NAME, SIZE, ALIGN)
179
 
180
/* The define in pa.h doesn't work with the alias attribute.  The
181
   default is ok with the following define for GLOBAL_ASM_OP.  */
182
#undef TARGET_ASM_GLOBALIZE_LABEL
183
 
184
/* This is how we globalize a label.  */
185
#define GLOBAL_ASM_OP   "\t.globl\t"
186
 
187
/* Hacked version from defaults.h that uses assemble_name_raw
188
   instead of assemble_name.  A symbol in a type directive that
189
   isn't otherwise referenced doesn't cause the symbol to be
190
   placed in the symbol table of the assembled object.  */
191
#undef ASM_OUTPUT_TYPE_DIRECTIVE
192
#define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE)           \
193
do {                                                            \
194
  fputs (TYPE_ASM_OP, STREAM);                                  \
195
  assemble_name_raw (STREAM, NAME);                             \
196
  fputs (", ", STREAM);                                         \
197
  fprintf (STREAM, TYPE_OPERAND_FMT, TYPE);                     \
198
  putc ('\n', STREAM);                                          \
199
} while (0)
200
 
201
/* Hacked version from elfos.h that doesn't output a label.  */
202
#undef ASM_DECLARE_FUNCTION_NAME
203
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)             \
204
do {                                                            \
205
  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function");           \
206
  ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));                \
207
} while (0)
208
 
209
/* The type of external references must be set correctly for the
210
   dynamic loader to work correctly.  This is equivalent to the
211
   HP assembler's .IMPORT directive but relates more directly to
212
   ELF object file types.  */
213
#undef ASM_OUTPUT_EXTERNAL
214
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME)                   \
215
  pa_hpux_asm_output_external ((FILE), (DECL), (NAME))
216
#define ASM_OUTPUT_EXTERNAL_REAL(FILE, DECL, NAME)              \
217
do {                                                            \
218
  if (FUNCTION_NAME_P (NAME))                                   \
219
    ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function");         \
220
  else                                                          \
221
    ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");           \
222
  default_elf_asm_output_external (FILE, DECL, NAME);           \
223
} while (0)
224
 
225
/* We need set the type for external libcalls.  Also note that not all
226
   libcall names are passed to targetm.encode_section_info (e.g., __main).
227
   Thus, we also have to do the section encoding if it hasn't been done
228
   already.  */
229
#undef ASM_OUTPUT_EXTERNAL_LIBCALL
230
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN)                  \
231
do {                                                            \
232
  if (!FUNCTION_NAME_P (XSTR (FUN, 0)))                         \
233
    hppa_encode_label (FUN);                                    \
234
  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, XSTR (FUN, 0), "function");  \
235
} while (0)
236
 
237
/* We need to use the HP style for internal labels.  */
238
#undef ASM_GENERATE_INTERNAL_LABEL
239
#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \
240
  sprintf (LABEL, "*%c$%s%04ld", (PREFIX)[0], (PREFIX) + 1, (long)(NUM))
241
 
242
#else /* USING_ELFOS_H */
243
 
244
/* We are not using GAS.  */
245
#define TARGET_GAS 0
246
 
247
/* HPUX 11 has the "new" HP assembler.  It's still lousy, but it's a whole
248
   lot better than the assembler shipped with older versions of hpux.
249
   However, it doesn't support weak symbols and is a bad fit with ELF.  */
250
#undef NEW_HP_ASSEMBLER
251
#define NEW_HP_ASSEMBLER 1
252
 
253
/* It looks like DWARF2 will be the easiest debug format to handle on this
254
   platform.  */
255
#define DWARF2_DEBUGGING_INFO 1
256
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
257
 
258
/* This target uses the ELF object file format.  */
259
#define OBJECT_FORMAT_ELF
260
 
261
#undef TARGET_ASM_FILE_START
262
#define TARGET_ASM_FILE_START pa_hpux64_hpas_file_start
263
 
264
#undef TEXT_SECTION_ASM_OP
265
#define TEXT_SECTION_ASM_OP             "\t.SUBSPA $CODE$\n"
266
#undef READONLY_DATA_SECTION_ASM_OP
267
#define READONLY_DATA_SECTION_ASM_OP    "\t.SUBSPA $LIT$\n"
268
#undef DATA_SECTION_ASM_OP
269
#define DATA_SECTION_ASM_OP             "\t.SUBSPA $DATA$\n"
270
#undef BSS_SECTION_ASM_OP
271
#define BSS_SECTION_ASM_OP              "\t.SUBSPA $BSS$\n"
272
 
273
/* We provide explicit defines for CTORS_SECTION_ASM_OP and
274
   DTORS_SECTION_ASM_OP since we don't yet have support for
275
   named sections with the HP assembler.  */
276
#undef CTORS_SECTION_ASM_OP
277
#define CTORS_SECTION_ASM_OP "\t.SUBSPA \\.ctors,QUAD=1,ALIGN=8,ACCESS=31"
278
#undef DTORS_SECTION_ASM_OP
279
#define DTORS_SECTION_ASM_OP "\t.SUBSPA \\.dtors,QUAD=1,ALIGN=8,ACCESS=31"
280
 
281
#define HP_INIT_ARRAY_SECTION_ASM_OP \
282
  "\t.SUBSPA \\.init,QUAD=1,ALIGN=8,ACCESS=31"
283
#define GNU_INIT_ARRAY_SECTION_ASM_OP \
284
  "\t.SUBSPA \\.init_array,QUAD=1,ALIGN=8,ACCESS=31"
285
#define HP_FINI_ARRAY_SECTION_ASM_OP \
286
  "\t.SUBSPA \\.fini,QUAD=1,ALIGN=8,ACCESS=31"
287
#define GNU_FINI_ARRAY_SECTION_ASM_OP \
288
  "\t.SUBSPA \\.fini_array,QUAD=1,ALIGN=8,ACCESS=31"
289
 
290
#endif /* USING_ELFOS_H */
291
 
292
/* The following defines, used to run constructors and destructors with
293
   the SOM linker under HP-UX 11, are not needed.  */
294
#undef HAS_INIT_SECTION
295
#undef LD_INIT_SWITCH
296
#undef LD_FINI_SWITCH
297
 
298
/* The following STARTFILE_SPEC and ENDFILE_SPEC defines provide the
299
   magic needed to run initializers and finalizers.  */
300
#undef STARTFILE_SPEC
301
#if TARGET_HPUX_11_11
302
#define STARTFILE_SPEC \
303
  "%{!shared: %{!symbolic: crt0%O%s} %{munix=95:unix95.o%s} \
304
     %{!munix=93:%{!munix=95:unix98%O%s}}} %{static:crtbeginT%O%s} \
305
   %{!static:%{!shared:crtbegin%O%s} %{shared:crtbeginS%O%s}}"
306
#else
307
#define STARTFILE_SPEC \
308
  "%{!shared: %{!symbolic: crt0%O%s} %{munix=95:unix95%O%s}} \
309
   %{static:crtbeginT%O%s} %{!static:%{!shared:crtbegin%O%s} \
310
   %{shared:crtbeginS%O%s}}"
311
#endif
312
#undef ENDFILE_SPEC
313
#define ENDFILE_SPEC "%{!shared:crtend%O%s} %{shared:crtendS%O%s}"
314
 
315
/* Since HP uses the .init and .fini sections for array initializers
316
   and finalizers, we need different defines for INIT_SECTION_ASM_OP
317
   and FINI_SECTION_ASM_OP.  With the implementation adopted below,
318
   the sections are not actually used.  However, we still must provide
319
   defines to select the proper code path.  */
320
#undef INIT_SECTION_ASM_OP
321
#define INIT_SECTION_ASM_OP
322
#undef FINI_SECTION_ASM_OP
323
#define FINI_SECTION_ASM_OP
324
 
325
/* We are using array initializers and don't want calls in the INIT
326
   and FINI sections.  */
327
#undef CRT_CALL_STATIC_FUNCTION
328
#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC)
329
 
330
/* The init_priority attribute is not supported with HP ld.  This could be
331
   supported if collect2 was used with LD_INIT_SWITCH.  Unfortunately, this
332
   approach doesn't work with GNU ld since HP-UX doesn't support DT_INIT,
333
   and therefore the -init and -fini GNU ld switches.  */
334
#undef SUPPORTS_INIT_PRIORITY
335
#define SUPPORTS_INIT_PRIORITY (TARGET_GNU_LD ? 1 : 0)
336
 
337
/* We use DTOR_LIST_BEGIN to carry a bunch of hacks to allow us to use
338
   the init and fini array sections with both the HP and GNU linkers.
339
   The linkers setup the required dynamic entries in the dynamic segment
340
   and the dynamic linker does the calls.  This approach avoids using
341
   collect2.
342
 
343
   The first hack is to implement __do_global_ctors_aux in crtbegin as
344
   it needs to be the first entry in the init array so that it is called
345
   last.  HP got the order of the init array backwards.  The DT_INIT_ARRAY
346
   is supposed to be executed in the same order as the addresses appear in
347
   the array.  DT_FINI_ARRAY is supposed to be executed in the opposite
348
   order.
349
 
350
   The second hack is a set of plabels to implement the effect of
351
   CRT_CALL_STATIC_FUNCTION.  HP-UX 11 only supports DI_INIT_ARRAY and
352
   DT_FINI_ARRAY and they put the arrays in .init and .fini, rather than
353
   in .init_array and .fini_array.  The standard defines for .init and
354
   .fini have the execute flag set.  So, the assembler has to be hacked
355
   to munge the standard flags for these sections to make them agree
356
   with what the HP linker expects.  With the GNU linker, we need to
357
   used the .init_array and .fini_array sections.  So, we set up for
358
   both just in case.  Once we have built the table, the linker does
359
   the rest of the work.
360
 
361
   The order is significant.  Placing __do_global_ctors_aux first in
362
   the list, results in it being called last.  User specified initializers,
363
   either using the linker +init command or a plabel, run before the
364
   initializers specified here.  */
365
 
366
/* We need to add frame_dummy to the initializer list if EH_FRAME_SECTION_NAME
367
   or JCR_SECTION_NAME is defined.  */
368
#if defined(EH_FRAME_SECTION_NAME) || defined(JCR_SECTION_NAME)
369
#define PA_INIT_FRAME_DUMMY_ASM_OP ".dword P%frame_dummy"
370
#else
371
#define PA_INIT_FRAME_DUMMY_ASM_OP ""
372
#endif
373
 
374
/* The following hack sets up the .init, .init_array, .fini and
375
   .fini_array sections.  */
376
#define PA_CRTBEGIN_HACK \
377
asm (TEXT_SECTION_ASM_OP);                                              \
378
static void __attribute__((used))                                       \
379
__do_global_ctors_aux (void)                                            \
380
{                                                                       \
381
  func_ptr *p = __CTOR_LIST__;                                          \
382
  while (*(p + 1))                                                      \
383
    p++;                                                                \
384
  for (; *p != (func_ptr) -1; p--)                                      \
385
    (*p) ();                                                            \
386
}                                                                       \
387
                                                                        \
388
asm (HP_INIT_ARRAY_SECTION_ASM_OP);                                     \
389
asm (".align 8");                                                       \
390
asm (".dword P%__do_global_ctors_aux");                                 \
391
asm (PA_INIT_FRAME_DUMMY_ASM_OP);                                       \
392
asm (GNU_INIT_ARRAY_SECTION_ASM_OP);                                    \
393
asm (".align 8");                                                       \
394
asm (".dword P%__do_global_ctors_aux");                                 \
395
asm (PA_INIT_FRAME_DUMMY_ASM_OP);                                       \
396
asm (HP_FINI_ARRAY_SECTION_ASM_OP);                                     \
397
asm (".align 8");                                                       \
398
asm (".dword P%__do_global_dtors_aux");                                 \
399
asm (GNU_FINI_ARRAY_SECTION_ASM_OP);                                    \
400
asm (".align 8");                                                       \
401
asm (".dword P%__do_global_dtors_aux")
402
 
403
/* The following two variants of DTOR_LIST_BEGIN are identical to those
404
   in crtstuff.c except for the addition of the above crtbegin hack.  */
405
#ifdef DTORS_SECTION_ASM_OP
406
#define DTOR_LIST_BEGIN \
407
asm (DTORS_SECTION_ASM_OP);                                             \
408
STATIC func_ptr __DTOR_LIST__[1]                                        \
409
  __attribute__ ((aligned(sizeof(func_ptr))))                           \
410
  = { (func_ptr) (-1) };                                                \
411
PA_CRTBEGIN_HACK
412
#else
413
#define DTOR_LIST_BEGIN \
414
STATIC func_ptr __DTOR_LIST__[1]                                        \
415
  __attribute__ ((section(".dtors"), aligned(sizeof(func_ptr))))        \
416
  = { (func_ptr) (-1) };                                                \
417
PA_CRTBEGIN_HACK
418
#endif
419
 
420
/* If using HP ld do not call pxdb.  Use size as a program that does nothing
421
   and returns 0.  /bin/true cannot be used because it is a script without
422
   an interpreter.  */
423
#define INIT_ENVIRONMENT "LD_PXDB=/usr/ccs/bin/size"
424
 
425
/* The HPUX dynamic linker objects to undefined weak symbols, so do
426
   not use them in gthr-posix.h.  */
427
#define GTHREAD_USE_WEAK 0
428
 
429
/* We don't want undefined weak references to __register_frame_info,
430
   __deregister_frame_info, _Jv_RegisterClasses and __cxa_finalize
431
   introduced by crtbegin.o.  The GNU linker only resolves weak
432
   references if they appear in a shared library.  Thus, it would be
433
   impossible to create a static executable if the symbols were weak.
434
   So, the best solution seems to be to make the symbols strong and
435
   provide an archive library of empty stub functions.  */
436
#define TARGET_ATTRIBUTE_WEAK

powered by: WebSVN 2.1.0

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