]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/rs6000/linux.h
Update Copyright years for files modified in 2010.
[thirdparty/gcc.git] / gcc / config / rs6000 / linux.h
CommitLineData
9a57586f 1/* Definitions of target machine for GNU compiler,
88cad84b 2 for PowerPC machines running Linux.
602ea4d3 3 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
72b7f7ea 4 2004, 2005, 2006, 2007, 2010 Free Software Foundation, Inc.
9a57586f
MM
5 Contributed by Michael Meissner (meissner@cygnus.com).
6
5de601cf 7 This file is part of GCC.
9a57586f 8
5de601cf
NC
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
2f83c7d6 11 by the Free Software Foundation; either version 3, or (at your
5de601cf 12 option) any later version.
9a57586f 13
5de601cf
NC
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.
9a57586f 18
5de601cf 19 You should have received a copy of the GNU General Public License
2f83c7d6
NC
20 along with GCC; see the file COPYING3. If not see
21 <http://www.gnu.org/licenses/>. */
9a57586f 22
bf276e5c
AM
23/* Linux doesn't support saving and restoring 64-bit regs in a 32-bit
24 process. */
25#define OS_MISSING_POWERPC64 1
26
71625f3d
AM
27/* We use glibc _mcount for profiling. */
28#define NO_PROFILE_COUNTERS 1
29
b5a54c03
JM
30#ifdef SINGLE_LIBC
31#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
32#else
47089d42 33#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
b5a54c03 34#endif
47089d42 35
bf276e5c
AM
36/* glibc has float and long double forms of math functions. */
37#undef TARGET_C99_FUNCTIONS
7bd85ce0 38#define TARGET_C99_FUNCTIONS (OPTION_GLIBC)
bf276e5c 39
006339cd
RG
40/* Whether we have sincos that follows the GNU extension. */
41#undef TARGET_HAS_SINCOS
42#define TARGET_HAS_SINCOS (OPTION_GLIBC)
43
5de601cf 44#undef TARGET_OS_CPP_BUILTINS
c4ad648e
AM
45#define TARGET_OS_CPP_BUILTINS() \
46 do \
47 { \
48 builtin_define_std ("PPC"); \
49 builtin_define_std ("powerpc"); \
50 builtin_assert ("cpu=powerpc"); \
51 builtin_assert ("machine=powerpc"); \
52 TARGET_OS_SYSV_CPP_BUILTINS (); \
53 } \
7990b46f 54 while (0)
9a57586f 55
373107aa
FS
56#undef CPP_OS_DEFAULT_SPEC
57#define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)"
58
437558e8
FS
59/* The GNU C++ standard library currently requires _GNU_SOURCE being
60 defined on glibc-based systems. This temporary hack accomplishes this,
61 it should go away as soon as libstdc++-v3 has a real fix. */
5de601cf 62#undef CPLUSPLUS_CPP_SPEC
437558e8
FS
63#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
64
5de601cf 65#undef LINK_SHLIB_SPEC
362c63a5 66#define LINK_SHLIB_SPEC "%{shared:-shared} %{!shared: %{static:-static}}"
9a57586f
MM
67
68#undef LIB_DEFAULT_SPEC
0bc25b2b 69#define LIB_DEFAULT_SPEC "%(lib_linux)"
9a57586f
MM
70
71#undef STARTFILE_DEFAULT_SPEC
0bc25b2b 72#define STARTFILE_DEFAULT_SPEC "%(startfile_linux)"
9a57586f
MM
73
74#undef ENDFILE_DEFAULT_SPEC
0bc25b2b 75#define ENDFILE_DEFAULT_SPEC "%(endfile_linux)"
9a57586f 76
362c63a5
GK
77#undef LINK_START_DEFAULT_SPEC
78#define LINK_START_DEFAULT_SPEC "%(link_start_linux)"
79
80#undef LINK_OS_DEFAULT_SPEC
81#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
82
42df2193
JJ
83#define LINK_GCC_C_SEQUENCE_SPEC \
84 "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
85
8efcd34f
AM
86/* Use --as-needed -lgcc_s for eh support. */
87#ifdef HAVE_LD_AS_NEEDED
88#define USE_LD_AS_NEEDED 1
89#endif
90
5de601cf 91#undef TARGET_VERSION
956d6950 92#define TARGET_VERSION fprintf (stderr, " (PowerPC GNU/Linux)");
3807773b 93
832ea3b3 94/* Override rs6000.h definition. */
5de601cf 95#undef ASM_APP_ON
832ea3b3
FS
96#define ASM_APP_ON "#APP\n"
97
98/* Override rs6000.h definition. */
5de601cf 99#undef ASM_APP_OFF
832ea3b3
FS
100#define ASM_APP_OFF "#NO_APP\n"
101
6fa3f289
ZW
102/* For backward compatibility, we must continue to use the AIX
103 structure return convention. */
5de601cf 104#undef DRAFT_V4_STRUCT_RET
6fa3f289
ZW
105#define DRAFT_V4_STRUCT_RET 1
106
9739c90c
JJ
107/* We are 32-bit all the time, so optimize a little. */
108#undef TARGET_64BIT
109#define TARGET_64BIT 0
110
84dcde01
AM
111/* We don't need to generate entries in .fixup, except when
112 -mrelocatable or -mrelocatable-lib is given. */
9739c90c 113#undef RELOCATABLE_NEEDS_FIXUP
84dcde01
AM
114#define RELOCATABLE_NEEDS_FIXUP \
115 (target_flags & target_flags_explicit & MASK_RELOCATABLE)
9739c90c 116
a5fe455b 117#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
3edc56a9 118
4969c0d8 119#define TARGET_POSIX_IO
c2cd64b5 120
8662eb14 121#define MD_UNWIND_SUPPORT "config/rs6000/linux-unwind.h"
77008252
JJ
122
123#ifdef TARGET_LIBC_PROVIDES_SSP
124/* ppc32 glibc provides __stack_chk_guard in -0x7008(2). */
125#define TARGET_THREAD_SSP_OFFSET -0x7008
126#endif
602ea4d3
JJ
127
128#define POWERPC_LINUX
ed965309
JJ
129
130/* ppc linux has 128-bit long double support in glibc 2.4 and later. */
131#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
132#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
133#endif
39acb18f
EB
134
135/* Static stack checking is supported by means of probes. */
136#define STACK_CHECK_STATIC_BUILTIN 1