]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/rs6000/linux.h
cfgloopmanip.c (copy_loop_info): New function.
[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,
617718f7 4 2004, 2005, 2006, 2007, 2010, 2011 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
832ea3b3 91/* Override rs6000.h definition. */
5de601cf 92#undef ASM_APP_ON
832ea3b3
FS
93#define ASM_APP_ON "#APP\n"
94
95/* Override rs6000.h definition. */
5de601cf 96#undef ASM_APP_OFF
832ea3b3
FS
97#define ASM_APP_OFF "#NO_APP\n"
98
6fa3f289
ZW
99/* For backward compatibility, we must continue to use the AIX
100 structure return convention. */
5de601cf 101#undef DRAFT_V4_STRUCT_RET
6fa3f289
ZW
102#define DRAFT_V4_STRUCT_RET 1
103
9739c90c
JJ
104/* We are 32-bit all the time, so optimize a little. */
105#undef TARGET_64BIT
106#define TARGET_64BIT 0
107
84dcde01
AM
108/* We don't need to generate entries in .fixup, except when
109 -mrelocatable or -mrelocatable-lib is given. */
9739c90c 110#undef RELOCATABLE_NEEDS_FIXUP
84dcde01
AM
111#define RELOCATABLE_NEEDS_FIXUP \
112 (target_flags & target_flags_explicit & MASK_RELOCATABLE)
9739c90c 113
4969c0d8 114#define TARGET_POSIX_IO
c2cd64b5 115
77008252
JJ
116#ifdef TARGET_LIBC_PROVIDES_SSP
117/* ppc32 glibc provides __stack_chk_guard in -0x7008(2). */
118#define TARGET_THREAD_SSP_OFFSET -0x7008
119#endif
602ea4d3
JJ
120
121#define POWERPC_LINUX
ed965309
JJ
122
123/* ppc linux has 128-bit long double support in glibc 2.4 and later. */
124#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
125#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
126#endif
39acb18f
EB
127
128/* Static stack checking is supported by means of probes. */
129#define STACK_CHECK_STATIC_BUILTIN 1