mirror of https://gitee.com/openkylin/linux.git
sh: thin archives fix linking
The VDSO symbols can't be linked into built-in.o when building with thin archives, so change this to linking a new object file that is included into the built-in.o. Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Cc: Rich Felker <dalias@libc.org> Cc: linux-sh@vger.kernel.org Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
parent
3a166fc2d4
commit
8f5ef7c74a
|
@ -1,11 +1,11 @@
|
|||
obj-y += vsyscall.o vsyscall-syscall.o
|
||||
obj-y += vsyscall.o vsyscall-syscall.o vsyscall-syms.o
|
||||
|
||||
$(obj)/vsyscall-syscall.o: \
|
||||
$(foreach F,trapa,$(obj)/vsyscall-$F.so)
|
||||
|
||||
# Teach kbuild about targets
|
||||
targets += $(foreach F,trapa,vsyscall-$F.o vsyscall-$F.so)
|
||||
targets += vsyscall-note.o vsyscall.lds
|
||||
targets += vsyscall-note.o vsyscall.lds vsyscall-dummy.o
|
||||
|
||||
# The DSO images are built using a special linker script
|
||||
quiet_cmd_syscall = SYSCALL $@
|
||||
|
@ -26,11 +26,11 @@ $(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
|
|||
# We also create a special relocatable object that should mirror the symbol
|
||||
# table and layout of the linked DSO. With ld -R we can then refer to
|
||||
# these symbols in the kernel code rather than hand-coded addresses.
|
||||
extra-y += vsyscall-syms.o
|
||||
$(obj)/built-in.o: $(obj)/vsyscall-syms.o
|
||||
$(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o
|
||||
|
||||
SYSCFLAGS_vsyscall-syms.o = -r
|
||||
$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds \
|
||||
SYSCFLAGS_vsyscall-dummy.o = -r
|
||||
$(obj)/vsyscall-dummy.o: $(src)/vsyscall.lds \
|
||||
$(obj)/vsyscall-trapa.o $(obj)/vsyscall-note.o FORCE
|
||||
$(call if_changed,syscall)
|
||||
|
||||
LDFLAGS_vsyscall-syms.o := -r -R
|
||||
$(obj)/vsyscall-syms.o: $(obj)/vsyscall-dummy.o FORCE
|
||||
$(call if_changed,ld)
|
||||
|
|
Loading…
Reference in New Issue