The branch main has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=a4e5e0106ac7145f56eb39a691e302cabb4635be
commit a4e5e0106ac7145f56eb39a691e302cabb4635be Merge: 4594eb454891 229b9f4ed05e Author: Martin Matuska <m...@freebsd.org> AuthorDate: 2024-02-08 12:39:04 +0000 Commit: Martin Matuska <m...@freebsd.org> CommitDate: 2024-02-08 15:51:08 +0000 zfs: merge openzfs/zfs@229b9f4ed Notable upstream pull request merges: #15769 082338875 Add 'zpool status -e' flag to see unhealthy vdevs #15804 a0d3fe72b libzdb: Initial breakout of libzdb #15847 229b9f4ed LUA: Backport CVE-2020-24370's patch Obtained from: OpenZFS OpenZFS commit: 229b9f4ed05e6d14fb4d73fa04a71e99b01bb534 cddl/lib/Makefile | 1 + cddl/lib/libzdb/Makefile | 25 ++++ cddl/lib/libzdb/Makefile.depend | 14 ++ cddl/usr.sbin/zdb/Makefile | 2 +- rescue/rescue/Makefile | 2 +- share/mk/bsd.libnames.mk | 1 + share/mk/src.libnames.mk | 3 + sys/contrib/openzfs/cmd/zdb/Makefile.am | 1 + sys/contrib/openzfs/cmd/zdb/zdb.c | 108 +------------- sys/contrib/openzfs/cmd/zpool/zpool_main.c | 58 +++++++- sys/contrib/openzfs/config/kernel-blkdev.m4 | 34 ++++- sys/contrib/openzfs/include/Makefile.am | 1 + sys/contrib/openzfs/include/libzdb.h | 68 +++++++++ .../include/os/freebsd/zfs/sys/zfs_vfsops_os.h | 1 - .../include/os/linux/zfs/sys/zfs_vfsops_os.h | 2 - sys/contrib/openzfs/include/sys/zfs_vnops.h | 3 + sys/contrib/openzfs/lib/Makefile.am | 5 +- sys/contrib/openzfs/lib/libzdb/Makefile.am | 7 + sys/contrib/openzfs/lib/libzdb/libzdb.c | 102 +++++++++++++ sys/contrib/openzfs/man/man4/zfs.4 | 9 ++ sys/contrib/openzfs/man/man8/zpool-status.8 | 4 +- sys/contrib/openzfs/module/lua/ldebug.c | 7 +- .../openzfs/module/os/freebsd/zfs/zfs_vfsops.c | 4 - .../openzfs/module/os/linux/zfs/vdev_disk.c | 72 +++++++-- .../openzfs/module/os/linux/zfs/zfs_vnops_os.c | 5 - .../openzfs/module/os/linux/zfs/zpl_file_range.c | 48 +++--- sys/contrib/openzfs/module/zfs/zfs_vnops.c | 43 +++++- sys/contrib/openzfs/tests/runfiles/common.run | 5 +- .../openzfs/tests/test-runner/bin/zts-report.py.in | 2 + .../openzfs/tests/zfs-tests/include/tunables.cfg | 1 + .../openzfs/tests/zfs-tests/tests/Makefile.am | 2 + .../cli_root/zpool_status/zpool_status_002_pos.ksh | 4 +- .../cli_root/zpool_status/zpool_status_003_pos.ksh | 2 + .../cli_root/zpool_status/zpool_status_008_pos.ksh | 104 +++++++++++++ .../tests/functional/cp_files/cp_files_002_pos.ksh | 161 +++++++++++++++++++++ sys/modules/zfs/zfs_config.h | 4 +- sys/modules/zfs/zfs_gitrev.h | 2 +- 37 files changed, 736 insertions(+), 181 deletions(-) diff --cc cddl/lib/Makefile index 68250c8300b1,000000000000..e6a0763544f7 mode 100644,000000..100644 --- a/cddl/lib/Makefile +++ b/cddl/lib/Makefile @@@ -1,46 -1,0 +1,47 @@@ + +.include <src.opts.mk> + +.if ${MK_DTRACE} == yes || ${MK_ZFS} == yes +SUBDIR= libspl +.endif + +SUBDIR.${MK_DTRACE}+= \ + drti \ + libctf \ + libdtrace + +SUBDIR.${MK_TESTS}+= tests + +SUBDIR.${MK_ZFS}+= \ + libavl \ + libicp \ + libicp_rescue \ + libnvpair \ + libtpool \ + libumem \ + libuutil \ ++ libzdb \ + libzfs \ + libzfs_core \ + libzfsbootenv \ + libzpool \ + libzutil + +SUBDIR.${MK_ZFS}.${MK_OPENSSL} = pam_zfs_key + +SUBDIR_DEPEND_libavl= libspl +SUBDIR_DEPEND_libctf= libspl +SUBDIR_DEPEND_libdtrace= libctf +SUBDIR_DEPEND_libnvpair= libspl +SUBDIR_DEPEND_libtpool= libspl +SUBDIR_DEPEND_libuutil= libavl libspl +SUBDIR_DEPEND_libzfs_core= libnvpair libspl libzutil +SUBDIR_DEPEND_libzfs= libavl libnvpair libumem libuutil libzfs_core libzutil +SUBDIR_DEPEND_libzpool= libavl libnvpair libumem libicp +SUBDIR_DEPEND_libzutil= libavl libtpool +SUBDIR_DEPEND_libzfsbootenv= libzfs libnvpair +SUBDIR_DEPEND_pam_zfs_key= libnvpair libuutil libzfs libzfs_core + +SUBDIR_PARALLEL= + +.include <bsd.subdir.mk> diff --cc cddl/lib/libzdb/Makefile index 000000000000,000000000000..63248399b91c new file mode 100644 --- /dev/null +++ b/cddl/lib/libzdb/Makefile @@@ -1,0 -1,0 +1,25 @@@ ++.PATH: ${SRCTOP}/sys/contrib/openzfs/lib/libzdb ++.PATH: ${SRCTOP}/sys/contrib/openzfs/include ++ ++LIB= zdb ++PACKAGE= zfs ++ ++INCS = libzdb.h ++ ++SRCS = libzdb.c ++ ++WARNS?= 2 ++CSTD= c99 ++ ++CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/include ++CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include ++CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libspl/include/os/freebsd ++CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/include/os/freebsd/zfs ++CFLAGS+= -I${SRCTOP}/sys ++CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include ++CFLAGS+= -include ${SRCTOP}/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h ++CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/lib/libzutil ++CFLAGS+= -DHAVE_ISSETUGID -DIN_BASE ++CFLAGS+= -include ${SRCTOP}/sys/modules/zfs/zfs_config.h ++ ++.include <bsd.lib.mk> diff --cc cddl/lib/libzdb/Makefile.depend index 000000000000,000000000000..93249906da4f new file mode 100644 --- /dev/null +++ b/cddl/lib/libzdb/Makefile.depend @@@ -1,0 -1,0 +1,14 @@@ ++# Autogenerated - do NOT edit! ++ ++DIRDEPS = \ ++ include \ ++ lib/${CSU_DIR} \ ++ lib/libc \ ++ lib/libcompiler_rt \ ++ ++ ++.include <dirdeps.mk> ++ ++.if ${DEP_RELDIR} == ${_DEP_RELDIR} ++# local dependencies - needed for -jN in clean tree ++.endif diff --cc cddl/usr.sbin/zdb/Makefile index 744db789772c,000000000000..e41f4afce82f mode 100644,000000..100644 --- a/cddl/usr.sbin/zdb/Makefile +++ b/cddl/usr.sbin/zdb/Makefile @@@ -1,33 -1,0 +1,33 @@@ + +ZFSTOP= ${SRCTOP}/sys/contrib/openzfs + +.PATH: ${ZFSTOP}/cmd/zdb +.PATH: ${ZFSTOP}/man/man8 + +PACKAGE= zfs +PROG= zdb +MAN= zdb.8 +INCS= zdb.h +SRCS= zdb.c zdb_il.c + +WARNS?= 2 +CSTD= c99 + +CFLAGS+= \ + -DIN_BASE \ + -I${ZFSTOP}/include \ + -I${ZFSTOP}/lib/libspl/include \ + -I${ZFSTOP}/lib/libspl/include/os/freebsd \ + -I${ZFSTOP}/lib/libspl/include/os/freebsd/spl \ + -I${SRCTOP}/sys \ + -include ${ZFSTOP}/include/os/freebsd/spl/sys/ccompile.h \ + -DHAVE_ISSETUGID + - LIBADD= nvpair umem uutil zfs spl avl zutil zpool crypto ++LIBADD= nvpair umem uutil zdb zfs spl avl zutil zpool crypto + +CFLAGS.gcc+= -fms-extensions +# Since there are many asserts in this program, it makes no sense to compile +# it without debugging. +CFLAGS+= -g -DDEBUG=1 -DZFS_DEBUG=1 + +.include <bsd.prog.mk> diff --cc rescue/rescue/Makefile index 7bf3299f4d48,000000000000..0a8d142ef83a mode 100644,000000..100644 --- a/rescue/rescue/Makefile +++ b/rescue/rescue/Makefile @@@ -1,269 -1,0 +1,269 @@@ + +.include <src.opts.mk> +.include <bsd.linker.mk> + +PACKAGE=rescue +MAN= +MK_SSP= no +# Static-PIE is not supported so we should not be linking against _pie.a libs. +# This is also needed to avoid linking against sanitizer-instrumented libraries +# since MK_ASAN/MK_UBSAN will instrument the .pieo object files. +MK_PIE= no +NO_SHARED= yes +CRUNCH_BUILDOPTS+= MK_PIE=no NO_SHARED=yes + +# lld >= 16 became more strict about multiply defined symbols. Since there are +# many of those in crunchgen'd programs, turn off the check. +.if ${LINKER_TYPE} == "lld" && ${LINKER_VERSION} >= 160000 +LDFLAGS+= -Wl,--allow-multiple-definition +.endif + +PROG= rescue +BINDIR?=/rescue + +# Shell scripts need #! line to be edited from /bin/sh to /rescue/sh +SCRIPTS= nextboot_FIXED +SCRIPTSNAME_nextboot_FIXED= nextboot +nextboot_FIXED: ../../sbin/reboot/nextboot.sh + sed '1s/\/bin\//\/rescue\//' ${.ALLSRC} > ${.TARGET} +CLEANFILES+= nextboot_FIXED + +SCRIPTS+= dhclient_FIXED +SCRIPTSNAME_dhclient_FIXED= dhclient-script +dhclient_FIXED: ../../sbin/dhclient/dhclient-script + sed '1s/\/bin\//\/rescue\//' ${.ALLSRC} > ${.TARGET} +CLEANFILES+= dhclient_FIXED + +# The help which used to be here is now in mk/bsd.crunchgen.mk + +# Define Makefile variable RESCUE +CRUNCH_BUILDOPTS+= -DRESCUE +# Define compile-time RESCUE symbol when compiling components +CRUNCH_BUILDOPTS+= CRUNCH_CFLAGS=-DRESCUE + +# An experiment that failed: try overriding bsd.lib.mk and bsd.prog.mk +# rather than incorporating rescue-specific logic into standard files. +#MAKEFLAGS= -m ${.CURDIR} ${.MAKEFLAGS} + +# Hackery: 'librescue' exists merely as a tool for appropriately +# recompiling specific library entries. We _know_ they're needed, and +# regular archive searching creates ugly library ordering problems. +# Easiest fix: tell the linker to include them into the executable +# first, so they are guaranteed to override the regular lib entries. +# Note that if 'librescue' hasn't been compiled, we'll just get the +# regular lib entries from libc and friends. +CRUNCH_LIBS+= ${.OBJDIR}/../librescue/*.o + +################################################################### +# Programs from stock /bin +# +# WARNING: Changing this list may require adjusting +# /usr/include/paths.h as well! You were warned! +# +CRUNCH_SRCDIRS+= bin +CRUNCH_PROGS_bin= cat chflags chio chmod cp date dd df echo \ + ed expr getfacl hostname kenv kill ln ls mkdir mv \ + pkill ps pwd realpath rm rmdir setfacl sh sleep stty \ + sync test +CRUNCH_LIBS+= -lcrypt -ledit -ljail -lkvm -lelf -ltermcapw -lutil -lxo +CRUNCH_BUILDTOOLS+= bin/sh + +# Additional options for specific programs +CRUNCH_ALIAS_test= [ +CRUNCH_ALIAS_sh= -sh +# The -sh alias shouldn't appear in /rescue as a hard link +CRUNCH_SUPPRESS_LINK_-sh= 1 +CRUNCH_ALIAS_ln= link +CRUNCH_ALIAS_rm= unlink +CRUNCH_ALIAS_ed= red +CRUNCH_ALIAS_pkill= pgrep + +.if ${MK_TCSH} != "no" +CRUNCH_PROGS_bin+= csh +CRUNCH_ALIAS_csh= -csh tcsh -tcsh +CRUNCH_BUILDTOOLS+= bin/csh +CRUNCH_SUPPRESS_LINK_-csh= 1 +CRUNCH_SUPPRESS_LINK_-tcsh= 1 +.endif + +################################################################### +# Programs from standard /sbin +# +# WARNING: Changing this list may require adjusting +# /usr/include/paths.h as well! You were warned! +# +# Note that mdmfs have their own private 'pathnames.h' +# headers in addition to the standard 'paths.h' header. +# +CRUNCH_SRCDIRS+= sbin +CRUNCH_PROGS_sbin= \ + camcontrol clri devfs dmesg dump \ + dumpfs dumpon fsck fsck_ffs fsck_msdosfs fsdb \ + fsirand gbde geom ifconfig init \ + kldconfig kldload kldstat kldunload ldconfig \ + md5 mdconfig mdmfs mknod mount mount_cd9660 \ + mount_msdosfs mount_nfs mount_nullfs \ + mount_udf mount_unionfs newfs \ + newfs_msdos nos-tun reboot \ + restore rcorder route savecore \ + shutdown swapon sysctl tunefs umount + +.if ${MK_CCD} != "no" +CRUNCH_PROGS_sbin+= ccdconfig +.endif + +.if ${MK_INET} != "no" || ${MK_INET6} != "no" +CRUNCH_PROGS_sbin+= ping +.endif + +.if ${MK_INET6_SUPPORT} != "no" +CRUNCH_ALIAS_ping= ping6 +CRUNCH_PROGS_sbin+= rtsol +.endif + +.if ${MK_IPFILTER} != "no" +CRUNCH_PROGS_sbin+= ipf +CRUNCH_LIBS_ipf+= ${LIBIPF} +.endif + +.if ${MK_ROUTED} != "no" +CRUNCH_PROGS_sbin+= routed rtquery +.endif + +.if ${MK_ZFS} != "no" +CRUNCH_PROGS_sbin+= bectl +CRUNCH_PROGS_sbin+= zfs +CRUNCH_PROGS_sbin+= zpool +CRUNCH_PROGS_usr.sbin+= zdb +.endif + +# crunchgen does not like C++ programs; this should be fixed someday +# CRUNCH_PROGS+= devd + +CRUNCH_LIBS+= -l80211 -lalias -lcam -lncursesw -ldevstat -lipsec -llzma +.if ${MK_ZFS} != "no" +CRUNCH_LIBS+= -lavl -lpthread -luutil -lumem -ltpool -lspl -lrt +CRUNCH_LIBS_zfs+= ${LIBBE} \ + ${LIBZPOOL} \ + ${LIBZFS} \ + ${LIBZUTIL} \ + ${LIBZFS_CORE} \ + ${LIBZFSBOOTENV} \ + ${LIBICP_RESCUE} \ + ${LIBNVPAIR} +CRUNCH_LIBS_bectl+= ${CRUNCH_LIBS_zfs} +CRUNCH_LIBS_zpool+= ${CRUNCH_LIBS_zfs} - CRUNCH_LIBS_zdb+= ${CRUNCH_LIBS_zfs} ++CRUNCH_LIBS_zdb+= ${CRUNCH_LIBS_zfs} ${LIBZDB} +.else +# liblzma needs pthread +CRUNCH_LIBS+= -lpthread +.endif +CRUNCH_LIBS+= -lgeom -lbsdxml -lkiconv +.if ${MK_OPENSSL} == "no" +CRUNCH_LIBS+= -lmd +.endif +CRUNCH_LIBS+= -lmt -lsbuf -lufs -lz + +.if ${MACHINE_CPUARCH} == "i386" +CRUNCH_PROGS_sbin+= bsdlabel fdisk +CRUNCH_ALIAS_bsdlabel= disklabel +#CRUNCH_PROGS+= mount_smbfs +#CRUNCH_LIBS+= -lsmb +.endif + +.if ${MACHINE_CPUARCH} == "amd64" +CRUNCH_PROGS_sbin+= bsdlabel fdisk +CRUNCH_ALIAS_bsdlabel= disklabel +.endif + +CRUNCH_SRCDIR_rtquery= ${SRCTOP}/sbin/routed/rtquery +CRUNCH_SRCDIR_ipf= ${SRCTOP}/sbin/ipf/ipf +.if ${MK_ZFS} != "no" +CRUNCH_SRCDIR_zfs= ${SRCTOP}/cddl/sbin/zfs +CRUNCH_SRCDIR_zpool= ${SRCTOP}/cddl/sbin/zpool +CRUNCH_SRCDIR_zdb= ${SRCTOP}/cddl/usr.sbin/zdb +.endif +CRUNCH_ALIAS_reboot= fastboot halt fasthalt +CRUNCH_ALIAS_restore= rrestore +CRUNCH_ALIAS_dump= rdump +CRUNCH_ALIAS_fsck_ffs= fsck_4.2bsd fsck_ufs +CRUNCH_ALIAS_geom= glabel gpart +CRUNCH_ALIAS_shutdown= poweroff + +# dhclient has historically been troublesome... +CRUNCH_PROGS_sbin+= dhclient + +################################################################## +# Programs from stock /usr/bin +# +CRUNCH_SRCDIRS+= usr.bin + +CRUNCH_PROGS_usr.bin= head mt sed tail tee + +CRUNCH_PROGS_usr.bin+= gzip +CRUNCH_ALIAS_gzip= gunzip gzcat zcat + +CRUNCH_PROGS_usr.bin+= bzip2 +CRUNCH_ALIAS_bzip2= bunzip2 bzcat +CRUNCH_LIBS+= -lbz2 + +CRUNCH_PROGS_usr.bin+= less +CRUNCH_ALIAS_less= more + +CRUNCH_PROGS_usr.bin+= xz +CRUNCH_ALIAS_xz= unxz lzma unlzma xzcat lzcat + +CRUNCH_PROGS_usr.bin+= zstd +CRUNCH_ALIAS_zstd= unzstd zstdcat zstdmt +CRUNCH_LIBS+= ${LDADD_zstd} + +CRUNCH_PROGS_usr.bin+= fetch +CRUNCH_LIBS+= -lfetch + +CRUNCH_PROGS_usr.bin+= tar +CRUNCH_LIBS+= -larchive +.if ${MK_OPENSSL} != "no" +CRUNCH_LIBS+= -lssl -lcrypto +.endif +CRUNCH_LIBS+= -lmd + +.if ${MK_NETCAT} != "no" +CRUNCH_PROGS_usr.bin+= nc +.endif + +.if ${MK_VI} != "no" +CRUNCH_PROGS_usr.bin+= vi +CRUNCH_ALIAS_vi= ex +.endif + +CRUNCH_PROGS_usr.bin+= id +CRUNCH_ALIAS_id= groups whoami + +################################################################## +# Programs from stock /usr/sbin +# +CRUNCH_SRCDIRS+= usr.sbin + +CRUNCH_PROGS_usr.sbin+= chroot + +CRUNCH_PROGS_usr.sbin+= chown +CRUNCH_ALIAS_chown= chgrp +################################################################## + +CRUNCH_LIBS+= ${OBJTOP}/lib/libifconfig/libifconfig.a +CRUNCH_BUILDOPTS+= CRUNCH_CFLAGS+=-I${OBJTOP}/lib/libifconfig + +CRUNCH_LIBS_ifconfig+= ${LIBNV} + +CRUNCH_LIBS+= -lm + +.if ${MK_ISCSI} != "no" +CRUNCH_PROGS_usr.bin+= iscsictl +CRUNCH_PROGS_usr.sbin+= iscsid + +CRUNCH_LIBS+= ${OBJTOP}/lib/libiscsiutil/libiscsiutil.a +CRUNCH_BUILDOPTS+= CRUNCH_CFLAGS+=-I${OBJTOP}/lib/libiscsiutil +.endif + +.include <bsd.crunchgen.mk> +.include <bsd.prog.mk> diff --cc share/mk/bsd.libnames.mk index db08a5ac718c,000000000000..414ae3164066 mode 100644,000000..100644 --- a/share/mk/bsd.libnames.mk +++ b/share/mk/bsd.libnames.mk @@@ -1,221 -1,0 +1,222 @@@ + +# The include file <bsd.libnames.mk> define library names. +# Other include files (e.g. bsd.prog.mk, bsd.lib.mk) include this +# file where necessary. + +.if !target(__<bsd.init.mk>__) +.error bsd.libnames.mk cannot be included directly. +.endif + +LIBDESTDIR?= ${SYSROOT:U${DESTDIR}} + +.sinclude <src.libnames.mk> + +# Src directory locations are also defined in src.libnames.mk. + +LIBCRT0?= ${LIBDESTDIR}${LIBDIR_BASE}/crt0.o + +LIB80211?= ${LIBDESTDIR}${LIBDIR_BASE}/lib80211.a +LIB9P?= ${LIBDESTDIR}${LIBDIR_BASE}/lib9p.a +LIBALIAS?= ${LIBDESTDIR}${LIBDIR_BASE}/libalias.a +LIBARCHIVE?= ${LIBDESTDIR}${LIBDIR_BASE}/libarchive.a +LIBASN1?= ${LIBDESTDIR}${LIBDIR_BASE}/libasn1.a +LIBATM?= ${LIBDESTDIR}${LIBDIR_BASE}/libatm.a +LIBAUDITD?= ${LIBDESTDIR}${LIBDIR_BASE}/libauditd.a +LIBAVL?= ${LIBDESTDIR}${LIBDIR_BASE}/libavl.a +LIBBE?= ${LIBDESTDIR}${LIBDIR_BASE}/libbe.a +LIBBEGEMOT?= ${LIBDESTDIR}${LIBDIR_BASE}/libbegemot.a +LIBBLACKLIST?= ${LIBDESTDIR}${LIBDIR_BASE}/libblacklist.a +LIBBLOCKSRUNTIME?= ${LIBDESTDIR}${LIBDIR_BASE}/libBlocksRuntime.a +LIBBLUETOOTH?= ${LIBDESTDIR}${LIBDIR_BASE}/libbluetooth.a +LIBBSDXML?= ${LIBDESTDIR}${LIBDIR_BASE}/libbsdxml.a +LIBBSM?= ${LIBDESTDIR}${LIBDIR_BASE}/libbsm.a +LIBBSNMP?= ${LIBDESTDIR}${LIBDIR_BASE}/libbsnmp.a +LIBBZ2?= ${LIBDESTDIR}${LIBDIR_BASE}/libbz2.a +LIBC?= ${LIBDESTDIR}${LIBDIR_BASE}/libc.a +LIBCALENDAR?= ${LIBDESTDIR}${LIBDIR_BASE}/libcalendar.a +LIBCAM?= ${LIBDESTDIR}${LIBDIR_BASE}/libcam.a +LIBCOMPAT?= ${LIBDESTDIR}${LIBDIR_BASE}/libcompat.a +LIBCOMPILER_RT?=${LIBDESTDIR}${LIBDIR_BASE}/libcompiler_rt.a +LIBCOM_ERR?= ${LIBDESTDIR}${LIBDIR_BASE}/libcom_err.a +LIBCPLUSPLUS?= ${LIBDESTDIR}${LIBDIR_BASE}/libc++.a +LIBCRYPT?= ${LIBDESTDIR}${LIBDIR_BASE}/libcrypt.a +LIBCRYPTO?= ${LIBDESTDIR}${LIBDIR_BASE}/libcrypto.a +LIBCTF?= ${LIBDESTDIR}${LIBDIR_BASE}/libctf.a +LIBCURSES?= ${LIBDESTDIR}${LIBDIR_BASE}/libcurses.a +LIBCUSE?= ${LIBDESTDIR}${LIBDIR_BASE}/libcuse.a +LIBCXGB4?= ${LIBDESTDIR}${LIBDIR_BASE}/libcxgb4.a +LIBCXXRT?= ${LIBDESTDIR}${LIBDIR_BASE}/libcxxrt.a +LIBC_PIC?= ${LIBDESTDIR}${LIBDIR_BASE}/libc_pic.a +LIBDEVCTL?= ${LIBDESTDIR}${LIBDIR_BASE}/libdevctl.a +LIBDEVDCTL?= ${LIBDESTDIR}${LIBDIR_BASE}/libdevdctl.a +LIBDEVINFO?= ${LIBDESTDIR}${LIBDIR_BASE}/libdevinfo.a +LIBDEVSTAT?= ${LIBDESTDIR}${LIBDIR_BASE}/libdevstat.a +LIBDIALOG?= ${LIBDESTDIR}${LIBDIR_BASE}/libdialog.a +LIBDL?= ${LIBDESTDIR}${LIBDIR_BASE}/libdl.a +LIBDNS?= ${LIBDESTDIR}${LIBDIR_BASE}/libdns.a +LIBDPV?= ${LIBDESTDIR}${LIBDIR_BASE}/libdpv.a +LIBDTRACE?= ${LIBDESTDIR}${LIBDIR_BASE}/libdtrace.a +LIBDWARF?= ${LIBDESTDIR}${LIBDIR_BASE}/libdwarf.a +LIBEDIT?= ${LIBDESTDIR}${LIBDIR_BASE}/libedit.a +LIBEFIVAR?= ${LIBDESTDIR}${LIBDIR_BASE}/libefivar.a +LIBELF?= ${LIBDESTDIR}${LIBDIR_BASE}/libelf.a +LIBEXECINFO?= ${LIBDESTDIR}${LIBDIR_BASE}/libexecinfo.a +LIBFETCH?= ${LIBDESTDIR}${LIBDIR_BASE}/libfetch.a +LIBFIGPAR?= ${LIBDESTDIR}${LIBDIR_BASE}/libfigpar.a +LIBFL?= "don't use LIBFL, use LIBL" +LIBFORMW?= ${LIBDESTDIR}${LIBDIR_BASE}/libformw.a +LIBG2C?= ${LIBDESTDIR}${LIBDIR_BASE}/libg2c.a +LIBGEOM?= ${LIBDESTDIR}${LIBDIR_BASE}/libgeom.a +LIBGPIO?= ${LIBDESTDIR}${LIBDIR_BASE}/libgpio.a +LIBGSSAPI?= ${LIBDESTDIR}${LIBDIR_BASE}/libgssapi.a +LIBGSSAPI_KRB5?= ${LIBDESTDIR}${LIBDIR_BASE}/libgssapi_krb5.a +LIBHDB?= ${LIBDESTDIR}${LIBDIR_BASE}/libhdb.a +LIBHEIMBASE?= ${LIBDESTDIR}${LIBDIR_BASE}/libheimbase.a +LIBHEIMNTLM?= ${LIBDESTDIR}${LIBDIR_BASE}/libheimntlm.a +LIBHEIMSQLITE?= ${LIBDESTDIR}${LIBDIR_BASE}/libheimsqlite.a +LIBHX509?= ${LIBDESTDIR}${LIBDIR_BASE}/libhx509.a +LIBIBCM?= ${LIBDESTDIR}${LIBDIR_BASE}/libibcm.a +LIBIBMAD?= ${LIBDESTDIR}${LIBDIR_BASE}/libibmad.a +LIBIBNETDISC?= ${LIBDESTDIR}${LIBDIR_BASE}/libibnetdisc.a +LIBIBUMAD?= ${LIBDESTDIR}${LIBDIR_BASE}/libibumad.a +LIBIBVERBS?= ${LIBDESTDIR}${LIBDIR_BASE}/libibverbs.a +LIBICP?= ${LIBDESTDIR}${LIBDIR_BASE}/libicp.a +LIBIPSEC?= ${LIBDESTDIR}${LIBDIR_BASE}/libipsec.a +LIBIPT?= ${LIBDESTDIR}${LIBDIR_BASE}/libipt.a +LIBIRDMA?= ${LIBDESTDIR}${LIBDIR_BASE}/libirdma.a +LIBISCSIUTIL?= ${LIBDESTDIR}${LIBDIR_BASE}/libiscsiutil.a +LIBJAIL?= ${LIBDESTDIR}${LIBDIR_BASE}/libjail.a +LIBKADM5CLNT?= ${LIBDESTDIR}${LIBDIR_BASE}/libkadm5clnt.a +LIBKADM5SRV?= ${LIBDESTDIR}${LIBDIR_BASE}/libkadm5srv.a +LIBKAFS5?= ${LIBDESTDIR}${LIBDIR_BASE}/libkafs5.a +LIBKDC?= ${LIBDESTDIR}${LIBDIR_BASE}/libkdc.a +LIBKEYCAP?= ${LIBDESTDIR}${LIBDIR_BASE}/libkeycap.a +LIBKICONV?= ${LIBDESTDIR}${LIBDIR_BASE}/libkiconv.a +LIBKRB5?= ${LIBDESTDIR}${LIBDIR_BASE}/libkrb5.a +LIBKVM?= ${LIBDESTDIR}${LIBDIR_BASE}/libkvm.a +LIBL?= ${LIBDESTDIR}${LIBDIR_BASE}/libl.a +LIBLN?= "don't use LIBLN, use LIBL" +LIBLZMA?= ${LIBDESTDIR}${LIBDIR_BASE}/liblzma.a +LIBM?= ${LIBDESTDIR}${LIBDIR_BASE}/libm.a +LIBMAGIC?= ${LIBDESTDIR}${LIBDIR_BASE}/libmagic.a +LIBMD?= ${LIBDESTDIR}${LIBDIR_BASE}/libmd.a +LIBMEMSTAT?= ${LIBDESTDIR}${LIBDIR_BASE}/libmemstat.a +LIBMENU?= ${LIBDESTDIR}${LIBDIR_BASE}/libmenu.a +LIBMILTER?= ${LIBDESTDIR}${LIBDIR_BASE}/libmilter.a +LIBMLX4?= ${LIBDESTDIR}${LIBDIR_BASE}/libmlx4.a +LIBMLX5?= ${LIBDESTDIR}${LIBDIR_BASE}/libmlx5.a +LIBMP?= ${LIBDESTDIR}${LIBDIR_BASE}/libmp.a +LIBMT?= ${LIBDESTDIR}${LIBDIR_BASE}/libmt.a +LIBNCURSES?= ${LIBDESTDIR}${LIBDIR_BASE}/libncurses.a +LIBNCURSESW?= ${LIBDESTDIR}${LIBDIR_BASE}/libncursesw.a +LIBNETGRAPH?= ${LIBDESTDIR}${LIBDIR_BASE}/libnetgraph.a +LIBNETMAP?= ${LIBDESTDIR}${LIBDIR_BASE}/libnetmap.a +LIBNGATM?= ${LIBDESTDIR}${LIBDIR_BASE}/libngatm.a +LIBNV?= ${LIBDESTDIR}${LIBDIR_BASE}/libnv.a +LIBNVPAIR?= ${LIBDESTDIR}${LIBDIR_BASE}/libnvpair.a +LIBOPENCSD?= ${LIBDESTDIR}${LIBDIR_BASE}/libopencsd.a +LIBOPENSM?= ${LIBDESTDIR}${LIBDIR_BASE}/libopensm.a +LIBOSMCOMP?= ${LIBDESTDIR}${LIBDIR_BASE}/libosmcomp.a +LIBOSMVENDOR?= ${LIBDESTDIR}${LIBDIR_BASE}/libosmvendor.a +LIBPAM?= ${LIBDESTDIR}${LIBDIR_BASE}/libpam.a +LIBPANEL?= ${LIBDESTDIR}${LIBDIR_BASE}/libpanel.a +LIBPANELW?= ${LIBDESTDIR}${LIBDIR_BASE}/libpanelw.a +LIBPCAP?= ${LIBDESTDIR}${LIBDIR_BASE}/libpcap.a +LIBPJDLOG?= ${LIBDESTDIR}${LIBDIR_BASE}/libpjdlog.a +LIBPMC?= ${LIBDESTDIR}${LIBDIR_BASE}/libpmc.a +LIBPROC?= ${LIBDESTDIR}${LIBDIR_BASE}/libproc.a +LIBPROCSTAT?= ${LIBDESTDIR}${LIBDIR_BASE}/libprocstat.a +LIBPTHREAD?= ${LIBDESTDIR}${LIBDIR_BASE}/libpthread.a +LIBRADIUS?= ${LIBDESTDIR}${LIBDIR_BASE}/libradius.a +LIBRDMACM?= ${LIBDESTDIR}${LIBDIR_BASE}/librdmacm.a +LIBREGEX?= ${LIBDESTDIR}${LIBDIR_BASE}/libregex.a +LIBROKEN?= ${LIBDESTDIR}${LIBDIR_BASE}/libroken.a +LIBRPCSEC_GSS?= ${LIBDESTDIR}${LIBDIR_BASE}/librpcsec_gss.a +LIBRPCSVC?= ${LIBDESTDIR}${LIBDIR_BASE}/librpcsvc.a +LIBRT?= ${LIBDESTDIR}${LIBDIR_BASE}/librt.a +LIBRTLD_DB?= ${LIBDESTDIR}${LIBDIR_BASE}/librtld_db.a +LIBSBUF?= ${LIBDESTDIR}${LIBDIR_BASE}/libsbuf.a +LIBSDP?= ${LIBDESTDIR}${LIBDIR_BASE}/libsdp.a +LIBSMB?= ${LIBDESTDIR}${LIBDIR_BASE}/libsmb.a +LIBSPL?= ${LIBDESTDIR}${LIBDIR_BASE}/libspl.a +LIBSSL?= ${LIBDESTDIR}${LIBDIR_BASE}/libssl.a +LIBSSP_NONSHARED?= ${LIBDESTDIR}${LIBDIR_BASE}/libssp_nonshared.a +LIBSTATS?= ${LIBDESTDIR}${LIBDIR_BASE}/libstats.a +LIBSTDTHREADS?= ${LIBDESTDIR}${LIBDIR_BASE}/libstdthreads.a +LIBSYSDECODE?= ${LIBDESTDIR}${LIBDIR_BASE}/libsysdecode.a +LIBTACPLUS?= ${LIBDESTDIR}${LIBDIR_BASE}/libtacplus.a +LIBTERMCAP?= ${LIBDESTDIR}${LIBDIR_BASE}/libtermcap.a +LIBTERMCAPW?= ${LIBDESTDIR}${LIBDIR_BASE}/libtermcapw.a +LIBTERMLIB?= "don't use LIBTERMLIB, use LIBTERMCAP" +LIBTINFOW= ${LIBDESTDIR}${LIBDIR_BASE}/libtinfow.a +LIBTPOOL?= ${LIBDESTDIR}${LIBDIR_BASE}/libtpool.a +LIBUFS?= ${LIBDESTDIR}${LIBDIR_BASE}/libufs.a +LIBUGIDFW?= ${LIBDESTDIR}${LIBDIR_BASE}/libugidfw.a +LIBULOG?= ${LIBDESTDIR}${LIBDIR_BASE}/libulog.a +LIBUMEM?= ${LIBDESTDIR}${LIBDIR_BASE}/libumem.a +LIBUSB?= ${LIBDESTDIR}${LIBDIR_BASE}/libusb.a +LIBUSBHID?= ${LIBDESTDIR}${LIBDIR_BASE}/libusbhid.a +LIBUTIL?= ${LIBDESTDIR}${LIBDIR_BASE}/libutil.a +LIBUUTIL?= ${LIBDESTDIR}${LIBDIR_BASE}/libuutil.a +LIBVGL?= ${LIBDESTDIR}${LIBDIR_BASE}/libvgl.a +LIBVMMAPI?= ${LIBDESTDIR}${LIBDIR_BASE}/libvmmapi.a +LIBWIND?= ${LIBDESTDIR}${LIBDIR_BASE}/libwind.a +LIBWRAP?= ${LIBDESTDIR}${LIBDIR_BASE}/libwrap.a +LIBXO?= ${LIBDESTDIR}${LIBDIR_BASE}/libxo.a +LIBXPG4?= ${LIBDESTDIR}${LIBDIR_BASE}/libxpg4.a +LIBY?= ${LIBDESTDIR}${LIBDIR_BASE}/liby.a +LIBYPCLNT?= ${LIBDESTDIR}${LIBDIR_BASE}/libypclnt.a +LIBZ?= ${LIBDESTDIR}${LIBDIR_BASE}/libz.a ++LIBZDB?= ${LIBDESTDIR}${LIBDIR_BASE}/libzdb.a +LIBZFS?= ${LIBDESTDIR}${LIBDIR_BASE}/libzfs.a +LIBZFS_CORE?= ${LIBDESTDIR}${LIBDIR_BASE}/libzfs_core.a +LIBZFSBOOTENV?= ${LIBDESTDIR}${LIBDIR_BASE}/libzfsbootenv.a +LIBZPOOL?= ${LIBDESTDIR}${LIBDIR_BASE}/libzpool.a +LIBZUTIL?= ${LIBDESTDIR}${LIBDIR_BASE}/libzutil.a + +# enforce the 2 -lpthread and -lc to always be the last in that exact order +.if defined(LDADD) +.if ${LDADD:M-lpthread} +LDADD:= ${LDADD:N-lpthread} -lpthread +.endif +.if ${LDADD:M-lc} +LDADD:= ${LDADD:N-lc} -lc +.endif +.endif + +# Only do this for src builds. +.if defined(SRCTOP) +.if defined(_LIBRARIES) && defined(LIB) && \ + ${_LIBRARIES:M${LIB}} != "" +.if !defined(LIB${LIB:tu}) +.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}. Likely should be: LIB${LIB:tu}?= $${LIBDESTDIR}$${LIBDIR_BASE}/lib${LIB}.a +.endif +.endif + +# Derive LIB*SRCDIR from LIB*DIR +.for lib in ${_LIBRARIES} +LIB${lib:tu}SRCDIR?= ${SRCTOP}/${LIB${lib:tu}DIR:S,^${OBJTOP}/,,} +.endfor +.else + +# Out of tree builds + +# There are LIBADD defined in an out-of-tree build. Are they *all* +# in-tree libraries? If so convert them to LDADD to support +# partial checkouts. +.if !empty(LIBADD) +_convert_libadd= 1 +.for l in ${LIBADD} +.if empty(LIB${l:tu}) +_convert_libadd= 0 +.endif +.endfor +.if ${_convert_libadd} == 1 +.warning Converting out-of-tree build LIBADDs into LDADD. This is not fully supported. +.for l in ${LIBADD} +LDADD+= -l${l} +.endfor +.endif +.endif + +.endif # defined(SRCTOP) diff --cc share/mk/src.libnames.mk index 5a6932614b29,000000000000..658dd1c3d699 mode 100644,000000..100644 --- a/share/mk/src.libnames.mk +++ b/share/mk/src.libnames.mk @@@ -1,804 -1,0 +1,807 @@@ +# +# The include file <src.libnames.mk> define library names suitable +# for INTERNALLIB and PRIVATELIB definition + +.if !target(__<bsd.init.mk>__) +.error src.libnames.mk cannot be included directly. +.endif + +.if !target(__<src.libnames.mk>__) +__<src.libnames.mk>__: + +.include <src.opts.mk> + +_PRIVATELIBS= \ + atf_c \ + atf_cxx \ + auditd \ + bsddialog \ + bsdstat \ + cbor \ + devdctl \ + event1 \ + fido2 \ + gmock \ + gtest \ + gmock_main \ + gtest_main \ + heimipcc \ + heimipcs \ + ldns \ + sqlite3 \ + ssh \ + ucl \ + unbound \ + zstd + +# Let projects based on FreeBSD append to _PRIVATELIBS +# by maintaining their own LOCAL_PRIVATELIBS list. +_PRIVATELIBS+= ${LOCAL_PRIVATELIBS} + +_INTERNALLIBS= \ + amu \ + bsnmptools \ + c_nossp_pic \ + cron \ + elftc \ + fifolog \ + ifconfig \ + ipf \ + iscsiutil \ + lpr \ + lua \ + lutok \ + netbsd \ + ntp \ + ntpevent \ + openbsd \ + opts \ + parse \ + pe \ + pfctl \ + pmcstat \ + sl \ + sm \ + smdb \ + smutil \ + telnet \ + vers \ + wpaap \ + wpacommon \ + wpacrypto \ + wpadrivers \ + wpaeap_common \ + wpaeap_peer \ + wpaeap_server \ + wpaeapol_auth \ + wpaeapol_supp \ + wpal2_packet \ + wparadius \ + wparsn_supp \ + wpatls \ + wpautils \ + wpawps + +# Let projects based on FreeBSD append to _INTERNALLIBS +# by maintaining their own LOCAL_INTERNALLIBS list. +_INTERNALLIBS+= ${LOCAL_INTERNALLIBS} + +_LIBRARIES= \ + ${_PRIVATELIBS} \ + ${_INTERNALLIBS} \ + ${LOCAL_LIBRARIES} \ + 80211 \ + 9p \ + alias \ + archive \ + asn1 \ + avl \ + BlocksRuntime \ + be \ + begemot \ + bluetooth \ + bsdxml \ + bsm \ + bsnmp \ + bz2 \ + c \ + c_pic \ + calendar \ + cam \ + casper \ + cap_dns \ + cap_fileargs \ + cap_grp \ + cap_net \ + cap_netdb \ + cap_pwd \ + cap_sysctl \ + cap_syslog \ + com_err \ + compiler_rt \ + crypt \ + crypto \ + ctf \ + cuse \ + cxxrt \ + devctl \ + devdctl \ + devinfo \ + devstat \ + dialog \ + dl \ + dpv \ + dtrace \ + dwarf \ + edit \ + efivar \ + elf \ + execinfo \ + fetch \ + figpar \ + formw \ + geom \ + gpio \ + gssapi \ + gssapi_krb5 \ + hdb \ + heimbase \ + heimntlm \ + heimsqlite \ + hx509 \ + icp \ + ipsec \ + ipt \ + jail \ + kadm5clnt \ + kadm5srv \ + kafs5 \ + kdc \ + kiconv \ + krb5 \ + kvm \ + l \ + lzma \ + m \ + magic \ + md \ + memstat \ + mp \ + mt \ + ncursesw \ + netgraph \ + netmap \ + ngatm \ + nv \ + nvpair \ + opencsd \ + pam \ + panel \ + panelw \ + pcap \ + pcsclite \ + pjdlog \ + pmc \ + proc \ + procstat \ + pthread \ + radius \ + regex \ + roken \ + rpcsec_gss \ + rpcsvc \ + rt \ + rtld_db \ + sbuf \ + sdp \ + sm \ + smb \ + spl \ + ssl \ + ssp_nonshared \ + stats \ + stdthreads \ + supcplusplus \ + sys \ + sysdecode \ + tacplus \ + termcapw \ + tinfow \ + tpool \ + ufs \ + ugidfw \ + ulog \ + umem \ + usb \ + usbhid \ + util \ + uutil \ + vmmapi \ + wind \ + wrap \ + xo \ + y \ + ypclnt \ + z \ ++ zdb \ + zfs_core \ + zfs \ + zfsbootenv \ + zpool \ + zutil + +.if ${MK_BLACKLIST} != "no" +_LIBRARIES+= \ + blacklist \ + +.endif + +.if ${MK_OFED} != "no" +_LIBRARIES+= \ + cxgb4 \ + ibcm \ + ibmad \ + ibnetdisc \ + ibumad \ + ibverbs \ + irdma \ + mlx4 \ + mlx5 \ + rdmacm \ + osmcomp \ + opensm \ + osmvendor +.endif + +.if ${MK_BEARSSL} == "yes" +_LIBRARIES+= \ + bearssl \ + secureboot \ + +LIBBEARSSL?= ${LIBBEARSSLDIR}/libbearssl.a +LIBSECUREBOOT?= ${LIBSECUREBOOTDIR}/libsecureboot.a +.endif + +.if ${MK_VERIEXEC} == "yes" +_LIBRARIES+= veriexec + +LIBVERIEXEC?= ${LIBVERIEXECDIR}/libveriexec.a +.endif + +# Each library's LIBADD needs to be duplicated here for static linkage of +# 2nd+ order consumers. Auto-generating this would be better. +_DP_80211= sbuf bsdxml *** 1766 LINES SKIPPED ***