1 # SPDX-License-Identifier: GPL-2.0-only
2 # Copied from arch/tile/kernel/vdso/Makefile
4 # Include the generic Makefile to check the built vdso.
5 include $(srctree
)/lib
/vdso
/Makefile
6 # Symbols present in the vdso
7 vdso-syms
= rt_sigreturn
9 vdso-syms
+= vgettimeofday
12 vdso-syms
+= flush_icache
14 vdso-syms
+= sys_hwprobe
16 # Files to link into the vdso
17 obj-vdso
= $(patsubst %, %.o
, $(vdso-syms
)) note.o
19 ccflags-y
:= -fno-stack-protector
20 ccflags-y
+= -DDISABLE_BRANCH_PROFILING
22 ifneq ($(c-gettimeofday-y
),)
23 CFLAGS_vgettimeofday.o
+= -fPIC
-include $(c-gettimeofday-y
)
26 CFLAGS_hwprobe.o
+= -fPIC
29 targets
:= $(obj-vdso
) vdso.so vdso.so.dbg vdso.lds
30 obj-vdso
:= $(addprefix $(obj
)/, $(obj-vdso
))
33 CPPFLAGS_vdso.lds
+= -P
-C
-U
$(ARCH
)
34 ifneq ($(filter vgettimeofday
, $(vdso-syms
)),)
35 CPPFLAGS_vdso.lds
+= -DHAS_VGETTIMEOFDAY
38 # Disable -pg to prevent insert call site
39 CFLAGS_REMOVE_vgettimeofday.o
= $(CC_FLAGS_FTRACE
) $(CC_FLAGS_SCS
)
40 CFLAGS_REMOVE_hwprobe.o
= $(CC_FLAGS_FTRACE
) $(CC_FLAGS_SCS
)
43 $(obj
)/vdso.o
: $(obj
)/vdso.so
45 # link rule for the .so file, .lds has to be first
46 $(obj
)/vdso.so.dbg
: $(obj
)/vdso.lds
$(obj-vdso
) FORCE
47 $(call if_changed
,vdsold
)
48 LDFLAGS_vdso.so.dbg
= -shared
-soname
=linux-vdso.so
.1 \
49 --build-id
=sha1
--hash-style
=both
--eh-frame-hdr
51 # strip rule for the .so file
52 $(obj
)/%.so
: OBJCOPYFLAGS
:= -S
53 $(obj
)/%.so
: $(obj
)/%.so.dbg FORCE
54 $(call if_changed
,objcopy
)
56 # Generate VDSO offsets using helper script
57 gen-vdsosym
:= $(src
)/gen_vdso_offsets.sh
58 quiet_cmd_vdsosym
= VDSOSYM
$@
59 cmd_vdsosym
= $(NM
) $< |
$(gen-vdsosym
) | LC_ALL
=C
sort > $@
61 include/generated
/vdso-offsets.h
: $(obj
)/vdso.so.dbg FORCE
62 $(call if_changed
,vdsosym
)
64 # actual build commands
65 # The DSO images are built using a special linker script
66 # Make sure only to export the intended __vdso_xxx symbol offsets.
67 quiet_cmd_vdsold
= VDSOLD
$@
68 cmd_vdsold
= $(LD
) $(ld_flags
) -T
$(filter-out FORCE
,$^
) -o
$@.tmp
&& \
69 $(OBJCOPY
) $(patsubst %, -G __vdso_
%, $(vdso-syms
)) $@.tmp
$@
&& \