dns/rfc2136: subscribe to "updateip" event
interface_configure() was still calling newwanip:rfc2136 but this meant
it had knowledge about this specifc plugin. By adding this consumer we
can hide the actual plugins using it and perhaps add updateip to all
relevant code paths as well. newwanip is only called for dynamic addressing.
[ADT] Share relocateBucket across DenseMap.h (NFC) (#227970)
This patch moves relocateBucket from SmallDenseMapStorage into namespace
densemap::detail and uses it in DenseMapBase::moveFrom and
DenseMapBase::eraseFromFilledBucket as well.
Assisted-by: Antigravity
Tie webshare lifecycle to TrueNAS Connect state
## Problem
Webshare's Caddy only picks up its TLS certificates when it starts, but middleware never stopped, started or restarted webshare on any TrueNAS Connect transition. Setting up TNC and webshare, then unsetting TNC left webshare running, and setting TNC up again left it serving zero or stale certificates until someone restarted it by hand. At boot systemd could also start webshare before middleware was ready, so it came up with no certificates at all.
## Solution
Webshare now only runs when the WEBSHARE entitlement is granted and TNC is configured, regardless of product type.
- **Start gate**: `before_start` refuses START and RESTART with a `CallError` explaining why, so a restart or failover restart can't bypass it either.
- **Following TNC**: webshare subscribes to the existing `tn_connect.config` event. When TNC stops being configured (disable or 401 auto-unset) webshare is stopped; when it becomes configured again and webshare is enabled, it is started; a certificate renewal restarts a running webshare. A restart is used rather than a reload because a reload does not make every webshare listener re-read its certificates.
- **Boot**: on `system.ready` (non-HA) a running webshare is restarted so it loads the right certificates.
- **Licence changes**: the license reconcile framework could only render, reload or restart, so it had no way to stop a service that lost its entitlement or start one that regained it. Delegates can now resolve their action at runtime and return START or STOP. Those go through a new private `service.converge_verb`, which only starts a service that is stopped, enabled and allowed on this node, and only stops one that is running. Webshare registers a delegate on top of this instead of its own licence hook, and its TNC/boot handling uses the same guard.
The persisted enable flag is never touched, so the user's intent survives TNC or the licence going away and webshare comes back by itself once both are in place again.
[LLVM] Skip non-overlapping subranges (#227852)
Add guard to skip subranges that not live in the interval.
fix to: https://github.com/llvm/llvm-project/pull/227252
Passed local libc tests:
```
Total Discovered Tests: 814
Passed: 814 (100.00%)
```
assisted by: cursor
[lldb] Reject thread until targets outside of an inline frame's function (#227800)
`thread until -f N <line>` rejects a line outside of the function of
frame N.
Before this patch, for an inline frame, it checked the concrete
function, not the inlined function, so it accepted lines of other
inlined functions. The until plan then ignored a hit of such a target,
because it is not in the scope of frame N.
This commit changes GetStepUntilAddresses to only accepts an address if
its innermost inlined function is the one of frame N, as it does for a
regular frame.
As a before/after example, consider this backtrace:
```
frame #0: 0x00000001000003c0 deep`sink(x=81) at deep.c:4:6 [opt]
frame #1: 0x0000000100000418 deep`level3(a=48) at deep.c:11:3 [opt] [inlined]
[10 lines not shown]
WebAssembly: Take the exception model from the module flag
The WebAssembly EH passes chose whether and how to run from
MCAsmInfo::getExceptionHandlingType() and TargetOptions::ExceptionModel,
A module that asked for Wasm EH through the module flag alone would have
its invokes rewritten by LowerInvoke before WasmEHPrepare ran.
Schedule the passes unconditionally and read the module flag inside the
passes instead. Passes for other models can noop on the models they are
not intended for.
Co-authored-by: Claude Opus 5 <noreply at anthropic.com>
[AArch64][NeoverseV1] Load/Store Register Half with scaling (#222282)
On Neoverse V1, LDRH/STRH with scaling has a specific execution compared
to other LDR/STR.
Opcode | Latency | Pipelines
-------------------------------------------
Common LDR | 4 | L
LDRH with scaling | 5 | I, L
Common STR | 1 | L01, D
STRH with scaling | 2 | I, L01, D
Verified on Neoverse V1 with micro benchmarks and compared all
addressing mode variantes. Neoverse V2 is unaffected (confirmed by SOG
documentation and microbenchmarks).
[CIR] Extract CIR_ClassCastOp base class for BaseClassAddrOp and DerivedClassAddrOp
Both ops have identical structure (arguments, results, assembly format)
and differ only in mnemonic and description. Extract a shared TableGen
base class to eliminate the duplication. Also improve the assembly format
to print nonnull before the operand and place the type after the offset.
ifuncs: Have DEFINE_*IFUNC() macros expand the passed name
While here, make each <machine/ifunc.h> header include <sys/types.h> so
that it can be included standalone.
Reviewed by: kib
MFC after: 3 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D60167
[MLIR] Emit final-policy remarks in deterministic order (#224616)
`RemarkEmittingPolicyFinal` stores remarks in a `DenseSet` whose hash covers the location pointer and the process hash seed, so `finalize()` emitted them in bucket order. That order depends on the build configuration and on memory layout, which is why `mlir/test/Pass/remark-final.mlir` used `CHECK-DAG`.
The engine already assigns every remark a `RemarkId` from a monotonic counter when it is created, and the set already keeps the newer of two remarks with the same identity. `finalize()` now sorts the drained remarks by that ID before emitting. Remarks come out in creation order, a replaced identity takes the position of its last report, and linked remarks still follow their parent.
Behaviour change: order only. The identity, `DenseMapInfo<Remark>` and the header are unchanged. Only remarks handed to the policy outside the engine have no ID; the unit tests that do so assert unordered or single results.
Creation order is deterministic for a single-threaded pipeline. When passes report from several threads the IDs come from a shared counter and depend on scheduling; #227360 adds the lock and a source-position sort for that case, on top of this change.
Whether the identity itself is right is a separate question for a follow-up: the docs say a later `passed` replaces an earlier `failed` at the same location, but `kind` has been part of the key since #180953, so both are shown today. This PR leaves the docs as they are on that point.
Assisted-by: Claude Code (Claude Fable 5.1).
misc/mc: update Midnight Commander to the latest version 4.8.33
- Tentatively switch default renderer from S-Lang to ncurses which
is part of the base system and does not pull EoLed `devel/pcre'
- GC no longer needed USES+=shebangfix, adjust Python dependency
- Add support for entering and viewing FreeBSD packages, based on
the idea and patch by Walter von Entferndt
- Register installation conflict with `misc/mc6' port while at it
PR: 292865, 293259, 294086
Tie webshare lifecycle to TrueNAS Connect state
## Problem
Webshare's Caddy only picks up its TLS certificates when it starts, but middleware never stopped, started or restarted webshare on any TrueNAS Connect transition. Setting up TNC and webshare, then unsetting TNC left webshare running, and setting TNC up again left it serving zero or stale certificates until someone restarted it by hand. At boot systemd could also start webshare before middleware was ready, so it came up with no certificates at all.
## Solution
Webshare now only runs when the WEBSHARE entitlement is granted and TNC is configured, regardless of product type.
- **Start gate**: `before_start` refuses START and RESTART with a `CallError` explaining why, so a restart or failover restart can't bypass it either.
- **Following TNC**: webshare subscribes to the existing `tn_connect.config` event. When TNC stops being configured (disable or 401 auto-unset) webshare is stopped; when it becomes configured again and webshare is enabled, it is started; a certificate renewal restarts a running webshare. A restart is used rather than a reload because a reload does not make every webshare listener re-read its certificates.
- **Licence and boot**: the same check runs on licence updates and on `system.ready` (non-HA), where a running webshare is restarted so it loads the right certificates.
The persisted enable flag is never touched, so the user's intent survives TNC being unset and webshare comes back by itself once TNC is set up again.
Fix the thick grow test, drop dead pool.dataset shims and tidy stale zfs.resource comments and rules
## Problem
test_grow_thick_volume_keeps_it_thick read the refreservation off the entry returned by the second grow. Since thick re-reserve only adds refreservation=auto when the reservation equals the volsize, that grow sends volsize alone and ZFS grows its own auto reservation, so the returned entry carries no refreservation and the test failed with a KeyError. The private pool.dataset.path_in_locked_datasets and pool.dataset.kill_processes shims had no callers left, every user having moved to zfs.resource.path_is_locked and zfs.resource.kill_processes. A few comments were also stale: the create rule and the zfs.resource.create docstring compared the default thick refreservation to `zfs create -V`, which sets the larger auto value while zr reserves exactly the volsize, the create TODO had lost why auto isn't used yet, and the build_set_of_zfs_props docstring had the None and empty list cases backwards. A unit test named for announcing created ancestors and the leaf only checked that an internal path announces nothing, and the create and set force_size rules each carried their own copy of the refusal instead of a shared reject helper like every other rule both sides apply, with the create one also missing from __all__.
## Solution
- **Test:** read the reservation from the zvol itself, as the first grow already does.
- **Shims:** remove the two unused shims.
- **force_size rule:** both sides call a shared reject_force_size_on_filesystem, and the create rule is listed in __all__.
- **Unit test:** rename it to test_create_announces_nothing_for_an_internal_path and inline its single case.
- **Comments:** drop the `zfs create -V` comparison, restore the reason auto can't be used on create (zfs_create() doesn't resolve it, so create fails with "out of space") and that a grow switches these volumes to auto, and describe build_set_of_zfs_props as it behaves, including that its cache ignores req_props once filled.