Reject and normalize non-colon NIC MAC addresses
## Problem
The NIC `mac` field accepted dash-separated, no-separator and mixed forms, but libvirt's `defineXML` only parses colon-separated MACs — so a VM or container configured that way was accepted by the API and then failed to start with an XML parse error. Existing installs can already have such addresses stored.
## Solution
- **Colon-only validation.** The shared `MACAddress` type now matches colon-separated hex only. It is anchored with `\Z` rather than `$`, because Python's `$` also matches before a trailing newline and would otherwise let through a value libvirt still cannot parse.
- **Lowercase normalization.** MAC addresses are case-insensitive, but every comparison we make against one is a plain string compare, so an uppercase spelling was a distinct value to the per-instance duplicate check. The type now lowercases, and `device_uniqueness_check` case-folds the NIC identity so rows written before this still compare correctly.
- **Migration for stored addresses.** Existing `vm_device` / `container_device` NIC rows are rewritten to the canonical form. Anything not carrying a valid 48-bit address is replaced with a freshly generated MAC — that includes non-string values, which an incus migration can leave behind when PyYAML resolves an unquoted address such as `52:54:00:12:34:56` as a YAML 1.1 base-60 integer.
Frozen API versions keep their original pattern, so a client pinned to 25.10 that sends a dash-separated MAC is now rejected at validation instead of failing later at start.
[include-cleaner] Ensure receiver headers are kept when accessing ObjC properties (#212633)
When accessing Objective-C properties via dot-notation (e.g., obj.foo),
include-cleaner was previously only recording the usage of the property
itself or its underlying getter/setter methods. This could lead to cases
where the header declaring the receiver's type (Interface or Protocol)
was incorrectly flagged as unused if no other standard methods were
invoked on it.
[DebugInfo] Fix compact DWARF expression failure handling (#213391)
printDwarfExpressionCompact has two pre-existing failure paths that
silently produce bad output.
The register-name callback is optional, but the short DW_OP_reg* and
DW_OP_breg* paths call it directly, so a missing callback falls over.
Use resolveRegName for every register form and report an unknown
register only after both name-resolution paths fail.
DW_OP_entry_value has the same problem: it ignores a failed recursive
print, wraps the partial output in entry(...), and returns true. Print
entry-value subexpressions into a temporary buffer and propagate failure
before adding entry(...), so a failed subexpression can't come back as
successful output.
While here, GetRegName in llvm-objdump has a latent ordering issue: it
writes an unknown-register diagnostic as soon as target lookup misses,
even though resolveRegName can still decode an ASCII-packed
[13 lines not shown]
NAS-141749 / 27.0.0-BETA.1 / Report apps whose metadata is unusable so they can be deleted (#19457)
## Problem
An app whose `metadata.yaml` we cannot read or make sense of was skipped
outright by `list_apps`, so it never appeared in `app.query`. That left
no way to get rid of it: `app.delete` resolves the app first and failed
with `[ENOENT] App X does not exist`, while the directory, the ix-volume
dataset and often a set of still-running containers stayed behind
indefinitely. The only way out was to delete things by hand over SSH.
Digging into it turned up something worse and independent of the above:
the damage from one broken app was never contained to that app.
`_load_app_yaml` did not catch `OSError`, so an unreadable file killed
`app.metadata_generate`, and `get_current_app_config` is a bare `open()`
outside any try, so metadata pointing at a missing version directory
killed the job too. Every lifecycle path waits on that job with
`raise_error=True`, so a single broken app meant install, update,
upgrade, rollback and delete all failed for every app on the system.
[84 lines not shown]
14.5: create releng/14.5 branch
Update from PRERELEASE to BETA1
Switch pkg(8) configuration to use the quarterly repositories
Bump __FreeBSD_version to 1405000
Approved by: re (implicit)
Sponsored by: OpenSats Initiative
evdev: add devnum sysctl
Add a sysctl entry for the evdev device number (devnum) to allow
libudev-devd to populate the corresponding device information
fields (MAJOR and MINOR) when running in a jail with no input devices
exposed through devfs.
Signed-off-by: Quentin Thébault <quentin.thebault at defenso.fr>
Reviewed by: wulf
Sponsored by: Defenso
(cherry picked from commit 746c374aa94b46712e6defb3ab56dd2d6ad8db64)
bsdinstall: add a hardening knob for unprivileged kenv access
It makes sense.
Reviewed by: zleei
Differental Revision: https://reviews.freebsd.org/D57755
bsdinstall: add a hardening knob for unprivileged kenv access
It makes sense.
Reviewed by: zleei
Differental Revision: https://reviews.freebsd.org/D57755
[AMDGPU] Prefer a safe V_PERM_PK16 follower in the scheduler (gfx1250)
Stacked on the post-RA V_PERM_PK16 hazard fixup. V_PERM_PK16 must be
immediately followed by a "safe" instruction (see
SIInstrInfo::isVPermPk16SafeInstr) or the post-RA fixup has to insert a
forced-EXEC V_NOP. Teach GCNHazardRecognizer to bias a safe follower into
the slot right after a V_PERM_PK16 so that V_NOP can be avoided.
Assisted-by: Opus 4.8 Medium
[ORC] Hoist Caller state into the base; add operator bool (#214483)
Move the ExecutionSession reference and callee address up from the SPS
implementation into the rt::Caller base, together with their constructor
and new executionSession() / calleeAddr() accessors. The named callers
(MainCaller, VoidVoidCaller, ...) become plain aliases of Caller rather
than subclasses, and rt::sps::Caller inherits the base constructor.
Add an explicit operator bool() reporting whether the caller has a
non-null callee address.
Give rt::sps::Caller::Create a SymbolLookupFlags parameter. Looking the
callee up as a weakly-referenced symbol now yields a caller with a null
callee (operator bool == false) when the symbol is absent, rather than
an error -- so callers for optional runtime functions can be constructed
and then tested for availability.
Adds SPSCallersTest coverage for operator bool and the accessors, and
for the required/weak x present/absent Create paths.
[NVPTX][AsmPrinter] Allow fp128 aggregate types in NVPTX backend (#214546)
Fixes an issue where aggregate types containing fp128 non-zero elements
would cause "unsupported type" due to missing case in bufferLEByte. Adds
fp128-global.ll test.
[AMDGPU][GISel] Match constrained shifts across register bank copies
The constrained shift PatFrags (csh_mask_* wrapped by cshl_/csrl_/csra_)
supply GISelPredicateCode and are imported into the GlobalISel match
table, but they never fired for a divergent shift. AMDGPURegBankLegalize
places a cross-bank COPY in two positions inside the shape they match:
- the mask constant stays in the SGPR bank, so a divergent G_AND reads
it through a COPY and the frag's imm operand is not a G_CONSTANT;
- a uniform G_AND feeding a divergent shift is copied to the VGPR bank,
so the shift's amount operand is not a G_AND.
Either way GIM_CheckOpcode rejects the rule before isUnneededShiftMask
is ever consulted, and the redundant v_and_b32 survives into the output.
Set GIIgnoreCopies so the matcher emits GIM_RecordInsnIgnoreCopies for
those operands. A frag's flags only govern how its own operands are
found, so the first position needs the flag on csh_mask_* while the
second needs it on the node holding the shift; split the masked
[17 lines not shown]
workflows: Merge release-doxygen into release-documenation
These two workflows use the same script and have the same structure,
so it's easier just to have one job that builds both.