1 # SPDX-License-Identifier: GPL-2.0
2 hostprogs-y
:= vdsomunge
4 obj-vdso
:= vgettimeofday.o datapage.o
7 targets
:= $(obj-vdso
) vdso.so vdso.so.dbg vdso.so.raw vdso.lds
8 obj-vdso
:= $(addprefix $(obj
)/, $(obj-vdso
))
10 ccflags-y
:= -fPIC
-fno-common
-fno-builtin
-fno-stack-protector
11 ccflags-y
+= -DDISABLE_BRANCH_PROFILING
13 ldflags-y
= -Bsymbolic
--no-undefined
-soname
=linux-vdso.so
.1 \
14 -z max-page-size
=4096 -nostdlib
-shared \
15 $(call ld-option
, --hash-style
=sysv
) \
16 $(call ld-option
, --build-id
) \
19 obj-
$(CONFIG_VDSO
) += vdso.o
20 extra-
$(CONFIG_VDSO
) += vdso.lds
21 CPPFLAGS_vdso.lds
+= -P
-C
-U
$(ARCH
)
23 CFLAGS_REMOVE_vdso.o
= -pg
25 # Force -O2 to avoid libgcc dependencies
26 CFLAGS_REMOVE_vgettimeofday.o
= -pg
-Os
27 CFLAGS_vgettimeofday.o
= -O2
29 # Disable gcov profiling for VDSO code
32 # Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
36 $(obj
)/vdso.o
: $(obj
)/vdso.so
38 # Link rule for the .so file
39 $(obj
)/vdso.so.raw
: $(obj
)/vdso.lds
$(obj-vdso
) FORCE
42 $(obj
)/vdso.so.dbg
: $(obj
)/vdso.so.raw
$(obj
)/vdsomunge FORCE
43 $(call if_changed
,vdsomunge
)
45 # Strip rule for the .so file
46 $(obj
)/%.so
: OBJCOPYFLAGS
:= -S
47 $(obj
)/%.so
: $(obj
)/%.so.dbg FORCE
48 $(call if_changed
,objcopy
)
50 quiet_cmd_vdsomunge
= MUNGE
$@
51 cmd_vdsomunge
= $(objtree
)/$(obj
)/vdsomunge
$< $@
54 # Install the unstripped copy of vdso.so.dbg. If our toolchain
55 # supports build-id, install .build-id links as well.
57 # Cribbed from arch/x86/vdso/Makefile.
59 quiet_cmd_vdso_install
= INSTALL
$<
60 define cmd_vdso_install
61 cp
$< "$(MODLIB)/vdso/vdso.so"; \
62 if readelf
-n
$< | grep
-q
'Build ID'; then \
63 buildid
=`readelf -n $< |grep 'Build ID' |sed -e 's/^.*Build ID: \(.*\)$$/\1/'`; \
64 first
=`echo $$buildid | cut -b-2`; \
65 last
=`echo $$buildid | cut -b3-`; \
66 mkdir
-p
"$(MODLIB)/vdso/.build-id/$$first"; \
67 ln
-sf
"../../vdso.so" "$(MODLIB)/vdso/.build-id/$$first/$$last.debug"; \
72 @mkdir
-p
$(MODLIB
)/vdso
75 vdso_install
: $(obj
)/vdso.so.dbg
$(MODLIB
)/vdso
76 $(call cmd
,vdso_install
)