comparison gcc/config/arm/linux-elf.h @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents f6334be47118
children 84e7813d76e9
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 /* Definitions for ARM running Linux-based GNU systems using ELF 1 /* Definitions for ARM running Linux-based GNU systems using ELF
2 Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2 Copyright (C) 1993-2017 Free Software Foundation, Inc.
3 2005, 2006, 2007, 2008, 2009, 2010, 2011
4 Free Software Foundation, Inc.
5 Contributed by Philip Blundell <philb@gnu.org> 3 Contributed by Philip Blundell <philb@gnu.org>
6 4
7 This file is part of GCC. 5 This file is part of GCC.
8 6
9 GCC is free software; you can redistribute it and/or modify it 7 GCC is free software; you can redistribute it and/or modify it
14 GCC is distributed in the hope that it will be useful, but WITHOUT 12 GCC is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details. 15 License for more details.
18 16
19 You should have received a copy of the GNU General Public License 17 Under Section 7 of GPL version 3, you are granted additional
20 along with GCC; see the file COPYING3. If not see 18 permissions described in the GCC Runtime Library Exception, version
19 3.1, as published by the Free Software Foundation.
20
21 You should have received a copy of the GNU General Public License and
22 a copy of the GCC Runtime Library Exception along with this program;
23 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
21 <http://www.gnu.org/licenses/>. */ 24 <http://www.gnu.org/licenses/>. */
22 25
23 /* elfos.h should have already been included. Now just override 26 /* elfos.h should have already been included. Now just override
24 any conflicting definitions and add any extras. */ 27 any conflicting definitions and add any extras. */
25 28
26 /* Run-time Target Specification. */ 29 /* Run-time Target Specification. */
27 #undef TARGET_VERSION
28 #define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr);
29
30 #undef TARGET_DEFAULT_FLOAT_ABI 30 #undef TARGET_DEFAULT_FLOAT_ABI
31 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD 31 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
32 32
33 /* TARGET_BIG_ENDIAN_DEFAULT is set in 33 /* TARGET_BIG_ENDIAN_DEFAULT is set in
34 config.gcc for big endian configurations. */ 34 config.gcc for big endian configurations. */
43 #endif 43 #endif
44 44
45 #undef TARGET_DEFAULT 45 #undef TARGET_DEFAULT
46 #define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT) 46 #define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
47 47
48 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
49
50 #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" 48 #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
51 49
50 /* We do not have any MULTILIB_OPTIONS specified, so there are no
51 MULTILIB_DEFAULTS. */
52 #undef MULTILIB_DEFAULTS 52 #undef MULTILIB_DEFAULTS
53 #define MULTILIB_DEFAULTS \
54 { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
55 53
56 /* Now we define the strings used to build the spec file. */ 54 /* Now we define the strings used to build the spec file. */
57 #undef LIB_SPEC 55 #undef LIB_SPEC
58 #define LIB_SPEC \ 56 #define LIB_SPEC \
59 "%{pthread:-lpthread} \ 57 "%{pthread:-lpthread} \
60 %{shared:-lc} \ 58 %{shared:-lc} \
61 %{!shared:%{profile:-lc_p}%{!profile:-lc}}" 59 %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
62 60
63 #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" 61 #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
64 62
65 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" 63 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
66 64
67 #define LINUX_TARGET_LINK_SPEC "%{h*} \ 65 #define LINUX_TARGET_LINK_SPEC "%{h*} \
68 %{static:-Bstatic} \ 66 %{static:-Bstatic} \
69 %{shared:-shared} \ 67 %{shared:-shared} \
70 %{symbolic:-Bsymbolic} \ 68 %{symbolic:-Bsymbolic} \
71 %{rdynamic:-export-dynamic} \ 69 %{!static: \
72 -dynamic-linker " LINUX_DYNAMIC_LINKER " \ 70 %{rdynamic:-export-dynamic} \
71 %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
73 -X \ 72 -X \
74 %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ 73 %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
75 SUBTARGET_EXTRA_LINK_SPEC 74 SUBTARGET_EXTRA_LINK_SPEC
76 75
77 #undef LINK_SPEC 76 #undef LINK_SPEC
78 #define LINK_SPEC LINUX_TARGET_LINK_SPEC 77 #define LINK_SPEC LINUX_TARGET_LINK_SPEC
79 78
80 #define TARGET_OS_CPP_BUILTINS() \ 79 #define TARGET_OS_CPP_BUILTINS() \
81 do \ 80 do \
82 { \ 81 { \
83 LINUX_TARGET_OS_CPP_BUILTINS(); \ 82 GNU_USER_TARGET_OS_CPP_BUILTINS(); \
84 } \ 83 } \
85 while (0) 84 while (0)
86
87 /* This is how we tell the assembler that two symbols have the same value. */
88 #define ASM_OUTPUT_DEF(FILE, NAME1, NAME2) \
89 do \
90 { \
91 assemble_name (FILE, NAME1); \
92 fputs (" = ", FILE); \
93 assemble_name (FILE, NAME2); \
94 fputc ('\n', FILE); \
95 } \
96 while (0)
97
98 /* NWFPE always understands FPA instructions. */
99 #undef FPUTYPE_DEFAULT
100 #define FPUTYPE_DEFAULT "fpe3"
101 85
102 /* Call the function profiler with a given profile label. */ 86 /* Call the function profiler with a given profile label. */
103 #undef ARM_FUNCTION_PROFILER 87 #undef ARM_FUNCTION_PROFILER
104 #define ARM_FUNCTION_PROFILER(STREAM, LABELNO) \ 88 #define ARM_FUNCTION_PROFILER(STREAM, LABELNO) \
105 { \ 89 { \
116 #define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile 100 #define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile
117 101
118 /* Add .note.GNU-stack. */ 102 /* Add .note.GNU-stack. */
119 #undef NEED_INDICATE_EXEC_STACK 103 #undef NEED_INDICATE_EXEC_STACK
120 #define NEED_INDICATE_EXEC_STACK 1 104 #define NEED_INDICATE_EXEC_STACK 1
105
106 /* Uninitialized common symbols in non-PIE executables, even with
107 strong definitions in dependent shared libraries, will resolve
108 to COPY relocated symbol in the executable. See PR65780. */
109 #undef TARGET_BINDS_LOCAL_P
110 #define TARGET_BINDS_LOCAL_P default_binds_local_p_2
111
112 /* Define this to be nonzero if static stack checking is supported. */
113 #define STACK_CHECK_STATIC_BUILTIN 1