]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/linux-eabi.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / arm / linux-eabi.h
CommitLineData
077fc835 1/* Configuration file for ARM GNU/Linux EABI targets.
8d9254fc 2 Copyright (C) 2004-2020 Free Software Foundation, Inc.
077fc835
KH
3 Contributed by CodeSourcery, LLC
4
5 This file is part of GCC.
6
7 GCC is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published
2f83c7d6 9 by the Free Software Foundation; either version 3, or (at your
077fc835
KH
10 option) any later version.
11
12 GCC is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
16
17 You should have received a copy of the GNU General Public License
2f83c7d6
NC
18 along with GCC; see the file COPYING3. If not see
19 <http://www.gnu.org/licenses/>. */
077fc835
KH
20
21/* On EABI GNU/Linux, we want both the BPABI builtins and the
22 GNU/Linux builtins. */
d3a9662c 23#undef TARGET_OS_CPP_BUILTINS
077fc835
KH
24#define TARGET_OS_CPP_BUILTINS() \
25 do \
26 { \
27 TARGET_BPABI_CPP_BUILTINS(); \
107fd1c1 28 GNU_USER_TARGET_OS_CPP_BUILTINS(); \
2c8f43e6 29 ANDROID_TARGET_OS_CPP_BUILTINS(); \
077fc835
KH
30 } \
31 while (false)
32
b4c522fa
IB
33#define EXTRA_TARGET_D_OS_VERSIONS() \
34 ANDROID_TARGET_D_OS_VERSIONS();
35
077fc835 36/* We default to a soft-float ABI so that binaries can run on all
6302b84b
RE
37 target hardware. If you override this to use the hard-float ABI then
38 change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */
d3a9662c 39#undef TARGET_DEFAULT_FLOAT_ABI
077fc835
KH
40#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
41
42/* We default to the "aapcs-linux" ABI so that enums are int-sized by
43 default. */
d3a9662c 44#undef ARM_DEFAULT_ABI
077fc835
KH
45#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
46
d3a9662c
BF
47/* TARGET_BIG_ENDIAN_DEFAULT is set in
48 config.gcc for big endian configurations. */
49#undef TARGET_LINKER_EMULATION
50#if TARGET_BIG_ENDIAN_DEFAULT
51#define TARGET_LINKER_EMULATION "armelfb_linux_eabi"
52#else
53#define TARGET_LINKER_EMULATION "armelf_linux_eabi"
54#endif
55
56#undef SUBTARGET_EXTRA_LINK_SPEC
57#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
077fc835 58
6302b84b
RE
59/* GNU/Linux on ARM currently supports three dynamic linkers:
60 - ld-linux.so.2 - for the legacy ABI
61 - ld-linux.so.3 - for the EABI-derived soft-float ABI
62 - ld-linux-armhf.so.3 - for the EABI-derived hard-float ABI.
63 All the dynamic linkers live in /lib.
64 We default to soft-float, but this can be overridden by changing both
65 GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI. */
66
d3a9662c 67#undef GLIBC_DYNAMIC_LINKER
c7121189
MH
68#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
69#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
c7121189 70#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
6302b84b 71
c7121189
MH
72#define GLIBC_DYNAMIC_LINKER \
73 "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
74 %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
75 %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
077fc835 76
4d45be53
GR
77/* For ARM musl currently supports four dynamic linkers:
78 - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
79 - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
80 - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
81 - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
82 musl does not support the legacy OABI mode.
83 All the dynamic linkers live in /lib.
84 We default to soft-float, EL. */
85#undef MUSL_DYNAMIC_LINKER
86#if TARGET_BIG_ENDIAN_DEFAULT
87#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
88#else
89#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
90#endif
91#define MUSL_DYNAMIC_LINKER \
45d53c67 92 "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}%{mfdpic:-fdpic}.so.1"
4d45be53 93
077fc835
KH
94/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
95 use the GNU/Linux version, not the generic BPABI version. */
d3a9662c 96#undef LINK_SPEC
37953bd3 97#define LINK_SPEC EABI_LINK_SPEC \
51b9db92
MK
98 LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
99 LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
100
8a5800b8 101#undef ASAN_CC1_SPEC
de5a5fa1 102#define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
8a5800b8 103
45d53c67
CL
104#define FDPIC_CC1_SPEC ""
105
51b9db92 106#undef CC1_SPEC
8e38461c 107#define CC1_SPEC \
45d53c67
CL
108 LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC " " ASAN_CC1_SPEC " " \
109 FDPIC_CC1_SPEC, \
8a5800b8
CL
110 GNU_USER_TARGET_CC1_SPEC " " ASAN_CC1_SPEC " " \
111 ANDROID_CC1_SPEC)
51b9db92
MK
112
113#define CC1PLUS_SPEC \
114 LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
115
116#undef LIB_SPEC
8e38461c
JM
117#define LIB_SPEC \
118 LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
8edb8dc8 119 GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC " " ANDROID_LIB_SPEC)
51b9db92
MK
120
121#undef STARTFILE_SPEC
122#define STARTFILE_SPEC \
8e38461c 123 LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC)
51b9db92
MK
124
125#undef ENDFILE_SPEC
126#define ENDFILE_SPEC \
5a0ff57c 127 "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} " \
8e38461c 128 LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
077fc835
KH
129
130/* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
131 do not use -lfloat. */
132#undef LIBGCC_SPEC
133
8a66e987 134/* Clear the instruction cache from `beg' to `end'. This is
45b86625 135 implemented in lib1funcs.S, so ensure an error if this definition
8a66e987 136 is used. */
d3a9662c 137#undef CLEAR_INSN_CACHE
7cea01df 138#define CLEAR_INSN_CACHE(BEG, END) not_used
1e874273
PB
139
140#define ARM_TARGET2_DWARF_FORMAT (DW_EH_PE_pcrel | DW_EH_PE_indirect)