[SSAF] Properly handle contributors with multiple declarations
A contributor entity can have multiple declarations all contributing
interesting facts. For example, a function declaration (not
definition) may have default arguments, which may provide pointer flow
or unsafe buffer usage facts. This commit groups declarations by their
canonical decls. The entity summary of a contributor will be
collected from all its decls.
In addition, this commit includes the following minor changes:
- Factor the common procedure of summary extraction and insertion
into a template function in SSAFAnalysesCommon.h.
- Convert the no-duplicate contributor assertion into a debug
warning. In corner cases, there might be an EntityName conflict on
distinct entities. Sometimes, just keeping one of those entities is
fine (see benign-entity-name-conflict.cpp). More importantly, we
need the release build to not crash.
rdar://179150798
[Flang] Match additional CMake Fortran detection probes (#204438)
Support the following additional patterns that CMake may use to
introspect the Fortran compiler:
1. `__GNUC__` may be tested before `__flang__` which results in the
compiler to be identified as "GNU" instead of "LLVMFlang"
2. Invoke with `-E -cpp` to explicitly use the preprocessor
Fakeflang was added in #203481 to not have to build all of flang just to
pass CMake's compiler detection.
Tested with CMake 3.20, 3.28, and 4.4-rc.
Should fix the
[flang-aarch64-rel-assert](https://lab.llvm.org/buildbot/#/builders/29)
and [flang-aarch64-dylib](https://lab.llvm.org/buildbot/#/builders/50)
buildbots.
workflows/release-binaries: Use Wix to create Windows installer (#200734)
The NSIS based installer had a limit of 2GB, and we started going over
that, so we needed to move to Wix which supports much larger installer
sizes.
x11/mate-session-manager: switch to GitHub release asset
Minor versions of 1.28.x are no longer published to the MATE mirror
and are only available on GitHub. Switch MASTER_SITES to the GitHub
release asset URL. Move PORTSCOUT after USE_* variables.
Skip individual domains that vanish while gathering libvirt state
## Problem
`gather_pylibvirt_domains_states` wraps its whole loop in one try/except. If a queried domain is destroyed between `list_domains()` and reading its state (a TOCTOU race), libvirt raises `VIR_ERR_NO_DOMAIN` and the exception unwinds the entire loop, so every still-running domain after it is dropped from the result and reported as STOPPED/`pid: null` until the next poll. It also logged a full WARNING traceback for what is a benign, self-correcting race, and masked genuine errors (e.g. a bug in the per-domain factory) behind that same generic warning.
## Solution
Moved the try/except inside the loop so a vanished domain is skipped individually while the rest of the batch is still reported correctly (a missing entry falls back to STOPPED via `get_pylibvirt_domain_state`). The failure is classified using the new `is_no_domain_error` helper from truenas_pylibvirt: the no-domain race is logged at DEBUG, anything else at ERROR with `exc_info` so genuine bugs stay visible and no longer poison sibling domains.
[SSAF] Properly handle contributors with multiple declarations
A contributor entity can have multiple declarations all contributing
interesting facts. For example, a function declaration (not
definition) may have default arguments, which may provide pointer flow
or unsafe buffer usage facts. This commit groups declarations by their
canonical decls. The entity summary of a contributor will be
collected from all its decls.
In addition, this commit includes the following minor changes:
- Factor the common procedure of summary extraction and insertion
into a template function in SSAFAnalysesCommon.h.
- Convert the no-duplicate contributor assertion into a debug
warning. In corner cases, there might be an EntityName conflict on
distinct entities. Sometimes, just keeping one of those entities is
fine (see benign-entity-name-conflict.cpp). More importantly, we
need the release build to not crash.
rdar://179150798
[WebAssembly] Default to 0 shadow offset for wasm64 ASan (#204437)
For Wasm64, ASan instrumentation was defaulting to a 16TB shadow offset,
while the runtime configures it to 0. Align them by defaulting to 0 for
all WebAssembly targets.
[WebAssembly] Add support for R_WASM_MEMORY_ADDR_LOCREL_I64 relocation (#204055)
This relocation is needed for WASM64 to support location-relative memory
addresses, which are used e.g. in profile instrumentation (for
CounterPtr in __llvm_profile_data).
Without this, the compiler falls back to absolute relocations and drops
the subtraction, resulting in malformed profile data.
Fixes: https://github.com/emscripten-core/emscripten/issues/26865
[DirectX] Fix IO sandbox violation in DXContainerPDB pass (#204461)
`DXContainerPDB::runOnModule` writes a PDB file to disk via
`PDBFileBuilder::commit`, which calls through `MSFBuilder::commit` ->
`FileOutputBuffer::create` -> `llvm::sys::fs::status()`. These are raw
filesystem APIs that trigger a fatal "IO sandbox violation" when the IO
sandbox is enabled.
The sandbox is enabled in `CC1Command::Execute` (Job.cpp) to enforce
that all filesystem access goes through the VFS. Since `PDBFileBuilder`
doesn't support VFS-based output, bypass the sandbox for the commit call
using `scopedDisable()`, matching the established pattern used in
`raw_ostream.cpp`, `VirtualFileSystem.cpp`, `BackendUtil.cpp`, and
others.
This crash occurs on any clang invocation targeting the DirectX backend
with PDB emission enabled, e.g.:
`Target: dxilv1.7-unknown-shadermodel6.7-library`
[17 lines not shown]
[RISCV][P-ext] Fold (PSRL/PSRA (trunc (PSRL X, C1)), C2) -> (trunc (PSRL/PSRA X, C1+C2)) (#204385)
when C1 equals the number of bits discarded by the truncate. This
matches an existing DAGCombine for ISD::SRA/SRL which doesn't get
a chance to fire before the inner PSRL is formed.
Assisted-by: Claude Sonnet 4.6
[clang][ssaf] Make TUSummary, LUSummary, and WPASuite JSON representations self-describing (#204409)
This commit introduces the following changes:
- Add a self-describing `"type"` field (`"TUSummary"`, `"LUSummary"`, or
`"WPASuite"`) to the root of every artifact JSON file written by
`JSONFormat`. Kind-specific readers (`readTUSummary`, `readLUSummary`,
`readWPASuite`, plus the encoding flavors) validate that the field is
present and matches the expected value.
- Introduce two variant aliases on `SerializationFormat`: `Artifact =
std::variant<TUSummary, LUSummary, WPASuite>` and `ArtifactEncoding =
std::variant<TUSummaryEncoding, LUSummaryEncoding>`. Each gets a generic
`read*/write*` pair that peeks the `type` field once and dispatches to
the matching reader/writer; the file is read and parsed only once per
call.
- Refactor every kind-specific reader into `read{Kind}` (loads file +
validates type) plus a private `read{Kind}FromObject(const Object&)`
helper. `readArtifact`/`readArtifactEncoding` reuse those helpers
directly, avoiding the file-and-parse-twice pattern.
[5 lines not shown]
(devel/R-testthat) Updated 3.2.3 to 3.3.2, Fix build against R-4.6.0
# testthat 3.3.2
----------------
* testthat now emits OpenTelemetry traces for tests when tracing is
enabled. Requires the otel and otelsdk packages (#2282).
* `default_parallel_reporter()` is no longer exported; use
`default_reporter(parallel = TRUE)` instead (#2305).
* `expect_snapshot()` once again reports the original error class for
base errors, rather than `rlang_error` (#2286).
* `expect_snapshot_file()` once again works with shinytest2 on CI
(#2293, #2288).
* `expect_snapshot_file()` correctly reports file name if duplicated
(@MichaelChirico, #2296).
[232 lines not shown]