@@ -8,32 +8,35 @@ include $(srctree)/lib/vdso/Makefile
8
8
obj-vdso32 = sigtramp32-32.o gettimeofday-32.o datapage-32.o cacheflush-32.o note-32.o getcpu-32.o
9
9
obj-vdso64 = sigtramp64-64.o gettimeofday-64.o datapage-64.o cacheflush-64.o note-64.o getcpu-64.o
10
10
11
+ obj-vdso32 += getrandom-32.o vgetrandom-chacha-32.o
12
+ obj-vdso64 += getrandom-64.o vgetrandom-chacha-64.o
13
+
11
14
ifneq ($(c-gettimeofday-y ) ,)
12
15
CFLAGS_vgettimeofday-32.o += -include $(c-gettimeofday-y )
13
- CFLAGS_vgettimeofday-32.o += $(DISABLE_LATENT_ENTROPY_PLUGIN )
14
- CFLAGS_vgettimeofday-32.o += $(call cc-option, -fno-stack-protector)
15
- CFLAGS_vgettimeofday-32.o += -DDISABLE_BRANCH_PROFILING
16
- CFLAGS_vgettimeofday-32.o += -ffreestanding -fasynchronous-unwind-tables
17
- CFLAGS_REMOVE_vgettimeofday-32.o = $(CC_FLAGS_FTRACE )
18
16
CFLAGS_REMOVE_vgettimeofday-32.o += -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc
19
17
# This flag is supported by clang for 64-bit but not 32-bit so it will cause
20
18
# an unused command line flag warning for this file.
21
19
ifdef CONFIG_CC_IS_CLANG
22
20
CFLAGS_REMOVE_vgettimeofday-32.o += -fno-stack-clash-protection
23
21
endif
24
22
CFLAGS_vgettimeofday-64.o += -include $(c-gettimeofday-y )
25
- CFLAGS_vgettimeofday-64.o += $(DISABLE_LATENT_ENTROPY_PLUGIN )
26
- CFLAGS_vgettimeofday-64.o += $(call cc-option, -fno-stack-protector)
27
- CFLAGS_vgettimeofday-64.o += -DDISABLE_BRANCH_PROFILING
28
- CFLAGS_vgettimeofday-64.o += -ffreestanding -fasynchronous-unwind-tables
29
- CFLAGS_REMOVE_vgettimeofday-64.o = $(CC_FLAGS_FTRACE )
30
23
# Go prior to 1.16.x assumes r30 is not clobbered by any VDSO code. That used to be true
31
24
# by accident when the VDSO was hand-written asm code, but may not be now that the VDSO is
32
25
# compiler generated. To avoid breaking Go tell GCC not to use r30. Impact on code
33
26
# generation is minimal, it will just use r29 instead.
34
27
CFLAGS_vgettimeofday-64.o += $(call cc-option, -ffixed-r30)
35
28
endif
36
29
30
+ ifneq ($(c-getrandom-y ) ,)
31
+ CFLAGS_vgetrandom-32.o += -include $(c-getrandom-y )
32
+ CFLAGS_REMOVE_vgetrandom-32.o += -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc
33
+ ifdef CONFIG_CC_IS_CLANG
34
+ CFLAGS_REMOVE_vgetrandom-32.o += -fno-stack-clash-protection
35
+ endif
36
+ CFLAGS_vgetrandom-64.o += -include $(c-getrandom-y )
37
+ CFLAGS_vgetrandom-64.o += $(call cc-option, -ffixed-r30)
38
+ endif
39
+
37
40
# Build rules
38
41
39
42
ifdef CROSS32_COMPILE
42
45
VDSOCC := $(CC )
43
46
endif
44
47
45
- targets := $(obj-vdso32 ) vdso32.so.dbg vgettimeofday-32.o
48
+ targets := $(obj-vdso32 ) vdso32.so.dbg vgettimeofday-32.o vgetrandom-32.o
49
+ targets += crtsavres-32.o
46
50
obj-vdso32 := $(addprefix $(obj ) /, $(obj-vdso32 ) )
47
- targets += $(obj-vdso64 ) vdso64.so.dbg vgettimeofday-64.o
51
+ targets += $(obj-vdso64 ) vdso64.so.dbg vgettimeofday-64.o vgetrandom-64.o
48
52
obj-vdso64 := $(addprefix $(obj ) /, $(obj-vdso64 ) )
49
53
50
- ccflags-y := -fno-common -fno-builtin
54
+ ccflags-y := -fno-common -fno-builtin -DBUILD_VDSO
55
+ ccflags-y += $(DISABLE_LATENT_ENTROPY_PLUGIN )
56
+ ccflags-y += $(call cc-option, -fno-stack-protector)
57
+ ccflags-y += -DDISABLE_BRANCH_PROFILING
58
+ ccflags-y += -ffreestanding -fasynchronous-unwind-tables
51
59
ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack $(CLANG_FLAGS )
60
+ ccflags-remove-y := $(CC_FLAGS_FTRACE )
52
61
ldflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD ) ,-fuse-ld=lld)
53
62
ldflags-$(CONFIG_LD_ORPHAN_WARN) += -Wl,--orphan-handling=$(CONFIG_LD_ORPHAN_WARN_LEVEL )
54
63
@@ -68,20 +77,26 @@ targets += vdso64.lds
68
77
CPPFLAGS_vdso64.lds += -P -C
69
78
70
79
# link rule for the .so file, .lds has to be first
71
- $(obj ) /vdso32.so.dbg : $(obj ) /vdso32.lds $(obj-vdso32 ) $(obj ) /vgettimeofday-32.o FORCE
80
+ $(obj ) /vdso32.so.dbg : $(obj ) /vdso32.lds $(obj-vdso32 ) $(obj ) /vgettimeofday-32.o $( obj ) /vgetrandom-32.o $( obj ) /crtsavres-32.o FORCE
72
81
$(call if_changed,vdso32ld_and_check)
73
- $(obj ) /vdso64.so.dbg : $(obj ) /vdso64.lds $(obj-vdso64 ) $(obj ) /vgettimeofday-64.o FORCE
82
+ $(obj ) /vdso64.so.dbg : $(obj ) /vdso64.lds $(obj-vdso64 ) $(obj ) /vgettimeofday-64.o $( obj ) /vgetrandom-64.o FORCE
74
83
$(call if_changed,vdso64ld_and_check)
75
84
76
85
# assembly rules for the .S files
77
86
$(obj-vdso32 ) : % -32.o: % .S FORCE
78
87
$(call if_changed_dep,vdso32as)
88
+ $(obj ) /crtsavres-32.o : % -32.o: $(srctree ) /arch/powerpc/lib/crtsavres.S FORCE
89
+ $(call if_changed_dep,vdso32as)
79
90
$(obj ) /vgettimeofday-32.o : % -32.o: % .c FORCE
80
91
$(call if_changed_dep,vdso32cc)
92
+ $(obj ) /vgetrandom-32.o : % -32.o: % .c FORCE
93
+ $(call if_changed_dep,vdso32cc)
81
94
$(obj-vdso64 ) : % -64.o: % .S FORCE
82
95
$(call if_changed_dep,vdso64as)
83
96
$(obj ) /vgettimeofday-64.o : % -64.o: % .c FORCE
84
97
$(call if_changed_dep,cc_o_c)
98
+ $(obj ) /vgetrandom-64.o : % -64.o: % .c FORCE
99
+ $(call if_changed_dep,cc_o_c)
85
100
86
101
# Generate VDSO offsets using helper script
87
102
gen-vdso32sym := $(src ) /gen_vdso32_offsets.sh
0 commit comments