pf: allow unspecified addressed for certain MLD messages
As per RFC 3590 MLD Report and Done messages are permitted to use the
unspecified address as a source address (e.g. during duplicate address
detection for the first IPv6 address). Allow this, but only this.
Reported by: Alexander Leidinger <Alexander at Leidinger.net>
Reviewed by: bms
See also: OpenBSD, sashan <sashan at openbsd.org>, 60036e8507
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D59334
pf: Prevent pf dropping TCP state with crafted reset packet.
Revision 1.1212 of pf.c weakened the TCP reset check in stateful
connection tracking to let legitimate resets pass in the backwards
window. Such a reset is accepted only if its acknowledgment number
matches perfectly. But as a workaround for broken stacks, pf
replaces an acknowledgment number of 0 in a reset with the tracked
sequence of the peer. Then the perfect match always succeeds, and
an attacker can spoof resets more easily than intended. Use the
acknowledgment number from the wire, before the workaround has
modified it.
discovered by Minghao Zhang; OK sashan@
Obtained from: OpenBSD, bluhm <bluhm at openbsd.org>, 1e0a1f4b82
Sponsored by: Rubicon Communications, LLC ("Netgate")
[ConstraintElim] Handle single And/Or as exit condition in loop. (#221228)
In some cases, exits conditions in the loop are And/Or of and IV-based
condition and another condition. If the loop continues only if all
conditions are true (AND + true successor is the header, OR + false
successor is the header), we can still use the IV based condition to
bound the IV.
For now, just peels a single AND/OR.
This enables folds in a few additional cases:
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/1193.
PR: https://github.com/llvm/llvm-project/pull/221228
Tools/scripts/bump-revision.sh: insert PORTREVISION after DISTVERSIONSUFFIX
When a port has a DISTVERSIONSUFFIX, PORTREVISION was inserted right
after DISTVERSION, before DISTVERSIONSUFFIX, which breaks the variable
order required by portlint. Insert PORTREVISION after the last version
line (DISTVERSIONSUFFIX if present, otherwise DISTVERSION/PORTVERSION).
PR: 259289
audio/waves: Update to 0.1.47
- Mark BROKEN on i386 [1]. It does not compile with the following
error:
vendor/modernc.org/libc/libc_freebsd.go:247:25: cannot use int64(off) (value of type int64) as int32 value in assignment
vendor/modernc.org/libc/libc_freebsd.go:269:50: cannot use int64(off) (value of type int64) as int32 value in assignment
vendor/modernc.org/libc/libc_freebsd.go:1638:17: invalid operation: Uint64(Uint64FromInt32(-1)) / uint64(255) * size_t(c) (mismatched types uint64 and size_t)
vendor/modernc.org/libc/libc_freebsd.go:1639:192: invalid operation: *(*uint64)(unsafe.Pointer(w)) ^ k (mismatched types uint64 and size_t)
vendor/modernc.org/libc/libc_freebsd.go:1658:42: cannot use &l1 (value of type *size_t) as *uint64 value in argument to AssignUint64
vendor/modernc.org/libc/libc_freebsd.go:1658:47: cannot use size_t((int64(X__strchrnul(tls, var1, '=')) - int64(var1)) / 1) (value of uint32 type size_t) as uint64 value in argument to AssignUint64
vendor/modernc.org/libc/libc_freebsd.go:1667:19: invalid operation: l1 + l2 + uint64(2) (mismatched types size_t and uint64)
vendor/modernc.org/libc/libc_freebsd.go:1673:48: invalid operation: l2 + uint64(1) (mismatched types size_t and uint64)
vendor/modernc.org/libc/libc_freebsd.go:1686:6: cannot use uint64(0) (constant 0 of type uint64) as size_t value in assignment
vendor/modernc.org/libc/libc_freebsd.go:1696:57: invalid operation: l + uint64(1) (mismatched types size_t and uint64)
vendor/modernc.org/libc/libc_freebsd.go:1696:57: too many errors
ChangeLog:
[4 lines not shown]
[InstSimplify] Don't fold ptrtoint of ptradd of sub (#221188)
Don't fold `ptrtoint (ptradd (Ptr, X - ptrtoint(Ptr))) -> X`. While
valid by itself, the fact that LLVM currently does not properly model
the ptrtoint side effect means that we lose the provenance exposure of
Ptr. This results in end-to-end miscompiles that led to the revert of
#210729.
We can still perform the optimization for ptrtoaddr, which does not
expose provenance.
enchant2: updated to 2.8.21
2.8.21 (September 3, 2026)
This release fixes two bugs in composite dictionaries: first, if any
dictionary creation failed during creation of a composite dictionary,
dictionaries already created would be leaked; and secondly, the broker error
status could end up indicating an error incorrectly when one provider or
language failed and a fallback later succeeded. Thanks to @lpyuu for the
report and fixes.
2.8.20 (August 25, 2026)
This release improves the man page for enchant(1), mostly by documenting
Ispell command-line options and pipe-mode commands that it ignores.
pw(8): Brace the name-or-id synopsis so it matches the code
An unbraced pipe list made -n look like it could take a uid (or gid).
Use braces for a single choice of name or id, and keep -u newuid /
-g newgid on the name invocation only. Drop the USER/GROUP OPTIONS
sentences that said -n could be a numeric id.
PR: 269193
MFC after: 3 days
Reviewed by: bapt
Differential Revision: https://reviews.freebsd.org/D59472
[gold] Switch section-ordering-file tests to use ld.bfd (#219150)
ld.bfd supports `--section-ordering-file` since 2.43. Use it if the
binutils version is sufficiently recent.
The implementation in ld.bfd is significantly different, with the
section ordering file looking more like an incomplete linker script,
rather than a plain section listing.
The addresses of the sections are also slightly different than with
ld.gold. Use hex matches + arithmetic to just check the correct
order/offsets instead of hardcoding the exact choice of address.
ld.bfd also supports --start-lib/--end-lib since 2.47, but it seems like
those don't actually work with linker plugins, so I'm not migrating them
(https://sourceware.org/bugzilla/show_bug.cgi?id=34572).
Followup to https://github.com/llvm/llvm-project/pull/130981.
EC2: Add desktop flavour
Desktop AMIs have xrdp enabled and boot to a KDE desktop; they are
as compatible as possible with EC2 Windows AMIs, setting a random
password and printing it to the console in encrypted format to be
retrieved using the EC2 GetPasswordData API.
Two rc.d scripts are included in this commit which will not exist
in the long term: ec2_addpass will become part of the ec2-scripts
package, and ec2_desktop_extras will go away once its functionality
is included elsewhere.
MFC After: 1 month
Relnotes: yes
Sponsored by: Amazon
PPC: Replace EnableAIXExtendedAltivecABI with "target-abi" module flag
Continue purging ABI-influencing TargetOptions fields. Eliminate this case
by migrating to a module flag, reusing the generic target-abi module flag
with a new value.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
[Sparc] Fix instruction size for delay slot with UNIMP (#220955)
Sparc currently reports all instructions with delay slots as having
twice the size. However, there is a special case for struct returns,
where there is an extra UNIMP instruction. Move needsUnimp() into
SparcInstrInfo, and account for it in the instruction size calculation.
Part of enabling instruction size verification by default.
[VPlan] Fix merged replicate region frequency when only one is known. (#221607)
When merging two replicate regions guarded by the same mask, the merged
region's entry frequency should be the higher of the two original
frequencies, since it now fires whenever either original region did.
The existing check only updated the frequency when both were known,
leaving the second region's own (possibly much lower) frequency in place
whenever the first was unknown. This means we might set a misleadingly
low frequency. Conservatively set to unknown instead.
[CIR] Derive lowering attr names from cppClassName, not the def name
CIRLoweringEmitter built its CXX_ABI_ALWAYS_LEGAL_ATTRS entries with
GetOpCppClassName, which splits the TableGen def name at the first
underscore. That works only while every def is named CIR_<CppClassName>Attr.
When one is not, the emitter writes an `isa<>` for a class that does not
exist, and the failure lands as a compile error in generated code.
Attributes carry the authoritative name in cppClassName, which
GenerateAttrToValueVisitor was already reading. Factor that out as
GetAttrCppClassRef and use it for both attribute paths. GetOpCppClassName
stays for operations.
NFC, and checkable. No CIR attribute overrides cppClassName, so the generated
CIRLowering.inc is byte-identical.
[CIR] Drop dead ceremony around the CIR enum attributes
Five things that no longer earn their place in the CIR enum attribute
machinery.
CIR_CleanupKindAttr carried three. Its cppClassName restated the default
AttrDef already derives. Its skipDefaultBuilders plus hand-written
AttrBuilder existed only to default $value to CleanupKind::All, which no
caller relies on, so the generated builders stayed suppressed for nothing.
And its summary and description restated the name, overriding the enum's own
"cleanup kind" that EnumAttr would otherwise inherit. The isNormal, isEH and
isNormalAndEH helpers stay.
CIR_TLSModelAttr's summary restated its name the same way, so only that goes.
CIR_DefaultValuedEnumParameter has never had a user.
NFC.
[CIR] Move the CIR enums off the legacy EnumAttrInfo hierarchy
MLIR has two enum hierarchies. `EnumAttrInfo` doubles as an `IntegerAttr`
constraint, so every CIR enum had to clear `genSpecializedAttr` to say it did
not want one. `EnumInfo` describes a C++ enum and nothing more.
Derive the CIR bases from `I32Enum`, `I64Enum` and `I32BitEnum`, and widen
`CIR_EnumAttr` to the `EnumInfo` that upstream `EnumAttr` already takes. The
flag no longer exists to clear. `FPClassTestEnum` gets unquoted printing from
`BitEnumBase` rather than overriding `printBitEnumQuoted`, and
`CIR_KnownFuncKind` drops a `parameterPrinter` the generated `operator<<`
now covers, still spelling `#cir.func_identity<"std::find">`.
AMDGPU wraps an `I32Enum` in an `EnumAttr` with this same bracketed format.
Parsing moves to the generated `FieldParser`, whose diagnostic names the
accepted spellings, so two `expected-error` lines change. Generated attribute
code drops 16 KB as 28 inlined parsers collapse into it.
[CIR] Migrate the FPClassTest bit enum and unquote its flags
cir.is_fp_class printed its flags inconsistently. Single-bit values came out
bare, as in `fcSNan`, while group values and combinations came out quoted, as
in `"fcInf"` and `"fcSNan|fcNegInf"`. That comes from I32BitEnumAttr setting
printBitEnumQuoted, which EnumAttr.td keeps only for backwards compatibility.
Clearing the bit and using the `enum` directive selects the separator-aware
parser and printer, so every value now spells unquoted:
cir.is_fp_class %x, fcSNan|fcNegInf : (!cir.float) -> !cir.bool
The enum also drops its specialized IntegerAttr for a CIR_EnumAttr wrapper,
giving it the standalone spelling `#cir.fp_class<fcSNan|fcNegInf>`. This
changes operation syntax, so it updates 37 CHECK lines.
PPC: Read the ELF ABI from the "target-abi" module flag
Resolve the ELFv2 ABI from the effective ABI name module flag,
rather than strictly relying on the -target-abi flag.
Also start emitting "target-abi" for PPC from clang.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>