1 # SPDX-License-Identifier: GPL-2.0
3 # Include the generic Makefile to check the built vdso.
4 include $(srctree
)/lib
/vdso
/Makefile
8 obj-vdso
:= vgettimeofday.o note.o
11 targets
:= $(obj-vdso
) vdso.so vdso.so.dbg vdso.so.raw vdso.lds
12 obj-vdso
:= $(addprefix $(obj
)/, $(obj-vdso
))
14 ccflags-y
:= -fPIC
-fno-common
-fno-builtin
-fno-stack-protector
15 ccflags-y
+= -DDISABLE_BRANCH_PROFILING
-DBUILD_VDSO32
17 ldflags-
$(CONFIG_CPU_ENDIAN_BE8
) := --be8
18 ldflags-y
:= -Bsymbolic
--no-undefined
-soname
=linux-vdso.so
.1 \
19 -z max-page-size
=4096 -shared
$(ldflags-y
) \
20 --hash-style
=sysv
--build-id
=sha1 \
23 obj-
$(CONFIG_VDSO
) += vdso.o
24 CPPFLAGS_vdso.lds
+= -P
-C
-U
$(ARCH
)
26 CFLAGS_REMOVE_vdso.o
= -pg
28 # Force -O2 to avoid libgcc dependencies
29 CFLAGS_REMOVE_vgettimeofday.o
= -pg
-Os
$(RANDSTRUCT_CFLAGS
) $(GCC_PLUGINS_CFLAGS
)
30 ifeq ($(c-gettimeofday-y
),)
31 CFLAGS_vgettimeofday.o
= -O2
33 CFLAGS_vgettimeofday.o
= -O2
-include $(c-gettimeofday-y
)
37 $(obj
)/vdso.o
: $(obj
)/vdso.so
39 # Link rule for the .so file
40 $(obj
)/vdso.so.raw
: $(obj
)/vdso.lds
$(obj-vdso
) FORCE
41 $(call if_changed
,vdsold_and_vdso_check
)
43 $(obj
)/vdso.so.dbg
: $(obj
)/vdso.so.raw
$(obj
)/vdsomunge FORCE
44 $(call if_changed
,vdsomunge
)
46 # Strip rule for the .so file
47 $(obj
)/%.so
: OBJCOPYFLAGS
:= -S
48 $(obj
)/%.so
: $(obj
)/%.so.dbg FORCE
49 $(call if_changed
,objcopy
)
51 # Actual build commands
52 quiet_cmd_vdsold_and_vdso_check
= LD
$@
53 cmd_vdsold_and_vdso_check
= $(cmd_ld
); $(cmd_vdso_check
)
55 quiet_cmd_vdsomunge
= MUNGE
$@
56 cmd_vdsomunge
= $(objtree
)/$(obj
)/vdsomunge
$< $@