mirror of
https://github.com/opnsense/src.git
synced 2026-02-16 09:08:51 -05:00
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
116 lines
3.8 KiB
Makefile
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>
|