[clang][CodeGen] Emit callee_type metadata for all indirect calls
CodeGenFunction::EmitCall only attached the call graph section callee_type
metadata to an indirect call when its caller asked for the emitted call
instruction through the callOrInvoke out parameter, because the emission
was nested in the block that stores it. Indirect calls emitted by callers
that do not pass callOrInvoke, such as the virtual destructor call of a
delete expression (emitVirtualObjectDelete -> EmitCXXDestructorCall), got
no callee_type metadata and therefore no indirect callee type identifiers
in the .llvm.callgraph section, so the call graph missed those edges.
Attach the metadata to the emitted call instruction regardless of whether
the caller asked for it.
Stacked on #230831.
Assisted-by: Claude
[clang][CodeGen] Identify virtual methods by their override chain root in the call graph section
A virtual call site is typed after the method named at the call site, but it
can reach any overrider of that method, and overriders may differ from it in
their covariant return type. In that case the `!callee_type` identifier of a
call through a base class pointer did not match the `!callgraph` identifier
of the overrider, and the call graph section missed the edge.
Identify every method of an override chain, at definitions, call sites and
thunks, by the type of the method that introduced the virtual function, so
that virtual calls through a pointer to any class of the hierarchy match the
overriders they can reach. While here, attach `!callgraph` with `setMetadata`
so that a function carries exactly one identifier.
Assisted-by: Claude
www/{nginx,nginx-devel,freenginx}: 3rd-party modules management
Announce the removal of the HTTP_UPSTREAM_FAIR option after 2026-12-31.
nginx can balance by least connections itself.
Sponsored by: Netzkommune GmbH
[SLP]Drop wrap flags for negated lanes with constant expressions
Only ConstantInt operands are negated, so drop nsw/nuw on
a non-constant-int constants.
Follow-up to #230453.
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/230835
[clang][CodeGen] Emit callee_type metadata for all indirect calls
CodeGenFunction::EmitCall only attached the call graph section callee_type
metadata to an indirect call when its caller asked for the emitted call
instruction through the callOrInvoke out parameter, because the emission
was nested in the block that stores it. Indirect calls emitted by callers
that do not pass callOrInvoke, such as the virtual destructor call of a
delete expression (emitVirtualObjectDelete -> EmitCXXDestructorCall), got
no callee_type metadata and therefore no indirect callee type identifiers
in the .llvm.callgraph section, so the call graph missed those edges.
Attach the metadata to the emitted call instruction regardless of whether
the caller asked for it.
Stacked on #230831.
Assisted-by: Claude
virtual_oss(8): Fix cuse.ko check
There is no need at all to load the cuse module to just access the tool help.
kldload always checks for permissions first returning -EPERM if the user can't
load modules and -EEXIST if the user can, but the module is already loaded.
Approved by: christos@
Differential Revision: https://reviews.freebsd.org/D59844
MFC after: 2 weeks
(cherry picked from commit 5aac18d0faec96c768baf1a9de63a50de3796023)
zk: Update to 0.15.6
Changes:
0.15.6
Added
- Parse links to notes in frontmatter
- Set filters for lsp completion items from the config
- Set a note's modification time in frontmatter and allow for custom key naming
for both creation and modification keys
Fixed
- Indexing made significantly more performant
- Support filtering by date and time with `"<date> <time>"` instead of
`<date>T<time>` only
- Exclude globs now prune matching directories from indexing, improving speed of
indexing
0.15.5
Added
[27 lines not shown]
[clang][CodeGen] Identify virtual methods by their override chain root in the call graph section
A virtual call site is annotated with the type of the method named at the
call site (e.g. `Base::clone` for `b->clone()` with `b` of type `Base *`),
but it can reach any overrider of that method. Overriders may differ from
the overridden method only in their covariant return type, in which case
their call graph section type identifier (`!callgraph`) did not match the
type identifier of the call site (`!callee_type`), so the call graph
missed the edge: `Derived *Derived::clone()` was identified as
`_ZTSFP7DerivedvE`, while calls through `Base *` were typed
`_ZTSFP4BasevE`.
Identify every method of an override chain, at the definition and at the
call site, by the type of the method that introduced the virtual function
(the root of the override chain), so that virtual calls through a pointer
to any class of the hierarchy match the overriders they can reach. A
method that overrides several virtual functions with different covariant
return types is identified after the first one; the return adjusting
thunks that fill the vtable slots created by the other overridden methods
[14 lines not shown]
nuclei: Update to 3.11.1
pkgsrc changes:
- Drop MAINTAINERship
Changes:
v3.11.1
New Features
* Improving lua script with args and values
Bug Fixes
* feat(lib): reuse metadata cache across thread-safe scans
Maintenance
* Bump dependencies
v3.11.0
Breaking Change
* Signed templates required for JavaScript protocol
Starting with v3.11.0, custom templates that use the `javascript:`
protocol must be digitally signed before Nuclei will load or execute
[43 lines not shown]
LinuxKPI: introduce LINUXKPI_DEBUG to enable LinuxKPI debugging
This allows us to build kernels which will (if the sysctl is enabled
too) show pr_debug() and pr_devel() output.
Enable it by default for debug kernels.
This option can later also be used for other LinuxKPI parts, like
skbuffs, netdevice, rcu, ... to conditionally compile in debugging
support to further justify its existence beyond an in-code #define.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dumbbell, emaste
Differential Revision: https://reviews.freebsd.org/D54060
LinuxKPI: use LINUXKPI_DEBUG to determine on witness lock tracing
LinuxKPI by default tells witness to ignore the locks, which is
unhelpful in case of panics like 'panic: sleeping thread holds lnxspin'.
While I have edited the lock initialitzation manually in the past,
make this dependent on both LINUXKPI_DEBUG and WITNESS.
Define an internal _LKPI_MTX_NOWITNESS (and equivalent for other lock
types used) and set them accordingly in kconfig.h, a file automatically
included to all LinuxKPI compiled code (like global.h). (*)
In addition, in the debug case, also define WITNESS_ALL to get file,
line, and lock name as a lock name rather than just, e.g., lnxspin.
(*) We will need another follow-up as -include ordering is currently
wrong for LinuxKPI modules. See D60207.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dumbbell
Differential Revision: https://reviews.freebsd.org/D59231
LinuxKPI: re-implement pm_runtime.h
The original implementation was based on OpenBSD under public domain
but just defined the functions to void.
FreeBSD later extended the file with more inline functions or dealing
with differences in Linux versions.
This rework tries to group some functions, adds properly typed arguments
and return values in some cases.
It further adjusts return values based on the !CONFIG_PM expectations.
Lastly pr_debug() calls are added so we could see if/how much these
functions are used in new/other works rather than code just compiling
but the functions entirely being ignored without the knowledge of the
person porting code.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dumbbell
Differential Revision: https://reviews.freebsd.org/D58169
LinuxKPI; factor out parts of device.h into device/devres.h
In [1] it was pointed out that devm_kmemdup_* have moved apparently
in Linux 7.0 into their own device/devres.h header file from device.h.
Move them and other parts (some being dependencies) along.
device/devres.h gets included from device.h so all that changes is
prototype, macro, and inline function ordering.
This should prepare us in case drivers start directly including
the sub-header. It also helps to keep device.h more reasable.
Suggested by: dumbbell (in D56396) [1]
MFC after: 3 days
Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D60213
lindebugfs: implement debugfs_create_devm_seqfile()
Implement debugfs_create_devm_seqfile() keyed by device and a
read function.
This was implemented months ago in order to support debugfs with mt76
but hasn't been exercised since.
The code does not really seem to belong in lindebugfs, but also does
not really fit into debugfs.h (rather fs.h?); leave it here with a
comment for now as neither dumbbell nor I could come up with a better
place.
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dumbbell
Differential Revision: https://reviews.freebsd.org/D57524