Makefile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #
  2. # Makefile for the ia32 kernel emulation subsystem.
  3. #
  4. obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_signal.o tls32.o \
  5. ia32_binfmt.o fpu32.o ptrace32.o syscall32.o syscall32_syscall.o \
  6. mmap32.o
  7. sysv-$(CONFIG_SYSVIPC) := ipc32.o
  8. obj-$(CONFIG_IA32_EMULATION) += $(sysv-y)
  9. obj-$(CONFIG_IA32_AOUT) += ia32_aout.o
  10. audit-class-$(CONFIG_AUDIT) := audit.o
  11. obj-$(CONFIG_IA32_EMULATION) += $(audit-class-y)
  12. $(obj)/syscall32_syscall.o: \
  13. $(foreach F,sysenter syscall,$(obj)/vsyscall-$F.so)
  14. # Teach kbuild about targets
  15. targets := $(foreach F,$(addprefix vsyscall-,sysenter syscall),\
  16. $F.o $F.so $F.so.dbg)
  17. # The DSO images are built using a special linker script
  18. quiet_cmd_syscall = SYSCALL $@
  19. cmd_syscall = $(CC) -m32 -nostdlib -shared \
  20. $(call ld-option, -Wl$(comma)--hash-style=sysv) \
  21. -Wl,-soname=linux-gate.so.1 -o $@ \
  22. -Wl,-T,$(filter-out FORCE,$^)
  23. $(obj)/%.so: OBJCOPYFLAGS := -S
  24. $(obj)/%.so: $(obj)/%.so.dbg FORCE
  25. $(call if_changed,objcopy)
  26. $(obj)/vsyscall-sysenter.so.dbg $(obj)/vsyscall-syscall.so.dbg: \
  27. $(obj)/vsyscall-%.so.dbg: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
  28. $(call if_changed,syscall)
  29. AFLAGS_vsyscall-sysenter.o = -m32 -Wa,-32
  30. AFLAGS_vsyscall-syscall.o = -m32 -Wa,-32
  31. vdsos := vdso32-sysenter.so vdso32-syscall.so
  32. quiet_cmd_vdso_install = INSTALL $@
  33. cmd_vdso_install = cp $(@:vdso32-%.so=$(obj)/vsyscall-%.so.dbg) \
  34. $(MODLIB)/vdso/$@
  35. $(vdsos):
  36. @mkdir -p $(MODLIB)/vdso
  37. $(call cmd,vdso_install)
  38. vdso_install: $(vdsos)