* varasm.c (bss_initializer_p): Remove static.
[official-gcc.git] / gcc / config / rs6000 / lynx.h
blob952bfa7db4e002f8df58f8dd33ed2d7f41a44e78
1 /* Definitions for Rs6000 running LynxOS.
2 Copyright (C) 1995, 1996, 2000, 2002, 2003, 2004, 2005, 2007, 2010, 2011
3 Free Software Foundation, Inc.
4 Contributed by David Henkel-Wallace, Cygnus Support (gumby@cygnus.com)
5 Rewritten by Adam Nemet, LynuxWorks Inc.
7 This file is part of GCC.
9 GCC is free software; you can redistribute it and/or modify it
10 under the terms of the GNU General Public License as published
11 by the Free Software Foundation; either version 3, or (at your
12 option) any later version.
14 GCC is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
19 You should have received a copy of the GNU General Public License
20 along with GCC; see the file COPYING3. If not see
21 <http://www.gnu.org/licenses/>. */
23 /* Undefine the definition to enable the LynxOS default from the
24 top-level lynx.h. */
26 #undef SUBTARGET_EXTRA_SPECS
28 /* Get rid off the spec definitions from rs6000/sysv4.h. */
30 #undef CPP_SPEC
31 #define CPP_SPEC \
32 "%{msoft-float: -D_SOFT_FLOAT} \
33 %(cpp_cpu) \
34 %(cpp_os_lynx)"
36 /* LynxOS only supports big-endian on PPC so we override the
37 definition from sysv4.h. Since the LynxOS 4.0 compiler was set to
38 return every structure in memory regardless of their size we have
39 to emulate the same behavior here with disabling the SVR4 structure
40 returning. */
42 #undef CC1_SPEC
43 #define CC1_SPEC \
44 "%{G*} %{mno-sdata:-msdata=none} \
45 %{maltivec:-mabi=altivec} \
46 -maix-struct-return"
48 #undef ASM_SPEC
49 #define ASM_SPEC \
50 "%(asm_cpu) \
51 %{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}}"
53 #undef STARTFILE_SPEC
54 #undef ENDFILE_SPEC
55 #undef LIB_SPEC
56 #undef LINK_SPEC
57 #define LINK_SPEC \
58 "%{!msdata=none:%{G*}} %{msdata=none:-G0} \
59 %(link_os_lynx)"
61 /* Override the definition from sysv4.h. */
63 #undef TARGET_OS_CPP_BUILTINS
64 #define TARGET_OS_CPP_BUILTINS() \
65 do \
66 { \
67 builtin_define ("__BIG_ENDIAN__"); \
68 builtin_define ("__powerpc__"); \
69 builtin_assert ("cpu=powerpc"); \
70 builtin_assert ("machine=powerpc"); \
71 builtin_define ("__PPC__"); \
72 } \
73 while (0)
75 /* Override the rs6000.h definition. */
77 #undef ASM_APP_ON
78 #define ASM_APP_ON "#APP\n"
80 /* Override the rs6000.h definition. */
82 #undef ASM_APP_OFF
83 #define ASM_APP_OFF "#NO_APP\n"
85 /* LynxOS does not do anything with .fixup plus let's not create
86 writable section for linkonce.r and linkonce.t. */
88 #undef RELOCATABLE_NEEDS_FIXUP
90 /* Override these from rs6000.h with the generic definition. */
92 #undef SIZE_TYPE
93 #undef ASM_OUTPUT_ALIGN
94 #undef PREFERRED_DEBUGGING_TYPE
96 /* The file rs6000.c defines TARGET_HAVE_TLS unconditionally to the
97 value of HAVE_AS_TLS. HAVE_AS_TLS is true as gas support for TLS
98 is detected by configure. Override the definition to false. */
100 #undef HAVE_AS_TLS
101 #define HAVE_AS_TLS 0
103 #define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number (REGNO)
105 #ifdef CRT_BEGIN
106 /* This function is part of crtbegin*.o which is at the beginning of
107 the link and is called from .fini which is usually toward the end
108 of the executable. Make it longcall so that we don't limit the
109 text size of the executables to 32M. */
111 static void __do_global_dtors_aux (void) __attribute__ ((longcall));
112 #endif /* CRT_BEGIN */
114 #ifdef CRT_END
115 /* Similarly here. This function resides in crtend*.o which is toward
116 to end of the link and is called from .init which is at the
117 beginning. */
119 static void __do_global_ctors_aux (void) __attribute__ ((longcall));
120 #endif /* CRT_END */