RuntimeLibcalls: Dispatch to library functions from SystemRuntimeLibrary
When a SystemRuntimeLibrary names LibcallLibrary defs, setTargetRuntimeLibcallSets
now dispatches each under an isLibraryAvailable guard, so an impl can be homed
into a library without dropping it from the target. Non-library members keep the
inline path. No target names a library yet, so output is unchanged.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
RuntimeLibcalls: Introduce LibcallLibrary schema
Currently the set of system libraries calls is flat and
disorganized. Begin organizing this per-provider library.
The goal is to organize groups of functions by named sets,
corresponding to the underlying library which will be linked.
A LibcallLibrary is a named runtime library whose impls are made
available as a unit; its members use the same dag vocabulary as
LibcallImpls. The emitter emits one setAvailableLibFuncs_<name>
per distinct library name, merging same-named libraries under their
per-variant availability predicates. isLibraryAvailable()
is added as a stub for a future dispatch driver. No target
defines a LibcallLibrary, so generated output is mostly unchanged
(there are some incidental enum reorderings).
Reorganizing all of the library functions require a good bit more
infrastructure to be practical, but this is a minimally functional
piece to start the review.
[2 lines not shown]
exterr(9): add a few tests of new message formats
This is enough to show that the idea works (and to exercise
uexterr_set()), but isn't complete by any means.
Reviewed by: kib
Effort: CHERI upstreaming
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D58060
runtime: add the ability to set exterrors in userspace
The UEXTERROR(3) macro is a partial analog to EXTERROR(9) that sets
the current user exterror state and errno. The main difference is
that it returns no value and sets errno directly since that's the
typical pattern in libraries.
While here move the storage and constructor for single-threaded
program's uexterr to its own file.
Reviewed by: kib
Effort: CHERI upstreaming
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D58059
exterr: relax format restrictions
Rather than passing the format string to printf and forcing the
arguments to be (u)intmax_t, partially parse format strings and cast
p1 and p2 to the correct type before running the individual format
though printf. This restructure has a couple motivatations:
- We can skip formats that make no sense (floating point, %n, etc.).
- It is possible to special case the printing of pointers in the
CHERI case.
The first case is motivated by a suggestion from the audiance at
one of Kirk's BSDCan talks on exterr to allow userspace to set exterr
status. Allowing arbitrary format strings including %n creates a
write-what-where gadget so we need to not do that.
The second case is motivated by our experinces with CHERI and debugging
mmap issues using a different textual error reporting framework. With
CHERI, pointers are more than integer addresses and it's useful to
include more details. Doing so will follow in a future commit.
[8 lines not shown]
[flang][Lower] Reassociate nested assignment sums
Part 6/6 of generalisations requested in #207377
Search eligible assignment RHS expressions top-down for scalar REAL
and COMPLEX additive spines. Rewrite a qualifying node once; otherwise
recurse through ordinary operations, conversions, conditional wrappers,
and separate arguments of pure calls. Preserve effect-sensitive
boundaries.
There is no known effect on benchmark results as a result of this patch.
Assisted-by: Codex
[Flang] Move integration Lit tests to the right directory, NFC (#215536)
Flang unit tests that involve multiple stages of the compiler are
intended to be placed in flang/test/Integration. However, many existing
unit tests meeting this condition are currently located in the Lower
subdirectory.
This patch moves all tests in Lower that emit LLVM IR from Fortran or
run the FIR MLIR lowering pipeline via `tco` to Integration, and adds
the corresponding notice at the top of each file.
Assisted-by: Claude Opus 4.8.
[AArch64][llvm][clang] Add missing sv{set,get,dup}_neonq_mf8 intrinsics
Add support for `svset_neonq_mf8`, `svget_neonq_mf8` and `svdup_neonq_mf8`
intrinsics, which are present in the ACLE but were not implemented in llvm.
[AArch64] Select [SU]ADDLP for a partial reduction into a zero accumulator (#217186)
A partial add reduction into a zero accumulator still materialises the
zero because [SU]ADALP needs something to add to. Select [SU]ADDLP
instead, which is the same pairwise widening add with no accumulator.
```llvm
%wide = zext <16 x i8> %a to <16 x i16>
%r = call <8 x i16> @llvm.vector.partial.reduce.add(<8 x i16> zeroinitializer, <16 x i16> %wide)
```
before:
```
movi v1.2d, #0000000000000000
uadalp v1.8h, v0.16b
mov v0.16b, v1.16b
```
[6 lines not shown]
[MLIR][ODS] Print prop-dict fields with custom printers
Generate a key-value prop-dict printer that dispatches each field to its
ODS printer while retaining attribute conversion for non-compositional default
parsers.
Keep operation-specific property printer hooks ahead of the generated
implementation and preserve legacy input compatibility.
Assisted-by: Codex
[MLIR][ODS] Parse prop-dict fields with custom parsers
Teach generated operation parsers to accept a key-value spelling for
prop-dict and dispatch known fields through their ODS parsers. Keep the
DictionaryAttr spelling as a compatibility path and use attribute conversion
when a property has no usable FieldParser.
Assisted-by: Codex
RuntimeLibcalls: Fix wrongly typed x87/fp128 long double libcalls on x86
The x86 and default libcall sets gated the l-suffixed long double libm
functions on OS conditions rather than the long double format. This
incorrectly provided the f80 libcalls on targets whose long double is not x87
(Windows-MSVC, UEFI, x86_64 Android), double-provided frexpl/ldexpl on musl,
and provided the fp128 sincosl on targets using double as long double (m68k).
Gate the l-suffixed libm math on the long double format, mirroring the earlier
AArch64 fix: x87 targets get the _f80 calls, fp128 targets the _f128 calls, and
double targets neither. The compiler-rt f80 helpers (__extendxftf2, __fixxfti,
__powixf2, ...) are keyed to the x86_fp80 IR type, not the long double format,
so they stay unconditional on x86.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
RuntimeLibcalls: Stop providing __powitf2 on MSVCRT
MSVCRT does not provide the powi helpers, so gate the fp128 __powitf2 on
isNotOSMSVCRT alongside the f32/f64 __powisf2/__powidf2, instead of adding it
unconditionally. The unconditional add was a hack to satisfy a test that
expected a wrongly-typed powi call on windows-msvc.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
py-WebOb: updated to 1.8.11
1.8.11 (2026-08-02)
Security Fix
- The fixes for CVE-2024-42353 and GHSA-fh3h-vg37-cc95 were still
incomplete: besides removing tab, CR, and LF, ``urllib.parse.urljoin``
also strips leading and trailing C0 control and space characters from a
URL before parsing it. A Location value such as
``" //www.example.com/test"`` could therefore still be interpreted as a
protocol-relative URL (and ``" https://www.example.com/test"`` as an
absolute one), allowing an open redirect.
WebOb no longer uses ``urllib.parse.urljoin`` and instead ships its own
implementation of the RFC 3986 reference resolution algorithm,
``webob.util.urljoin``, which resolves the URL exactly as given without
removing any characters. It is now used to make the Location header
absolute, by ``Request.relative_url``, and by the ``_HTTPMove`` based
[5 lines not shown]