| .. | .. |
|---|
| 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 | |
|---|