2 gen-as-const-headers
+= cpu-features-offsets.sym
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
)
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 \
23 tst-get-cpu-features-static \
24 tst-cpu-features-cpuinfo-static \
25 tst-cpu-features-supports-static \
27 ifeq (yes
,$(have-ifunc
))
28 ifeq (yes
,$(have-gcc-ifunc
))
31 tst-ifunc-isa-1-static \
34 tst-ifunc-isa-1-static \
36 test-xfail-tst-ifunc-isa-1
= $(with-lld
)
37 test-xfail-tst-ifunc-isa-1-static
= $(with-lld
)
40 tst-ifunc-isa-2-static \
43 tst-ifunc-isa-2-static \
45 test-xfail-tst-ifunc-isa-2
= $(with-lld
)
46 test-xfail-tst-ifunc-isa-2-static
= $(with-lld
)
49 ifeq (yes
,$(enable-x86-isa-level
))
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 \
60 # X86 ISA level baseline
61 CFLAGS-tst-isa-level-mod-1-baseline.c
+= -DINCLUDE_X86_ISA_LEVEL \
65 CFLAGS-tst-isa-level-mod-1-v2.c
+= -DINCLUDE_X86_ISA_LEVEL \
69 CFLAGS-tst-isa-level-mod-1-v3.c
+= -DINCLUDE_X86_ISA_LEVEL \
73 CFLAGS-tst-isa-level-mod-1-v4.c
+= -DINCLUDE_X86_ISA_LEVEL \
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
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
)
89 tst-ldbl-nonnormal-printf \
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
)
100 tst-setjmp-cet-ENV
= GLIBC_TUNABLES
=glibc.cpu.x86_ibt
=on
:glibc.cpu.x86_shstk
=on
104 ifeq ($(subdir
),string
)
105 sysdep_routines
+= cacheinfo
118 tst-strncasecmp-rtm \
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
142 ifneq ($(enable-cet
),no
)
144 sysdep-dl-routines
+= dl-cet
158 tst-cet-legacy-9-static \
160 tst-cet-legacy-10-static \
162 tst-cet-legacy-10a-static \
165 tst-cet-legacy-9-static \
166 tst-cet-legacy-10-static \
167 tst-cet-legacy-10a-static \
169 tst-cet-legacy-1a-ARGS
= -- $(host-test-program-cmd
)
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 \
186 tst-shstk-legacy-mod-1 \
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 \
196 tst-shstk-legacy-1-extra.o \
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 \
218 CFLAGS-tst-cet-legacy-2.c
+= -fcf-protection
=none
-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
=none
-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
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
=none
-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
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
=none
-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 tst-cet-legacy-4-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
253 tst-cet-legacy-6-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
254 tst-cet-legacy-10-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
255 tst-cet-legacy-10-static-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
256 tst-cet-legacy-10a-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
257 tst-cet-legacy-10a-static-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
259 CFLAGS-tst-shstk-legacy-1a.c
+= -fcf-protection
=none
260 CFLAGS-tst-shstk-legacy-1a-static.c
+= -fcf-protection
=none
261 CFLAGS-tst-shstk-legacy-1d.c
+= -fcf-protection
=none
262 CFLAGS-tst-shstk-legacy-1d-static.c
+= -fcf-protection
=none
263 CFLAGS-tst-shstk-legacy-1f.c
+= -fcf-protection
=none
265 $(objpfx
)tst-cet-legacy-1
: $(objpfx
)tst-cet-legacy-mod-1.so \
266 $(objpfx
)tst-cet-legacy-mod-2.so
267 $(objpfx
)tst-cet-legacy-1a
: $(objpfx
)tst-cet-legacy-mod-1.so \
268 $(objpfx
)tst-cet-legacy-mod-2.so
269 $(objpfx
)tst-cet-legacy-2
: $(objpfx
)tst-cet-legacy-mod-2.so
270 $(objpfx
)tst-cet-legacy-2.out
: $(objpfx
)tst-cet-legacy-mod-1.so
271 $(objpfx
)tst-cet-legacy-2a
: $(objpfx
)tst-cet-legacy-mod-2.so
272 $(objpfx
)tst-cet-legacy-2a.out
: $(objpfx
)tst-cet-legacy-mod-1.so
273 $(objpfx
)tst-cet-legacy-4.out
: $(objpfx
)tst-cet-legacy-mod-4.so
274 $(objpfx
)tst-cet-legacy-5a.out
: $(objpfx
)tst-cet-legacy-mod-5a.so \
275 $(objpfx
)tst-cet-legacy-mod-5b.so
276 $(objpfx
)tst-cet-legacy-mod-5a.so
: $(objpfx
)tst-cet-legacy-mod-5c.so
277 $(objpfx
)tst-cet-legacy-mod-5b.so
: $(objpfx
)tst-cet-legacy-mod-5c.so
278 $(objpfx
)tst-cet-legacy-6a.out
: $(objpfx
)tst-cet-legacy-mod-6a.so \
279 $(objpfx
)tst-cet-legacy-mod-6b.so
280 $(objpfx
)tst-cet-legacy-mod-6a.so
: $(objpfx
)tst-cet-legacy-mod-6c.so
281 $(objpfx
)tst-cet-legacy-mod-6b.so
: $(objpfx
)tst-cet-legacy-mod-6c.so
282 LDFLAGS-tst-cet-legacy-mod-6c.so
= -Wl
,--enable-new-dtags
,-z
,nodelete
283 $(objpfx
)tst-cet-legacy-4a.out
: $(objpfx
)tst-cet-legacy-mod-4.so
284 tst-cet-legacy-4a-ENV
= GLIBC_TUNABLES
=glibc.cpu.x86_shstk
=permissive
285 $(objpfx
)tst-cet-legacy-4b.out
: $(objpfx
)tst-cet-legacy-mod-4.so
286 tst-cet-legacy-4b-ENV
= GLIBC_TUNABLES
=glibc.cpu.x86_shstk
=on
287 $(objpfx
)tst-cet-legacy-4c.out
: $(objpfx
)tst-cet-legacy-mod-4.so
288 tst-cet-legacy-4c-ENV
= GLIBC_TUNABLES
=glibc.cpu.x86_shstk
=off
289 $(objpfx
)tst-cet-legacy-5b.out
: $(objpfx
)tst-cet-legacy-mod-5a.so \
290 $(objpfx
)tst-cet-legacy-mod-5b.so
291 tst-cet-legacy-5b-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=-IBT
,-SHSTK
292 $(objpfx
)tst-cet-legacy-6b.out
: $(objpfx
)tst-cet-legacy-mod-6a.so \
293 $(objpfx
)tst-cet-legacy-mod-6b.so
294 tst-cet-legacy-6b-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=-IBT
,-SHSTK
295 tst-cet-legacy-9-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=-IBT
,-SHSTK
296 tst-cet-legacy-9-static-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=-IBT
,-SHSTK
298 tst-shstk-legacy-1a-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
299 tst-shstk-legacy-1a-static-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
300 $(objpfx
)tst-shstk-legacy-1a
: $(objpfx
)tst-shstk-legacy-1-extra.o
301 $(objpfx
)tst-shstk-legacy-1a-static
: $(objpfx
)tst-shstk-legacy-1-extra.o
302 tst-shstk-legacy-1b-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
303 tst-shstk-legacy-1b-static-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
304 $(objpfx
)tst-shstk-legacy-1b
: $(objpfx
)tst-shstk-legacy-1-extra.o
305 $(objpfx
)tst-shstk-legacy-1b-static
: $(objpfx
)tst-shstk-legacy-1-extra.o
306 tst-shstk-legacy-1c-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=-SHSTK
307 tst-shstk-legacy-1c-static-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=-SHSTK
308 $(objpfx
)tst-shstk-legacy-1c
: $(objpfx
)tst-shstk-legacy-1-extra.o
309 $(objpfx
)tst-shstk-legacy-1c-static
: $(objpfx
)tst-shstk-legacy-1-extra.o
310 tst-shstk-legacy-1d-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
311 tst-shstk-legacy-1d-static-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
312 $(objpfx
)tst-shstk-legacy-1d
: $(objpfx
)tst-shstk-legacy-1-extra.o
313 $(objpfx
)tst-shstk-legacy-1d-static
: $(objpfx
)tst-shstk-legacy-1-extra.o
314 $(objpfx
)tst-shstk-legacy-1e
: $(objpfx
)tst-shstk-legacy-1-extra.o
315 $(objpfx
)tst-shstk-legacy-1e-static
: $(objpfx
)tst-shstk-legacy-1-extra.o
316 $(objpfx
)tst-shstk-legacy-1e.out
: \
317 $(..
)/sysdeps
/x86
/tst-shstk-legacy-1e.sh
$(objpfx
)tst-shstk-legacy-1e
318 $(SHELL
) $< $(common-objpfx
) '$(test-program-prefix)' 2> $@
; \
320 $(objpfx
)tst-shstk-legacy-1e-static.out
: \
321 $(..
)/sysdeps
/x86
/tst-shstk-legacy-1e-static.sh \
322 $(objpfx
)tst-shstk-legacy-1e-static
323 $(SHELL
) $< $(common-objpfx
) 2> $@
; \
325 tst-shstk-legacy-1f-ENV
= GLIBC_TUNABLES
=glibc.cpu.hwcaps
=SHSTK
326 $(objpfx
)tst-shstk-legacy-1f
: $(objpfx
)tst-shstk-legacy-mod-1.so
327 $(objpfx
)tst-shstk-legacy-mod-1.so
: \
328 $(objpfx
)tst-shstk-legacy-mod-1.os \
329 $(objpfx
)tst-shstk-legacy-1-extra.os
330 $(objpfx
)tst-shstk-legacy-1g
: $(objpfx
)tst-shstk-legacy-mod-1.so
331 $(objpfx
)tst-shstk-legacy-1g.out
: \
332 $(..
)/sysdeps
/x86
/tst-shstk-legacy-1g.sh
$(objpfx
)tst-shstk-legacy-1g
333 $(SHELL
) $< $(common-objpfx
) '$(test-program-prefix)' 2> $@
; \
337 # Add -fcf-protection to CFLAGS when CET is enabled.
338 CFLAGS-.o
+= -fcf-protection
339 CFLAGS-.os
+= -fcf-protection
340 CFLAGS-.op
+= -fcf-protection
341 CFLAGS-.oS
+= -fcf-protection
343 # Compile assembly codes with <cet.h> when CET is enabled.
344 asm-CPPFLAGS
+= -fcf-protection
-include cet.h
347 ifeq (yes
,$(build-shared
))
348 tests-special
+= $(objpfx
)check-cet.out
351 # FIXME: Can't use all-built-dso in elf/Makefile since this file is
352 # processed before elf/Makefile. Duplicate it here.
353 cet-built-dso
:= $(common-objpfx
)elf
/ld.so
$(common-objpfx
)libc.so \
354 $(filter-out $(common-objpfx
)linkobj
/libc.so
, \
355 $(sort $(wildcard $(addprefix $(common-objpfx
), \
359 $(cet-built-dso
:=.note
): %.note
: %
361 LC_ALL
=C
$(READELF
) -n
$< > $@T
364 common-generated
+= $(cet-built-dso
:$(common-objpfx
)%=%.note
)
366 $(objpfx
)check-cet.out
: $(..
)sysdeps
/x86
/check-cet.awk \
367 $(cet-built-dso
:=.note
)
368 LC_ALL
=C
$(AWK
) -f
$^
> $@
; \
370 generated
+= check-cet.out
374 ifeq ($(subdir
),posix
)
376 tst-sysconf-cache-linesize \
377 tst-sysconf-cache-linesize-static \
380 tst-sysconf-cache-linesize-static \