LLVM/project 07137cellvm/lib/CodeGen CFIFixup.cpp, llvm/test/CodeGen/AArch64 cfi-fixup-multi-section.mir

[CFIFixup] Add frame info to the first block of each section (#113626)

Now that `-fbasic-block-sections=list` is enabled for Arm, functions may
be split aross multiple sections, and CFI information must be handled
independently for each section.

On x86, this is handled in `llvm/lib/CodeGen/CFIInstrInserter.cpp`.
However, this pass does not run on Arm, so we must add logic for it
to `llvm/lib/CodeGen/CFIFixup.cpp`.
DeltaFile
+200-0llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir
+58-11llvm/lib/CodeGen/CFIFixup.cpp
+258-112 files

FreeBSD/src 87e87fetools/tools/nanobsd legacy.sh

nanobsd: Remove dependency on bsdlabel

The bsdlabel utility is deprecated, gpart should be used instead:

  - Offset the first 16 sectors, just like bsdlabel did (used for
    metadata)
  - Use a freebsd-ufs partition type (regardless bsdlabel creating a
    '!0')

Reviewed by:    emaste, imp
Approved by:    emaste (mentor)
MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D47653
DeltaFile
+3-2tools/tools/nanobsd/legacy.sh
+3-21 files

FreeBSD/src accf715sys/geom/part g_part_bsd.c

geom: Allow BSD type '!0' partitions

Allow the creation of '!0' partition types.

Fix it by not considering "0" an invalid partition type.

Reviewed by:    emaste
Approved by:    emaste (mentor)
MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D47652
DeltaFile
+1-1sys/geom/part/g_part_bsd.c
+1-11 files

LLVM/project c58c226llvm/lib/Target/AArch64 AArch64SMEInstrInfo.td

[AArch64][SME] Fix naming of FMLS_VG4_M4Z2Z_H -> FMLS_VG4_M4Z4Z_H. NFC.

Similar to the FMLA_VG2_M2Z2Z_H one.
DeltaFile
+1-1llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
+1-11 files

LLVM/project a44d60fllvm/include/llvm/IR Value.h, llvm/lib/Analysis MemoryBuiltins.cpp

Revert "[llvm] Improve llvm.objectsize computation by computing GEP, alloca and malloc parameters bound" (#117020)

Reverts llvm/llvm-project#115522

This caused UBSan errors in multi-stage clang build:

https://lab.llvm.org/buildbot/#/builders/25/builds/4241/steps/10/logs/stdio
DeltaFile
+0-109llvm/test/Transforms/LowerConstantIntrinsics/builtin-object-size-range.ll
+4-104llvm/lib/Analysis/MemoryBuiltins.cpp
+4-8llvm/include/llvm/IR/Value.h
+8-2213 files

LLVM/project f06c187lldb/source/Plugins/SymbolFile/DWARF DWARFDIE.cpp SymbolFileDWARF.cpp, lldb/test/Shell/SymbolFile/DWARF/x86 simplified-template-names.cpp

 [lldb][dwarf] Compute fully qualified names on simplified template names with DWARFTypePrinter (#117071)

This is a reland of https://github.com/llvm/llvm-project/pull/112811.
Fixed the bot breakage by running ld.lld explicitly.
DeltaFile
+125-0lldb/unittests/SymbolFile/DWARF/DWARFDIETest.cpp
+37-0lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
+9-27lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+36-0lldb/test/Shell/SymbolFile/DWARF/x86/simplified-template-names.cpp
+21-12llvm/include/llvm/DebugInfo/DWARF/DWARFTypePrinter.h
+25-0lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
+253-398 files not shown
+309-7014 files

FreeNAS/freenas 27ad0a9tests/api2 test_261_iscsi_cmd.py test_300_nfs.py

Remove tests
DeltaFile
+0-2,718tests/api2/test_261_iscsi_cmd.py
+0-1,872tests/api2/test_300_nfs.py
+0-1,404tests/api2/test_200_ftp.py
+0-938tests/api2/test_345_acl_nfs4.py
+0-812tests/api2/test_425_smb_protocol.py
+0-694tests/api2/test_011_user.py
+0-8,438245 files not shown
+0-34,877251 files

LLVM/project 1c8ac4clibcxx/utils/ci docker-compose.yml

[libc++][Android] BuildKite CI: update Clang and sysroot versions (#116151)

Android clang-r536225 identifies as Clang 19 but it predates LLVM
19.0.0. It is based off of fc57f88f007497a4ead0ec8607ac66e1847b02d6.
DeltaFile
+3-3libcxx/utils/ci/docker-compose.yml
+3-31 files

LLVM/project 9ebc6f5libcxx/include thread, libcxx/test/benchmarks stop_token.bench.cpp atomic_wait_vs_mutex_lock.bench.cpp

[libc++] Include headers in <thread> conditionally (#116539)

DeltaFile
+9-10libcxx/include/thread
+1-3libcxx/test/std/thread/thread.semaphore/max.pass.cpp
+1-1libcxx/test/benchmarks/stop_token.bench.cpp
+1-1libcxx/test/benchmarks/atomic_wait_vs_mutex_lock.bench.cpp
+1-0libcxx/test/libcxx/thread/thread.stoptoken/atomic_unique_lock.pass.cpp
+1-0libcxx/test/benchmarks/atomic_wait.bench.cpp
+14-156 files

LLVM/project 8f53a67libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array sized_delete_array14.pass.cpp, libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single sized_delete14.pass.cpp

[libc++][Android] Allow testing libc++ with clang-r536225 (#116149)

The Android clang-r536225 compiler identifies as Clang 19, but it is
based on commit fc57f88f007497a4ead0ec8607ac66e1847b02d6, which predates
the official LLVM 19.0.0 release.

Some tests need fixes:

* The sized delete tests fail because clang-r536225 leaves sized
deallocation off by default.

* std::array<T[0]> is true when this Android Clang version is used with
a trunk libc++, but we expect it to be false in the test. In practice,
Clang and libc++ usually come from the same commit on Android.
DeltaFile
+8-0libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/is_array.pass.cpp
+4-0libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array14.pass.cpp
+4-0libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete14.pass.cpp
+16-03 files

LLVM/project ec5b729llvm/unittests/ProfileData InstrProfTest.cpp

[memprof] Upgrade a unit test to MemProf Version 3 (#117063)

This patch upgrades a unit test to MemProf Version 3 while removing
those bits that cannot be upgraded to Version 3.

The bits being removed expect instrprof_error::hash_mismatch from a
broken MemProf profile that references a frame that doesn't actually
exist.  Now, Version 3 no longer issues
instrprof_error::hash_mismatch.  Even if it still issued
instrprof_error::hash_mismatch, we would have a couple of hurdles:

- InstrProfWriter::addMemProfData will soon require all (or none) of
  the fields (frames, call stacks, and records) be populated.  That
  is, it won't accept an instance of IndexedMemProfData with frames
  missing.

- writeMemProfV3 asserts that every frame occurs at least once:

  assert(MemProfData.Frames.size() == FrameHistogram.size());

    [2 lines not shown]
DeltaFile
+3-19llvm/unittests/ProfileData/InstrProfTest.cpp
+3-191 files

LLVM/project 9be475alibc/fuzzing/__support freelist_heap_fuzz.cpp, libc/src/__support freelist.h freetrie.h

Revert "[libc] Use best-fit binary trie to make malloc logarithmic" (#117065)

Reverts llvm/llvm-project#106259

Unit tests break on AArch64.
DeltaFile
+181-61libc/src/__support/freelist.h
+0-237libc/src/__support/freetrie.h
+0-227libc/fuzzing/__support/freelist_heap_fuzz.cpp
+143-28libc/test/src/__support/freelist_test.cpp
+85-68libc/src/__support/freelist_heap.h
+0-125libc/test/src/__support/freetrie_test.cpp
+409-74612 files not shown
+472-1,18218 files

LLVM/project c3207c3libc/fuzzing/__support freelist_heap_fuzz.cpp, libc/src/__support freelist.h freetrie.h

[libc] Use best-fit binary trie to make malloc logarithmic (#106259)

This reworks the free store implementation in libc's malloc to use a
dlmalloc-style binary trie of circularly linked FIFO free lists. This
data structure can be maintained in logarithmic time, but it still
permits a relatively small implementation compared to other
logarithmic-time ordered maps.

The implementation doesn't do the various bitwise tricks or
optimizations used in actual dlmalloc; it instead optimizes for
(relative) readability and minimum code size. Specific optimization can
be added as necessary given future profiling.
DeltaFile
+61-181libc/src/__support/freelist.h
+237-0libc/src/__support/freetrie.h
+227-0libc/fuzzing/__support/freelist_heap_fuzz.cpp
+28-143libc/test/src/__support/freelist_test.cpp
+68-85libc/src/__support/freelist_heap.h
+125-0libc/test/src/__support/freetrie_test.cpp
+746-40912 files not shown
+1,182-47218 files

FreeNAS/freenas 7ff9617tests/api2 test_smb_write_offset.py

Add test for maximum SMB valid pwrite range

We need to validate we can write above 16 TiB offset and that
we get properly stopped writing about 64 TiB offset.
DeltaFile
+60-0tests/api2/test_smb_write_offset.py
+60-01 files

FreeNAS/freenas a361751src/freenas/etc/systemd/system/snmpd.service.d override.conf, src/middlewared/middlewared/plugins snmp.py

Add midclt call to snmpd override before service start.
DeltaFile
+16-11src/middlewared/middlewared/plugins/snmp.py
+0-9src/middlewared/middlewared/plugins/service_/services/snmp.py
+8-0src/middlewared/middlewared/plugins/snmp_/utils_snmp_user.py
+3-0src/freenas/etc/systemd/system/snmpd.service.d/override.conf
+27-204 files

LLVM/project 4087b87llvm/test/CodeGen/RISCV/GlobalISel/instruction-select jump-table-brjt-rv32.mir jump-table-brjt-pic-rv64.mir, llvm/test/CodeGen/RISCV/GlobalISel/legalizer legalize-jump-table-brjt-pic-rv64.mir legalize-jump-table-brjt-small-rv64.mir

[RISCV][GISel] Move G_BRJT expansion to legalization (#73711)

Instead of custom selecting a bunch of instructions, we can expand to
generic MIR during legalization.
DeltaFile
+0-213llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/jump-table-brjt-rv32.mir
+163-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-jump-table-brjt-pic-rv64.mir
+163-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-jump-table-brjt-small-rv64.mir
+162-0llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-jump-table-brjt-medium-rv64.mir
+0-161llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/jump-table-brjt-pic-rv64.mir
+0-161llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/jump-table-brjt-small-rv64.mir
+488-5359 files not shown
+716-1,06915 files

FreeBSD/src 08d0ebeshare/man/man5 pf.conf.5, sys/netpfil/pf pf_lb.c

pf: Let rdr rules modify the src port if doing so would avoid a conflict

If NAT rules cause inbound connections to different external IPs to be
mapped to the same internal IP, and some application uses the same
source port for multiple such connections, rdr translation may result in
conflicts that cause some of the connections to be dropped.

Address this by letting rdr rules detect state conflicts and modulate
the source port to avoid them.

Reviewed by:    kp, allanjude
MFC after:      3 months
Sponsored by:   Klara, Inc.
Sponsored by:   Modirum
Differential Revision:  https://reviews.freebsd.org/D44488

(cherry picked from commit 9897a66923a3e79c22fcbd4bc80afae9eb9f277c)
DeltaFile
+100-0tests/sys/netpfil/pf/rdr.sh
+63-7sys/netpfil/pf/pf_lb.c
+20-0tests/sys/netpfil/pf/rdr-srcport.py
+7-2share/man/man5/pf.conf.5
+1-0tests/sys/netpfil/pf/Makefile
+191-95 files

FreeBSD/src f5b3ce0tests/sys/netpfil/pf rdr.sh

pf: Correct SPDX identifier

Pointed out by: Mike Karels <karels at FreeBSD.org>

(cherry picked from commit 3db693f7da8a1aaf0a8887e7791ebb5d67c7a2d9)
DeltaFile
+1-1tests/sys/netpfil/pf/rdr.sh
+1-11 files

FreeBSD/src 5df4037sys/net pfvar.h, sys/netpfil/pf pf_lb.c pf.c

pf: Make pf_get_translation() more expressive

Currently pf_get_translation() returns a pointer to a matching
nat/rdr/binat rule, or NULL if no rule was matched or an error occurred
while applying the translation.  That is, we don't distinguish between
errors and the lack of a matching rule.  This, if an error (e.g., a
memory allocation failure or a state conflict) occurs, we simply handle
the packet as if no translation rule was present.  This is not
desireable.

Make pf_get_translation() return the matching rule as an out-param and
instead return a reason code which indicates whether there was no
translation rule, or there was a translation rule and we failed to apply
it, or there was a translation rule and we applied it successfully.

Reviewed by:    kp, allanjude
MFC after:      3 months
Sponsored by:   Klara, Inc.
Sponsored by:   Modirum

    [3 lines not shown]
DeltaFile
+38-19sys/netpfil/pf/pf_lb.c
+14-4sys/netpfil/pf/pf.c
+3-2sys/net/pfvar.h
+55-253 files

FreeBSD/src f4f4c52sys/netpfil/pf pf_lb.c

pf: Let pf_state_insert() handle redirect state conflicts

When handling a redirect state conflict, pf_get_translation() tries
modifying the source port to avoid it.  If it fails to find a free port,
the translation is aborted.

Instead, if we fail to find a free source port, simply press on with the
original source port and let pf_state_insert() handle the conflict as it
pleases, rather than second-guessing what it will do.  In particular,
pf_state_insert() has special handling for TCP connections in a terminal
state, and might succeed despite a state conflict.

Reviewed by:    kp
MFC after:      3 months
Sponsored by:   Klara, Inc.
Sponsored by:   Modirum
Differential Revision:  https://reviews.freebsd.org/D46612

(cherry picked from commit 9569fddd8d0e48211e67fdc63dd72eba83883525)
DeltaFile
+8-3sys/netpfil/pf/pf_lb.c
+8-31 files

FreeBSD/src 3afdae4sys/dev/gve gve_tx.c gve_tx_dqo.c

gve: Fix TX livelock

Before this change the transmit taskqueue would enqueue itself when it
cannot find space on the NIC ring with the hope that eventually space
would be made. This results in the following livelock that only occurs
after passing ~200Gbps of TCP traffic for many hours:

                        100% CPU
┌───────────┐wait on  ┌──────────┐         ┌───────────┐
│user thread│  cpu    │gve xmit  │wait on  │gve cleanup│
│with mbuf  ├────────►│taskqueue ├────────►│taskqueue  │
│uma lock   │         │          │ NIC ring│           │
└───────────┘         └──────────┘  space  └─────┬─────┘
     ▲                                           │
     │      wait on mbuf uma lock                │
     └───────────────────────────────────────────┘

Further details about the livelock are available on
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=281560.

    [15 lines not shown]
DeltaFile
+78-20sys/dev/gve/gve_tx.c
+10-0sys/dev/gve/gve_tx_dqo.c
+3-3sys/dev/gve/gve_sysctl.c
+2-2sys/dev/gve/gve_main.c
+2-1sys/dev/gve/gve.h
+95-265 files

FreeBSD/src 1bda36asys/dev/gve gve_rx_dqo.c gve_tx_dqo.c

gve: Add DQO QPL support

DQO is the descriptor format for our next generation virtual NIC.
It is necessary to make full use of the hardware bandwidth on many
newer GCP VM shapes.

This patch extends the previously introduced DQO descriptor format
with a "QPL" mode. QPL stands for Queue Page List and refers to
the fact that the hardware cannot access arbitrary regions of the
host memory and instead expects a fixed bounce buffer comprising
of a list of pages.

The QPL aspects are similar to the already existing GQI queue
queue format: in that the mbufs being input in the Rx path have
external storage in the form of vm pages attached to them; and
in the Tx path we always copy the mbuf payload into QPL pages.

Signed-off-by: Shailend Chand <shailend at google.com>
Reviewed-by: markj

    [4 lines not shown]
DeltaFile
+414-35sys/dev/gve/gve_rx_dqo.c
+356-69sys/dev/gve/gve_tx_dqo.c
+95-6sys/dev/gve/gve.h
+36-2sys/dev/gve/gve_adminq.c
+28-4sys/dev/gve/gve_qpl.c
+11-9sys/dev/gve/gve_main.c
+940-1256 files not shown
+983-14612 files

FreeBSD/src c7aea09sys/dev/gve gve_tx_dqo.c gve_rx_dqo.c

gve: Add DQO RDA support

DQO is the descriptor format for our next generation virtual NIC.
It is necessary to make full use of the hardware bandwidth on many
newer GCP VM shapes.

One major change with DQO from its predecessor GQI is that it uses
dual descriptor rings for both TX and RX queues.

The TX path uses a descriptor ring to send descriptors to HW, and
receives packet completion events on a TX completion ring.

The RX path posts buffers to HW using an RX descriptor ring and
receives incoming packets on an RX completion ring.

In GQI-QPL, the hardware could not access arbitrary regions of
guest memory, which is why there was a pre-negotitated bounce buffer
(QPL: Queue Page List). DQO-RDA has no such limitation.


    [14 lines not shown]
DeltaFile
+793-0sys/dev/gve/gve_tx_dqo.c
+633-0sys/dev/gve/gve_rx_dqo.c
+306-0sys/dev/gve/gve_dqo.h
+179-28sys/dev/gve/gve.h
+104-43sys/dev/gve/gve_tx.c
+112-11sys/dev/gve/gve_adminq.c
+2,127-829 files not shown
+2,478-15115 files

FreeBSD/src 30d4069tests/sys/netpfil/pf rdr.sh Makefile

pf: Add a TCP rdr test on IPv6

Reviewed by:    kp
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision: https://reviews.freebsd.org/D42105

(cherry picked from commit b9870ba93ea90a12f5a5727c80f7958b17f9afcc)
DeltaFile
+127-0tests/sys/netpfil/pf/rdr.sh
+1-0tests/sys/netpfil/pf/Makefile
+128-02 files

FreeBSD/src 91a8054sys/compat/linux linux_socket.c

linux sendfile: Fix handling of non-blocking sockets

FreeBSD sendfile() may perform a partial transfer and return EAGAIN if
the socket is non-blocking.  Linux sendfile() expects no error in this
case, so squash EAGAIN.

PR:             282495
Tested by:      pieter at krikkit.xyz
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D47447

(cherry picked from commit a43b745aaf4f5bbc96875d2ab3ec9bea8024eda4)
DeltaFile
+7-0sys/compat/linux/linux_socket.c
+7-01 files

FreeBSD/ports 993b21fmultimedia/plexmediaserver-plexpass distinfo Makefile

multimedia/plexmediaserver-plexpass: Update 1.41.2.9134 → 1.41.2.9200

Changelog:
https://forums.plex.tv/t/plex-media-server/30447/653

PR:     282855
DeltaFile
+3-3multimedia/plexmediaserver-plexpass/distinfo
+2-2multimedia/plexmediaserver-plexpass/Makefile
+5-52 files

FreeBSD/ports fdcdec2multimedia/plexmediaserver distinfo Makefile

multimedia/plexmediaserver: Update 1.41.1.9057 → 1.41.2.9200

Changelog:
https://forums.plex.tv/t/plex-media-server/30447/654

PR:     282856
DeltaFile
+3-3multimedia/plexmediaserver/distinfo
+2-2multimedia/plexmediaserver/Makefile
+5-52 files

OpenZFS/src 9a81484module/zfs zap_leaf.c

ZAP: Reduce leaf array and free chunks fragmentation

Previous implementation of zap_leaf_array_free() put chunks on the
free list in reverse order.  Also zap_leaf_transfer_entry() and
zap_entry_remove() were freeing name and value arrays in reverse
order.  Together this created a mess in the free list, making
following allocations much more fragmented than necessary.

This patch re-implements zap_leaf_array_free() to keep existing
chunks order, and implements non-destructive zap_leaf_array_copy()
to be used in zap_leaf_transfer_entry() to allow properly ordered
freeing name and value arrays there and in zap_entry_remove().

With this change test of some writes and deletes shows percent of
non-contiguous chunks in DDT reducing from 61% and 47% to 0% and
17% for arrays and frees respectively.  Sure some explicit sorting
could do even better, especially for ZAPs with variable-size arrays,
but it would also cost much more, while this should be very cheap.


    [3 lines not shown]
DeltaFile
+63-45module/zfs/zap_leaf.c
+63-451 files

FreeBSD/src 459404csys/dev/rtsx rtsx.c

rtsw: Break out as soon as we find we're doing the inversion workaround

Once we set that we're doing the inversion workaround, there's no sense
continuing to search for the inversion workaround.

Sponsored by:           Netflix
Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D47686
DeltaFile
+1-0sys/dev/rtsx/rtsx.c
+1-01 files

FreeBSD/src 4365a13share/man/man9 cdefs.9

cdefs: Document what we do when _XOPEN_SOURCE is an empty string

X/Open originally had _XOPEN_SOURCE defined to signify conformance with
the Single Unix Specification, starting with its third iteration. There
it defined _XOPEN_SOURCE being defined as the same thing as
_POSIC_C_SOURCE=2, though the different versions of the spec had slight
variances as to what's defined and wheter or not _XOPEN_SOURCE_EXTENSION
needed to be defined. Document that we don't do anything in this case.
It turns out that enabling the proper strict environment breaks at least
some old software, so for the moment it's a nop until that can be sorted
out (though that is a very low proprity task).

Sponsored by:           Netflix
DeltaFile
+5-1share/man/man9/cdefs.9
+5-11 files