.. | .. |
---|
1 | 1 | # SPDX-License-Identifier: GPL-2.0 |
---|
2 | | -hostprogs-y := vdsomunge |
---|
3 | 2 | |
---|
4 | | -obj-vdso := vgettimeofday.o datapage.o |
---|
| 3 | +# Absolute relocation type $(ARCH_REL_TYPE_ABS) needs to be defined before |
---|
| 4 | +# the inclusion of generic Makefile. |
---|
| 5 | +ARCH_REL_TYPE_ABS := R_ARM_JUMP_SLOT|R_ARM_GLOB_DAT|R_ARM_ABS32 |
---|
| 6 | +include $(srctree)/lib/vdso/Makefile |
---|
| 7 | + |
---|
| 8 | +hostprogs := vdsomunge |
---|
| 9 | + |
---|
| 10 | +obj-vdso := vgettimeofday.o datapage.o note.o |
---|
5 | 11 | |
---|
6 | 12 | # Build rules |
---|
7 | 13 | targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.so.raw vdso.lds |
---|
8 | 14 | obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) |
---|
9 | 15 | |
---|
10 | 16 | ccflags-y := -fPIC -fno-common -fno-builtin -fno-stack-protector |
---|
11 | | -ccflags-y += -DDISABLE_BRANCH_PROFILING |
---|
| 17 | +ccflags-y += -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO32 |
---|
12 | 18 | |
---|
13 | 19 | ldflags-$(CONFIG_CPU_ENDIAN_BE8) := --be8 |
---|
14 | 20 | ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ |
---|
15 | | - -z max-page-size=4096 -z common-page-size=4096 \ |
---|
16 | | - -nostdlib -shared $(ldflags-y) \ |
---|
17 | | - $(call ld-option, --hash-style=sysv) \ |
---|
18 | | - $(call ld-option, --build-id) \ |
---|
| 21 | + -z max-page-size=4096 -nostdlib -shared $(ldflags-y) \ |
---|
| 22 | + --hash-style=sysv --build-id=sha1 \ |
---|
19 | 23 | -T |
---|
20 | 24 | |
---|
21 | 25 | obj-$(CONFIG_VDSO) += vdso.o |
---|
.. | .. |
---|
25 | 29 | CFLAGS_REMOVE_vdso.o = -pg |
---|
26 | 30 | |
---|
27 | 31 | # Force -O2 to avoid libgcc dependencies |
---|
28 | | -CFLAGS_REMOVE_vgettimeofday.o = -pg -Os |
---|
| 32 | +CFLAGS_REMOVE_vgettimeofday.o = -pg -Os $(GCC_PLUGINS_CFLAGS) |
---|
| 33 | +ifeq ($(c-gettimeofday-y),) |
---|
29 | 34 | CFLAGS_vgettimeofday.o = -O2 |
---|
| 35 | +else |
---|
| 36 | +CFLAGS_vgettimeofday.o = -O2 -include $(c-gettimeofday-y) |
---|
| 37 | +endif |
---|
30 | 38 | |
---|
31 | 39 | # Disable gcov profiling for VDSO code |
---|
32 | 40 | GCOV_PROFILE := n |
---|
.. | .. |
---|
39 | 47 | |
---|
40 | 48 | # Link rule for the .so file |
---|
41 | 49 | $(obj)/vdso.so.raw: $(obj)/vdso.lds $(obj-vdso) FORCE |
---|
42 | | - $(call if_changed,ld) |
---|
| 50 | + $(call if_changed,vdsold_and_vdso_check) |
---|
43 | 51 | |
---|
44 | 52 | $(obj)/vdso.so.dbg: $(obj)/vdso.so.raw $(obj)/vdsomunge FORCE |
---|
45 | 53 | $(call if_changed,vdsomunge) |
---|
.. | .. |
---|
49 | 57 | $(obj)/%.so: $(obj)/%.so.dbg FORCE |
---|
50 | 58 | $(call if_changed,objcopy) |
---|
51 | 59 | |
---|
| 60 | +# Actual build commands |
---|
| 61 | +quiet_cmd_vdsold_and_vdso_check = LD $@ |
---|
| 62 | + cmd_vdsold_and_vdso_check = $(cmd_ld); $(cmd_vdso_check) |
---|
| 63 | + |
---|
52 | 64 | quiet_cmd_vdsomunge = MUNGE $@ |
---|
53 | 65 | cmd_vdsomunge = $(objtree)/$(obj)/vdsomunge $< $@ |
---|
54 | 66 | |
---|