.. | .. |
---|
1 | 1 | # SPDX-License-Identifier: GPL-2.0 |
---|
2 | | -# List of files in the vdso, has to be asm only for now |
---|
| 2 | +# List of files in the vdso |
---|
3 | 3 | |
---|
4 | 4 | KCOV_INSTRUMENT := n |
---|
| 5 | +ARCH_REL_TYPE_ABS := R_390_COPY|R_390_GLOB_DAT|R_390_JMP_SLOT|R_390_RELATIVE |
---|
| 6 | +ARCH_REL_TYPE_ABS += R_390_GOT|R_390_PLT |
---|
5 | 7 | |
---|
6 | | -obj-vdso64 = gettimeofday.o clock_getres.o clock_gettime.o note.o getcpu.o |
---|
| 8 | +include $(srctree)/lib/vdso/Makefile |
---|
| 9 | +obj-vdso64 = vdso_user_wrapper.o note.o getcpu.o |
---|
| 10 | +obj-cvdso64 = vdso64_generic.o |
---|
| 11 | +CFLAGS_REMOVE_vdso64_generic.o = -pg $(CC_FLAGS_FTRACE) $(CC_FLAGS_EXPOLINE) |
---|
7 | 12 | |
---|
8 | 13 | # Build rules |
---|
9 | 14 | |
---|
10 | | -targets := $(obj-vdso64) vdso64.so vdso64.so.dbg |
---|
| 15 | +targets := $(obj-vdso64) $(obj-cvdso64) vdso64.so vdso64.so.dbg |
---|
11 | 16 | obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64)) |
---|
| 17 | +obj-cvdso64 := $(addprefix $(obj)/, $(obj-cvdso64)) |
---|
12 | 18 | |
---|
13 | 19 | KBUILD_AFLAGS += -DBUILD_VDSO |
---|
14 | | -KBUILD_CFLAGS += -DBUILD_VDSO |
---|
| 20 | +KBUILD_CFLAGS += -DBUILD_VDSO -DDISABLE_BRANCH_PROFILING |
---|
15 | 21 | |
---|
16 | 22 | KBUILD_AFLAGS_64 := $(filter-out -m64,$(KBUILD_AFLAGS)) |
---|
17 | 23 | KBUILD_AFLAGS_64 += -m64 -s |
---|
18 | 24 | |
---|
19 | 25 | KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS)) |
---|
20 | 26 | KBUILD_CFLAGS_64 += -m64 -fPIC -shared -fno-common -fno-builtin |
---|
21 | | -KBUILD_CFLAGS_64 += -nostdlib -Wl,-soname=linux-vdso64.so.1 \ |
---|
22 | | - $(call cc-ldoption, -Wl$(comma)--hash-style=both) |
---|
| 27 | +ldflags-y := -fPIC -shared -nostdlib -soname=linux-vdso64.so.1 \ |
---|
| 28 | + --hash-style=both --build-id=sha1 -T |
---|
23 | 29 | |
---|
24 | 30 | $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64) |
---|
25 | 31 | $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64) |
---|
26 | 32 | |
---|
27 | 33 | obj-y += vdso64_wrapper.o |
---|
28 | | -extra-y += vdso64.lds |
---|
| 34 | +targets += vdso64.lds |
---|
29 | 35 | CPPFLAGS_vdso64.lds += -P -C -U$(ARCH) |
---|
30 | 36 | |
---|
31 | 37 | # Disable gcov profiling, ubsan and kasan for VDSO code |
---|
.. | .. |
---|
37 | 43 | $(obj)/vdso64_wrapper.o : $(obj)/vdso64.so |
---|
38 | 44 | |
---|
39 | 45 | # link rule for the .so file, .lds has to be first |
---|
40 | | -$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) FORCE |
---|
41 | | - $(call if_changed,vdso64ld) |
---|
| 46 | +$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj-cvdso64) FORCE |
---|
| 47 | + $(call if_changed,ld) |
---|
42 | 48 | |
---|
43 | 49 | # strip rule for the .so file |
---|
44 | 50 | $(obj)/%.so: OBJCOPYFLAGS := -S |
---|
.. | .. |
---|
49 | 55 | $(obj-vdso64): %.o: %.S FORCE |
---|
50 | 56 | $(call if_changed_dep,vdso64as) |
---|
51 | 57 | |
---|
| 58 | +$(obj-cvdso64): %.o: %.c FORCE |
---|
| 59 | + $(call if_changed_dep,vdso64cc) |
---|
| 60 | + |
---|
52 | 61 | # actual build commands |
---|
53 | | -quiet_cmd_vdso64ld = VDSO64L $@ |
---|
54 | | - cmd_vdso64ld = $(CC) $(c_flags) -Wl,-T $(filter %.lds %.o,$^) -o $@ |
---|
55 | 62 | quiet_cmd_vdso64as = VDSO64A $@ |
---|
56 | 63 | cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $< |
---|
| 64 | +quiet_cmd_vdso64cc = VDSO64C $@ |
---|
| 65 | + cmd_vdso64cc = $(CC) $(c_flags) -c -o $@ $< |
---|
57 | 66 | |
---|
58 | 67 | # install commands for the unstripped file |
---|
59 | 68 | quiet_cmd_vdso_install = INSTALL $@ |
---|