OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | |
2 | gcc/Changelog: |
||
3 | |||
4 | 2015-04-24 Gregor Richards <gregor.richards@uwaterloo.ca> |
||
5 | Szabolcs Nagy <szabolcs.nagy@arm.com> |
||
6 | |||
7 | * config.gcc (secure_plt): Add *-linux*-musl*. |
||
8 | * config/rs6000/linux64.h (MUSL_DYNAMIC_LINKER32): Define. |
||
9 | (MUSL_DYNAMIC_LINKER64): Define. |
||
10 | (GNU_USER_DYNAMIC_LINKER32): Update. |
||
11 | (GNU_USER_DYNAMIC_LINKER64): Update. |
||
12 | (CHOOSE_DYNAMIC_LINKER): Update. |
||
13 | |||
14 | * config/rs6000/secureplt.h (LINK_SECURE_PLT_DEFAULT_SPEC): Define. |
||
15 | * config/rs6000/sysv4.h (GNU_USER_DYNAMIC_LINKER): Update. |
||
16 | (MUSL_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER_E,) |
||
17 | (INCLUDE_DEFAULTS_MUSL_GPP, INCLUDE_DEFAULTS_MUSL_LOCAL,) |
||
18 | (INCLUDE_DEFAULTS_MUSL_PREFIX, INCLUDE_DEFAULTS_MUSL_CROSS,) |
||
19 | (INCLUDE_DEFAULTS_MUSL_TOOL, INCLUDE_DEFAULTS_MUSL_NATIVE): Define. |
||
20 | (LINK_SECURE_PLT_DEFAULT_SPEC): Define. |
||
21 | (CHOOSE_DYNAMIC_LINKER, LINK_TARGET_SPEC, LINK_OS_LINUX_SPEC): Update. |
||
22 | |||
23 | * config/rs6000/sysv4le.h (MUSL_DYNAMIC_LINKER_E): Define. |
||
24 | |||
25 | --- a/gcc/config/rs6000/linux64.h |
||
26 | +++ b/gcc/config/rs6000/linux64.h |
||
27 | @@ -365,17 +365,21 @@ extern int dot_symbols; |
||
28 | #endif |
||
29 | #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0" |
||
30 | #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0" |
||
31 | +#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc" MUSL_DYNAMIC_LINKER_E ".so.1" |
||
32 | +#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64" MUSL_DYNAMIC_LINKER_E ".so.1" |
||
33 | #if DEFAULT_LIBC == LIBC_UCLIBC |
||
34 | -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" |
||
35 | +#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}" |
||
36 | #elif DEFAULT_LIBC == LIBC_GLIBC |
||
37 | -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}" |
||
38 | +#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}" |
||
39 | +#elif DEFAULT_LIBC == LIBC_MUSL |
||
40 | +#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}" |
||
41 | #else |
||
42 | #error "Unsupported DEFAULT_LIBC" |
||
43 | #endif |
||
44 | #define GNU_USER_DYNAMIC_LINKER32 \ |
||
45 | - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32) |
||
46 | + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32) |
||
47 | #define GNU_USER_DYNAMIC_LINKER64 \ |
||
48 | - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) |
||
49 | + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64) |
||
50 | |||
51 | #undef DEFAULT_ASM_ENDIAN |
||
52 | #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN) |
||
53 | --- a/gcc/config/rs6000/secureplt.h |
||
54 | +++ b/gcc/config/rs6000/secureplt.h |
||
55 | @@ -18,3 +18,4 @@ along with GCC; see the file COPYING3. |
||
56 | <http://www.gnu.org/licenses/>. */ |
||
57 | |||
58 | #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt" |
||
59 | +#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt" |
||
60 | --- a/gcc/config/rs6000/sysv4.h |
||
61 | +++ b/gcc/config/rs6000/sysv4.h |
||
62 | @@ -537,6 +537,9 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF |
||
63 | #ifndef CC1_SECURE_PLT_DEFAULT_SPEC |
||
64 | #define CC1_SECURE_PLT_DEFAULT_SPEC "" |
||
65 | #endif |
||
66 | +#ifndef LINK_SECURE_PLT_DEFAULT_SPEC |
||
67 | +#define LINK_SECURE_PLT_DEFAULT_SPEC "" |
||
68 | +#endif |
||
69 | |||
70 | /* Pass -G xxx to the compiler. */ |
||
71 | #undef CC1_SPEC |
||
72 | @@ -574,7 +577,8 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF |
||
73 | %{R*} \ |
||
74 | %(link_shlib) \ |
||
75 | %{!T*: %(link_start) } \ |
||
76 | -%(link_os)" |
||
77 | +%(link_os)" \ |
||
78 | +"%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}" |
||
79 | |||
80 | /* Shared libraries are not default. */ |
||
81 | #define LINK_SHLIB_SPEC "\ |
||
82 | @@ -757,17 +761,22 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF |
||
83 | |||
84 | #define LINK_START_LINUX_SPEC "" |
||
85 | |||
86 | +#define MUSL_DYNAMIC_LINKER_E ENDIAN_SELECT("","le","") |
||
87 | + |
||
88 | #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" |
||
89 | #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" |
||
90 | +#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc" MUSL_DYNAMIC_LINKER_E ".so.1" |
||
91 | #if DEFAULT_LIBC == LIBC_UCLIBC |
||
92 | -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" |
||
93 | +#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}" |
||
94 | +#elif DEFAULT_LIBC == LIBC_MUSL |
||
95 | +#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}" |
||
96 | #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC |
||
97 | -#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}" |
||
98 | +#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}" |
||
99 | #else |
||
100 | #error "Unsupported DEFAULT_LIBC" |
||
101 | #endif |
||
102 | #define GNU_USER_DYNAMIC_LINKER \ |
||
103 | - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) |
||
104 | + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER) |
||
105 | |||
106 | #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ |
||
107 | %{rdynamic:-export-dynamic} \ |
||
108 | @@ -889,6 +898,7 @@ ncrtn.o%s" |
||
109 | { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ |
||
110 | { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ |
||
111 | { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \ |
||
112 | + { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \ |
||
113 | { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ |
||
114 | { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ |
||
115 | { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ |
||
116 | @@ -943,3 +953,72 @@ ncrtn.o%s" |
||
117 | /* This target uses the sysv4.opt file. */ |
||
118 | #define TARGET_USES_SYSV4_OPT 1 |
||
119 | |||
120 | +/* Include order changes for musl, same as in generic linux.h. */ |
||
121 | +#if DEFAULT_LIBC == LIBC_MUSL |
||
122 | +#define INCLUDE_DEFAULTS_MUSL_GPP \ |
||
123 | + { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \ |
||
124 | + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \ |
||
125 | + { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \ |
||
126 | + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \ |
||
127 | + { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ |
||
128 | + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, |
||
129 | + |
||
130 | +#ifdef LOCAL_INCLUDE_DIR |
||
131 | +#define INCLUDE_DEFAULTS_MUSL_LOCAL \ |
||
132 | + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ |
||
133 | + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, |
||
134 | +#else |
||
135 | +#define INCLUDE_DEFAULTS_MUSL_LOCAL |
||
136 | +#endif |
||
137 | + |
||
138 | +#ifdef PREFIX_INCLUDE_DIR |
||
139 | +#define INCLUDE_DEFAULTS_MUSL_PREFIX \ |
||
140 | + { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0}, |
||
141 | +#else |
||
142 | +#define INCLUDE_DEFAULTS_MUSL_PREFIX |
||
143 | +#endif |
||
144 | + |
||
145 | +#ifdef CROSS_INCLUDE_DIR |
||
146 | +#define INCLUDE_DEFAULTS_MUSL_CROSS \ |
||
147 | + { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0}, |
||
148 | +#else |
||
149 | +#define INCLUDE_DEFAULTS_MUSL_CROSS |
||
150 | +#endif |
||
151 | + |
||
152 | +#ifdef TOOL_INCLUDE_DIR |
||
153 | +#define INCLUDE_DEFAULTS_MUSL_TOOL \ |
||
154 | + { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0}, |
||
155 | +#else |
||
156 | +#define INCLUDE_DEFAULTS_MUSL_TOOL |
||
157 | +#endif |
||
158 | + |
||
159 | +#ifdef NATIVE_SYSTEM_HEADER_DIR |
||
160 | +#define INCLUDE_DEFAULTS_MUSL_NATIVE \ |
||
161 | + { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ |
||
162 | + { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 }, |
||
163 | +#else |
||
164 | +#define INCLUDE_DEFAULTS_MUSL_NATIVE |
||
165 | +#endif |
||
166 | + |
||
167 | +#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT) |
||
168 | +# undef INCLUDE_DEFAULTS_MUSL_LOCAL |
||
169 | +# define INCLUDE_DEFAULTS_MUSL_LOCAL |
||
170 | +# undef INCLUDE_DEFAULTS_MUSL_NATIVE |
||
171 | +# define INCLUDE_DEFAULTS_MUSL_NATIVE |
||
172 | +#else |
||
173 | +# undef INCLUDE_DEFAULTS_MUSL_CROSS |
||
174 | +# define INCLUDE_DEFAULTS_MUSL_CROSS |
||
175 | +#endif |
||
176 | + |
||
177 | +#undef INCLUDE_DEFAULTS |
||
178 | +#define INCLUDE_DEFAULTS \ |
||
179 | + { \ |
||
180 | + INCLUDE_DEFAULTS_MUSL_GPP \ |
||
181 | + INCLUDE_DEFAULTS_MUSL_PREFIX \ |
||
182 | + INCLUDE_DEFAULTS_MUSL_CROSS \ |
||
183 | + INCLUDE_DEFAULTS_MUSL_TOOL \ |
||
184 | + INCLUDE_DEFAULTS_MUSL_NATIVE \ |
||
185 | + { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ |
||
186 | + { 0, 0, 0, 0, 0, 0 } \ |
||
187 | + } |
||
188 | +#endif |
||
189 | --- a/gcc/config/rs6000/sysv4le.h |
||
190 | +++ b/gcc/config/rs6000/sysv4le.h |
||
191 | @@ -31,3 +31,5 @@ |
||
192 | /* Little-endian PowerPC64 Linux uses the ELF v2 ABI by default. */ |
||
193 | #define LINUX64_DEFAULT_ABI_ELFv2 |
||
194 | |||
195 | +#undef MUSL_DYNAMIC_LINKER_E |
||
196 | +#define MUSL_DYNAMIC_LINKER_E ENDIAN_SELECT("","le","le") |
||
197 | --- a/gcc/config.gcc |
||
198 | +++ b/gcc/config.gcc |
||
199 | @@ -2430,6 +2430,10 @@ powerpc*-*-linux*) |
||
200 | powerpc*-*-linux*paired*) |
||
201 | tm_file="${tm_file} rs6000/750cl.h" ;; |
||
202 | esac |
||
203 | + case ${target} in |
||
204 | + *-linux*-musl*) |
||
205 | + enable_secureplt=yes ;; |
||
206 | + esac |
||
207 | if test x${enable_secureplt} = xyes; then |
||
208 | tm_file="rs6000/secureplt.h ${tm_file}" |
||
209 | fi |