[libc] Fail configure if requested linting cannot run (#231001)
If linting was requested but could not run, CMake previously disabled it
with a warning and generated an empty libc-lint target.
Change these conditions to FATAL_ERROR so misconfigurations fail early:
* Compiler is not Clang
* clang-tidy is not found
* Auto-discovered clang-tidy has a mismatched major version
If LLVM_LIBC_CLANG_TIDY is set explicitly, treat version mismatches as a
warning instead of an error.
Document the configure requirements in code_style.md.
Assisted-by: Automated tooling, human reviewed.
devel/electron{41,42,43,44}: Add AVX512 option to support older CPUs
Builds on older CPUs without AVX512 instructions support fail with the
following error:
In file included from ../../third_party/skia/modules/skcms/src/skcms_TransformSkx.cc:53:
../../third_party/skia/modules/skcms/src/Transform_inl.h:152:15: error: always_inline function '_mm512_cvtph_ps' requires target feature 'avx512f', but would be inlined into function 'F_from_Half' that is compiled without support for 'avx512f'
152 | return (F)_mm512_cvtph_ps((__m256i)half);
Add AVX512 option, which is ON by default (status quo). Users can set
the option to OFF to build on older hardware.
PR: 299208
Reported by: Hiroo Ono <hiroo.ono+freebsd at gmail.com>
Tested by: Hiroo Ono <hiroo.ono+freebsd at gmail.com>
[clang][NVPTX] Emit !atomic.ignore.denormal.mode for CUDA atomics (#217587)
CUDA's atomicAdd() family is defined in terms of PTX atom.add, whose
denormal behavior is fixed by the hardware. Without any annotation the
backend has to assume the function's denormal mode must be honored and
expands these into CAS loops whenever the two disagree. Mark them with
!atomic.ignore.denormal.mode so the native instruction is used.
That covers the __nvvm_atom_*_add_gen_f builtins that atomicAdd(),
atomicAdd_block() and atomicAdd_system() are written in terms of, plus
C11/C++11 atomics under -fatomic-ignore-denormal-mode and the
[[clang::atomic(ignore_denormal_mode)]] attribute, which requires
teaching the NVPTX target about AtomicOptions.
The condition for when the metadata is meaningful is now shared with the
AMDGPU and SPIR-V targets in addAtomicIgnoreDenormalModeMetadata(). It
takes an AllowHalf flag because whether f16 denormals are observable is
target specific: PTX exposes no FTZ control for f16 operations, so
atom.add.f16 never flushes and the opt-in is meaningful there, whereas
[4 lines not shown]
[BranchFolding] Ignore debug instructions in singleton cond branch check (#228715)
DBG_VALUE was counted when checking for a single-branch block, so the
duplicate branch was kept only under -g.
Fixes #228713
Assisted-by: Claude Opus 5.5
[mlir][RemoveDeadValues] Replace dead function argument uses with poison (#208881)
Dropping all uses of a dead function argument can leave null operands in
surviving side-effecting operations in unreachable code.
Subsequent canonicalization may then crash while folding the invalid
operation.
This PR replaces the remaining uses with `ub.poison` before erasing the
argument and add a regression test.
Fixes #206920, fixes #203226
x11/bmpanel2: the port had been improved and modernized (+)
- Remove old comment about optional features which apparently
no longer holds, install manual page, and disable PyGTK-based
configuration tool via CMAKE_OFF (not ported to Python 3.x)
- Prepare CMakeLists.txt for upcoming CMake update and switch
to new CMP0048 policy when setting the project version
- Use TARGETS form to install targets built within the project,
the PROGRAMS form is intended to install things that are not
targets, such as shell scripts, and does not imply stripping
we were manually doing in the `post-install' recipe before
PR: 297904
powerpc/radix: include page tables in minidumps
The radix pmap did not implement the minidump pmap callbacks, so radix
minidumps were emitted with an empty pmap section. Such dumps do not
contain enough information for libkvm to translate kernel virtual
addresses.
Snapshot the 64KB radix root table in the pmap section, add lower-level
page-table pages to the sparse dump, and include pages backing non-DMAP
kernel mappings. Keep the bulk direct map out of the dump while
retaining the relocated kernel image.
PR: 298532
Reviewed by: jhb
Approved by: jhb (mentor)
MFC after: 2 weeks
Sponsored by: FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D59743
(cherry picked from commit a38a698704b0289db3260617116a455fecdd54f6)
arm: pad minidump page table
libkvm locates the sparse page array after the page-rounded PTE table
size, but the ARM minidump writer emitted only the unrounded size. When
the table size was not page-aligned, libkvm therefore read every dumped
physical page at the wrong offset.
The mismatch was introduced when libkvm began rounding ptesize. It has
affected ARM minidumps since ffdeef323449 ("libkvm: Improve physical
address lookup scaling."). It is exposed when the dumped KVA span is not
a multiple of 4 MiB.
Zero-pad the final PTE page and include the padding in the dump size.
Reviewed by: jhb
Approved by: jhb (mentor)
Fixes: ffdeef323449 ("libkvm: Improve physical address lookup scaling.")
MFC after: 2 weeks
Sponsored by: FreeBSD Foundation
[3 lines not shown]
libkvm: support powerpc64 radix minidumps
PowerPC64 radix minidumps use a 64KB root directory followed by three
levels of 4KB page tables. Add an MMU backend which walks those tables,
handles large-page leaves, and decodes their always-big-endian entries
on both powerpc64 and powerpc64le.
Reject old radix minidumps whose pmap section is empty with a specific
diagnostic. Add a synthetic powerpc64le dump test which reads a page
through both its kernel and direct-map addresses.
PR: 298532
Reviewed by: jhb
Approved by: jhb (mentor)
MFC after: 2 weeks
Sponsored by: FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D59743
(cherry picked from commit 592ede65bd48f16e5c46a016e92b732ed90094d2)
ci: Remove Cirrus CI files
Cirrus CI shutted down its service on June 1, 2026 and its CI dashboard
website (https://cirrus-ci.com) is now inaccessible. Since these files
are no longer used, remove them from the repository.
Reviewed by: brooks, emaste, lwhsu
Approved by: olce (mentor)
MFC after: 2 weeks
Sponsored by: FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D59858
(cherry picked from commit 8d31b7856f774554ffd5bb382bd2b3f6534817a0)
powerpc/radix: synchronize temporary kernel mappings
The radix kremove implementation cleared a kernel PTE without
invalidating its TLB entry. Reusing crashdumpmap could therefore keep
accessing an old physical page, causing minidumps to contain repeated
stale page contents.
Invalidate the removed kernel mapping and synchronize newly installed
kernel PTEs before they are accessed.
Reviewed by: jhibbits
Approved by: olce (mentor)
Fixes: 65bbba25d214 ("powerpc64: Implement Radix MMU for POWER9 CPUs")
MFC after: 2 weeks
Sponsored by: FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D59728
(cherry picked from commit 8970a9f2ef781ab4f7d3fa446f7c6ac5eda26cc0)