[Hexagon] Register MachineKCFILegacy pass in LLVMInitializeHexagonTarget (#209245)
Hexagon's target-init function never called
initializeMachineKCFILegacyPass(PR), unlike X86, ARM, AArch64, and
RISCV. Since PassRegistry is process-wide and each target's init
function registers passes as a side effect when linked into the same
binary, whether test/CodeGen/Hexagon/kcfi.ll passed depended on whether
some other target providing that registration was also built into llc,
rather than on Hexagon's own configuration.
Wait for the default route to appear during docker startup check
## Problem
Apps fail to start on every boot with "Unable to determine default interface" whenever the default route is installed asynchronously -- e.g. a DHCP bridge that has to converge through STP forward-delay before dhcpcd can acquire a lease and install the route. `validate_interfaces` read the route table exactly once at system.ready and gave up immediately if no default route was present yet, so the check lost the race by a few seconds. Unsetting and re-setting the apps pool only worked around it because that re-runs the check later, after the route already exists.
## Solution
`wait_for_default_interface_link_state_up` now polls `get_default_interface()` once a second within the existing IFACE_LINK_STATE_MAX_WAIT budget instead of reading once, so a late-arriving default route is picked up rather than aborting startup. Returns (None, False) only if no default interface shows up within the whole window.
(cherry picked from commit 849a61e236a0f73c39fd115b154410d338608c5a)
NAS-141446 / 27.0.0-BETA.1 / Wait for the default route to appear during docker startup check (#19279)
## Problem
Apps fail to start on every boot with "Unable to determine default
interface" whenever the default route is installed asynchronously --
e.g. a DHCP bridge that has to converge through STP forward-delay before
dhcpcd can acquire a lease and install the route. `validate_interfaces`
read the route table exactly once at system.ready and gave up
immediately if no default route was present yet, so the check lost the
race by a few seconds. Unsetting and re-setting the apps pool only
worked around it because that re-runs the check later, after the route
already exists.
## Solution
`wait_for_default_interface_link_state_up` now polls
`get_default_interface()` once a second within the existing
IFACE_LINK_STATE_MAX_WAIT budget instead of reading once, so a
late-arriving default route is picked up rather than aborting startup.
Returns (None, False) only if no default interface shows up within the
whole window.
[SSAF] Filter out type-constrained pointers from all reachable unsafe pointers
Integrate the TypeConstrainedPointers analysis results into
UnsafeBufferReachableAnalysis. The final result is filtered with
type-constrainted pointers.
The pointer flow graph is untouched. Removing type-constrained
pointers from the graph will introduce unsoundness.
Final step for rdar://179151541&179151882
[compiler-rt][GWP-ASan] Use no-op backtrace if execinfo.h missing (#201266)
Guard backtrace_linux_libc.cpp with __has_include(<execinfo.h>) so that
targets without it (e.g. musl libc) get null stubs instead of a build
failure.
ena: Put taskqueues into correct domain if !RSS
When compiled without 'options RSS', the ena driver created taskqueues
using taskqueue_start_threads_cpuset passing a mask value of NULL,
both in the ena_setup_tx_resources path (for enqueues) and in the
ena_create_io_queues path (for the completion-processing).
In the default configuration, on most EC2 instances, this results in
taskqueues running in the right NUMA domain, but only by accident; in
non-default configurations (e.g. with with multiple EBS volumes
attached and associated NVMe taskqueues) the taskqueues may land in
the wrong NUMA domain even on instance types where the one-EBS-one-ENA
case produces the desired results.
Set (struct ena_que)->domain and use that to inform the choice of CPU
sets. On a c8gn.48xlarge EC2 instance this doubles throughput on a
32-TCP-stream benchmark.
Reviewed by: akiyano
[3 lines not shown]
[BPF][NewPM] Port AsmPrinter
This is necessary to make the new pass manager fully supported for BPF.
This should be the last patch in the series.
Reviewers: yonghong-song, arsenm, eddyz87
Pull Request: https://github.com/llvm/llvm-project/pull/207854
[BPF][NewPM] Port BPFMIPreEmitCheckingPass
Standard pass porting. Needed to make BPF fully support the NewPM.
Reviewers: yonghong-song, aeubanks, eddyz87
Pull Request: https://github.com/llvm/llvm-project/pull/207850
[BPF][NewPM] Port BPFMIPreEmitPeepholePass
Standard pass porting. This is needed for BPF to fully support the new
pass manager.
Reviewers: eddyz87, yonghong-song, aeubanks
Pull Request: https://github.com/llvm/llvm-project/pull/207847
make authorized_keys "restrict" keyword apply correctly to tunnel
forwarding (which is administratively disabled by default).
Reported by Erichen, Institute of Computing Technology,
Chinese Academy of Sciences
[BPF][NewPM] Port BPFMIExpandStackArgPseudosPass
Standard pass porting. Required to get BPF fully working with the NewPM.
Reviewers: eddyz87, aeubanks, yonghong-song
Pull Request: https://github.com/llvm/llvm-project/pull/207845
[lldb/script] Add scripted extension base-class templates for hooks and breakpoint resolvers (#209311)
This patch adds the Python base-class templates for `ScriptedHook` (a
unified base class that backs both `target hook add -P` and `target
stop-hook add -P`) and `ScriptedBreakpointResolver`, and wires them into
the Python bindings and docs CMake so every scriptable extension kind
has a template that the docs and future tooling can introspect.
The `ScriptedHook` template unifies what used to require separate
subclasses for target hooks and stop hooks: subclasses implement
`handle_stop` (required, so any hook is a valid stop-hook) and
optionally `handle_module_loaded` / `handle_module_unloaded`, which only
fire for hooks registered via `target hook add -P`.
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
[BPF] Split stack argument psuedo expansion into a separate pass
This will make the NewPM implementation cleaner given now the two passes
are either required/optional rather than like BPFMIPreEmitPeepholePass
before, which was partially required (for stack argument psuedo
expansion), and optional for other peephole optimizations. I think this
is also a cleaner design in general.
Reviewers: aeubanks, eddyz87, yonghong-song
Pull Request: https://github.com/llvm/llvm-project/pull/207844
[BPF][NewPM] Port BPFMIPeephole
Standard pass porting. Needed to make BPF work fully with the NewPM.
Reviewers: eddyz87, yonghong-song, aeubanks
Pull Request: https://github.com/llvm/llvm-project/pull/207805
[BPF][NewPM] Port BPFMISimplifyPatchablePass
Standard pass porting. Needed to get the BPF backend fully working with
the NewPM.
Reviewers: aeubanks, eddyz87, yonghong-song
Pull Request: https://github.com/llvm/llvm-project/pull/207800