Date: Mon, 20 Jan 2020 17:55:52 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r356920 - in projects/clang1000-import: . cddl/contrib/opensolaris/lib/libzfs/common gnu/usr.bin/binutils include lib/libbe lib/libc/stdlib lib/libc/tests/stdlib share/man/man5 share/ma... Message-ID: <202001201755.00KHtqCL012176@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Mon Jan 20 17:55:51 2020 New Revision: 356920 URL: https://svnweb.freebsd.org/changeset/base/356920 Log: Merge ^/head r356848 through r356919. Added: projects/clang1000-import/lib/libc/stdlib/qsort_s.c - copied unchanged from r356919, head/lib/libc/stdlib/qsort_s.c projects/clang1000-import/lib/libc/tests/stdlib/qsort_r_test.c - copied unchanged from r356919, head/lib/libc/tests/stdlib/qsort_r_test.c projects/clang1000-import/lib/libc/tests/stdlib/qsort_s_test.c - copied unchanged from r356919, head/lib/libc/tests/stdlib/qsort_s_test.c projects/clang1000-import/sys/arm/xilinx/zy7_qspi.c - copied unchanged from r356919, head/sys/arm/xilinx/zy7_qspi.c projects/clang1000-import/sys/conf/sysent.mk - copied unchanged from r356919, head/sys/conf/sysent.mk projects/clang1000-import/sys/powerpc/amigaone/cpld.h - copied unchanged from r356919, head/sys/powerpc/amigaone/cpld.h projects/clang1000-import/sys/powerpc/amigaone/cpld_x5000.c - copied unchanged from r356919, head/sys/powerpc/amigaone/cpld_x5000.c Deleted: projects/clang1000-import/tools/build/options/WITHOUT_PC_SYSINSTALL Modified: projects/clang1000-import/.cirrus.yml projects/clang1000-import/Makefile.inc1 projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c projects/clang1000-import/gnu/usr.bin/binutils/Makefile projects/clang1000-import/include/stdlib.h projects/clang1000-import/lib/libbe/be_access.c projects/clang1000-import/lib/libc/stdlib/Makefile.inc projects/clang1000-import/lib/libc/stdlib/Symbol.map projects/clang1000-import/lib/libc/stdlib/qsort.3 projects/clang1000-import/lib/libc/stdlib/qsort.c projects/clang1000-import/lib/libc/tests/stdlib/Makefile projects/clang1000-import/share/man/man5/src.conf.5 projects/clang1000-import/share/man/man7/hier.7 projects/clang1000-import/share/misc/committers-doc.dot projects/clang1000-import/share/mk/src.opts.mk projects/clang1000-import/stand/powerpc/uboot/start.S projects/clang1000-import/sys/amd64/linux/Makefile projects/clang1000-import/sys/amd64/linux32/Makefile projects/clang1000-import/sys/arm/allwinner/a10/a10_padconf.c projects/clang1000-import/sys/arm/allwinner/a13/a13_padconf.c projects/clang1000-import/sys/arm/allwinner/a20/a20_padconf.c projects/clang1000-import/sys/arm/allwinner/a31/a31_padconf.c projects/clang1000-import/sys/arm/allwinner/a31/a31s_padconf.c projects/clang1000-import/sys/arm/allwinner/a33/a33_padconf.c projects/clang1000-import/sys/arm/allwinner/a64/a64_padconf.c projects/clang1000-import/sys/arm/allwinner/a64/a64_r_padconf.c projects/clang1000-import/sys/arm/allwinner/a83t/a83t_padconf.c projects/clang1000-import/sys/arm/allwinner/allwinner_pinctrl.h projects/clang1000-import/sys/arm/allwinner/aw_gpio.c projects/clang1000-import/sys/arm/allwinner/h3/h3_padconf.c projects/clang1000-import/sys/arm/allwinner/h3/h3_r_padconf.c projects/clang1000-import/sys/arm/allwinner/h6/h6_padconf.c projects/clang1000-import/sys/arm/allwinner/h6/h6_r_padconf.c projects/clang1000-import/sys/arm/broadcom/bcm2835/bcm2835_vcbus.c projects/clang1000-import/sys/arm/conf/GENERIC projects/clang1000-import/sys/arm/conf/ZEDBOARD projects/clang1000-import/sys/arm/linux/Makefile projects/clang1000-import/sys/arm/xilinx/files.zynq7 projects/clang1000-import/sys/arm64/linux/Makefile projects/clang1000-import/sys/arm64/rockchip/rk805.c projects/clang1000-import/sys/compat/cloudabi32/Makefile projects/clang1000-import/sys/compat/cloudabi64/Makefile projects/clang1000-import/sys/compat/freebsd32/Makefile projects/clang1000-import/sys/compat/linux/linux_file.c projects/clang1000-import/sys/compat/linux/linux_file.h projects/clang1000-import/sys/conf/files.powerpc projects/clang1000-import/sys/dev/e1000/e1000_api.c projects/clang1000-import/sys/dev/e1000/e1000_hw.h projects/clang1000-import/sys/dev/e1000/if_em.c projects/clang1000-import/sys/dev/flash/mx25lreg.h projects/clang1000-import/sys/dev/md/md.c projects/clang1000-import/sys/dev/mps/mps_pci.c projects/clang1000-import/sys/dts/arm/zedboard.dts projects/clang1000-import/sys/dts/arm/zybo.dts projects/clang1000-import/sys/dts/arm/zynq-7000.dtsi projects/clang1000-import/sys/fs/tmpfs/tmpfs_subr.c projects/clang1000-import/sys/geom/label/g_label.c projects/clang1000-import/sys/i386/linux/Makefile projects/clang1000-import/sys/kern/Makefile projects/clang1000-import/sys/kern/kern_sendfile.c projects/clang1000-import/sys/kern/kern_synch.c projects/clang1000-import/sys/kern/uipc_shm.c projects/clang1000-import/sys/kern/vfs_cache.c projects/clang1000-import/sys/kern/vfs_default.c projects/clang1000-import/sys/kern/vfs_subr.c projects/clang1000-import/sys/net/if.c projects/clang1000-import/sys/net80211/ieee80211_amrr.c projects/clang1000-import/sys/powerpc/aim/aim_machdep.c projects/clang1000-import/sys/powerpc/aim/mmu_oea64.c projects/clang1000-import/sys/powerpc/aim/moea64_if.m projects/clang1000-import/sys/powerpc/aim/trap_subr32.S projects/clang1000-import/sys/powerpc/aim/trap_subr64.S projects/clang1000-import/sys/powerpc/booke/pmap.c projects/clang1000-import/sys/powerpc/include/ofw_machdep.h projects/clang1000-import/sys/powerpc/include/platform.h projects/clang1000-import/sys/powerpc/include/trap.h projects/clang1000-import/sys/powerpc/ofw/ofw_machdep.c projects/clang1000-import/sys/powerpc/ofw/ofw_pcibus.c projects/clang1000-import/sys/powerpc/powernv/platform_powernv.c projects/clang1000-import/sys/powerpc/powerpc/mmu_if.m projects/clang1000-import/sys/powerpc/powerpc/platform.c projects/clang1000-import/sys/powerpc/powerpc/platform_if.m projects/clang1000-import/sys/powerpc/powerpc/sigcode64.S projects/clang1000-import/sys/sys/refcount.h projects/clang1000-import/sys/tools/makeobjops.awk projects/clang1000-import/sys/vm/device_pager.c projects/clang1000-import/sys/vm/phys_pager.c projects/clang1000-import/sys/vm/sg_pager.c projects/clang1000-import/sys/vm/swap_pager.c projects/clang1000-import/sys/vm/uma_core.c projects/clang1000-import/sys/vm/vm_fault.c projects/clang1000-import/sys/vm/vm_object.c projects/clang1000-import/sys/vm/vm_object.h projects/clang1000-import/sys/vm/vm_page.c projects/clang1000-import/sys/vm/vm_pager.c projects/clang1000-import/sys/vm/vm_swapout.c projects/clang1000-import/sys/vm/vnode_pager.c projects/clang1000-import/sys/x86/x86/mp_x86.c projects/clang1000-import/tools/build/options/WITHOUT_BINUTILS projects/clang1000-import/tools/build/options/WITHOUT_BINUTILS_BOOTSTRAP projects/clang1000-import/tools/build/options/WITH_BINUTILS projects/clang1000-import/tools/build/options/WITH_BINUTILS_BOOTSTRAP projects/clang1000-import/usr.sbin/bsdinstall/partedit/partedit.c Directory Properties: projects/clang1000-import/ (props changed) projects/clang1000-import/cddl/ (props changed) projects/clang1000-import/cddl/contrib/opensolaris/ (props changed) projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/clang1000-import/gnu/usr.bin/binutils/ (props changed) Modified: projects/clang1000-import/.cirrus.yml ============================================================================== --- projects/clang1000-import/.cirrus.yml Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/.cirrus.yml Mon Jan 20 17:55:51 2020 (r356920) @@ -1,7 +1,7 @@ # $FreeBSD$ freebsd_instance: - image: freebsd-12-0-release-amd64 + image: freebsd-12-1-release-amd64 cpu: 8 memory: 24G @@ -14,5 +14,7 @@ task: - pkg install -y qemu-devel uefi-edk2-qemu-x86_64 script: - make -j$(sysctl -n hw.ncpu) WITHOUT_TOOLCHAIN=yes buildworld buildkernel + package_script: + - make WITHOUT_TOOLCHAIN=yes PKG_FORMAT=tar packages test_script: - sh tools/boot/ci-qemu-test.sh Modified: projects/clang1000-import/Makefile.inc1 ============================================================================== --- projects/clang1000-import/Makefile.inc1 Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/Makefile.inc1 Mon Jan 20 17:55:51 2020 (r356920) @@ -1853,6 +1853,7 @@ PORTSDIR?= /usr/ports WSTAGEDIR?= ${OBJTOP}/worldstage KSTAGEDIR?= ${OBJTOP}/kernelstage REPODIR?= ${OBJROOT}repo +PKG_FORMAT?= txz PKGSIGNKEY?= # empty .ORDER: stage-packages create-packages @@ -1925,6 +1926,10 @@ create-world-packages: _pkgbootstrap .PHONY .include "${WSTAGEDIR}/packages.mk" .endif +.if make(create-world-packages-jobs) || make(create-kernel-packages*) +PKG_ABI!=${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI +.endif + create-world-packages-jobs: .PHONY .for pkgname in ${_PKGS} create-world-packages-jobs: create-world-package-${pkgname} @@ -1939,10 +1944,10 @@ create-world-package-${pkgname}: .PHONY sed -i '' -e "s/%VCS_REVISION%/${VCS_REVISION}/" ${WSTAGEDIR}/${pkgname}.ucl ; \ fi ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \ - create -M ${WSTAGEDIR}/${pkgname}.ucl \ + create -f ${PKG_FORMAT} -M ${WSTAGEDIR}/${pkgname}.ucl \ -p ${WSTAGEDIR}/${pkgname}.plist \ -r ${WSTAGEDIR} \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} + -o ${REPODIR}/${PKG_ABI}/${PKG_VERSION} .endfor _default_flavor= -default @@ -1971,10 +1976,11 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul /version/ {print $$2; next } ' \ ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \ ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \ - create -M ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl \ + create -f ${PKG_FORMAT} \ + -M ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl \ -p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \ -r ${KSTAGEDIR}/${DISTDIR} \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} + -o ${REPODIR}/${PKG_ABI}/${PKG_VERSION} . endfor .endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" @@ -2003,19 +2009,22 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_ /version/ {print $$2; next } ' \ ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \ ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \ - create -M ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl \ + create -f ${PKG_FORMAT} \ + -M ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl \ -p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \ -r ${KSTAGEDIR}/kernel.${_kernel} \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} + -o ${REPODIR}/${PKG_ABI}/${PKG_VERSION} . endfor . endif . endfor .endif sign-packages: _pkgbootstrap .PHONY + printf "version = 2;\npacking_format = \"${PKG_FORMAT}\";\n" > ${WSTAGEDIR}/meta @[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/latest" ] && \ unlink ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/latest ; \ ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname repo \ + -m ${WSTAGEDIR}/meta \ -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} \ ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} \ ${PKGSIGNKEY} ; \ Modified: projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h ============================================================================== --- projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Mon Jan 20 17:55:51 2020 (r356920) @@ -769,6 +769,7 @@ extern ulong_t get_system_hostid(void); extern boolean_t is_mounted(libzfs_handle_t *, const char *special, char **); extern boolean_t zfs_is_mounted(zfs_handle_t *, char **); extern int zfs_mount(zfs_handle_t *, const char *, int); +extern int zfs_mount_at(zfs_handle_t *, const char *, int, const char *); extern int zfs_unmount(zfs_handle_t *, const char *, int); extern int zfs_unmountall(zfs_handle_t *, int); Modified: projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c ============================================================================== --- projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c Mon Jan 20 17:55:51 2020 (r356920) @@ -301,6 +301,17 @@ zfs_is_mounted(zfs_handle_t *zhp, char **where) return (is_mounted(zhp->zfs_hdl, zfs_get_name(zhp), where)); } +static boolean_t +zfs_is_mountable_internal(zfs_handle_t *zhp, const char *mountpoint) +{ + + if (zfs_prop_get_int(zhp, ZFS_PROP_ZONED) && + getzoneid() == GLOBAL_ZONEID) + return (B_FALSE); + + return (B_TRUE); +} + /* * Returns true if the given dataset is mountable, false otherwise. Returns the * mountpoint in 'buf'. @@ -325,8 +336,7 @@ zfs_is_mountable(zfs_handle_t *zhp, char *buf, size_t if (zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT) == ZFS_CANMOUNT_OFF) return (B_FALSE); - if (zfs_prop_get_int(zhp, ZFS_PROP_ZONED) && - getzoneid() == GLOBAL_ZONEID) + if (!zfs_is_mountable_internal(zhp, buf)) return (B_FALSE); if (source) @@ -341,8 +351,19 @@ zfs_is_mountable(zfs_handle_t *zhp, char *buf, size_t int zfs_mount(zfs_handle_t *zhp, const char *options, int flags) { - struct stat buf; char mountpoint[ZFS_MAXPROPLEN]; + + if (!zfs_is_mountable(zhp, mountpoint, sizeof (mountpoint), NULL)) + return (0); + + return (zfs_mount_at(zhp, options, flags, mountpoint)); +} + +int +zfs_mount_at(zfs_handle_t *zhp, const char *options, int flags, + const char *mountpoint) +{ + struct stat buf; char mntopts[MNT_LINE_MAX]; libzfs_handle_t *hdl = zhp->zfs_hdl; @@ -357,8 +378,8 @@ zfs_mount(zfs_handle_t *zhp, const char *options, int if (zpool_get_prop_int(zhp->zpool_hdl, ZPOOL_PROP_READONLY, NULL)) flags |= MS_RDONLY; - if (!zfs_is_mountable(zhp, mountpoint, sizeof (mountpoint), NULL)) - return (0); + if (!zfs_is_mountable_internal(zhp, mountpoint)) + return (B_FALSE); /* Create the directory if it doesn't already exist */ if (lstat(mountpoint, &buf) != 0) { Modified: projects/clang1000-import/gnu/usr.bin/binutils/Makefile ============================================================================== --- projects/clang1000-import/gnu/usr.bin/binutils/Makefile Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/gnu/usr.bin/binutils/Makefile Mon Jan 20 17:55:51 2020 (r356920) @@ -8,8 +8,14 @@ SUBDIR= libiberty \ SUBDIR.${MK_BINUTILS}+= doc SUBDIR.${MK_BINUTILS}+= libbinutils -SUBDIR.${MK_BINUTILS}+= as SUBDIR.${MK_BINUTILS}+= objdump + +# GNU as is used on x86 only, for a few files that cannot be assembled by +# Clang IAS. Other archs either use Clang IAS for every assembly file, or +# use external toolchain. +.if ${TARGET} == "amd64" || ${TARGET} == "i386" +SUBDIR.${MK_BINUTILS}+= as +.endif # All archs except powerpc either use lld or require external toolchain. # powerpc still needs binutils ld to link 32-bit binaries. Modified: projects/clang1000-import/include/stdlib.h ============================================================================== --- projects/clang1000-import/include/stdlib.h Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/include/stdlib.h Mon Jan 20 17:55:51 2020 (r356920) @@ -324,6 +324,11 @@ extern char *suboptarg; /* getsubopt(3) external var #if __EXT1_VISIBLE +#ifndef _RSIZE_T_DEFINED +#define _RSIZE_T_DEFINED +typedef size_t rsize_t; +#endif + #ifndef _ERRNO_T_DEFINED #define _ERRNO_T_DEFINED typedef int errno_t; @@ -339,6 +344,9 @@ _Noreturn void abort_handler_s(const char * __restrict errno_t); /* K3.6.1.3 */ void ignore_handler_s(const char * __restrict, void * __restrict, errno_t); +/* K.3.6.3.2 */ +errno_t qsort_s(void *, rsize_t, rsize_t, + int (*)(const void *, const void *, void *), void *); #endif /* __EXT1_VISIBLE */ __END_DECLS Modified: projects/clang1000-import/lib/libbe/be_access.c ============================================================================== --- projects/clang1000-import/lib/libbe/be_access.c Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/lib/libbe/be_access.c Mon Jan 20 17:55:51 2020 (r356920) @@ -82,7 +82,6 @@ be_mount_iter(zfs_handle_t *zfs_hdl, void *data) char *mountpoint; char tmp[BE_MAXPATHLEN], zfs_mnt[BE_MAXPATHLEN]; struct be_mount_info *info; - char opt; info = (struct be_mount_info *)data; @@ -121,9 +120,7 @@ be_mount_iter(zfs_handle_t *zfs_hdl, void *data) mountpoint); } - opt = '\0'; - if ((err = zmount(zfs_get_name(zfs_hdl), tmp, info->mntflags, - __DECONST(char *, MNTTYPE_ZFS), NULL, 0, &opt, 1)) != 0) { + if ((err = zfs_mount_at(zfs_hdl, NULL, info->mntflags, tmp)) != 0) { switch (errno) { case ENAMETOOLONG: return (set_error(info->lbh, BE_ERR_PATHLEN)); Modified: projects/clang1000-import/lib/libc/stdlib/Makefile.inc ============================================================================== --- projects/clang1000-import/lib/libc/stdlib/Makefile.inc Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/lib/libc/stdlib/Makefile.inc Mon Jan 20 17:55:51 2020 (r356920) @@ -11,8 +11,8 @@ MISRCS+=C99_Exit.c a64l.c abort.c abs.c atexit.c atof. getsubopt.c hcreate.c hcreate_r.c hdestroy_r.c heapsort.c heapsort_b.c \ hsearch_r.c imaxabs.c imaxdiv.c \ insque.c l64a.c labs.c ldiv.c llabs.c lldiv.c lsearch.c \ - merge.c mergesort_b.c ptsname.c qsort.c qsort_r.c quick_exit.c \ - radixsort.c rand.c \ + merge.c mergesort_b.c ptsname.c qsort.c qsort_r.c qsort_s.c \ + quick_exit.c radixsort.c rand.c \ random.c reallocarray.c reallocf.c realpath.c remque.c \ set_constraint_handler_s.c strfmon.c strtoimax.c \ strtol.c strtold.c strtoll.c strtoq.c strtoul.c strtonum.c strtoull.c \ @@ -51,7 +51,8 @@ MLINKS+=hcreate.3 hcreate_r.3 hcreate.3 hdestroy_r.3 h MLINKS+=insque.3 remque.3 MLINKS+=lsearch.3 lfind.3 MLINKS+=ptsname.3 grantpt.3 ptsname.3 unlockpt.3 -MLINKS+=qsort.3 heapsort.3 qsort.3 mergesort.3 qsort.3 qsort_r.3 +MLINKS+=qsort.3 heapsort.3 qsort.3 mergesort.3 qsort.3 qsort_r.3 \ + qsort.3 qsort_s.3 MLINKS+=rand.3 rand_r.3 rand.3 srand.3 MLINKS+=random.3 initstate.3 random.3 setstate.3 random.3 srandom.3 \ random.3 srandomdev.3 Modified: projects/clang1000-import/lib/libc/stdlib/Symbol.map ============================================================================== --- projects/clang1000-import/lib/libc/stdlib/Symbol.map Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/lib/libc/stdlib/Symbol.map Mon Jan 20 17:55:51 2020 (r356920) @@ -123,6 +123,10 @@ FBSD_1.5 { set_constraint_handler_s; }; +FBSD_1.6 { + qsort_s; +}; + FBSDprivate_1.0 { __system; _system; Modified: projects/clang1000-import/lib/libc/stdlib/qsort.3 ============================================================================== --- projects/clang1000-import/lib/libc/stdlib/qsort.3 Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/lib/libc/stdlib/qsort.3 Mon Jan 20 17:55:51 2020 (r356920) @@ -32,7 +32,7 @@ .\" @(#)qsort.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd February 20, 2013 +.Dd January 14, 2020 .Dt QSORT 3 .Os .Sh NAME @@ -98,6 +98,15 @@ .Fa "size_t size" .Fa "int \*[lp]^compar\*[rp]\*[lp]const void *, const void *\*[rp]" .Fc +.Fd #define __STDC_WANT_LIB_EXT1__ 1 +.Ft errno_t +.Fo qsort_s +.Fa "void *base" +.Fa "rsize_t nmemb" +.Fa "rsize_t size" +.Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *, void *\*[rp]" +.Fa "void *thunk" +.Fc .Sh DESCRIPTION The .Fn qsort @@ -238,6 +247,36 @@ is faster than .Fn heapsort . Memory availability and pre-existing order in the data can make this untrue. +.Pp +The +.Fn qsort_s +function behaves the same as +.Fn qsort_r , except that: +.Bl -dash +.It +The order of arguments is different +.It +The order of arguments to +.Fa compar +is different +.It +if +.Fa nmemb +or +.Fa size +are greater than +.Dv RSIZE_MAX , +or +.Fa nmemb +is not zero and +.Fa compar +is NULL, then the runtime-constraint handler is called, and +.Fn qsort_s +returns an error. +Note that the handler is called before +.Fn qsort_s +returns the error, and the handler function might not return. +.El .Sh RETURN VALUES The .Fn qsort @@ -245,6 +284,9 @@ and .Fn qsort_r functions return no value. +The +.Fn qsort_s +function returns zero on success, non-zero on error. .Pp .Rv -std heapsort mergesort .Sh EXAMPLES @@ -288,6 +330,19 @@ main(void) } .Ed .Sh COMPATIBILITY +The order of arguments for the comparison function used with +.Fn qsort_r +is different from the one used by +.Fn qsort_s , +and the GNU libc implementation of +.Fn qsort_r . +When porting software written for GNU libc, it is usually possible +to replace +.Fn qsort_r +with +.Fn qsort_s +to work around this problem. +.Pp Previous versions of .Fn qsort did not permit the comparison routine itself to call @@ -366,6 +421,10 @@ The function conforms to .St -isoC . +.Fn qsort_s +conforms to +.St -isoC-2011 +K.3.6.3.2. .Sh HISTORY The variants of these functions that take blocks as arguments first appeared in Mac OS X. Modified: projects/clang1000-import/lib/libc/stdlib/qsort.c ============================================================================== --- projects/clang1000-import/lib/libc/stdlib/qsort.c Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/lib/libc/stdlib/qsort.c Mon Jan 20 17:55:51 2020 (r356920) @@ -35,10 +35,16 @@ static char sccsid[] = "@(#)qsort.c 8.1 (Berkeley) 6/4 #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include <errno.h> +#include <stdint.h> #include <stdlib.h> +#include <string.h> +#include "libc_private.h" -#ifdef I_AM_QSORT_R +#if defined(I_AM_QSORT_R) typedef int cmp_t(void *, const void *, const void *); +#elif defined(I_AM_QSORT_S) +typedef int cmp_t(const void *, const void *, void *); #else typedef int cmp_t(const void *, const void *); #endif @@ -65,15 +71,17 @@ swapfunc(char *a, char *b, size_t es) #define vecswap(a, b, n) \ if ((n) > 0) swapfunc(a, b, n) -#ifdef I_AM_QSORT_R +#if defined(I_AM_QSORT_R) #define CMP(t, x, y) (cmp((t), (x), (y))) +#elif defined(I_AM_QSORT_S) +#define CMP(t, x, y) (cmp((x), (y), (t))) #else #define CMP(t, x, y) (cmp((x), (y))) #endif static inline char * med3(char *a, char *b, char *c, cmp_t *cmp, void *thunk -#ifndef I_AM_QSORT_R +#if !defined(I_AM_QSORT_R) && !defined(I_AM_QSORT_S) __unused #endif ) @@ -83,9 +91,12 @@ __unused :(CMP(thunk, b, c) > 0 ? b : (CMP(thunk, a, c) < 0 ? a : c )); } -#ifdef I_AM_QSORT_R +#if defined(I_AM_QSORT_R) void qsort_r(void *a, size_t n, size_t es, void *thunk, cmp_t *cmp) +#elif defined(I_AM_QSORT_S) +errno_t +qsort_s(void *a, rsize_t n, rsize_t es, cmp_t *cmp, void *thunk) #else #define thunk NULL void @@ -97,6 +108,24 @@ qsort(void *a, size_t n, size_t es, cmp_t *cmp) int cmp_result; int swap_cnt; +#ifdef I_AM_QSORT_S + if (n > RSIZE_MAX) { + __throw_constraint_handler_s("qsort_s : n > RSIZE_MAX", EINVAL); + return (EINVAL); + } else if (es > RSIZE_MAX) { + __throw_constraint_handler_s("qsort_s : es > RSIZE_MAX", EINVAL); + return (EINVAL); + } else if (n != 0) { + if (a == NULL) { + __throw_constraint_handler_s("qsort_s : a == NULL", EINVAL); + return (EINVAL); + } else if (cmp == NULL) { + __throw_constraint_handler_s("qsort_s : cmp == NULL", EINVAL); + return (EINVAL); + } + } +#endif + loop: swap_cnt = 0; if (n < 7) { @@ -105,7 +134,11 @@ loop: pl > (char *)a && CMP(thunk, pl - es, pl) > 0; pl -= es) swapfunc(pl, pl - es, es); +#ifdef I_AM_QSORT_S + return (0); +#else return; +#endif } pm = (char *)a + (n / 2) * es; if (n > 7) { @@ -154,7 +187,11 @@ loop: pl > (char *)a && CMP(thunk, pl - es, pl) > 0; pl -= es) swapfunc(pl, pl - es, es); +#ifdef I_AM_QSORT_S + return (0); +#else return; +#endif } pn = (char *)a + n * es; @@ -168,8 +205,10 @@ loop: if (d1 <= d2) { /* Recurse on left partition, then iterate on right partition */ if (d1 > es) { -#ifdef I_AM_QSORT_R +#if defined(I_AM_QSORT_R) qsort_r(a, d1 / es, es, thunk, cmp); +#elif defined(I_AM_QSORT_S) + qsort_s(a, d1 / es, es, cmp, thunk); #else qsort(a, d1 / es, es, cmp); #endif @@ -184,8 +223,10 @@ loop: } else { /* Recurse on right partition, then iterate on left partition */ if (d2 > es) { -#ifdef I_AM_QSORT_R +#if defined(I_AM_QSORT_R) qsort_r(pn - d2, d2 / es, es, thunk, cmp); +#elif defined(I_AM_QSORT_S) + qsort_s(pn - d2, d2 / es, es, cmp, thunk); #else qsort(pn - d2, d2 / es, es, cmp); #endif @@ -197,4 +238,8 @@ loop: goto loop; } } + +#ifdef I_AM_QSORT_S + return (0); +#endif } Copied: projects/clang1000-import/lib/libc/stdlib/qsort_s.c (from r356919, head/lib/libc/stdlib/qsort_s.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang1000-import/lib/libc/stdlib/qsort_s.c Mon Jan 20 17:55:51 2020 (r356920, copy of r356919, head/lib/libc/stdlib/qsort_s.c) @@ -0,0 +1,8 @@ +/* + * This file is in the public domain. Originally written by Garrett + * A. Wollman. + * + * $FreeBSD$ + */ +#define I_AM_QSORT_S +#include "qsort.c" Modified: projects/clang1000-import/lib/libc/tests/stdlib/Makefile ============================================================================== --- projects/clang1000-import/lib/libc/tests/stdlib/Makefile Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/lib/libc/tests/stdlib/Makefile Mon Jan 20 17:55:51 2020 (r356920) @@ -6,6 +6,8 @@ ATF_TESTS_C+= dynthr_test ATF_TESTS_C+= heapsort_test ATF_TESTS_C+= mergesort_test ATF_TESTS_C+= qsort_test +ATF_TESTS_C+= qsort_r_test +ATF_TESTS_C+= qsort_s_test ATF_TESTS_C+= set_constraint_handler_s_test ATF_TESTS_C+= strfmon_test ATF_TESTS_C+= tsearch_test Copied: projects/clang1000-import/lib/libc/tests/stdlib/qsort_r_test.c (from r356919, head/lib/libc/tests/stdlib/qsort_r_test.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang1000-import/lib/libc/tests/stdlib/qsort_r_test.c Mon Jan 20 17:55:51 2020 (r356920, copy of r356919, head/lib/libc/tests/stdlib/qsort_r_test.c) @@ -0,0 +1,92 @@ +/*- + * Copyright (C) 2020 Edward Tomasz Napierala <trasz@FreeBSD.org> + * Copyright (C) 2004 Maxim Sobolev <sobomax@FreeBSD.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Test for qsort_r(3) routine. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <stdio.h> +#include <stdlib.h> + +#include "test-sort.h" + +#define THUNK 42 + +static int +sorthelp_r(void *thunk, const void *a, const void *b) +{ + const int *oa, *ob; + + ATF_REQUIRE_EQ(*(int *)thunk, THUNK); + + oa = a; + ob = b; + /* Don't use "return *oa - *ob" since it's easy to cause overflow! */ + if (*oa > *ob) + return (1); + if (*oa < *ob) + return (-1); + return (0); +} + +ATF_TC_WITHOUT_HEAD(qsort_r_test); +ATF_TC_BODY(qsort_r_test, tc) +{ + int testvector[IVEC_LEN]; + int sresvector[IVEC_LEN]; + int i, j; + int thunk = THUNK; + + for (j = 2; j < IVEC_LEN; j++) { + /* Populate test vectors */ + for (i = 0; i < j; i++) + testvector[i] = sresvector[i] = initvector[i]; + + /* Sort using qsort_r(3) */ + qsort_r(testvector, j, sizeof(testvector[0]), &thunk, + sorthelp_r); + /* Sort using reference slow sorting routine */ + ssort(sresvector, j); + + /* Compare results */ + for (i = 0; i < j; i++) + ATF_CHECK_MSG(testvector[i] == sresvector[i], + "item at index %d didn't match: %d != %d", + i, testvector[i], sresvector[i]); + } +} + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, qsort_r_test); + + return (atf_no_error()); +} Copied: projects/clang1000-import/lib/libc/tests/stdlib/qsort_s_test.c (from r356919, head/lib/libc/tests/stdlib/qsort_s_test.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang1000-import/lib/libc/tests/stdlib/qsort_s_test.c Mon Jan 20 17:55:51 2020 (r356920, copy of r356919, head/lib/libc/tests/stdlib/qsort_s_test.c) @@ -0,0 +1,257 @@ +/*- + * Copyright (C) 2020 Edward Tomasz Napierala <trasz@FreeBSD.org> + * Copyright (c) 2017 Juniper Networks. All rights reserved. + * Copyright (C) 2004 Maxim Sobolev <sobomax@FreeBSD.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Test for qsort_s(3) routine. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> + +#define THUNK 42 + +#include "test-sort.h" + +static errno_t e; + +static int +sorthelp_s(const void *a, const void *b, void *thunk) +{ + const int *oa, *ob; + + ATF_REQUIRE_EQ(*(int *)thunk, THUNK); + + oa = a; + ob = b; + /* Don't use "return *oa - *ob" since it's easy to cause overflow! */ + if (*oa > *ob) + return (1); + if (*oa < *ob) + return (-1); + return (0); +} + +void +h(const char * restrict msg __unused, void * restrict ptr __unused, errno_t error) +{ + e = error; +} + +/* nmemb < 0 */ +ATF_TC_WITHOUT_HEAD(qsort_s_nmemb_lt_zero); +ATF_TC_BODY(qsort_s_nmemb_lt_zero, tc) +{ + int thunk = THUNK; + int b; + + ATF_CHECK(qsort_s(&b, -1, sizeof(int), sorthelp_s, &thunk) != 0); +} + +/* nmemb > rmax */ +ATF_TC_WITHOUT_HEAD(qsort_s_nmemb_gt_rmax); +ATF_TC_BODY(qsort_s_nmemb_gt_rmax, tc) +{ + int thunk = THUNK; + int b; + + ATF_CHECK(qsort_s(&b, RSIZE_MAX + 1, sizeof(int), sorthelp_s, &thunk) != 0); +} + +/* size < 0 */ +ATF_TC_WITHOUT_HEAD(qsort_s_size_lt_zero); +ATF_TC_BODY(qsort_s_size_lt_zero, tc) +{ + int thunk = THUNK; + int b; + + ATF_CHECK(qsort_s(&b, 1, -1, sorthelp_s, &thunk) != 0); +} + +/* size > rmax */ +ATF_TC_WITHOUT_HEAD(qsort_s_size_gt_rmax); +ATF_TC_BODY(qsort_s_size_gt_rmax, tc) +{ + int thunk = THUNK; + int b; + + ATF_CHECK(qsort_s(&b, 1, RSIZE_MAX + 1, sorthelp_s, &thunk) != 0); +} + +/* NULL compar */ +ATF_TC_WITHOUT_HEAD(qsort_s_null_compar); +ATF_TC_BODY(qsort_s_null_compar, tc) +{ + int thunk = THUNK; + int b; + + ATF_CHECK(qsort_s(&b, 1, sizeof(int), NULL, &thunk) != 0); +} + +/* nmemb < 0, handler */ +ATF_TC_WITHOUT_HEAD(qsort_s_nmemb_lt_zero_h); +ATF_TC_BODY(qsort_s_nmemb_lt_zero_h, tc) +{ + int thunk = THUNK; + int b[] = {81, 4, 7}; + + e = 0; + set_constraint_handler_s(h); + ATF_CHECK(qsort_s(&b, -1, sizeof(int), sorthelp_s, &thunk) != 0); + ATF_CHECK(e > 0); + ATF_CHECK_EQ(b[0], 81); + ATF_CHECK_EQ(b[1], 4); + ATF_CHECK_EQ(b[2], 7); +} + +/* nmemb > rmax, handler */ +ATF_TC_WITHOUT_HEAD(qsort_s_nmemb_gt_rmax_h); +ATF_TC_BODY(qsort_s_nmemb_gt_rmax_h, tc) +{ + int thunk = THUNK; + int b[] = {81, 4, 7}; + + e = 0; + set_constraint_handler_s(h); + ATF_CHECK(qsort_s(&b, RSIZE_MAX + 1, sizeof(int), sorthelp_s, &thunk) != 0); + ATF_CHECK(e > 0); + ATF_CHECK_EQ(b[0], 81); + ATF_CHECK_EQ(b[1], 4); + ATF_CHECK_EQ(b[2], 7); +} + +/* size < 0, handler */ +ATF_TC_WITHOUT_HEAD(qsort_s_size_lt_zero_h); +ATF_TC_BODY(qsort_s_size_lt_zero_h, tc) +{ + int thunk = THUNK; + int b[] = {81, 4, 7}; + + e = 0; + set_constraint_handler_s(h); + ATF_CHECK(qsort_s(&b, nitems(b), -1, sorthelp_s, &thunk) != 0); + ATF_CHECK(e > 0); + ATF_CHECK_EQ(b[0], 81); + ATF_CHECK_EQ(b[1], 4); + ATF_CHECK_EQ(b[2], 7); +} + +/* size > rmax, handler */ +ATF_TC_WITHOUT_HEAD(qsort_s_size_gt_rmax_h); +ATF_TC_BODY(qsort_s_size_gt_rmax_h, tc) +{ + int thunk = THUNK; + int b[] = {81, 4, 7}; + + e = 0; + set_constraint_handler_s(h); + ATF_CHECK(qsort_s(&b, nitems(b), RSIZE_MAX + 1, sorthelp_s, &thunk) != 0); + ATF_CHECK(e > 0); + ATF_CHECK_EQ(b[0], 81); + ATF_CHECK_EQ(b[1], 4); + ATF_CHECK_EQ(b[2], 7); +} + +/* NULL compar, handler */ +ATF_TC_WITHOUT_HEAD(qsort_s_null_compar_h); +ATF_TC_BODY(qsort_s_null_compar_h, tc) +{ + int thunk = THUNK; + int b[] = {81, 4, 7}; + + e = 0; + set_constraint_handler_s(h); + ATF_CHECK(qsort_s(&b, nitems(b), sizeof(int), NULL, &thunk) != 0); + ATF_CHECK(e > 0); + ATF_CHECK_EQ(b[0], 81); + ATF_CHECK_EQ(b[1], 4); + ATF_CHECK_EQ(b[2], 7); +} + +ATF_TC_WITHOUT_HEAD(qsort_s_h); +ATF_TC_BODY(qsort_s_h, tc) +{ + int thunk = THUNK; + int b[] = {81, 4, 7}; + + e = 0; + set_constraint_handler_s(h); + ATF_CHECK(qsort_s(&b, nitems(b), sizeof(int), sorthelp_s, &thunk) == 0); + ATF_CHECK(e == 0); + ATF_CHECK_EQ(b[0], 4); + ATF_CHECK_EQ(b[1], 7); + ATF_CHECK_EQ(b[2], 81); +} + +ATF_TC_WITHOUT_HEAD(qsort_s_test); +ATF_TC_BODY(qsort_s_test, tc) +{ + int testvector[IVEC_LEN]; + int sresvector[IVEC_LEN]; + int i, j; + int thunk = THUNK; + + for (j = 2; j < IVEC_LEN; j++) { + /* Populate test vectors */ + for (i = 0; i < j; i++) + testvector[i] = sresvector[i] = initvector[i]; + + /* Sort using qsort_s(3) */ + qsort_s(testvector, j, sizeof(testvector[0]), + sorthelp_s, &thunk); + /* Sort using reference slow sorting routine */ + ssort(sresvector, j); + + /* Compare results */ + for (i = 0; i < j; i++) + ATF_CHECK_MSG(testvector[i] == sresvector[i], + "item at index %d didn't match: %d != %d", + i, testvector[i], sresvector[i]); + } +} + +ATF_TP_ADD_TCS(tp) +{ + ATF_TP_ADD_TC(tp, qsort_s_nmemb_lt_zero); + ATF_TP_ADD_TC(tp, qsort_s_nmemb_gt_rmax); + ATF_TP_ADD_TC(tp, qsort_s_size_lt_zero); + ATF_TP_ADD_TC(tp, qsort_s_size_gt_rmax); + ATF_TP_ADD_TC(tp, qsort_s_null_compar); + ATF_TP_ADD_TC(tp, qsort_s_nmemb_lt_zero_h); + ATF_TP_ADD_TC(tp, qsort_s_nmemb_gt_rmax_h); + ATF_TP_ADD_TC(tp, qsort_s_size_lt_zero_h); + ATF_TP_ADD_TC(tp, qsort_s_size_gt_rmax_h); + ATF_TP_ADD_TC(tp, qsort_s_null_compar_h); + ATF_TP_ADD_TC(tp, qsort_s_h); + ATF_TP_ADD_TC(tp, qsort_s_test); + + return (atf_no_error()); +} Modified: projects/clang1000-import/share/man/man5/src.conf.5 ============================================================================== --- projects/clang1000-import/share/man/man5/src.conf.5 Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/share/man/man5/src.conf.5 Mon Jan 20 17:55:51 2020 (r356920) @@ -1,6 +1,6 @@ .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman. .\" $FreeBSD$ -.Dd January 17, 2020 +.Dd January 19, 2020 .Dt SRC.CONF 5 .Os .Sh NAME @@ -185,37 +185,32 @@ Do not build or install GNU .Xr objdump 1 as part of the normal system build. -The resulting system cannot build programs from source. .Pp This is a default setting on arm64/aarch64, riscv/riscv64 and riscv/riscv64sf. .It Va WITH_BINUTILS -Set to build and install GNU -.Xr as 1 , +Build and install GNU +.Xr as 1 +on i386 and amd64, .Xr objdump 1 , -and, on powerpc, +and .Xr ld.bfd 1 -as part -of the normal system build. +on powerpc as part of the normal system build. .Pp This is a default setting on amd64/amd64, arm/armv6, arm/armv7, i386/i386, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64. .It Va WITHOUT_BINUTILS_BOOTSTRAP Do not build binutils (as, ld.bfd, and objdump) as part of the bootstrap process. -.Bf -symbolic -The option does not work for build targets unless some alternative -toolchain is provided. -.Ef .Pp This is a default setting on -arm64/aarch64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, riscv/riscv64, riscv/riscv64sf and sparc64/sparc64. +arm/armv6, arm/armv7, arm64/aarch64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, riscv/riscv64, riscv/riscv64sf and sparc64/sparc64. .It Va WITH_BINUTILS_BOOTSTRAP -Set build binutils (as, objdump, and on powerpc ld) +Build binutils (as on i386 and amd64, objdump, and ld on powerpc) as part of the bootstrap process. .Pp This is a default setting on -amd64/amd64, arm/armv6, arm/armv7, i386/i386, powerpc/powerpc and powerpc/powerpc64. +amd64/amd64, i386/i386, powerpc/powerpc and powerpc/powerpc64. .It Va WITHOUT_BLACKLIST Set this if you do not want to build .Xr blacklistd 8 Modified: projects/clang1000-import/share/man/man7/hier.7 ============================================================================== --- projects/clang1000-import/share/man/man7/hier.7 Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/share/man/man7/hier.7 Mon Jan 20 17:55:51 2020 (r356920) @@ -28,7 +28,7 @@ .\" @(#)hier.7 8.1 (Berkeley) 6/5/93 .\" $FreeBSD$ .\" -.Dd September 10, 2019 +.Dd January 20, 2020 .Dt HIER 7 .Os .Sh NAME @@ -420,12 +420,6 @@ for .Pa /usr should be used. Exceptions are the -.Pa man -directory -.Po directly under -.Pa local/ -rather than under -.Pa local/share/ Ns Pc , ports documentation .Po in .Pa share/doc/<port>/ Ns Pc , Modified: projects/clang1000-import/share/misc/committers-doc.dot ============================================================================== --- projects/clang1000-import/share/misc/committers-doc.dot Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/share/misc/committers-doc.dot Mon Jan 20 17:55:51 2020 (r356920) @@ -112,6 +112,7 @@ bcr -> bhd bcr -> sevan bcr -> dexter bcr -> sg +bcr -> carlavilla blackend -> ale Modified: projects/clang1000-import/share/mk/src.opts.mk ============================================================================== --- projects/clang1000-import/share/mk/src.opts.mk Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/share/mk/src.opts.mk Mon Jan 20 17:55:51 2020 (r356920) @@ -63,7 +63,6 @@ __DEFAULT_YES_OPTIONS = \ AUTOFS \ BHYVE \ BINUTILS \ - BINUTILS_BOOTSTRAP \ BLACKLIST \ BLUETOOTH \ BOOT \ @@ -313,6 +312,11 @@ __DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_IS_C # In-tree binutils/gcc are older versions without modern architecture support. .if ${__T} == "aarch64" || ${__T:Mriscv*} != "" BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GCC GCC_BOOTSTRAP GDB +.endif +.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*} +__DEFAULT_YES_OPTIONS+=BINUTILS_BOOTSTRAP +.else +__DEFAULT_NO_OPTIONS+=BINUTILS_BOOTSTRAP .endif .if ${__T:Mriscv*} != "" BROKEN_OPTIONS+=OFED Modified: projects/clang1000-import/stand/powerpc/uboot/start.S ============================================================================== --- projects/clang1000-import/stand/powerpc/uboot/start.S Mon Jan 20 17:23:03 2020 (r356919) +++ projects/clang1000-import/stand/powerpc/uboot/start.S Mon Jan 20 17:55:51 2020 (r356920) @@ -38,10 +38,11 @@ _start: lis %r11, uboot_address@ha addi %r11, %r11, uboot_address@l stw %r1, 0(%r11) - /* Save U-Boot's r14 */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202001201755.00KHtqCL012176>