elf: Do not duplicate the GLIBC_TUNABLES string
[glibc.git] / sysdeps / x86 / Makefile
blob0aafd2afeb133e58e07b46c7bfaf4a667cbf3a41
1 ifeq ($(subdir),csu)
2 gen-as-const-headers += cpu-features-offsets.sym
3 endif
5 ifeq ($(subdir),elf)
6 sysdep_routines += get-cpuid-feature-leaf
7 sysdep-dl-routines += dl-get-cpu-features
8 sysdep_headers += sys/platform/x86.h bits/platform/x86.h
10 CFLAGS-dl-get-cpu-features.os += $(rtld-early-cflags)
11 CFLAGS-get-cpuid-feature-leaf.o += $(no-stack-protector)
13 tests += \
14 tst-get-cpu-features \
15 tst-get-cpu-features-static \
16 tst-cpu-features-cpuinfo \
17 tst-cpu-features-cpuinfo-static \
18 tst-cpu-features-supports \
19 tst-cpu-features-supports-static \
20 tst-hwcap-tunables \
21 # tests
22 tests-static += \
23 tst-get-cpu-features-static \
24 tst-cpu-features-cpuinfo-static \
25 tst-cpu-features-supports-static \
26 # tests-static
27 ifeq (yes,$(have-ifunc))
28 ifeq (yes,$(have-gcc-ifunc))
29 tests += \
30 tst-ifunc-isa-1 \
31 tst-ifunc-isa-1-static \
32 # tests
33 tests-static += \
34 tst-ifunc-isa-1-static \
35 # tests-static
36 test-xfail-tst-ifunc-isa-1 = $(with-lld)
37 test-xfail-tst-ifunc-isa-1-static = $(with-lld)
38 tests += \
39 tst-ifunc-isa-2 \
40 tst-ifunc-isa-2-static \
41 # tests
42 tests-static += \
43 tst-ifunc-isa-2-static \
44 # tests-static
45 test-xfail-tst-ifunc-isa-2 = $(with-lld)
46 test-xfail-tst-ifunc-isa-2-static = $(with-lld)
47 endif
48 endif
49 ifeq (yes,$(enable-x86-isa-level))
50 tests += \
51 tst-isa-level-1 \
52 # tests
53 modules-names += \
54 tst-isa-level-mod-1-baseline \
55 tst-isa-level-mod-1-v2 \
56 tst-isa-level-mod-1-v3 \
57 tst-isa-level-mod-1-v4 \
58 # modules-names
60 # X86 ISA level baseline
61 CFLAGS-tst-isa-level-mod-1-baseline.c += -DINCLUDE_X86_ISA_LEVEL \
62 -DISA_LEVEL=0x1 \
63 -march=x86-64
64 # X86 ISA level v2
65 CFLAGS-tst-isa-level-mod-1-v2.c += -DINCLUDE_X86_ISA_LEVEL \
66 -DISA_LEVEL=0x3 \
67 -march=x86-64
68 # X86 ISA level v3
69 CFLAGS-tst-isa-level-mod-1-v3.c += -DINCLUDE_X86_ISA_LEVEL \
70 -DISA_LEVEL=0x7 \
71 -march=x86-64
72 # X86 ISA level v4
73 CFLAGS-tst-isa-level-mod-1-v4.c += -DINCLUDE_X86_ISA_LEVEL \
74 -DISA_LEVEL=0xf \
75 -march=x86-64
77 $(objpfx)tst-isa-level-1.out: $(objpfx)tst-isa-level-mod-1-baseline.so \
78 $(objpfx)tst-isa-level-mod-1-v2.so \
79 $(objpfx)tst-isa-level-mod-1-v3.so \
80 $(objpfx)tst-isa-level-mod-1-v4.so
81 endif
82 tst-ifunc-isa-2-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-SSE4_2,-AVX,-AVX2,-AVX512F
83 tst-ifunc-isa-2-static-ENV = $(tst-ifunc-isa-2-ENV)
84 tst-hwcap-tunables-ARGS = -- $(host-test-program-cmd)
85 endif
87 ifeq ($(subdir),math)
88 tests += \
89 tst-ldbl-nonnormal-printf \
90 # tests
91 endif # $(subdir) == math
93 ifeq ($(subdir),setjmp)
94 gen-as-const-headers += jmp_buf-ssp.sym
95 sysdep_routines += __longjmp_cancel
96 ifneq ($(enable-cet),no)
97 tests += \
98 tst-setjmp-cet \
99 # tests
100 tst-setjmp-cet-ENV = GLIBC_TUNABLES=glibc.cpu.x86_ibt=on:glibc.cpu.x86_shstk=on
101 endif
102 endif
104 ifeq ($(subdir),string)
105 sysdep_routines += cacheinfo
107 tests += \
108 tst-memchr-rtm \
109 tst-memcmp-rtm \
110 tst-memmove-rtm \
111 tst-memrchr-rtm \
112 tst-memset-rtm \
113 tst-strcasecmp-rtm \
114 tst-strchr-rtm \
115 tst-strcmp-rtm \
116 tst-strcpy-rtm \
117 tst-strlen-rtm \
118 tst-strncasecmp-rtm \
119 tst-strncmp-rtm \
120 tst-strrchr-rtm \
121 tst-wcscmp-rtm \
122 tst-wcsncmp-rtm \
123 # tests
125 CFLAGS-tst-memchr-rtm.c += -mrtm
126 CFLAGS-tst-memcmp-rtm.c += -mrtm
127 CFLAGS-tst-memmove-rtm.c += -mrtm
128 CFLAGS-tst-memrchr-rtm.c += -mrtm
129 CFLAGS-tst-memset-rtm.c += -mrtm
130 CFLAGS-tst-strcasecmp-rtm.c += -mrtm
131 CFLAGS-tst-strchr-rtm.c += -mrtm
132 CFLAGS-tst-strcmp-rtm.c += -mrtm
133 CFLAGS-tst-strcpy-rtm.c += -mrtm
134 CFLAGS-tst-strlen-rtm.c += -mrtm
135 CFLAGS-tst-strncasecmp-rtm.c += -mrtm -Wno-error
136 CFLAGS-tst-strncmp-rtm.c += -mrtm -Wno-error
137 CFLAGS-tst-strrchr-rtm.c += -mrtm
138 CFLAGS-tst-wcscmp-rtm.c += -mrtm
139 CFLAGS-tst-wcsncmp-rtm.c += -mrtm -Wno-error
140 endif
142 ifneq ($(enable-cet),no)
143 ifeq ($(subdir),elf)
144 sysdep-dl-routines += dl-cet
146 tests += \
147 tst-cet-legacy-1 \
148 tst-cet-legacy-1a \
149 tst-cet-legacy-2 \
150 tst-cet-legacy-2a \
151 tst-cet-legacy-3 \
152 tst-cet-legacy-4 \
153 tst-cet-legacy-5a \
154 tst-cet-legacy-6a \
155 tst-cet-legacy-7 \
156 tst-cet-legacy-8 \
157 tst-cet-legacy-9 \
158 tst-cet-legacy-9-static \
159 tst-cet-legacy-10 \
160 tst-cet-legacy-10-static \
161 tst-cet-legacy-10a \
162 tst-cet-legacy-10a-static \
163 # tests
164 tests-static += \
165 tst-cet-legacy-9-static \
166 tst-cet-legacy-10-static \
167 tst-cet-legacy-10a-static \
168 # tests-static
169 tst-cet-legacy-1a-ARGS = -- $(host-test-program-cmd)
171 tests += \
172 tst-shstk-legacy-1a \
173 tst-shstk-legacy-1a-static \
174 tst-shstk-legacy-1b \
175 tst-shstk-legacy-1b-static \
176 tst-shstk-legacy-1c \
177 tst-shstk-legacy-1c-static \
178 tst-shstk-legacy-1d \
179 tst-shstk-legacy-1d-static \
180 tst-shstk-legacy-1e \
181 tst-shstk-legacy-1e-static \
182 tst-shstk-legacy-1f \
183 tst-shstk-legacy-1g \
184 # tests
185 modules-names += \
186 tst-shstk-legacy-mod-1 \
187 # modules-names
188 tests-static += \
189 tst-shstk-legacy-1a-static \
190 tst-shstk-legacy-1b-static \
191 tst-shstk-legacy-1c-static \
192 tst-shstk-legacy-1d-static \
193 tst-shstk-legacy-1e-static \
194 # tests-static
195 extra-objs += \
196 tst-shstk-legacy-1-extra.o \
197 # extra-objs
199 tests += \
200 tst-cet-legacy-4a \
201 tst-cet-legacy-4b \
202 tst-cet-legacy-4c \
203 tst-cet-legacy-5b \
204 tst-cet-legacy-6b \
205 # tests
206 modules-names += \
207 tst-cet-legacy-mod-1 \
208 tst-cet-legacy-mod-2 \
209 tst-cet-legacy-mod-4 \
210 tst-cet-legacy-mod-5a \
211 tst-cet-legacy-mod-5b \
212 tst-cet-legacy-mod-5c \
213 tst-cet-legacy-mod-6a \
214 tst-cet-legacy-mod-6b \
215 tst-cet-legacy-mod-6c \
216 # modules-names
218 CFLAGS-tst-cet-legacy-2.c += -fcf-protection=branch
219 CFLAGS-tst-cet-legacy-2a.c += -fcf-protection
220 CFLAGS-tst-cet-legacy-mod-1.c += -fcf-protection=none
221 CFLAGS-tst-cet-legacy-mod-2.c += -fcf-protection=none
222 CFLAGS-tst-cet-legacy-3.c += -fcf-protection=none
223 CFLAGS-tst-cet-legacy-4.c += -fcf-protection=branch
224 CPPFLAGS-tst-cet-legacy-4a.c += -DCET_IS_PERMISSIVE=1
225 CFLAGS-tst-cet-legacy-4a.c += -fcf-protection
226 CFLAGS-tst-cet-legacy-4b.c += -fcf-protection
227 CFLAGS-tst-cet-legacy-mod-4.c += -fcf-protection=none
228 CFLAGS-tst-cet-legacy-5a.c += -fcf-protection -mshstk
229 ifeq ($(enable-cet),permissive)
230 CPPFLAGS-tst-cet-legacy-5a.c += -DCET_IS_PERMISSIVE=1
231 endif
232 CFLAGS-tst-cet-legacy-5b.c += -fcf-protection -mshstk
233 CPPFLAGS-tst-cet-legacy-5b.c += -DCET_DISABLED_BY_ENV=1
234 CFLAGS-tst-cet-legacy-mod-5a.c += -fcf-protection=branch
235 CFLAGS-tst-cet-legacy-mod-5b.c += -fcf-protection
236 CFLAGS-tst-cet-legacy-mod-5c.c += -fcf-protection
237 CFLAGS-tst-cet-legacy-6a.c += -fcf-protection -mshstk
238 ifeq ($(enable-cet),permissive)
239 CPPFLAGS-tst-cet-legacy-6a.c += -DCET_IS_PERMISSIVE=1
240 endif
241 CFLAGS-tst-cet-legacy-6b.c += -fcf-protection -mshstk
242 CPPFLAGS-tst-cet-legacy-6b.c += -DCET_DISABLED_BY_ENV=1
243 CFLAGS-tst-cet-legacy-mod-6a.c += -fcf-protection=branch
244 CFLAGS-tst-cet-legacy-mod-6b.c += -fcf-protection
245 CFLAGS-tst-cet-legacy-mod-6c.c += -fcf-protection
246 CFLAGS-tst-cet-legacy-7.c += -fcf-protection=none
247 CFLAGS-tst-cet-legacy-10.c += -mshstk
248 CFLAGS-tst-cet-legacy-10-static.c += -mshstk
249 CFLAGS-tst-cet-legacy-10a.c += -fcf-protection=none
250 CFLAGS-tst-cet-legacy-10a-static.c += -fcf-protection=none
252 CFLAGS-tst-shstk-legacy-1a.c += -fcf-protection=none
253 CFLAGS-tst-shstk-legacy-1a-static.c += -fcf-protection=none
254 CFLAGS-tst-shstk-legacy-1d.c += -fcf-protection=none
255 CFLAGS-tst-shstk-legacy-1d-static.c += -fcf-protection=none
256 CFLAGS-tst-shstk-legacy-1f.c += -fcf-protection=none
258 $(objpfx)tst-cet-legacy-1: $(objpfx)tst-cet-legacy-mod-1.so \
259 $(objpfx)tst-cet-legacy-mod-2.so
260 $(objpfx)tst-cet-legacy-1a: $(objpfx)tst-cet-legacy-mod-1.so \
261 $(objpfx)tst-cet-legacy-mod-2.so
262 $(objpfx)tst-cet-legacy-2: $(objpfx)tst-cet-legacy-mod-2.so
263 $(objpfx)tst-cet-legacy-2.out: $(objpfx)tst-cet-legacy-mod-1.so
264 $(objpfx)tst-cet-legacy-2a: $(objpfx)tst-cet-legacy-mod-2.so
265 $(objpfx)tst-cet-legacy-2a.out: $(objpfx)tst-cet-legacy-mod-1.so
266 $(objpfx)tst-cet-legacy-4.out: $(objpfx)tst-cet-legacy-mod-4.so
267 $(objpfx)tst-cet-legacy-5a.out: $(objpfx)tst-cet-legacy-mod-5a.so \
268 $(objpfx)tst-cet-legacy-mod-5b.so
269 $(objpfx)tst-cet-legacy-mod-5a.so: $(objpfx)tst-cet-legacy-mod-5c.so
270 $(objpfx)tst-cet-legacy-mod-5b.so: $(objpfx)tst-cet-legacy-mod-5c.so
271 $(objpfx)tst-cet-legacy-6a.out: $(objpfx)tst-cet-legacy-mod-6a.so \
272 $(objpfx)tst-cet-legacy-mod-6b.so
273 $(objpfx)tst-cet-legacy-mod-6a.so: $(objpfx)tst-cet-legacy-mod-6c.so
274 $(objpfx)tst-cet-legacy-mod-6b.so: $(objpfx)tst-cet-legacy-mod-6c.so
275 LDFLAGS-tst-cet-legacy-mod-6c.so = -Wl,--enable-new-dtags,-z,nodelete
276 $(objpfx)tst-cet-legacy-4a.out: $(objpfx)tst-cet-legacy-mod-4.so
277 tst-cet-legacy-4a-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=permissive
278 $(objpfx)tst-cet-legacy-4b.out: $(objpfx)tst-cet-legacy-mod-4.so
279 tst-cet-legacy-4b-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=on
280 $(objpfx)tst-cet-legacy-4c.out: $(objpfx)tst-cet-legacy-mod-4.so
281 tst-cet-legacy-4c-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=off
282 $(objpfx)tst-cet-legacy-5b.out: $(objpfx)tst-cet-legacy-mod-5a.so \
283 $(objpfx)tst-cet-legacy-mod-5b.so
284 tst-cet-legacy-5b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
285 $(objpfx)tst-cet-legacy-6b.out: $(objpfx)tst-cet-legacy-mod-6a.so \
286 $(objpfx)tst-cet-legacy-mod-6b.so
287 tst-cet-legacy-6b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
288 tst-cet-legacy-9-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
289 tst-cet-legacy-9-static-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
291 $(objpfx)tst-shstk-legacy-1a: $(objpfx)tst-shstk-legacy-1-extra.o
292 $(objpfx)tst-shstk-legacy-1a-static: $(objpfx)tst-shstk-legacy-1-extra.o
293 $(objpfx)tst-shstk-legacy-1b: $(objpfx)tst-shstk-legacy-1-extra.o
294 $(objpfx)tst-shstk-legacy-1b-static: $(objpfx)tst-shstk-legacy-1-extra.o
295 tst-shstk-legacy-1c-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-SHSTK
296 tst-shstk-legacy-1c-static-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-SHSTK
297 $(objpfx)tst-shstk-legacy-1c: $(objpfx)tst-shstk-legacy-1-extra.o
298 $(objpfx)tst-shstk-legacy-1c-static: $(objpfx)tst-shstk-legacy-1-extra.o
299 $(objpfx)tst-shstk-legacy-1d: $(objpfx)tst-shstk-legacy-1-extra.o
300 $(objpfx)tst-shstk-legacy-1d-static: $(objpfx)tst-shstk-legacy-1-extra.o
301 $(objpfx)tst-shstk-legacy-1e: $(objpfx)tst-shstk-legacy-1-extra.o
302 $(objpfx)tst-shstk-legacy-1e-static: $(objpfx)tst-shstk-legacy-1-extra.o
303 $(objpfx)tst-shstk-legacy-1e.out: \
304 $(..)/sysdeps/x86/tst-shstk-legacy-1e.sh $(objpfx)tst-shstk-legacy-1e
305 $(SHELL) $< $(common-objpfx) '$(test-program-prefix)' 2> $@; \
306 $(evaluate-test)
307 $(objpfx)tst-shstk-legacy-1e-static.out: \
308 $(..)/sysdeps/x86/tst-shstk-legacy-1e-static.sh \
309 $(objpfx)tst-shstk-legacy-1e-static
310 $(SHELL) $< $(common-objpfx) 2> $@; \
311 $(evaluate-test)
312 $(objpfx)tst-shstk-legacy-1f: $(objpfx)tst-shstk-legacy-mod-1.so
313 $(objpfx)tst-shstk-legacy-mod-1.so: \
314 $(objpfx)tst-shstk-legacy-mod-1.os \
315 $(objpfx)tst-shstk-legacy-1-extra.os
316 $(objpfx)tst-shstk-legacy-1g: $(objpfx)tst-shstk-legacy-mod-1.so
317 $(objpfx)tst-shstk-legacy-1g.out: \
318 $(..)/sysdeps/x86/tst-shstk-legacy-1g.sh $(objpfx)tst-shstk-legacy-1g
319 $(SHELL) $< $(common-objpfx) '$(test-program-prefix)' 2> $@; \
320 $(evaluate-test)
321 endif
323 # Add -fcf-protection to CFLAGS when CET is enabled.
324 CFLAGS-.o += -fcf-protection
325 CFLAGS-.os += -fcf-protection
326 CFLAGS-.op += -fcf-protection
327 CFLAGS-.oS += -fcf-protection
329 # Compile assembly codes with <cet.h> when CET is enabled.
330 asm-CPPFLAGS += -fcf-protection -include cet.h
332 ifeq ($(subdir),elf)
333 ifeq (yes,$(build-shared))
334 tests-special += $(objpfx)check-cet.out
335 endif
337 # FIXME: Can't use all-built-dso in elf/Makefile since this file is
338 # processed before elf/Makefile. Duplicate it here.
339 cet-built-dso := $(common-objpfx)elf/ld.so $(common-objpfx)libc.so \
340 $(filter-out $(common-objpfx)linkobj/libc.so, \
341 $(sort $(wildcard $(addprefix $(common-objpfx), \
342 */lib*.so \
343 iconvdata/*.so))))
345 $(cet-built-dso:=.note): %.note: %
346 @rm -f $@T
347 LC_ALL=C $(READELF) -n $< > $@T
348 test -s $@T
349 mv -f $@T $@
350 common-generated += $(cet-built-dso:$(common-objpfx)%=%.note)
352 $(objpfx)check-cet.out: $(..)sysdeps/x86/check-cet.awk \
353 $(cet-built-dso:=.note)
354 LC_ALL=C $(AWK) -f $^ > $@; \
355 $(evaluate-test)
356 generated += check-cet.out
357 endif
358 endif
360 ifeq ($(subdir),posix)
361 tests += \
362 tst-sysconf-cache-linesize \
363 tst-sysconf-cache-linesize-static \
364 # tests
365 tests-static += \
366 tst-sysconf-cache-linesize-static \
367 # tests-static
368 endif