]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | # SPDX-License-Identifier: GPL-2.0 |
4bff8cb5 | 2 | # List of files in the vdso |
b020632e | 3 | |
907fa061 | 4 | KCOV_INSTRUMENT := n |
4bff8cb5 SS |
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 | |
907fa061 | 7 | |
4bff8cb5 SS |
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) | |
b020632e MS |
12 | |
13 | # Build rules | |
14 | ||
4bff8cb5 | 15 | targets := $(obj-vdso64) $(obj-cvdso64) vdso64.so vdso64.so.dbg |
b020632e | 16 | obj-vdso64 := $(addprefix $(obj)/, $(obj-vdso64)) |
4bff8cb5 | 17 | obj-cvdso64 := $(addprefix $(obj)/, $(obj-cvdso64)) |
b020632e | 18 | |
bc3703f2 | 19 | KBUILD_AFLAGS += -DBUILD_VDSO |
4bf3ec38 | 20 | KBUILD_CFLAGS += -DBUILD_VDSO -DDISABLE_BRANCH_PROFILING |
bc3703f2 | 21 | |
b020632e MS |
22 | KBUILD_AFLAGS_64 := $(filter-out -m64,$(KBUILD_AFLAGS)) |
23 | KBUILD_AFLAGS_64 += -m64 -s | |
24 | ||
25 | KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS)) | |
26 | KBUILD_CFLAGS_64 += -m64 -fPIC -shared -fno-common -fno-builtin | |
2b2a2584 NC |
27 | ldflags-y := -fPIC -shared -nostdlib -soname=linux-vdso64.so.1 \ |
28 | --hash-style=both --build-id -T | |
b020632e MS |
29 | |
30 | $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64) | |
31 | $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64) | |
32 | ||
33 | obj-y += vdso64_wrapper.o | |
34 | extra-y += vdso64.lds | |
35 | CPPFLAGS_vdso64.lds += -P -C -U$(ARCH) | |
36 | ||
34849845 | 37 | # Disable gcov profiling, ubsan and kasan for VDSO code |
add7490c | 38 | GCOV_PROFILE := n |
c42d8c7d | 39 | UBSAN_SANITIZE := n |
34849845 | 40 | KASAN_SANITIZE := n |
add7490c | 41 | |
b020632e MS |
42 | # Force dependency (incbin is bad) |
43 | $(obj)/vdso64_wrapper.o : $(obj)/vdso64.so | |
44 | ||
45 | # link rule for the .so file, .lds has to be first | |
4bff8cb5 | 46 | $(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) $(obj-cvdso64) FORCE |
2b2a2584 | 47 | $(call if_changed,ld) |
b020632e MS |
48 | |
49 | # strip rule for the .so file | |
50 | $(obj)/%.so: OBJCOPYFLAGS := -S | |
51 | $(obj)/%.so: $(obj)/%.so.dbg FORCE | |
52 | $(call if_changed,objcopy) | |
53 | ||
54 | # assembly rules for the .S files | |
b44b136a | 55 | $(obj-vdso64): %.o: %.S FORCE |
b020632e MS |
56 | $(call if_changed_dep,vdso64as) |
57 | ||
4bff8cb5 SS |
58 | $(obj-cvdso64): %.o: %.c FORCE |
59 | $(call if_changed_dep,vdso64cc) | |
60 | ||
b020632e | 61 | # actual build commands |
b020632e MS |
62 | quiet_cmd_vdso64as = VDSO64A $@ |
63 | cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $< | |
4bff8cb5 SS |
64 | quiet_cmd_vdso64cc = VDSO64C $@ |
65 | cmd_vdso64cc = $(CC) $(c_flags) -c -o $@ $< | |
b020632e MS |
66 | |
67 | # install commands for the unstripped file | |
68 | quiet_cmd_vdso_install = INSTALL $@ | |
69 | cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/$@ | |
70 | ||
71 | vdso64.so: $(obj)/vdso64.so.dbg | |
72 | @mkdir -p $(MODLIB)/vdso | |
73 | $(call cmd,vdso_install) | |
74 | ||
75 | vdso_install: vdso64.so |