]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/alpha/linux.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / alpha / linux.h
CommitLineData
c714f03d
RH
1/* Definitions of target machine for GNU compiler,
2 for Alpha Linux-based GNU systems.
99dee823 3 Copyright (C) 1996-2021 Free Software Foundation, Inc.
c714f03d 4 Contributed by Richard Henderson.
ff352cea 5
7ec022b2 6This file is part of GCC.
ff352cea 7
7ec022b2 8GCC is free software; you can redistribute it and/or modify
ff352cea 9it under the terms of the GNU General Public License as published by
2f83c7d6 10the Free Software Foundation; either version 3, or (at your option)
ff352cea
RK
11any later version.
12
7ec022b2 13GCC is distributed in the hope that it will be useful,
ff352cea
RK
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
2f83c7d6
NC
19along with GCC; see the file COPYING3. If not see
20<http://www.gnu.org/licenses/>. */
ff352cea 21
12a41c22
NB
22#define TARGET_OS_CPP_BUILTINS() \
23 do { \
24 builtin_define ("__gnu_linux__"); \
25 builtin_define ("_LONGLONG"); \
26 builtin_define_std ("linux"); \
27 builtin_define_std ("unix"); \
28 builtin_assert ("system=linux"); \
26b0ad13
KG
29 builtin_assert ("system=unix"); \
30 builtin_assert ("system=posix"); \
e0322d5c 31 /* The GNU C++ standard library requires this. */ \
04df6730 32 if (c_dialect_cxx ()) \
e0322d5c 33 builtin_define ("_GNU_SOURCE"); \
12a41c22 34 } while (0)
ff352cea
RK
35
36#undef LIB_SPEC
dbe0297b 37#define LIB_SPEC \
17772b2a
JJ
38 "%{pthread:-lpthread} \
39 %{shared:-lc} \
40 %{!shared: %{profile:-lc_p}%{!profile:-lc}}"
ff352cea 41
f326fd7a 42#undef CPP_SPEC
bdede2ac
MK
43#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
44
ff352cea 45/* Show that we need a GP when profiling. */
4f1c5cce 46#undef TARGET_PROFILING_NEEDS_GP
9c0e94a5
RH
47#define TARGET_PROFILING_NEEDS_GP 1
48
49/* Don't care about faults in the prologue. */
50#undef TARGET_CAN_FAULT_IN_PROLOGUE
51#define TARGET_CAN_FAULT_IN_PROLOGUE 1
4ed442c9 52
14291bc7
RH
53/* OS fixes up EV5 data fault on prefetch. */
54#undef TARGET_FIXUP_EV5_PREFETCH
55#define TARGET_FIXUP_EV5_PREFETCH 1
56
4ed442c9
BK
57#undef WCHAR_TYPE
58#define WCHAR_TYPE "int"
377b6fce 59
b5a54c03
JM
60#ifdef SINGLE_LIBC
61#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
996746aa
AI
62#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
63#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
07ad804b
SN
64#undef OPTION_MUSL
65#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
b5a54c03 66#else
47089d42 67#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
996746aa
AI
68#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
69#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
07ad804b
SN
70#undef OPTION_MUSL
71#define OPTION_MUSL (linux_libc == LIBC_MUSL)
b5a54c03 72#endif
47089d42 73
d33d9e47
AI
74/* Determine what functions are present at the runtime;
75 this includes full c99 runtime and sincos. */
76#undef TARGET_LIBC_HAS_FUNCTION
1e9da8f6 77#define TARGET_LIBC_HAS_FUNCTION linux_libc_has_function
006339cd 78
4969c0d8 79#define TARGET_POSIX_IO
90b8be73 80
4f9eae9f
MR
81/* Provide a STARTFILE_SPEC appropriate for ELF. Here we add the
82 (even more) magical crtbegin.o file which provides part of the
83 support for getting C++ file-scope static object constructed
84 before entering `main'. */
85
86#undef STARTFILE_SPEC
87#ifdef HAVE_LD_PIE
88#define STARTFILE_SPEC \
89 "%{!shared: %{pg|p:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}\
90 crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
91#else
92#define STARTFILE_SPEC \
93 "%{!shared: %{pg|p:gcrt1.o%s;:crt1.o%s}}\
94 crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
95#endif
96
97/* Provide a ENDFILE_SPEC appropriate for ELF. Here we tack on the
98 magical crtend.o file which provides part of the support for
99 getting C++ file-scope static object constructed before entering
100 `main', followed by a normal ELF "finalizer" file, `crtn.o'. */
101
102#undef ENDFILE_SPEC
103#define ENDFILE_SPEC \
104 "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
105 %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
106
42df2193 107#define LINK_GCC_C_SEQUENCE_SPEC \
f37866e8 108 "%{static|static-pie:--start-group} %G %{!nolibc:%L} \
8c6562e1 109 %{static|static-pie:--end-group}%{!static:%{!static-pie:%G}}"
42df2193 110
8efcd34f
AM
111/* Use --as-needed -lgcc_s for eh support. */
112#ifdef HAVE_LD_AS_NEEDED
113#define USE_LD_AS_NEEDED 1
114#endif
115
7269aee7
AH
116/* Define if long doubles should be mangled as 'g'. */
117#define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
d94a427e
AL
118
119/* -mcpu=native handling only makes sense with compiler running on
120 an Alpha chip. */
121#if defined(__alpha__) || defined(__alpha)
122extern const char *host_detect_local_cpu (int argc, const char **argv);
123# define EXTRA_SPEC_FUNCTIONS \
124 { "local_cpu_detect", host_detect_local_cpu },
125
126# define MCPU_MTUNE_NATIVE_SPECS \
127 " %{mcpu=native:%<mcpu=native %:local_cpu_detect(cpu)}" \
128 " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
129#else
130# define MCPU_MTUNE_NATIVE_SPECS ""
131#endif
132
133#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS