Improve the executable name detection in ELF core files. (#197341)
A previous commit switched us to use the value of the AT_EXECFN, which
is an entry in the aux vector, as the executable path. As it turns out,
if a symlink is used to launch a program, the symlink path will be in
the AT_EXECFN string in core file memory. The PRPSINFO also contains a
basename of the program, and it will also be the symlink basename. The
best source of information to figure out the executable name is from the
NT_FILE note. This always has the resolved path to the executable.
Now the executable name is found in a reliable way starting with finding
the NT_FILE entry for the main executable. This can reliably be done by
finding the NT_FILE entry whose address contains the AT_PHDR aux vector
value. This value is the address of the program headers for the main
executable. If there is no NT_FILE entry we can find, we fall back to
the AT_EXECFN entry from memory and then fallback to the basename in the
PRPSINFO. This patch also creates a placeholder as the main executable
when the executable can't be found to ensure users can see which
executable they will need to track down in order to load the core file.
[8 lines not shown]
[Instrumentor][NFC] Add docs and config-wizard script (#197066)
This commit adds initial documentation for the instrumentor to the
html/man pages and provides a script that helps new users to setup the
config and stubs file interactively.
The script and docs have been created with Claude (AI) but
proofread/tested and modified afterwards.
ZTS: zhack_metaslab_leak.ksh busy export
If the pool is active 'zpool export' will fail resulting in
a test failure. Swap log_must with log_must_busy so the export
is retried when reported as busy before failing the test.
Reviewed-by: Tony Hutter <hutter2 at llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Closes #18512
[AMDGPU] Validate forced lit() immediate
Right now it takes validation path of an inline constant if fits
even though it is forced to literal encoding.
[LSV] Handle or-disjoint as an add-like operation for vectorization. (#197243)
LoadStoreVectorizer can safely handle `or disjoint` instructions as
`add nuw nsw`, when they are used for offset computations. This patch
enables vectorization of such patterns.
Assisted-by: Claude Opus 4.6 <noreply at anthropic.com>
[Instrumentor] Add a property filter for static properties
The user can define static filters in the json to limit instrumentation
to opportunities that match the static expression, e.g., is_volatile==1.
The matcher logic is pretty basic for now. Integer comparisons, string
equalities and startswith are supported.
The commit was prepared with Claude (AI) and proofread/tested by me.
[AMDGPU] Fix forced lit64 encoding on lit() modifier (#197561)
We were forcing lit64 encoding on a 64-bit operand with lit()
modifier. This is not required, not compatible with SP3, and
in the pathalogical case creates invalid 4 dword encoding if
used with a VOP3* instruction.
That said if lit() is used the immediate is silently truncated
even before the encoding, so the encoder only sees 32-bits of
relevant data and 32-bits of zeroes anyway. That is a separate
issue, but we never had a true 64-bit constant really properly
encoded with lit() modifier, only with lit64().
[Instrumentor] Allow multiple config files with different filters (#196235)
To instrument different functions in different ways we allow to provide
multiple config files now. Each file will result in one instrumentation
run. Multiple files can be passed via command line option or listed in a
"summary" file that is passed via command line option (to keep the
command length managable).
[scudo] Add unit tests for optional config flags
This patch adds checks for all optional configuration flags defined in
allocator_config.def to allocator_config_test.cpp. This increases the
code coverage of allocator_config_wrapper.h by exercising the template
instantiations for these optional flags.
[CodeGen] Add initial multi-def rematerialization support
This significantly improves support for rematerializing registers
with more than one definition. In particular, this includes cases where
different lanes of a register are defined over multiple instructions.
There are still a few restrictions that can hopefully be relaxed in the
future.
- All defining instructions must be part of the same rematerialization
region.
- No pure user of the register (i.e., an MI that doesn't also defined a
part of the register) must read the register before its last
definition.
These constraints ensure that the underlying DAG representation
maintained by the rematerializer is still valid, making this a
relatively incremental improvement.
[CIR] Lower C++23 static call/subscript operators correctly
C++23 static `operator()` (P1169R4) and static `operator[]` (P2589R1)
still produce a CXXOperatorCallExpr in the AST, but the resolved
CXXMethodDecl is static, so they should be lowered as ordinary static
function calls -- not routed through the implicit-object member call
path.
CIRGenFunction::emitCallExpr previously dispatched any
CXXOperatorCallExpr whose callee was a CXXMethodDecl into
emitCXXOperatorMemberCallExpr, which asserts md->isInstance(). Every
C++23 static-operator call therefore hit:
Assertion `md->isInstance() &&
"Trying to emit a member call expr on a static method!"' failed
This dominates libcxx-with-CIR failures (~33% of fails in a partial
`std/` run on the May 2026 ClangIR baseline) since recent libcxx
threads `static constexpr operator()` through its functor types.
[27 lines not shown]
Fix ZFS page validation and Next button reliability
Replace the swap size text entry with a SpinButton capped to the
selected disk size, consolidate _disk_count_valid and _update_next_button
into a single _is_ready method that checks all preconditions, update the
Next button from on_password_changed so it disables when passwords stop
matching, re-enable the Next button in back_page so navigating back no
longer leaves it stuck disabled, reduce the left panel gap, and fix a
startup crash from mirror_selection firing before swap_entry was created.
[Support] Faster line and column lookup in SourceMgr (#195881)
Previously line and column lookup worked by finding the line number by
utilizing a cache of offsets of line ends. And finding the column number
by linear search of a previous newline. This is quite slow and caused
some issues after merging #174566 and was fixed by wrapping all calls of
the slow function in a `if (ParserContext)` in #180068. This is not
ideal, since when the parser context would be supplied the parsing of
files with long lines will take ages.
This PR implements a fix to the problem by utilizing the computed
offsets for line ends to calculate the position on the current line.
Thus improving the asymptotic complexity of the getLineAndColumn method
from O(log l + c) to O(log l) (l is number of lines, c is column
position of the pointer). While not adding any overhead.
The second commit in this PR just updates two comments that I thought
were misleading.
[2 lines not shown]
[Instrumentor] Allow multiple config files with different filters
To instrument different functions in different ways we allow to provide
multiple config files now. Each file will result in one instrumentation
run. Multiple files can be passed via command line option or listed in
a "summary" file that is passed via command line option (to keep the
command length managable).
[Instrumentor] Add a global function regexp to limit the instrumentation (#197577)
Only functions that match the "function_regex" will be instrumented, or
if they have the instrumentation attribute.
Duplicate of https://github.com/llvm/llvm-project/pull/196234 because I
messed up the stacked commits.
[MLIR][XeGPU] Honor convert_layout's input_layout when resolving layout conflict (#194935)
This PR changes getConsumerLayoutAt now to return the input_layout
attribute directly when the consuming op is xegpu.convert_layout, since
its required operand layout is explicitly declared rather than inferable
from the result. This lets ResolveLayoutConflicts detect a real mismatch
against the producer's layout and insert a bridging convert_layout,
instead of being masked by the fallback that returned the producer's own
layout.
[SSAF] Let UnsafeBufferUsageExtractor & PointerFlowExtractor ignore templates
Templates are ignored for two reasons:
- Template instantiations are still handled. Template facts can be
inferred from their instantiations.
- Template ASTs may have extra kinds of expressions (e.g.,
ParenListExpr) that are hard to handle because of their dependent
nature.
[SSAF] Increase Expr kind coverage in EntityPointerLevelTranslator
Add support for more kinds of Expr that can be translated to
EntityPointerLevel(s).
Additionally, fix bugs in PointerFlowExtractor discovered by tests
added for the new Expr kinds.
[CodeGen] Add initial multi-def rematerialization support
This significantly improves support for rematerializing registers
with more than one definition. In particular, this includes cases where
different lanes of a register are defined over multiple instructions.
There are still a few restrictions that can hopefully be relaxed in the
future.
- All defining instructions must be part of the same rematerialization
region.
- No pure user of the register (i.e., an MI that doesn't also defined a
part of the register) must read the register before its last
definition.
These constraints ensure that the underlying DAG representation
maintained by the rematerializer is still valid, making this a
relatively incremental improvement.
(math/R) Updated 4.5.2 to 4.5.3, another update may follow,:
CHANGES IN R 4.5.3:
UTILITIES:
* tools/fetch-recommended can be used instead of
tools/rsync-recommended to fetch recommended packages into R
sources using curl on systems without rsync or behind firewalls.
PACKAGE INSTALLATION:
* C++ standard specifications (CXX_STD = in src/Makevars* and in
the SystemRequirements field of the DESCRIPTION file) are now
checked more thoroughly. Invalid values are still ignored but
now give a warning, as do contradictory specifications.
* (Preliminary) support for C++26 has been extended to Windows.
[51 lines not shown]