opnsense-src/sys/modules/linux/Makefile
Konstantin Belousov e36d0e86e3 Revert "linux32: add a hack to avoid redefining the type of the savefpu tag"
This reverts commit 0f6829488e.
Also it changes the type of md_usr_fpu_save struct mdthread member
to void *, which is what uncovered this trouble.  Now the save area
is untyped, but since it is hidden behind accessors, it is not too
significant.  Since apparently there are consumers affected outside
the tree, this hack is better than one from the reverted revision.

PR:	258678
Reported by:	cy
Reviewed by:	cy, kevans, markj
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D32060
2021-09-22 23:17:47 +03:00

116 lines
3.8 KiB
Makefile

# $FreeBSD$
.if ${MACHINE_CPUARCH} == "amd64"
SFX= 32
CFLAGS+=-DCOMPAT_FREEBSD32 -DCOMPAT_LINUX32
.endif
.PATH: ${SRCTOP}/sys/compat/linux ${SRCTOP}/sys/${MACHINE_CPUARCH}/linux${SFX}
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
.PATH: ${SRCTOP}/sys/x86/linux
.endif
KMOD= linux
SRCS= linux_fork.c linux${SFX}_dummy_machdep.c linux_file.c linux_event.c \
linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \
linux${SFX}_machdep.c linux_misc.c linux_signal.c \
linux_socket.c linux_stats.c linux_sysctl.c linux${SFX}_sysent.c \
linux${SFX}_sysvec.c linux_uid16.c linux_time.c \
linux_timer.c linux_vdso.c \
opt_inet6.h opt_compat.h opt_posix.h opt_usb.h vnode_if.h \
device_if.h bus_if.h
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
SRCS+= linux_dummy_x86.c linux_vdso_tsc_selector_x86.c
VDSODEPS=linux_vdso_gettc_x86.inc
.endif
.if ${MACHINE_CPUARCH} == "amd64"
SRCS+= linux${SFX}_support.s
SRCS+= linux_elf32.c
.else
SRCS+= linux_copyout.c
.endif
DPSRCS= assym.inc linux${SFX}_genassym.c
# XXX: for assym.inc
SRCS+= opt_kstack_pages.h opt_nfs.h opt_hwpmc_hooks.h
.if ${MACHINE_CPUARCH} == "i386"
SRCS+= opt_apic.h
.endif
OBJS= linux${SFX}_vdso.so
.if ${MACHINE_CPUARCH} == "i386"
SRCS+= linux_ptrace.c imgact_linux.c linux_util.c linux_mib.c linux_mmap.c \
linux_dummy.c linux_emul.c linux_errno.c opt_cpu.h linux.c
.endif
.if ${MACHINE_CPUARCH} == "i386"
EXPORT_SYMS=
EXPORT_SYMS+= linux_emul_path
EXPORT_SYMS+= linux_get_osname
EXPORT_SYMS+= linux_get_osrelease
EXPORT_SYMS+= linux_ioctl_register_handler
EXPORT_SYMS+= linux_ioctl_unregister_handler
.endif
CLEANFILES= linux${SFX}_assym.h linux${SFX}_genassym.o linux${SFX}_locore.o \
genassym.o linux${SFX}_vdso_gtod.o linux${SFX}_vdso.so.o
linux${SFX}_assym.h: linux${SFX}_genassym.o
sh ${SYSDIR}/kern/genassym.sh linux${SFX}_genassym.o > ${.TARGET}
.if ${MACHINE_CPUARCH} == "amd64"
VDSOFLAGS=-DCOMPAT_FREEBSD32 -DCOMPAT_LINUX32 -m32
.else
VDSOFLAGS=-mregparm=0
.endif
linux${SFX}_locore.o: linux${SFX}_assym.h assym.inc
${CC} -c -x assembler-with-cpp -DLOCORE -fPIC -pipe -O2 -Werror \
-msoft-float \
-fno-common -nostdinc -fasynchronous-unwind-tables \
-fno-omit-frame-pointer -foptimize-sibling-calls ${VDSOFLAGS} \
-fno-stack-protector -I. -I${SYSDIR} -I${SRCTOP}/include \
${.IMPSRC} -o ${.TARGET}
linux${SFX}_vdso_gtod.o: linux_vdso_gtod.inc ${VDSODEPS}
${CC} -c -fPIC -pipe -O2 -Werror -msoft-float \
-fno-common -nostdinc -fasynchronous-unwind-tables \
-fno-omit-frame-pointer -foptimize-sibling-calls ${VDSOFLAGS} \
-fno-stack-protector -I. -I${SYSDIR} -I${SRCTOP}/include \
${.IMPSRC} -o ${.TARGET}
linux${SFX}_vdso.so.o: linux${SFX}_locore.o linux${SFX}_vdso_gtod.o
${LD} -m elf_i386 --shared --eh-frame-hdr -soname=linux-gate.so.1 \
--no-undefined --hash-style=both -warn-common -nostdlib \
--strip-debug -s --build-id=sha1 --Bsymbolic \
-T${SRCTOP}/sys/${MACHINE}/linux${SFX}/linux${SFX}_vdso.lds.s \
-o ${.TARGET} ${.ALLSRC:M*.o}
.if ${MACHINE_CPUARCH} == "amd64"
OBJCOPY_TARGET=--output-target elf64-x86-64-freebsd --binary-architecture i386
.elif ${MACHINE_CPUARCH} == "i386"
OBJCOPY_TARGET=--output-target elf32-i386-freebsd --binary-architecture i386
.else
.error ${MACHINE_CPUARCH} not yet supported by linux
.endif
linux${SFX}_vdso.so: linux${SFX}_vdso.so.o
${OBJCOPY} --input-target binary ${OBJCOPY_TARGET} \
linux${SFX}_vdso.so.o ${.TARGET}
${STRIPBIN} -N _binary_linux${SFX}_vdso_so_o_size ${.TARGET}
.if ${MACHINE_CPUARCH} == "amd64"
linux${SFX}_support.o: linux${SFX}_assym.h assym.inc
${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
${.IMPSRC} -o ${.TARGET}
.endif
linux${SFX}_genassym.o: offset.inc
${CC} -c ${CFLAGS:N-flto:N-fno-common} -fcommon ${.IMPSRC}
.if !defined(KERNBUILDDIR)
.warning Building Linuxulator outside of a kernel does not make sense
.endif
.include <bsd.kmod.mk>