| 1 |
|
| 2 |
|
| 3 |
|
| 4 | include $(srctree)/lib/vdso/Makefile.include
|
| 5 |
|
| 6 |
|
| 7 | vdso-syms += rt_sigreturn
|
| 8 |
|
| 9 |
|
| 10 | obj-vdso = $(patsubst %, %.o, $(vdso-syms)) note.o
|
| 11 |
|
| 12 | ifneq ($(c-gettimeofday-y),)
|
| 13 | CFLAGS_vgettimeofday.o += -include $(c-gettimeofday-y)
|
| 14 | endif
|
| 15 |
|
| 16 | ccflags-y := -fno-stack-protector -DBUILD_VDSO32
|
| 17 |
|
| 18 |
|
| 19 | targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds vdso-dummy.o
|
| 20 | obj-vdso := $(addprefix $(obj)/, $(obj-vdso))
|
| 21 |
|
| 22 | obj-y += vdso.o vdso-syms.o
|
| 23 | CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
|
| 24 |
|
| 25 |
|
| 26 | $(obj)/vdso.o: $(obj)/vdso.so
|
| 27 |
|
| 28 | SYSCFLAGS_vdso.so.dbg = $(c_flags)
|
| 29 | $(obj)/vdso.so.dbg: $(obj)/vdso.lds $(obj-vdso) FORCE
|
| 30 | $(call if_changed,vdsold)
|
| 31 | SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \
|
| 32 | -Wl,--build-id=sha1 -Wl,--hash-style=both
|
| 33 |
|
| 34 | $(obj)/vdso-syms.S: $(obj)/vdso.so FORCE
|
| 35 | $(call if_changed,so2s)
|
| 36 |
|
| 37 |
|
| 38 | $(obj)/%.so: OBJCOPYFLAGS := -S
|
| 39 | $(obj)/%.so: $(obj)/%.so.dbg FORCE
|
| 40 | $(call if_changed,objcopy)
|
| 41 |
|
| 42 |
|
| 43 |
|
| 44 |
|
| 45 | quiet_cmd_vdsold = VDSOLD $@
|
| 46 | cmd_vdsold = $(CC) $(KBUILD_CFLAGS) $(call cc-option, -no-pie) -nostdlib -nostartfiles $(SYSCFLAGS_$(@F)) \
|
| 47 | -Wl,-T,$(filter-out FORCE,$^) -o $@.tmp && \
|
| 48 | $(CROSS_COMPILE)objcopy \
|
| 49 | $(patsubst %, -G __vdso_%, $(vdso-syms)) $@.tmp $@ && \
|
| 50 | rm $@.tmp
|
| 51 |
|
| 52 |
|
| 53 |
|
| 54 | quiet_cmd_so2s = SO2S $@
|
| 55 | cmd_so2s = $(NM) -D $< | $(src)/so2s.sh > $@
|