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 \
22 tst-get-cpu-features-static \
23 tst-cpu-features-cpuinfo-static \
24 tst-cpu-features-supports-static \
26 ifeq (yes,$(have-ifunc))
27 ifeq (yes,$(have-gcc-ifunc))
30 tst-ifunc-isa-1-static \
33 tst-ifunc-isa-1-static \
35 test-xfail-tst-ifunc-isa-1 = $(with-lld)
36 test-xfail-tst-ifunc-isa-1-static = $(with-lld)
39 tst-ifunc-isa-2-static \
42 tst-ifunc-isa-2-static \
44 test-xfail-tst-ifunc-isa-2 = $(with-lld)
45 test-xfail-tst-ifunc-isa-2-static = $(with-lld)
48 ifeq (yes,$(enable-x86-isa-level))
53 tst-isa-level-mod-1-baseline \
54 tst-isa-level-mod-1-v2 \
55 tst-isa-level-mod-1-v3 \
56 tst-isa-level-mod-1-v4 \
59 # X86 ISA level baseline
60 CFLAGS-tst-isa-level-mod-1-baseline.c += -DINCLUDE_X86_ISA_LEVEL \
64 CFLAGS-tst-isa-level-mod-1-v2.c += -DINCLUDE_X86_ISA_LEVEL \
68 CFLAGS-tst-isa-level-mod-1-v3.c += -DINCLUDE_X86_ISA_LEVEL \
72 CFLAGS-tst-isa-level-mod-1-v4.c += -DINCLUDE_X86_ISA_LEVEL \
76 $(objpfx)tst-isa-level-1.out: $(objpfx)tst-isa-level-mod-1-baseline.so \
77 $(objpfx)tst-isa-level-mod-1-v2.so \
78 $(objpfx)tst-isa-level-mod-1-v3.so \
79 $(objpfx)tst-isa-level-mod-1-v4.so
81 tst-ifunc-isa-2-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-SSE4_2,-AVX,-AVX2,-AVX512F
82 tst-ifunc-isa-2-static-ENV = $(tst-ifunc-isa-2-ENV)
87 tst-ldbl-nonnormal-printf \
89 endif # $(subdir) == math
91 ifeq ($(subdir),setjmp)
92 gen-as-const-headers += jmp_buf-ssp.sym
93 sysdep_routines += __longjmp_cancel
94 ifneq ($(enable-cet),no)
98 tst-setjmp-cet-ENV = GLIBC_TUNABLES=glibc.cpu.x86_ibt=on:glibc.cpu.x86_shstk=on
102 ifeq ($(subdir),string)
103 sysdep_routines += cacheinfo
116 tst-strncasecmp-rtm \
123 CFLAGS-tst-memchr-rtm.c += -mrtm
124 CFLAGS-tst-memcmp-rtm.c += -mrtm
125 CFLAGS-tst-memmove-rtm.c += -mrtm
126 CFLAGS-tst-memrchr-rtm.c += -mrtm
127 CFLAGS-tst-memset-rtm.c += -mrtm
128 CFLAGS-tst-strcasecmp-rtm.c += -mrtm
129 CFLAGS-tst-strchr-rtm.c += -mrtm
130 CFLAGS-tst-strcmp-rtm.c += -mrtm
131 CFLAGS-tst-strcpy-rtm.c += -mrtm
132 CFLAGS-tst-strlen-rtm.c += -mrtm
133 CFLAGS-tst-strncasecmp-rtm.c += -mrtm -Wno-error
134 CFLAGS-tst-strncmp-rtm.c += -mrtm -Wno-error
135 CFLAGS-tst-strrchr-rtm.c += -mrtm
136 CFLAGS-tst-wcscmp-rtm.c += -mrtm
137 CFLAGS-tst-wcsncmp-rtm.c += -mrtm -Wno-error
140 ifneq ($(enable-cet),no)
142 sysdep-dl-routines += dl-cet
156 tst-cet-legacy-9-static \
158 tst-cet-legacy-10-static \
161 tst-cet-legacy-9-static \
162 tst-cet-legacy-10-static \
164 tst-cet-legacy-1a-ARGS = -- $(host-test-program-cmd)
173 tst-cet-legacy-mod-1 \
174 tst-cet-legacy-mod-2 \
175 tst-cet-legacy-mod-4 \
176 tst-cet-legacy-mod-5a \
177 tst-cet-legacy-mod-5b \
178 tst-cet-legacy-mod-5c \
179 tst-cet-legacy-mod-6a \
180 tst-cet-legacy-mod-6b \
181 tst-cet-legacy-mod-6c \
184 CFLAGS-tst-cet-legacy-2.c += -fcf-protection=branch
185 CFLAGS-tst-cet-legacy-2a.c += -fcf-protection
186 CFLAGS-tst-cet-legacy-mod-1.c += -fcf-protection=none
187 CFLAGS-tst-cet-legacy-mod-2.c += -fcf-protection=none
188 CFLAGS-tst-cet-legacy-3.c += -fcf-protection=none
189 CFLAGS-tst-cet-legacy-4.c += -fcf-protection=branch
190 CFLAGS-tst-cet-legacy-4a.c += -fcf-protection
191 CFLAGS-tst-cet-legacy-4b.c += -fcf-protection
192 CFLAGS-tst-cet-legacy-mod-4.c += -fcf-protection=none
193 CFLAGS-tst-cet-legacy-5a.c += -fcf-protection -mshstk
194 ifeq ($(enable-cet),permissive)
195 CPPFLAGS-tst-cet-legacy-5a.c += -DCET_IS_PERMISSIVE=1
197 CFLAGS-tst-cet-legacy-5b.c += -fcf-protection -mshstk
198 CPPFLAGS-tst-cet-legacy-5b.c += -DCET_DISABLED_BY_ENV=1
199 CFLAGS-tst-cet-legacy-mod-5a.c += -fcf-protection=branch
200 CFLAGS-tst-cet-legacy-mod-5b.c += -fcf-protection
201 CFLAGS-tst-cet-legacy-mod-5c.c += -fcf-protection
202 CFLAGS-tst-cet-legacy-6a.c += -fcf-protection -mshstk
203 ifeq ($(enable-cet),permissive)
204 CPPFLAGS-tst-cet-legacy-6a.c += -DCET_IS_PERMISSIVE=1
206 CFLAGS-tst-cet-legacy-6b.c += -fcf-protection -mshstk
207 CPPFLAGS-tst-cet-legacy-6b.c += -DCET_DISABLED_BY_ENV=1
208 CFLAGS-tst-cet-legacy-mod-6a.c += -fcf-protection=branch
209 CFLAGS-tst-cet-legacy-mod-6b.c += -fcf-protection
210 CFLAGS-tst-cet-legacy-mod-6c.c += -fcf-protection
211 CFLAGS-tst-cet-legacy-7.c += -fcf-protection=none
212 CFLAGS-tst-cet-legacy-10.c += -mshstk
213 CFLAGS-tst-cet-legacy-10-static.c += -mshstk
215 $(objpfx)tst-cet-legacy-1: $(objpfx)tst-cet-legacy-mod-1.so \
216 $(objpfx)tst-cet-legacy-mod-2.so
217 $(objpfx)tst-cet-legacy-1a: $(objpfx)tst-cet-legacy-mod-1.so \
218 $(objpfx)tst-cet-legacy-mod-2.so
219 $(objpfx)tst-cet-legacy-2: $(objpfx)tst-cet-legacy-mod-2.so
220 $(objpfx)tst-cet-legacy-2.out: $(objpfx)tst-cet-legacy-mod-1.so
221 $(objpfx)tst-cet-legacy-2a: $(objpfx)tst-cet-legacy-mod-2.so
222 $(objpfx)tst-cet-legacy-2a.out: $(objpfx)tst-cet-legacy-mod-1.so
223 $(objpfx)tst-cet-legacy-4.out: $(objpfx)tst-cet-legacy-mod-4.so
224 $(objpfx)tst-cet-legacy-5a.out: $(objpfx)tst-cet-legacy-mod-5a.so \
225 $(objpfx)tst-cet-legacy-mod-5b.so
226 $(objpfx)tst-cet-legacy-mod-5a.so: $(objpfx)tst-cet-legacy-mod-5c.so
227 $(objpfx)tst-cet-legacy-mod-5b.so: $(objpfx)tst-cet-legacy-mod-5c.so
228 $(objpfx)tst-cet-legacy-6a.out: $(objpfx)tst-cet-legacy-mod-6a.so \
229 $(objpfx)tst-cet-legacy-mod-6b.so
230 $(objpfx)tst-cet-legacy-mod-6a.so: $(objpfx)tst-cet-legacy-mod-6c.so
231 $(objpfx)tst-cet-legacy-mod-6b.so: $(objpfx)tst-cet-legacy-mod-6c.so
232 LDFLAGS-tst-cet-legacy-mod-6c.so = -Wl,--enable-new-dtags,-z,nodelete
233 $(objpfx)tst-cet-legacy-4a.out: $(objpfx)tst-cet-legacy-mod-4.so
234 tst-cet-legacy-4a-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=permissive
235 $(objpfx)tst-cet-legacy-4b.out: $(objpfx)tst-cet-legacy-mod-4.so
236 tst-cet-legacy-4b-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=on
237 $(objpfx)tst-cet-legacy-4c.out: $(objpfx)tst-cet-legacy-mod-4.so
238 tst-cet-legacy-4c-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=off
239 $(objpfx)tst-cet-legacy-5b.out: $(objpfx)tst-cet-legacy-mod-5a.so \
240 $(objpfx)tst-cet-legacy-mod-5b.so
241 tst-cet-legacy-5b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
242 $(objpfx)tst-cet-legacy-6b.out: $(objpfx)tst-cet-legacy-mod-6a.so \
243 $(objpfx)tst-cet-legacy-mod-6b.so
244 tst-cet-legacy-6b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
245 tst-cet-legacy-9-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
246 tst-cet-legacy-9-static-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
249 # Add -fcf-protection to CFLAGS when CET is enabled.
250 CFLAGS-.o += -fcf-protection
251 CFLAGS-.os += -fcf-protection
252 CFLAGS-.op += -fcf-protection
253 CFLAGS-.oS += -fcf-protection
255 # Compile assembly codes with <cet.h> when CET is enabled.
256 asm-CPPFLAGS += -fcf-protection -include cet.h
259 ifeq (yes,$(build-shared))
260 tests-special += $(objpfx)check-cet.out
263 # FIXME: Can't use all-built-dso in elf/Makefile since this file is
264 # processed before elf/Makefile. Duplicate it here.
265 cet-built-dso := $(common-objpfx)elf/ld.so $(common-objpfx)libc.so \
266 $(filter-out $(common-objpfx)linkobj/libc.so, \
267 $(sort $(wildcard $(addprefix $(common-objpfx), \
271 $(cet-built-dso:=.note): %.note: %
273 LC_ALL=C $(READELF) -n $< > $@T
276 common-generated += $(cet-built-dso:$(common-objpfx)%=%.note)
278 $(objpfx)check-cet.out: $(..)sysdeps/x86/check-cet.awk \
279 $(cet-built-dso:=.note)
280 LC_ALL=C $(AWK) -f $^ > $@; \
282 generated += check-cet.out
286 ifeq ($(subdir),posix)
288 tst-sysconf-cache-linesize \
289 tst-sysconf-cache-linesize-static \
292 tst-sysconf-cache-linesize-static \