[libc++][test] Mark `UNSUPPORTED` for a test relying on `[[clang::trivial_abi]]` for compilers not supporting it (#211736)
This patch marks `UNSUPPORTED` for compilers not supporting
`[[clang::trivial_abi]]` (MSVC and GCC earlier than GCC 17) for a test
relying on this attribute.
[ORC] Fix and rename SymbolLookupSet::removeDuplicates (#216574)
removeDuplicates uniqued on the (name, flags) pair, so a name appearing
with both RequiredSymbol and WeaklyReferencedSymbol survived twice --
leaving a set that containsDuplicates, which compares names only, still
reported as duplicated.
Replace it with mergeEntries, which merges by name. Where entries
disagree on flags the strongest requirement wins, so a missing
definition still fails the lookup. Renamed because the entries being
merged need not be exact duplicates.
removeDuplicates had no in-tree callers, so no existing behaviour
changes. Also adds a unit test for mergeEntries -- the first direct
coverage for SymbolLookupSet.
[orc-rt] Add StringPool for interning ref-counted strings. (#216571)
Adds StringPool, a thread-safe pool for interning strings (e.g. symbol
names, paths) behind ref-counted PooledStringPtr handles.
PooledStringPtr and NonOwningPooledStringPtr compare and hash by
pool-scoped pointer identity rather than content, and clearDeadEntries()
reclaims entries with no remaining owners.
No in-tree clients yet: I expect to use this in future commits for the
platform support classes.
[NFC][SLP] Add a mixed-reassoc bundle to the operand-1 fma test (#216594)
One lane carries reassoc and the other three do not, so the bundle is
only partly reassociative. Also add a second threshold to the run lines.
iflib: Add restart transactions for IOV reconfiguration
Some devices remap the PF queues when entering or leaving SR-IOV. Add
opt-in PCI IOV helpers that hold the iflib context lock across the
complete stop, driver callback, and restart transaction.
Existing drivers continue to use the non-restarting helpers.
Sponsored by: BBOX.io
(cherry picked from commit f8fa2d77bc305bec519f9f02afe211e903c57573)
iflib: Add restart transactions for IOV reconfiguration
Some devices remap the PF queues when entering or leaving SR-IOV. Add
opt-in PCI IOV helpers that hold the iflib context lock across the
complete stop, driver callback, and restart transaction.
Existing drivers continue to use the non-restarting helpers.
Sponsored by: BBOX.io
(cherry picked from commit f8fa2d77bc305bec519f9f02afe211e903c57573)
ddb(4), crash(8): Make `show all locks' work without LOCKDEBUG.
Any lwp currently waiting for a _contended_ lock will now record a
pointer to that lock in struct lwp::l_ld_wanted, even without
LOCKDEBUG. We can't tell who holds shared locks or spin locks, but we
can at least tell what lock a thread is waiting for when it's spinning
for a spin lock, and generally present the graph of current lock
dependencies reasonably well this way.
PR kern/60030: ddb/crash: show all locks without LOCKDEBUG
kernel: Track what lock each lwp is waiting for without LOCKDEBUG.
This is reasonably cheap -- one extra pointer on the stack, couple
extra stores when _waiting_ (spinning or sleeping) for a _contended_
lock -- and doesn't change the kernel ABI. Will enable us to get
diagnostics from crash dumps when, e.g., there's a softint deadlock
tripping a heartbeat panic.
PR kern/60030: ddb/crash: show all locks without LOCKDEBUG
linux: unbreak arm64 linux_emul_md.c after pkey syscalls
linux_emul.h uses struct image_args without a file-scope forward
declaration. The new arm64 (and i386) stubs include that header
without imgact.h first, which fails the build under -Werror.
Include it the same way linux_pkru.c already does, and declare the
type next to struct image_params so the header is self-contained.
Reported by: tuexen
Fixes: bdb561843e86
MFC after: 1 month
"if PWD references the current directory, then PWD is assumed to be the
name of the current directory" is tautologically confusing.
Just state that for '-L' $PWD is _printed_ (under the right circumstances).
[SandboxVectorizer] Fix out-of-bounds SeedBundle access on cross-bundle erasure
SeedCollection::runOnFunction() indexed a SeedBundle at
Seeds.getFirstUnusedElementIdx() (and, separately, at a hardcoded 0) without
first checking whether the bundle was already fully used.
getFirstUnusedElementIdx() returns Seeds.size() -- one past the end -- once
everything is used, so indexing there reads out of bounds.
This was always a latent bug, but -sbvec-collect-seeds=stores,loads is what
actually exposes it: store and load seeds share one erase-instruction
callback (SeedContainer::erase()), so when vectorizing a store chain erases
a load it packed as an operand, that erase also marks the same load "used"
in its *independent* LoadSeeds bundle. Store seeds are processed first, so
by the time the outer loop reaches that LoadSeeds bundle, it can already be
fully consumed -- or, since cross-bundle erasure can mark any index used
(not just sequentially from the front), have its element 0 specifically
erased while other elements remain live, which broke the hardcoded Seeds[0]
address-space lookup the same way.
[12 lines not shown]