513c5cd827
Since we use --input-type binary these options are rather meaningless. Both binutils and elftoolchain ignore the option in this case, but LLVM does not, and instead strips all symbols from the output file, causing missing symbols at run time if building with llvm-objcopy. Thus simply remove the options; the linux module has never included them for building its VDSO (added in r283407), but for some reason the original commit of linux64 (r283424) added them. These should however eventually be changed to use template assembly files as is now done for firmware and MFS_IMAGE. Reviewed by: emaste, trasz Differential Revision: https://reviews.freebsd.org/D27740
69 lines
2.2 KiB
Makefile
69 lines
2.2 KiB
Makefile
# $FreeBSD$
|
|
|
|
.PATH: ${SRCTOP}/sys/compat/linux ${SRCTOP}/sys/${MACHINE}/linux
|
|
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
|
|
.PATH: ${SRCTOP}/sys/x86/linux
|
|
.endif
|
|
|
|
VDSO= linux_vdso
|
|
|
|
KMOD= linux64
|
|
SRCS= linux_fork.c linux_dummy_machdep.c linux_file.c linux_event.c \
|
|
linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \
|
|
linux_machdep.c linux_misc.c linux_ptrace.c linux_signal.c \
|
|
linux_socket.c linux_stats.c linux_sysctl.c linux_sysent.c \
|
|
linux_sysvec.c linux_time.c linux_vdso.c linux_timer.c \
|
|
opt_compat.h opt_inet6.h opt_posix.h opt_usb.h \
|
|
vnode_if.h device_if.h bus_if.h \
|
|
linux_support.s
|
|
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
|
|
SRCS+= linux_dummy_x86.c
|
|
.endif
|
|
DPSRCS= assym.inc linux_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
|
|
|
|
CLEANFILES= linux_assym.h linux_genassym.o linux_locore.o \
|
|
genassym.o
|
|
|
|
OBJS= ${VDSO}.so
|
|
|
|
linux_assym.h: linux_genassym.o
|
|
sh ${SYSDIR}/kern/genassym.sh linux_genassym.o > ${.TARGET}
|
|
|
|
linux_locore.o: linux_locore.asm linux_assym.h
|
|
${CC} ${CCLDFLAGS} -x assembler-with-cpp -DLOCORE -shared -mcmodel=small \
|
|
-pipe -I. -I${SYSDIR} ${WERROR} -Wall -fno-common -fPIC -nostdinc \
|
|
-Wl,-T${SRCTOP}/sys/${MACHINE}/linux/${VDSO}.lds.s \
|
|
-Wl,-soname=${VDSO}.so.1,-warn-common -nostdlib \
|
|
${.IMPSRC} -o ${.TARGET}
|
|
|
|
.if ${MACHINE_CPUARCH} == "aarch64"
|
|
OBJCOPY_TARGET=--output-target elf64-littleaarch64 --binary-architecture aarch64
|
|
.elif ${MACHINE_CPUARCH} == "amd64"
|
|
OBJCOPY_TARGET=--output-target elf64-x86-64 --binary-architecture i386:x86-64
|
|
.else
|
|
.error ${MACHINE_CPUARCH} not yet supported by linux64
|
|
.endif
|
|
${VDSO}.so: linux_locore.o
|
|
${OBJCOPY} --input-target binary ${OBJCOPY_TARGET} \
|
|
linux_locore.o ${.TARGET}
|
|
${STRIPBIN} -N _binary_linux_locore_o_size ${.TARGET}
|
|
|
|
linux_support.o: assym.inc linux_assym.h
|
|
${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
|
|
${.IMPSRC} -o ${.TARGET}
|
|
|
|
linux_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>
|