Jessica Clarke [Sun, 2 Jun 2024 23:33:52 +0000 (00:33 +0100)]
Revert "src.sys.obj.mk: Export OBJTOP"
Unfortunately this results in make universe's environment, i.e.
corresponding to the host, being used for every one of its sub-makes, so
they're in the wrong place and trample over each other.
Jessica Clarke [Sun, 2 Jun 2024 23:16:58 +0000 (00:16 +0100)]
Makefile.inc1: Allow showconfig and test-system-* if (X)CC is GCC
This case gets hit in make universe on Linux, since we will first run
make test-system-compiler to determine whether to use the system or
universe toolchain, during which time CC is the host's, GCC, and XCC
isn't set, so defaults to the same.
Fixes: 4c0dfd5959bd ("arm: fail early on gcc builds")
Jessica Clarke [Sun, 2 Jun 2024 22:53:09 +0000 (23:53 +0100)]
ee: Fix use of uninitialised pointer in ispell_op
This used to be name = mktemp followed by fd = open downstream,
replacing upstream's crude PID-based sprintf, but in 1.4.7 this was
changed upstream to this buggy code, which we then picked up in the
1.5.0 import. Presumably nobody's actually used ee's ispell function
in the past 15 years; that or it's just ended up using junk file names
as temporary files if name's happened to be a valid address to something
that can be interpreted as a string.
Reported by: Dapeng Gao <dapeng.gao@cl.cam.ac.uk>
Fixes: 96b676e99984 ("Update ee(1) in the base system to version 1.5.0.")
MFC after: 1 week
Jessica Clarke [Sun, 2 Jun 2024 20:42:18 +0000 (21:42 +0100)]
fu740_pci_dw: Fix PERST delay and keep asserted for rest of reset sequence
DELAY takes microseconds not milliseconds, so 100 was too low. Moreover,
when enabling hw.pci.clear_pcib, PCI emeration would still stop at one
of the first bridges, but by asserting PERST for the rest of the reset
sequence that appears to be reliably addressed.
Eugene Grosbein [Sun, 2 Jun 2024 19:13:42 +0000 (02:13 +0700)]
rc.subr(8): introduce ${name}_offcmd
New variable ${name}_offcmd may be used to supply commands
executed if named service is not enabled. Previously start_precmd
could be used for such a task but now rc.subr(8) does not call it
if a service is not enabled.
Fix devd startup script to use it instead of start_precmd.
PR: 279198
MFC after: 2 weeks
Reported by: Dmitry S. Lukhtionov
Tested by: Dmitry S. Lukhtionov
Brooks Davis [Sun, 2 Jun 2024 18:39:30 +0000 (19:39 +0100)]
stddef.h/stdlib.h: Remove unused rune_t
This non-standard type is unused in the base system (__ct_rune_t or
__rune_t are used instead) and ports. It has been around as long as our
current source repo, but we have avoided using it. In sys/_types.h
where the __*rune_t typedefs are defined, the following appears in a
comment:
NOTE: rune_t is not covered by ANSI nor other standards, and should
not be instantiated outside of lib/libc/locale. Use wchar_t.
The definition of this unused type meant we gratutiously differed from
standards compliant stddef.h/stdlib.h.
Brooks Davis [Sun, 2 Jun 2024 18:36:55 +0000 (19:36 +0100)]
iovec: macros to manipulate len and base together
A set of convenience macros to initialize struct iovec's and increment
the base and length together.
IOVEC_INIT - sets iov_base and iov_len
IOVEC_INIT_CSTR - takes a string and sets iov_len to strlen + 1
IOVEC_INIT_OBJ - takes an object and sets iov_len to sizeof obj
IOVEC_ADVANCE - increments iov_base and decrements iov_len
On CheriBSD these present the opportunity to insert more precise bounds
on some objects and hide differences in casts in hybrid kernels (where
some, but not all pointers are capabilities and require annotation).
Here in FreeBSD the resulting code is tidier, particularly in the
IOVEC_ADVANCE case where the need to cast iov_base to (char *) is
avoided.
Stefan Eßer [Sun, 2 Jun 2024 12:07:52 +0000 (14:07 +0200)]
newfs_msdos: align data area to VM page boundary by default
Without alignment, the data area will not be aligned with the buffer
cache, leading to overhead, higher write multiplication on SSD devices
and issues with very large cluster sizes (see PR 277414).
The -A option used to align the start of the root directory to a
multiple of the cluster size, which happens to align the start of the
data area with a buffer page boundary in case of large clusters and
the default number of directory entries (512 entries requiring 16 KB
for FAT12 or FAT16, FAT32 puts the root directory into the data area).
This commit aligns the start of the data area with the page size, if
neither -A nor -r is used. It changes -A to align the start of the
data area (end of the root directory) to a multiple of the cluster
size, since this is the alignment that prevents write multiplication
due to clusters crossing erase block boundaries of a SSD device.
The -r option is unchanged and will prevent any automatic alignment
from occuring.
Alan Somers [Sat, 1 Jun 2024 18:38:16 +0000 (12:38 -0600)]
mdconfig: remove the "cluster" option.
It's never had any effect. The kernel ignores it. Remove it from the
documentation. But continue to parse it on the command line, for
backwards-compatibility.
Mark Johnston [Sat, 1 Jun 2024 15:16:33 +0000 (11:16 -0400)]
dtrace tests: Fix loading of the test kernel module
The old way is racy and can cause two instances, running in parallel, to
attempt to load dtrace_test, and only one will succeed. This caused
errors when running dtrace tests in parallel.
Mark Johnston [Sat, 1 Jun 2024 15:16:26 +0000 (11:16 -0400)]
libdtrace: Work around a warning from flex
When compiling dt_lex.l, flex produces warnings of the form:
dt_lex.l:413: warning, trailing context made variable due to preceding '|' action
dt_lex.l:412: warning, dangerous trailing context
dt_lex.l:412: warning, dangerous trailing context
Here, trailing context refers to the use of "$", which expands to "/\n".
The meaning behind these warnings is described in the first two
paragraphs of the flex manual's DEFICIENCIES/BUGS section:
Some trailing context patterns cannot be properly matched and generate
warning messages ("dangerous trailing context"). These are patterns
where the ending of the first part of the rule matches the beginning of
the second part, such as "zx*/xy*", where the 'x*' matches the 'x' at
the beginning of the trailing context. (Note that the POSIX draft
states that the text matched by such patterns is undefined.)
For some trailing context rules, parts which are actually fixed-length
are not recognized as such, leading to the above mentioned performance
loss. In particular, parts using '|' or {n} (such as "foo{3}") are
always considered variable-length.
Here, the warnings appear to be bogus in this case. The lexer has no
problem matching either of the referenced patterns, e.g.,
printf("foobar
or
# 1 "asdfasdf
Introduce a small amount of code duplication to silence the warning.
Ed Maste [Sat, 1 Jun 2024 12:07:38 +0000 (08:07 -0400)]
mitigations.7: move SSP documentation from security.7 to here
Stack Smashing Protection (SSP) is a software vulnerability mitigation,
and fits with this page. Add a note to the beginning of security.7
providing a more explicit cross reference to mitigations.7.
Reviewed by: kevans
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D45435
Ed Maste [Sat, 1 Jun 2024 11:52:31 +0000 (07:52 -0400)]
mitigations.7: uncomment reference to recently added section
A brief description of supervisor mode memory access protection was
added in 72ece341b427. Uncomment the existing reference to this section
in the table of contents.
Fixes: 72ece341b427 ("mitigations.7: mention supervisor mode memory...")
Sponsored by: The FreeBSD Foundation
Chuck Tuffli [Sat, 1 Jun 2024 11:08:24 +0000 (04:08 -0700)]
nvme: Change namespace device name
Changes the device name for NVMe and NVMe-oF namespaces from using "ns"
to "n" to be more compatible with other operating systems. For example,
a device which was previously /dev/nvme0ns1 is now /dev/nvme0n1.
Preserves the existing functionality by creating alias from nvmeXnY to
nvmeXnsY.
Jessica Clarke [Fri, 31 May 2024 21:12:18 +0000 (22:12 +0100)]
openzfs: Fix mismerge breaking macOS bootstrap
Upstream added the libspl_gettid implementation for macOS and when
merging back to FreeBSD this resulted in two copies of the same code.
Delete this second copy, restoring the file to be the same as upstream.
Its base privileged architecture provides these. Read/write is
toggleable via the SUM bit, so use that as its feature name. Execute is
always-on so has no name.
Warner Losh [Fri, 31 May 2024 17:59:24 +0000 (11:59 -0600)]
sys/unistd.h: Use correct POSIX_VERION of 200809L
200809L was tested, but I recreated the patch rather than using the
actual patch and typo'd to 200808 by mistake. Also, the PR in original
was the patch ID not the bug ID.
Warner Losh [Fri, 31 May 2024 15:31:52 +0000 (09:31 -0600)]
FreeBSD bump POSIX_VERISON to 200809L
FreeBSD now provides the overwhelming majority of the new interfaces for
POSIX_VERSION 200809 (aka POSIX.1-2017 aka IEEE Std 1003.1™-2017, The
Open Group Technical Standard Base Specifications, Issue 7 and IEEE Std
1003.1™-2017 (Revision of IEEE Std 1003.1-2008))
Val Packett [Fri, 31 May 2024 14:45:02 +0000 (08:45 -0600)]
Redefine CLOCK_BOOTTIME to alias CLOCK_MONOTONIC, not CLOCK_UPTIME
The suspend-awareness situation with monotonic clocks across platforms
is kind of a mess, let's try not making it worse.
On Linux, CLOCK_MONOTONIC does NOT count suspended time, and
CLOCK_BOOTTIME was introduced to INCLUDE suspended time.
On OpenBSD, CLOCK_MONOTONIC DOES count suspended time, and CLOCK_UPTIME
was introduced to EXCLUDE suspended time.
On macOS, it's the same as OpenBSD, but with CLOCK_UPTIME_RAW.
Right now, we do not have a monotonic clock that counts suspended time.
We have CLOCK_UPTIME as a distinct ID alias, and CLOCK_BOOTTIME as a
preprocessor alias, both being effectively `CLOCK_MONOTONIC` for now.
When we introduce a suspend-aware clock in the future, it would make a
lot more sense to do it the OpenBSD/macOS way, i.e. to make
CLOCK_MONOTONIC include suspended time and make CLOCK_UPTIME exclude it,
because that's what the name CLOCK_UPTIME implies: a deviation from the
default intended for the uptime command to allow it to only show the
time the system was actually up and not suspended.
Let's change the define right now to make sure software using the define
would not end up using the ID of the wrong clock in the future, and fix
the IDs in the Linux compat code to match the expected changes too.
See https://bugzilla.mozilla.org/show_bug.cgi?id=1824084
for more discussion.
Fixes: 155f15118a77 ("clock_gettime: Add Linux aliases for CLOCK_*")
Fixes: 25ada637362d ("Map Linux CLOCK_BOOTTIME to native CLOCK_UPTIME.")
Sponsored by: https://www.patreon.com/valpackett
Reviewed by: kib, imp
Differential Revision: https://reviews.freebsd.org/D39270
Warner Losh [Fri, 31 May 2024 14:44:55 +0000 (08:44 -0600)]
WPA: Allow CLOCK_BOOTTIME and CLOCK_MONOTONIC to #define the same
Historically, these have been differnet values, and only one was defined
or they were defined as different values. Now that they are about to be
the same value, add #ifdef to cope.
Notable upstream pull request merges:
#15940 41ae864b6 Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN
#16128 5137c132a zpool import output is not formated properly
#16138 efbef9e6c FreeBSD: Add zfs_link_create() error handling
#16146 04bae5ec9 Disable high priority ZIO threads on FreeBSD and Linux
#16151 cc3869153 zfs_ioc_send: use a dedicated taskq thread for send
#16151 adda768e3 spa: remove spa_taskq_dispatch_sync()
#16151 515c4dd21 spa: flatten spa_taskq_dispatch_ent()
#16151 0a543db37 spa_taskq_dispatch_ent: simplify arguments
#16153 975a13259 Add support for parallel pool exports
#16153 89acef992 Simplified the scope of the namespace lock
#16159 136c05321 ZAP: Fix leaf references on zap_expand_leaf() errors
#16162 af5dbed31 Fix scn_queue races on very old pools
#16165 3400127a7 Fix ZIL clone records for legacy holes
#16167 414acbd37 Unbreak FreeBSD cross-build on MacOS broken in 051460b8b
#16172 eced2e2f1 libzfs: Fix mounting datasets under thread limit pressure
#16178 b64afa41d Better control the thread pool size when mounting datasets
#16181 fa99d9cd9 zfs_dbgmsg_print: make FreeBSD and Linux consistent
#16191 e675852bc dbuf: separate refcount calls for dbuf and dbuf_user
#16198 a043b60f1 Correct level handling in zstream recompress
#16204 34906f8bb zap: reuse zap_leaf_t on dbuf reuse after shrink
#16206 d0aa9dbcc Use memset to zero stack allocations containing unions
#16207 8865dfbca Fix assertion in Persistent L2ARC
#16208 08648cf0d Allow block cloning to be interrupted by a signal
#16210 e2357561b FreeBSD: Add const qualifier to members of struct
opensolaris_utsname
#16214 800d59d57 Some improvements to metaslabs eviction
#16216 02c5aa9b0 Destroy ARC buffer in case of fill error
#16225 01c8efdd5 Simplify issig()
Bjoern A. Zeeb [Mon, 27 May 2024 19:49:45 +0000 (19:49 +0000)]
LinuxKPI: remove extern from function declarations
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: emaste (earlier version, found another two)
Differential Revision: https://reviews.freebsd.org/D45386
Michael Tuexen [Thu, 30 May 2024 19:23:45 +0000 (21:23 +0200)]
tcp: remove unused code in tcp_usr_attach
pr_attach is only called on a socket (so) with so->so_listen != NULL
via sonewconn. However, sonewconn is not called from the TCP code.
The listening sockets are handled in tcp_syncache.c without using
sonewconn. Therefore, the code removed is never executed.
No functional change intended.
Dimitry Andric [Thu, 30 May 2024 15:35:15 +0000 (17:35 +0200)]
Merge commit 9f85bc834b07 from llvm-project (by Nikita Popov):
[PPCMergeStringPool] Only replace constant once (#92996)
In #88846 I changed this code to use RAUW to perform the replacement
instead of manual updates -- but kept the outer loop, which means we try
to perform RAUW once per user. However, some of the users might be freed
by the RAUW operation, resulting in use-after-free.
The case where this happens is constant users where the replacement
might result in the destruction of the original constant.
Mike Karels [Wed, 29 May 2024 23:55:14 +0000 (18:55 -0500)]
pw userdel: destroy home dataset if empty
When removing a user's home directory, if the directory is a ZFS
dataset, it cannot be removed. If the directory has been emptied,
use "zfs destroy" to destroy it. This complements the automatic
dataset creation in adduser. Note that datasets within the directory
and snapshots are not handled, as the complete path is not constructed.
While here, add waitpid() calls to rmat() and pw_user_del().
Reviewed by: des
Differential Revision: https://reviews.freebsd.org/D45348
The 'zpool status' output assumes that the longest prefix is six
character long plus colon plus space, eg. 'status: ', 'action: '
or 'config: ' (so eight in total). This works well even when we have
messages that requires more than one line, as '\t' is exactly eight
characters, just like the longest prefix.
The 'zpool import' output is a bit different, as it may display the
comment pool property, then the longest prefix is 'comment: ', which is
nine characters long, not eight.
All the prefixes were given an extra space in front, but:
- 'status: ' did not get an extra space.
- Messages that require more than one line should use nine spaces of
indentation, not eight.
- The extra space in front looks redundant if there is no comment
property set on the given pool.
Fix it by adding an extra space to all prefixes, but only if the comment
property is defined. Also, when we need to continue the message in a new
line, use '\t ' for indentation.
While here, apply small corrections to a couple messages.
Before:
pool: tank
id: 7412636063178848859
state: ONLINE
status: Some supported features are not enabled on the pool.
(Note that they may be intentionally disabled if the
'compatibility' property is set.)
action: The pool can be imported using its name or numeric identif[...]
some features will not be available without an explicit 'zp[...]
comment: Example comment.
config:
bclone ONLINE
ada0 ONLINE
After:
pool: tank
id: 10180960571062436759
state: ONLINE
status: Some supported features are not enabled on the pool.
(Note that they may be intentionally disabled if the
'compatibility' property is set.)
action: The pool can be imported using its name or numeric identifi[...]
some features will not be available without an explicit 'zp[...]
config:
tank ONLINE
ada3 ONLINE
pool: dozer
id: 11028319538368222579
state: ONLINE
status: Some supported features are not enabled on the pool.
(Note that they may be intentionally disabled if the
'compatibility' property is set.)
action: The pool can be imported using its name or numeric identif[...]
some features will not be available without an explicit 'z[...]
comment: Example comment.
config:
dozer ONLINE
ada1 ONLINE
Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Pawel Dawidek <pawel@dawidek.net>
Closes #16128
Pierre Pronchery [Wed, 29 May 2024 18:00:02 +0000 (20:00 +0200)]
bhyve: correctly remove a memory mapping
In a normal code path while setting up GPU passthrough, the size
parameter to munmap() is wrong and its operation not checked for errors,
therefore leaking resources.
Reported by: Coverity Scan
CID: 1519830
Sponsored by: The FreeBSD Foundation
Alex Samorukov [Tue, 28 May 2024 14:45:30 +0000 (16:45 +0200)]
export $autoboot var when running from $boottrace_cmd
At the moment, if bootrace profiling is enabled, autoboot is not
exported to the rc scripts. This causes fsck to not check the root
filesystem. To fix this, pass _boot, rc_fast and autoboot to the
boottrace process to mimic what diretly sourcing the rc.d scripts.
Brian Behlendorf [Wed, 29 May 2024 17:46:41 +0000 (10:46 -0700)]
zed: Add deadman-slot_off.sh zedlet
Optionally turn off disk's enclosure slot if an I/O is hung
triggering the deadman.
It's possible for outstanding I/O to a misbehaving SCSI disk to
neither promptly complete or return an error. This can occur due
to retry and recovery actions taken by the SCSI layer, driver, or
disk. When it occurs the pool will be unresponsive even though
there may be sufficient redundancy configured to proceeded without
this single disk.
When a hung I/O is detected by the kmods it will be posted as a
deadman event. By default an I/O is considered to be hung after
5 minutes. This value can be changed with the zfs_deadman_ziotime_ms
module parameter. If ZED_POWER_OFF_ENCLOSURE_SLOT_ON_DEADMAN is set
the disk's enclosure slot will be powered off causing the outstanding
I/O to fail. The ZED will then handle this like a normal disk failure.
By default ZED_POWER_OFF_ENCLOSURE_SLOT_ON_DEADMAN is not set.
As part of this change `zfs_deadman_events_per_second` is added
to control the ratelimitting of deadman events independantly of
delay events. In practice, a single deadman event is sufficient
and more aren't particularly useful.
Alphabetize the zfs_deadman_* entries in zfs.4.
Reviewed-by: Tony Hutter <hutter2@llnl.gov> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #16226
Franco Fichtner [Fri, 24 May 2024 16:38:56 +0000 (18:38 +0200)]
rc: improve NAME_setup handling
Reload is used for service reconfiguration as well
and lacks a NAME_prepend-like mechanism so it makes
sense to extend the NAME_reload hook into this
action.
precmd may use configuration checks and blocks setup
from doing its designated work (e.g. nginx). In moving
the invoke of the setup script in front allows us to
provide custom scripts for config file generation and
fixing prior to precmd checking configuration integrity.
Also introduce _run_rc_setup to separate the launcher
from the main one. Let it run correctly in the case
of restart_precmd and block further execution as
would be the case in start due to the internal plumbing
of restart being split into calling stop and start
afterwards.
Turns out this special case wasn't necessary, and this was already
detected and due to another error (running the script got dropped
from my experimental scripts), I hadn't noticed.
Alexander Motin [Wed, 29 May 2024 15:53:31 +0000 (11:53 -0400)]
Some improvements to metaslabs eviction
- Add old eviction for special and dedup metaslab classes. Those
vdevs may be potentially big and fragmented with large metaslabs,
while their asynchronous write pattern is not really different
from normal class. It seems an omission to not evict old metaslabs
from them.
- If we have metaslab preload enabled, which means we are not too
low on memory, do not evict active metaslabs even if they are not
used for some time. Eviction of active metaslabs means we won't
be able to write anything until we load them, that may take some
time, that is straight opposite to metaslab preload goals. For
small systems the memory saving should be less important after
recent reduction in number of allocators and so open metaslabs.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #16214
Warner Losh [Wed, 29 May 2024 15:45:47 +0000 (09:45 -0600)]
Fix bnxt build in LINT
LINT includes bnxt_re driver. Adjust the path in files, add missing
files and add a new BNXT_C to build (which thinly wraps OFED version
with bnxt specicif stuff).
Sponsored by: Netflix Fixes: acd884dec99a ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
Mariusz Zaborski [Wed, 29 May 2024 12:32:16 +0000 (14:32 +0200)]
libutil: move ftime to libutil
It seems that there are still some applications that use ftime(3)
(for example, science/siconos and sysutils/lcdproc). The issue
is that we don't build libcompat as a shared library anymore.
The easiest solution is to move it to libutil, until we
deprecate it for good.
This solution was proposed by kib@ in
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257789.
Emmanuel Vadot [Mon, 27 May 2024 13:12:18 +0000 (15:12 +0200)]
csh: Remove hardlink /.cshrc
Remove this historical artifact.
csh will try to use /.csrch if the user has no home directory defined which
is rather unlikely (To be exact if the concatenation of $HOME and "/.cshrc"
fail which is the same thing).
Also, with this change pkg will happily handle 3way merge for /root/.cshrc
Kristof Provost [Fri, 24 May 2024 11:20:12 +0000 (13:20 +0200)]
pf: fix incorrect anchor_call to userspace
777a4702c changed how we copy out the anchor_call string, and
incorrectly limited it to 8 (4 on 32-bit systems) bytes. Fix that so we
get the full anchor path, rather than just the first few characters.
Kristof Provost [Fri, 24 May 2024 11:15:12 +0000 (13:15 +0200)]
libpfctl: add pfctl_get_rule_h()
Add a handle variant of pfctl_get_rule(). This converts us from using
the nvlist variant to the netlink variant, and also moves us closer to a
world where all libpfctl functions take the handle.
Gleb Smirnoff [Tue, 28 May 2024 20:13:08 +0000 (13:13 -0700)]
linux: allow RTM_GETADDR without full ifaddrmsg argument
Even modern glibc uses truncated argument for RTM_GETADDR when it wants to
list all addresses in a system. See
sysdeps/unix/sysv/linux/ifaddrs.c:__netlink_sendreq(). It sends a one
char payload. Linux kernel allows that as long as given socket is not
marked as a 'strict'. We have a similar flag in the general netlink code
and it is checked in
sys/netlink/netlink_message_parser.h:nl_parse_header(). If the flag is
not present, parser will allocate a temporary zeroed buffer to make the
message correct. The checks added in b977dd1ea5fb blocked such message
before the parser. My reading of glibc says that there are two types of
messages that are sent with __netlink_sendreq() - RTM_GETLINK and
RTM_GETADDR. The RTM_GETLINK is binary compatible between Linux and
FreeBSD and thus doesn't need any ABI handler.
Mark Johnston [Tue, 28 May 2024 13:05:14 +0000 (09:05 -0400)]
bnxt: Do not compile on 32-bit platforms
The new bnxt_re driver doesn't compile on any of them (it uses writeq()
from the LinuxKPI, which isn't implemented there), and had already been
disconnected from the build on i386.
Reported by: Jenkins
Fixes: acd884dec99a ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
Mark Johnston [Tue, 28 May 2024 12:24:43 +0000 (08:24 -0400)]
libc/tests: Fix installation without MK_TOOLCHAIN
There is some exotic conditional logic here to avoid building a
particular test if a certain UBSAN library isn't present in the
toolchain sysroot. This causes build failures for me when doing an
"installworld WITHOUT_TOOLCHAIN=", which I do frequently during tests.
I believe the problem is that SYSROOT is unset during installworld, so
the build sees the host's copy of libclang_rt.ubsan_standalone.a and
then tries to install a binary that wasn't built during buildworld. Try
to make the check a bit less fragile.
Reviewed by: dim
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D45035