]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/x86/Makefile
x86: Set header.feature_1 in TCB for always-on CET [BZ #27177]
[thirdparty/glibc.git] / sysdeps / x86 / Makefile
CommitLineData
e2e4f560 1ifeq ($(subdir),csu)
2a1f15b1 2gen-as-const-headers += cpu-features-offsets.sym
e2e4f560
L
3endif
4
5ifeq ($(subdir),elf)
6sysdep-dl-routines += dl-get-cpu-features
7
c92a00d8 8tests += tst-get-cpu-features tst-get-cpu-features-static
e2e4f560
L
9tests-static += tst-get-cpu-features-static
10endif
d6cc1829
L
11
12ifeq ($(subdir),setjmp)
faaee1f0 13gen-as-const-headers += jmp_buf-ssp.sym
d6cc1829 14sysdep_routines += __longjmp_cancel
420ade1f
L
15ifneq ($(enable-cet),no)
16ifneq ($(have-tunables),no)
17tests += tst-setjmp-cet
18tst-setjmp-cet-ENV = GLIBC_TUNABLES=glibc.cpu.x86_ibt=on:glibc.cpu.x86_shstk=on
19endif
20endif
d6cc1829 21endif
f753fa7d
L
22
23ifeq ($(enable-cet),yes)
24ifeq ($(subdir),elf)
25sysdep-dl-routines += dl-cet
fddcd003 26
c089fd80 27tests += tst-cet-legacy-1 tst-cet-legacy-1a tst-cet-legacy-2 \
5e1548a6
L
28 tst-cet-legacy-2a tst-cet-legacy-3 tst-cet-legacy-4 \
29 tst-cet-legacy-5a tst-cet-legacy-6a
c089fd80 30tst-cet-legacy-1a-ARGS = -- $(host-test-program-cmd)
fddcd003 31ifneq (no,$(have-tunables))
5e1548a6
L
32tests += tst-cet-legacy-4a tst-cet-legacy-4b tst-cet-legacy-4c \
33 tst-cet-legacy-5b tst-cet-legacy-6b
fddcd003
L
34endif
35modules-names += tst-cet-legacy-mod-1 tst-cet-legacy-mod-2 \
5e1548a6
L
36 tst-cet-legacy-mod-4 tst-cet-legacy-mod-5a \
37 tst-cet-legacy-mod-5b tst-cet-legacy-mod-5c \
38 tst-cet-legacy-mod-6a tst-cet-legacy-mod-6b \
39 tst-cet-legacy-mod-6c
fddcd003
L
40
41CFLAGS-tst-cet-legacy-2.c += -fcf-protection=branch
42CFLAGS-tst-cet-legacy-2a.c += -fcf-protection
43CFLAGS-tst-cet-legacy-mod-1.c += -fcf-protection=none
44CFLAGS-tst-cet-legacy-mod-2.c += -fcf-protection=none
45CFLAGS-tst-cet-legacy-3.c += -fcf-protection=none
46CFLAGS-tst-cet-legacy-4.c += -fcf-protection=branch
47CFLAGS-tst-cet-legacy-4a.c += -fcf-protection
48CFLAGS-tst-cet-legacy-4b.c += -fcf-protection
49CFLAGS-tst-cet-legacy-mod-4.c += -fcf-protection=none
5e1548a6
L
50CFLAGS-tst-cet-legacy-5a.c += -fcf-protection
51CFLAGS-tst-cet-legacy-5b.c += -fcf-protection
52CFLAGS-tst-cet-legacy-mod-5a.c += -fcf-protection=none
53CFLAGS-tst-cet-legacy-mod-5b.c += -fcf-protection
54CFLAGS-tst-cet-legacy-mod-5c.c += -fcf-protection
55CFLAGS-tst-cet-legacy-6a.c += -fcf-protection
56CFLAGS-tst-cet-legacy-6b.c += -fcf-protection
57CFLAGS-tst-cet-legacy-mod-6a.c += -fcf-protection=none
58CFLAGS-tst-cet-legacy-mod-6b.c += -fcf-protection
59CFLAGS-tst-cet-legacy-mod-6c.c += -fcf-protection
fddcd003
L
60
61$(objpfx)tst-cet-legacy-1: $(objpfx)tst-cet-legacy-mod-1.so \
c089fd80
L
62 $(objpfx)tst-cet-legacy-mod-2.so
63$(objpfx)tst-cet-legacy-1a: $(objpfx)tst-cet-legacy-mod-1.so \
fddcd003
L
64 $(objpfx)tst-cet-legacy-mod-2.so
65$(objpfx)tst-cet-legacy-2: $(objpfx)tst-cet-legacy-mod-2.so $(libdl)
66$(objpfx)tst-cet-legacy-2.out: $(objpfx)tst-cet-legacy-mod-1.so
67$(objpfx)tst-cet-legacy-2a: $(objpfx)tst-cet-legacy-mod-2.so $(libdl)
68$(objpfx)tst-cet-legacy-2a.out: $(objpfx)tst-cet-legacy-mod-1.so
69$(objpfx)tst-cet-legacy-4: $(libdl)
70$(objpfx)tst-cet-legacy-4.out: $(objpfx)tst-cet-legacy-mod-4.so
5e1548a6
L
71$(objpfx)tst-cet-legacy-5a: $(libdl)
72$(objpfx)tst-cet-legacy-5a.out: $(objpfx)tst-cet-legacy-mod-5a.so \
73 $(objpfx)tst-cet-legacy-mod-5b.so
74$(objpfx)tst-cet-legacy-mod-5a.so: $(objpfx)tst-cet-legacy-mod-5c.so
75$(objpfx)tst-cet-legacy-mod-5b.so: $(objpfx)tst-cet-legacy-mod-5c.so
76$(objpfx)tst-cet-legacy-6a: $(libdl)
77$(objpfx)tst-cet-legacy-6a.out: $(objpfx)tst-cet-legacy-mod-6a.so \
78 $(objpfx)tst-cet-legacy-mod-6b.so
79$(objpfx)tst-cet-legacy-mod-6a.so: $(objpfx)tst-cet-legacy-mod-6c.so
80$(objpfx)tst-cet-legacy-mod-6b.so: $(objpfx)tst-cet-legacy-mod-6c.so
81LDFLAGS-tst-cet-legacy-mod-6c.so = -Wl,--enable-new-dtags,-z,nodelete
fddcd003
L
82ifneq (no,$(have-tunables))
83$(objpfx)tst-cet-legacy-4a: $(libdl)
84$(objpfx)tst-cet-legacy-4a.out: $(objpfx)tst-cet-legacy-mod-4.so
dce452dc 85tst-cet-legacy-4a-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=permissive
fddcd003
L
86$(objpfx)tst-cet-legacy-4b: $(libdl)
87$(objpfx)tst-cet-legacy-4b.out: $(objpfx)tst-cet-legacy-mod-4.so
dce452dc 88tst-cet-legacy-4b-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=on
fddcd003
L
89$(objpfx)tst-cet-legacy-4c: $(libdl)
90$(objpfx)tst-cet-legacy-4c.out: $(objpfx)tst-cet-legacy-mod-4.so
dce452dc 91tst-cet-legacy-4c-ENV = GLIBC_TUNABLES=glibc.cpu.x86_shstk=off
5e1548a6
L
92$(objpfx)tst-cet-legacy-5b: $(libdl)
93$(objpfx)tst-cet-legacy-5b.out: $(objpfx)tst-cet-legacy-mod-5a.so \
94 $(objpfx)tst-cet-legacy-mod-5b.so
95tst-cet-legacy-5b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
96$(objpfx)tst-cet-legacy-6b: $(libdl)
97$(objpfx)tst-cet-legacy-6b.out: $(objpfx)tst-cet-legacy-mod-6a.so \
98 $(objpfx)tst-cet-legacy-mod-6b.so
99tst-cet-legacy-6b-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-IBT,-SHSTK
fddcd003 100endif
f753fa7d
L
101endif
102
103# Add -fcf-protection to CFLAGS when CET is enabled.
104CFLAGS-.o += -fcf-protection
105CFLAGS-.os += -fcf-protection
106CFLAGS-.op += -fcf-protection
107CFLAGS-.oS += -fcf-protection
108
109# Compile assembly codes with <cet.h> when CET is enabled.
110asm-CPPFLAGS += -fcf-protection -include cet.h
111
112ifeq ($(subdir),elf)
113ifeq (yes,$(build-shared))
114tests-special += $(objpfx)check-cet.out
115endif
116
117# FIXME: Can't use all-built-dso in elf/Makefile since this file is
118# processed before elf/Makefile. Duplicate it here.
119cet-built-dso := $(common-objpfx)elf/ld.so $(common-objpfx)libc.so \
120 $(filter-out $(common-objpfx)linkobj/libc.so, \
121 $(sort $(wildcard $(addprefix $(common-objpfx), \
122 */lib*.so \
123 iconvdata/*.so))))
124
125$(cet-built-dso:=.note): %.note: %
126 @rm -f $@T
127 LC_ALL=C $(READELF) -n $< > $@T
128 test -s $@T
129 mv -f $@T $@
130common-generated += $(cet-built-dso:$(common-objpfx)%=%.note)
131
132$(objpfx)check-cet.out: $(..)sysdeps/x86/check-cet.awk \
133 $(cet-built-dso:=.note)
134 LC_ALL=C $(AWK) -f $^ > $@; \
135 $(evaluate-test)
136generated += check-cet.out
137endif
138endif